|
@@ -8337,16 +8337,19 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb,
|
|
|
protocol = vlan_get_protocol(skb);
|
|
|
|
|
|
if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
|
|
|
- adapter->ptp_clock &&
|
|
|
- !test_and_set_bit_lock(__IXGBE_PTP_TX_IN_PROGRESS,
|
|
|
- &adapter->state)) {
|
|
|
- skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
|
|
|
- tx_flags |= IXGBE_TX_FLAGS_TSTAMP;
|
|
|
-
|
|
|
- /* schedule check for Tx timestamp */
|
|
|
- adapter->ptp_tx_skb = skb_get(skb);
|
|
|
- adapter->ptp_tx_start = jiffies;
|
|
|
- schedule_work(&adapter->ptp_tx_work);
|
|
|
+ adapter->ptp_clock) {
|
|
|
+ if (!test_and_set_bit_lock(__IXGBE_PTP_TX_IN_PROGRESS,
|
|
|
+ &adapter->state)) {
|
|
|
+ skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
|
|
|
+ tx_flags |= IXGBE_TX_FLAGS_TSTAMP;
|
|
|
+
|
|
|
+ /* schedule check for Tx timestamp */
|
|
|
+ adapter->ptp_tx_skb = skb_get(skb);
|
|
|
+ adapter->ptp_tx_start = jiffies;
|
|
|
+ schedule_work(&adapter->ptp_tx_work);
|
|
|
+ } else {
|
|
|
+ adapter->tx_hwtstamp_skipped++;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
skb_tx_timestamp(skb);
|