summaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorTony Luck <tony.luck@intel.com>2005-08-12 15:13:06 -0700
committerTony Luck <tony.luck@intel.com>2005-08-12 15:13:06 -0700
commitfc464476aa8356f7aae8787d9b8c14aa15d166eb (patch)
tree99068df8e33177f2376f953486a235a8b0215e69 /net/core/dev.c
parent691241315116b962f2161e6190f1678cc65bbe26 (diff)
parent2da5bf80f754e28cc153362e5ed1edaa9740897a (diff)
downloadop-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.c9
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();
}
OpenPOWER on IntegriCloud