]> git.baikalelectronics.ru Git - kernel.git/commit
ixgbe: avoid permanent lock of *_PTP_TX_IN_PROGRESS
authorJacob Keller <jacob.e.keller@intel.com>
Wed, 3 May 2017 17:28:56 +0000 (10:28 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 13 Jun 2017 23:11:48 +0000 (16:11 -0700)
commit6fff83fcaaf7d7deded9ff75869f4f23929831c5
tree70310ae7b4c1a3b28586e30d367789680e9b8554
parent2fa1d03750dff7e47bc0dff5b2fc75b5a505f906
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>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c