diff options
-rw-r--r-- | net/core/netpoll.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 156d7fd81fec..a01abdd2d3ea 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -243,7 +243,9 @@ 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()) { - local_bh_disable(); /* Where's netif_tx_trylock_bh()? */ + unsigned long flags; + + local_irq_save(flags); if (netif_tx_trylock(dev)) { /* try until next clock tick */ for (tries = jiffies_to_usecs(1)/USEC_PER_POLL; @@ -261,7 +263,7 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) } netif_tx_unlock(dev); } - local_bh_enable(); + local_irq_restore(flags); } if (status != NETDEV_TX_OK) { |