i40e: prevent overlapping tx_timeout recover
authorAlan Brady <alan.brady@intel.com>
Mon, 29 Oct 2018 18:27:21 +0000 (11:27 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 14 Nov 2018 18:56:34 +0000 (10:56 -0800)
commitd5585b7b6846a6d0f9517afe57be3843150719da
tree319e38ef420619753b59fbb993014a8e89781752
parent7cd8eb0861981ad212ce4242a1870c4b5831ceff
i40e: prevent overlapping tx_timeout recover

If a TX hang occurs, we attempt to recover by incrementally resetting.
If we're starved for CPU time, it's possible the reset doesn't actually
complete (or even fire) before another tx_timeout fires causing us to
fly through the different resets without actually doing them.

This adds a bit to set and check if a timeout recovery is already
pending and, if so, bail out of tx_timeout.  The bit will get cleared at
the end of i40e_rebuild when reset is complete.

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_main.c