Loading net/core/netpoll.c +19 −15 Original line number Diff line number Diff line Loading @@ -242,10 +242,12 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) /* don't get messages out of order, and no recursion */ if (skb_queue_len(&npinfo->txq) == 0 && npinfo->poll_owner != smp_processor_id() && netif_tx_trylock(dev)) { npinfo->poll_owner != smp_processor_id()) { local_bh_disable(); /* Where's netif_tx_trylock_bh()? */ if (netif_tx_trylock(dev)) { /* try until next clock tick */ for (tries = jiffies_to_usecs(1)/USEC_PER_POLL; tries > 0; --tries) { for (tries = jiffies_to_usecs(1)/USEC_PER_POLL; tries > 0; --tries) { if (!netif_queue_stopped(dev)) status = dev->hard_start_xmit(skb, dev); Loading @@ -259,6 +261,8 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) } netif_tx_unlock(dev); } local_bh_enable(); } if (status != NETDEV_TX_OK) { skb_queue_tail(&npinfo->txq, skb); Loading Loading
net/core/netpoll.c +19 −15 Original line number Diff line number Diff line Loading @@ -242,10 +242,12 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) /* don't get messages out of order, and no recursion */ if (skb_queue_len(&npinfo->txq) == 0 && npinfo->poll_owner != smp_processor_id() && netif_tx_trylock(dev)) { npinfo->poll_owner != smp_processor_id()) { local_bh_disable(); /* Where's netif_tx_trylock_bh()? */ if (netif_tx_trylock(dev)) { /* try until next clock tick */ for (tries = jiffies_to_usecs(1)/USEC_PER_POLL; tries > 0; --tries) { for (tries = jiffies_to_usecs(1)/USEC_PER_POLL; tries > 0; --tries) { if (!netif_queue_stopped(dev)) status = dev->hard_start_xmit(skb, dev); Loading @@ -259,6 +261,8 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) } netif_tx_unlock(dev); } local_bh_enable(); } if (status != NETDEV_TX_OK) { skb_queue_tail(&npinfo->txq, skb); Loading