1
0
Fork 0
alistair23-linux/drivers/net/ethernet/intel/igb
Daniel Hua 3a53285228 igb: Clear TXSTMP when ptp_tx_work() is timeout
Problem description:
After ethernet cable connect and disconnect for several iterations on a
device with i210, tx timestamp will stop being put into the socket.

Steps to reproduce:
1. Setup a device with i210 and wire it to a 802.1AS capable switch (
Extreme Networks Summit x440 is used in our case)
2. Have the gptp daemon running on the device and make sure it is synced
with the switch
3. Have the switch disable and enable the port, wait for the device gets
resynced with the switch
4. Iterates step 3 until the device is not albe to get resynced
5. Review the log in dmesg and you will see warning message "igb : clearing
Tx timestamp hang"

Root cause:
If ptp_tx_work() gets scheduled just before the port gets disabled, a LINK
DOWN event will be processed before ptp_tx_work(), which may cause timeout
in ptp_tx_work(). In the timeout logic, the TSYNCTXCTL's TXTT bit (Transmit
timestamp valid bit) is not cleared, causing no new timestamp loaded to
TXSTMP register. Consequently therefore, no new interrupt is triggerred by
TSICR.TXTS bit and no more Tx timestamp send to the socket.

Signed-off-by: Daniel Hua <daniel.hua@ni.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-01-24 12:27:48 -08:00
..
Makefile igb: Update license text to remove FSF address and update copyright. 2014-02-26 15:54:52 -05:00
e1000_82575.c igb: support BCM54616 PHY 2017-08-08 18:09:12 -07:00
e1000_82575.h igb: support RX flow classification by ethertype 2016-08-18 22:27:48 -07:00
e1000_defines.h igb: Add support for CBS offload 2017-10-27 09:49:36 -07:00
e1000_hw.h igb: support BCM54616 PHY 2017-08-08 18:09:12 -07: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: do not drop PF mailbox lock after read of VF message 2017-08-08 17:52:45 -07:00
e1000_mbx.h igb: do not drop PF mailbox lock after read of VF message 2017-08-08 17:52:45 -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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-11-15 11:56:19 -08:00
igb.h igb: add function to get maximum RSS queues 2018-01-24 12:27:48 -08:00
igb_ethtool.c igb: add function to get maximum RSS queues 2018-01-24 12:27:48 -08: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: Delete an error message for a failed memory allocation in igb_enable_sriov() 2018-01-24 12:27:48 -08:00
igb_ptp.c igb: Clear TXSTMP when ptp_tx_work() is timeout 2018-01-24 12:27:48 -08:00