]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
ixgbe: cleanup logic for the service timer and VF hang detection
[karo-tx-linux.git] / drivers / net / ethernet / intel / ixgbe / ixgbe_main.c
index 7817f0473032068b2dfd86d1d53bd17782d644ea..6453e3a589ecd5aef1c14687cd87515ec09b541d 100644 (file)
@@ -6480,41 +6480,32 @@ static void ixgbe_service_timer(unsigned long data)
        unsigned long next_event_offset;
        bool ready = true;
 
-#ifdef CONFIG_PCI_IOV
-       ready = false;
+       /* poll faster when waiting for link */
+       if (adapter->flags & IXGBE_FLAG_NEED_LINK_UPDATE)
+               next_event_offset = HZ / 10;
+       else
+               next_event_offset = HZ * 2;
 
+#ifdef CONFIG_PCI_IOV
        /*
         * don't bother with SR-IOV VF DMA hang check if there are
         * no VFs or the link is down
         */
        if (!adapter->num_vfs ||
-           (adapter->flags & IXGBE_FLAG_NEED_LINK_UPDATE)) {
-               ready = true;
+           (adapter->flags & IXGBE_FLAG_NEED_LINK_UPDATE))
                goto normal_timer_service;
-       }
 
        /* If we have VFs allocated then we must check for DMA hangs */
        ixgbe_check_for_bad_vf(adapter);
        next_event_offset = HZ / 50;
        adapter->timer_event_accumulator++;
 
-       if (adapter->timer_event_accumulator >= 100) {
-               ready = true;
+       if (adapter->timer_event_accumulator >= 100)
                adapter->timer_event_accumulator = 0;
-       }
-
-       goto schedule_event;
-
-normal_timer_service:
-#endif
-       /* poll faster when waiting for link */
-       if (adapter->flags & IXGBE_FLAG_NEED_LINK_UPDATE)
-               next_event_offset = HZ / 10;
        else
-               next_event_offset = HZ * 2;
+               ready = false;
 
-#ifdef CONFIG_PCI_IOV
-schedule_event:
+normal_timer_service:
 #endif
        /* Reset the timer */
        mod_timer(&adapter->service_timer, next_event_offset + jiffies);