--- zzzz-none-000/linux-2.6.32.61/drivers/net/igb/igb_main.c 2013-06-10 09:43:48.000000000 +0000 +++ ar10-7272-687/linux-2.6.32.61/drivers/net/igb/igb_main.c 2017-01-26 13:51:06.000000000 +0000 @@ -3330,7 +3330,6 @@ u8 hdr_len = 0; int count = 0; int tso = 0; - union skb_shared_tx *shtx; if (test_bit(__IGB_DOWN, &adapter->state)) { dev_kfree_skb_any(skb); @@ -3361,9 +3360,8 @@ * called either in igb_tx_hwtstamp() or by our caller when * doing software time stamping. */ - shtx = skb_tx(skb); - if (unlikely(shtx->hardware)) { - shtx->in_progress = 1; + if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) { + skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; tx_flags |= IGB_TX_FLAGS_TSTAMP; } @@ -4409,10 +4407,9 @@ */ static void igb_tx_hwtstamp(struct igb_adapter *adapter, struct sk_buff *skb) { - union skb_shared_tx *shtx = skb_tx(skb); struct e1000_hw *hw = &adapter->hw; - if (unlikely(shtx->hardware)) { + if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) { u32 valid = rd32(E1000_TSYNCTXCTL) & E1000_TSYNCTXCTL_VALID; if (valid) { u64 regval = rd32(E1000_TXSTMPL); @@ -4715,7 +4712,7 @@ * any of the additional attributes stored for it. * * If nothing went wrong, then it should have a - * skb_shared_tx that we can turn into a + * shared tx_flags that we can turn into a * skb_shared_hwtstamps. * * TODO: can time stamping be triggered (thus locking