diff options
author | Tony Luck <tony.luck@intel.com> | 2005-08-12 15:13:06 -0700 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-08-12 15:13:06 -0700 |
commit | fc464476aa8356f7aae8787d9b8c14aa15d166eb (patch) | |
tree | 99068df8e33177f2376f953486a235a8b0215e69 /net/core/dev.c | |
parent | 691241315116b962f2161e6190f1678cc65bbe26 (diff) | |
parent | 2da5bf80f754e28cc153362e5ed1edaa9740897a (diff) | |
download | op-kernel-dev-fc464476aa8356f7aae8787d9b8c14aa15d166eb.zip op-kernel-dev-fc464476aa8356f7aae8787d9b8c14aa15d166eb.tar.gz |
Auto-update from upstream
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 52a3bf7a..faf59b0 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1696,7 +1696,8 @@ static void net_rx_action(struct softirq_action *h) struct softnet_data *queue = &__get_cpu_var(softnet_data); unsigned long start_time = jiffies; int budget = netdev_budget; - + void *have; + local_irq_disable(); while (!list_empty(&queue->poll_list)) { @@ -1709,10 +1710,10 @@ static void net_rx_action(struct softirq_action *h) dev = list_entry(queue->poll_list.next, struct net_device, poll_list); - netpoll_poll_lock(dev); + have = netpoll_poll_lock(dev); if (dev->quota <= 0 || dev->poll(dev, &budget)) { - netpoll_poll_unlock(dev); + netpoll_poll_unlock(have); local_irq_disable(); list_del(&dev->poll_list); list_add_tail(&dev->poll_list, &queue->poll_list); @@ -1721,7 +1722,7 @@ static void net_rx_action(struct softirq_action *h) else dev->quota = dev->weight; } else { - netpoll_poll_unlock(dev); + netpoll_poll_unlock(have); dev_put(dev); local_irq_disable(); } |