/* If we were asked to do hardware stamping and such a time stamp is available, then it must have been for this skb here because we only allow only one such packet into the queue.  */
static void igb_tx_hwtstamp(struct igb_q_vector *q_vector, struct sk_buff *skb)
/* If we were asked to do hardware stamping and such a time stamp is available, then it must have been for this skb here because we only allow only one such packet into the queue.  */
static void igb_tx_hwtstamp(struct igb_q_vector *q_vector, struct sk_buff *skb)
{
	struct igb_adapter *adapter = q_vector->adapter;
	union skb_shared_tx *shtx = skb_tx(skb);
	struct e1000_hw *hw = &adapter->hw;
	struct skb_shared_hwtstamps shhwtstamps;
	u64 regval;
	if (likely(!shtx->hardware) ||
	    !(rd32(E1000_TSYNCTXCTL) & E1000_TSYNCTXCTL_VALID))
		return;
	regval = rd32(E1000_TXSTMPL);
	regval |= (u64)rd32(E1000_TXSTMPH) << 32;
	igb_systim_to_hwtstamp(adapter, &shhwtstamps, regval);
	skb_tstamp_tx(skb, &shhwtstamps);
}