aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/netpoll.c
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2009-05-26 01:58:01 -0400
committerDavid S. Miller <davem@davemloft.net>2009-05-26 01:58:01 -0400
commit08baf561083bc27a953aa087dd8a664bb2b88e8e (patch)
tree979d92224e21b69368a27bb684b74b3d4d744183 /net/core/netpoll.c
parent65ac8851490ec97a96759af729132c96f925a795 (diff)
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>
Diffstat (limited to 'net/core/netpoll.c')
-rw-r--r--net/core/netpoll.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 67b4f3e3d4a..7ab31a7576a 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -302,8 +302,11 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
302 for (tries = jiffies_to_usecs(1)/USEC_PER_POLL; 302 for (tries = jiffies_to_usecs(1)/USEC_PER_POLL;
303 tries > 0; --tries) { 303 tries > 0; --tries) {
304 if (__netif_tx_trylock(txq)) { 304 if (__netif_tx_trylock(txq)) {
305 if (!netif_tx_queue_stopped(txq)) 305 if (!netif_tx_queue_stopped(txq)) {
306 status = ops->ndo_start_xmit(skb, dev); 306 status = ops->ndo_start_xmit(skb, dev);
307 if (status == NETDEV_TX_OK)
308 txq_trans_update(txq);
309 }
307 __netif_tx_unlock(txq); 310 __netif_tx_unlock(txq);
308 311
309 if (status == NETDEV_TX_OK) 312 if (status == NETDEV_TX_OK)