mirror_ubuntu-kernels/drivers/net/ethernet/intel/igb
Jacob Keller 74344e32fc igb: avoid permanent lock of *_PTP_TX_IN_PROGRESS
The igb driver uses a state bit lock to avoid handling more than one Tx
timestamp request at once. This is required because hardware is limited
to a single set of registers for Tx timestamps.

The state bit lock is not properly cleaned up during
igb_xmit_frame_ring() if the transmit fails such as due to DMA or TSO
failure. In some hardware this results in blocking timestamps until the
service task times out. In other hardware this results in a permanent
lock of the timestamp bit because we never receive an interrupt
indicating the timestamp occurred, since indeed the packet was never
transmitted.

Fix this by checking for DMA and TSO errors in igb_xmit_frame_ring() and
properly cleaning up after ourselves when these occur.

Reported-by: Reported-by: David Mirabito <davidm@metamako.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-06-06 00:53:48 -07:00
..
e1000_82575.c igb: Explicitly select page 0 at initialization 2017-06-06 00:49:20 -07:00
e1000_82575.h igb: support RX flow classification by ethertype 2016-08-18 22:27:48 -07:00
e1000_defines.h igb: Enable reading of wake up packet 2017-04-20 16:32:45 -07:00
e1000_hw.h igb: constify e1000_phy_operations structure 2016-02-24 15:11:07 -08:00
e1000_i210.c igb: Fix hw_dbg logging in igb_update_flash_i210 2017-01-06 02:23:22 -08:00
e1000_i210.h igb: Remove GS40G specific defines/functions 2015-12-14 10:20:06 -08:00
e1000_mac.c igb: Realign bad indentation 2017-01-06 02:18:49 -08:00
e1000_mac.h igb: Merge VLVF configuration into igb_vfta_set 2016-02-15 16:36:52 -08:00
e1000_mbx.c igb: use BIT() macro or unsigned prefix 2016-05-13 14:39:47 -07:00
e1000_mbx.h igb/igbvf: Add VF MAC filter request capabilities 2017-04-20 16:32:44 -07:00
e1000_nvm.c igb: use BIT() macro or unsigned prefix 2016-05-13 14:39:47 -07:00
e1000_nvm.h igb: Cleanups to change comment style on license headers 2014-04-24 17:26:27 -07:00
e1000_phy.c scripts/spelling.txt: add regsiter -> register spelling mistake 2017-05-08 17:15:13 -07:00
e1000_phy.h igb: use BIT() macro or unsigned prefix 2016-05-13 14:39:47 -07:00
e1000_regs.h igb: correct register comments 2017-01-06 02:18:50 -08:00
igb_ethtool.c igb: use new API ethtool_{get|set}_link_ksettings 2017-03-21 15:42:19 -07:00
igb_hwmon.c igb: Cleanups to change comment style on license headers 2014-04-24 17:26:27 -07:00
igb_main.c igb: avoid permanent lock of *_PTP_TX_IN_PROGRESS 2017-06-06 00:53:48 -07:00
igb_ptp.c igb: fix race condition with PTP_TX_IN_PROGRESS bits 2017-06-06 00:53:07 -07:00
igb.h igb/igbvf: Add VF MAC filter request capabilities 2017-04-20 16:32:44 -07:00
Makefile igb: Update license text to remove FSF address and update copyright. 2014-02-26 15:54:52 -05:00