net: txq_trans_update() helper
We would like to get rid of netdev->trans_start = jiffies; that about all net drivers have to use in their start_xmit() function, and use txq->trans_start instead. This can be done generically in core network, as suggested by David. Some devices, (particularly loopback) dont need trans_start update, because they dont have transmit watchdog. We could add a new device flag, or rely on fact that txq->tran_start can be updated is txq->xmit_lock_owner is different than -1. Use a helper function to hide our choice. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
65ac885149
commit
08baf56108
@@ -1698,6 +1698,8 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
|
||||
skb->dst = NULL;
|
||||
}
|
||||
rc = ops->ndo_start_xmit(skb, dev);
|
||||
if (rc == 0)
|
||||
txq_trans_update(txq);
|
||||
/*
|
||||
* TODO: if skb_orphan() was called by
|
||||
* dev->hard_start_xmit() (for example, the unmodified
|
||||
@@ -1727,6 +1729,7 @@ gso:
|
||||
skb->next = nskb;
|
||||
return rc;
|
||||
}
|
||||
txq_trans_update(txq);
|
||||
if (unlikely(netif_tx_queue_stopped(txq) && skb->next))
|
||||
return NETDEV_TX_BUSY;
|
||||
} while (skb->next);
|
||||
|
Reference in New Issue
Block a user