linux/drivers/net/ethernet/intel/ixgbe
Jacob Keller 5fef124d9c ixgbe: avoid permanent lock of *_PTP_TX_IN_PROGRESS
The ixgbe 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
ixgbe_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 ixgbe_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: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-06-13 16:11:48 -07:00
..
ixgbe_82598.c ixgbe: Remove unused firmware version functions and method 2017-01-03 13:03:38 -08:00
ixgbe_82599.c ixgbe: Resolve warnings for -Wimplicit-fallthrough 2017-05-31 04:43:47 -07:00
ixgbe_common.c ixgbe: add missing configuration for rate select 1 2017-05-31 04:52:41 -07:00
ixgbe_common.h ixgbe: Implement firmware interface to access some PHYs 2017-01-03 13:03:39 -08:00
ixgbe_dcb_82598.c ixgbe: use BIT() macro 2016-04-25 04:15:11 -07:00
ixgbe_dcb_82598.h
ixgbe_dcb_82599.c ixgbe: use BIT() macro 2016-04-25 04:15:11 -07:00
ixgbe_dcb_82599.h
ixgbe_dcb_nl.c ixgbe: prefix Data Center Bridge ops struct 2017-02-16 04:02:44 -08:00
ixgbe_dcb.c ixgbe: use BIT() macro 2016-04-25 04:15:11 -07:00
ixgbe_dcb.h
ixgbe_debugfs.c
ixgbe_ethtool.c ixgbe: Resolve warnings for -Wimplicit-fallthrough 2017-05-31 04:43:47 -07:00
ixgbe_fcoe.c ixgbe: Fix MDD events generated when FCoE+SRIOV are enabled 2016-01-08 04:15:00 -08:00
ixgbe_fcoe.h ixgbe: adds x550 specific FCoE offloads 2015-04-10 00:15:55 -07:00
ixgbe_lib.c ixgbe: add support for XDP_TX action 2017-04-29 19:58:07 -07:00
ixgbe_main.c ixgbe: avoid permanent lock of *_PTP_TX_IN_PROGRESS 2017-06-13 16:11:48 -07:00
ixgbe_mbx.c ixgbe: use BIT() macro 2016-04-25 04:15:11 -07:00
ixgbe_mbx.h ixgbe: Add PF support for VF promiscuous mode 2017-01-03 13:03:40 -08:00
ixgbe_model.h ixgbe: Fix deleting link filters for cls_u32 offloads 2016-06-29 10:05:24 -07:00
ixgbe_phy.c ixgbe: Remove driver config for KX4 PHY 2017-04-18 13:04:09 -07:00
ixgbe_phy.h ixgbe: correct CS4223/7 PHY identification 2017-05-31 04:48:19 -07:00
ixgbe_ptp.c ixgbe: fix race condition with PTP_TX_IN_PROGRESS bits 2017-06-13 16:11:47 -07:00
ixgbe_sriov.c ixgbe: Resolve warnings for -Wimplicit-fallthrough 2017-05-31 04:43:47 -07:00
ixgbe_sriov.h ixgbe: do not use adapter->num_vfs when setting VFs via module parameter 2017-04-18 13:25:30 -07:00
ixgbe_sysfs.c
ixgbe_type.h ixgbe: Add 1000Base-T device based on X550EM_X MAC 2017-04-29 20:01:03 -07:00
ixgbe_x540.c ixgbe: Acquire PHY semaphore before device reset 2017-04-28 19:02:31 -07:00
ixgbe_x540.h ixgbe: Place SWFW semaphore in known valid state at probe 2016-04-04 17:44:50 -07:00
ixgbe_x550.c ixgbe: fix incorrect status check 2017-05-31 04:54:12 -07:00
ixgbe.h ixgbe: Check for RSS key before setting value 2017-04-29 20:01:04 -07:00
Makefile ixgbe: Add X550 support function pointers 2014-12-05 09:13:07 -08:00