]> 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)
commit4c0bac17a079c0584bad604827725f4fc5cbc1d7
tree70310ae7b4c1a3b28586e30d367789680e9b8554
parent72e832e33745d671a2c85c62a5ef52e7d38f21fb
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