|
|
@@ -643,6 +643,10 @@ static void igb_ptp_tx_work(struct work_struct *work)
|
|
|
adapter->ptp_tx_skb = NULL;
|
|
|
clear_bit_unlock(__IGB_PTP_TX_IN_PROGRESS, &adapter->state);
|
|
|
adapter->tx_hwtstamp_timeouts++;
|
|
|
+ /* Clear the tx valid bit in TSYNCTXCTL register to enable
|
|
|
+ * interrupt
|
|
|
+ */
|
|
|
+ rd32(E1000_TXSTMPH);
|
|
|
dev_warn(&adapter->pdev->dev, "clearing Tx timestamp hang\n");
|
|
|
return;
|
|
|
}
|
|
|
@@ -717,6 +721,7 @@ void igb_ptp_rx_hang(struct igb_adapter *adapter)
|
|
|
*/
|
|
|
void igb_ptp_tx_hang(struct igb_adapter *adapter)
|
|
|
{
|
|
|
+ struct e1000_hw *hw = &adapter->hw;
|
|
|
bool timeout = time_is_before_jiffies(adapter->ptp_tx_start +
|
|
|
IGB_PTP_TX_TIMEOUT);
|
|
|
|
|
|
@@ -736,6 +741,10 @@ void igb_ptp_tx_hang(struct igb_adapter *adapter)
|
|
|
adapter->ptp_tx_skb = NULL;
|
|
|
clear_bit_unlock(__IGB_PTP_TX_IN_PROGRESS, &adapter->state);
|
|
|
adapter->tx_hwtstamp_timeouts++;
|
|
|
+ /* Clear the tx valid bit in TSYNCTXCTL register to enable
|
|
|
+ * interrupt
|
|
|
+ */
|
|
|
+ rd32(E1000_TXSTMPH);
|
|
|
dev_warn(&adapter->pdev->dev, "clearing Tx timestamp hang\n");
|
|
|
}
|
|
|
}
|