ixgbe: cleanup logic for the service timer and VF hang detection
authorAlexander Duyck <alexander.h.duyck@intel.com>
Wed, 8 Feb 2012 07:51:22 +0000 (07:51 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 19 Mar 2012 08:57:23 +0000 (01:57 -0700)
This change just cleans up some of the logic in the service_timer function
so that we can avoid unnecessary swapping of the ready value between true to
false and back to true.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
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);