i40e: Simplify i40e_detect_recover_hung_queue logic
authorAlan Brady <alan.brady@intel.com>
Wed, 5 Apr 2017 11:50:56 +0000 (07:50 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 8 Apr 2017 09:53:49 +0000 (02:53 -0700)
commit17daabb5e8db2b7de742f59dd73aa12550143e0d
tree447f515dcb47619956b8658d0c1a9e4422bc8344
parent373149fc99a077700339e18839484a852e7b0971
i40e: Simplify i40e_detect_recover_hung_queue logic

This patch greatly reduces the unneeded complexity in the
i40e_detect_recover_hung_queue code path.  The previous implementation
set a 'hung bit' which would then get cleared while polling.  If the
detection routine was called a second time with the bit already set, we
would issue a software interrupt.  This patch makes it such that if
interrupts are disabled and we have pending TX descriptors, we trigger a
software interrupt since in, the worst case, queues are already clean
and we have an extra interrupt.

Additionally this patch removes the workaround for lost interrupts as
calling napi_reschedule in this context can cause software interrupts to
fire on the wrong CPU.

Change-ID: Iae108582a3ceb6229ed1d22e4ed6e69cf97aad8d
Signed-off-by: Alan Brady <alan.brady@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e.h
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/intel/i40e/i40e_txrx.h