aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/netpoll.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/netpoll.c')
-rw-r--r--net/core/netpoll.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 4e98ffac3af..d79d221fd1f 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -156,8 +156,15 @@ static void poll_napi(struct net_device *dev)
156{ 156{
157 struct napi_struct *napi; 157 struct napi_struct *napi;
158 int budget = 16; 158 int budget = 16;
159 struct softnet_data *sd = &__get_cpu_var(softnet_data);
160 struct list_head *nlist;
159 161
160 list_for_each_entry(napi, &dev->napi_list, dev_list) { 162 if (dev->flags & IFF_MASTER)
163 nlist = &sd->poll_list;
164 else
165 nlist = &dev->napi_list;
166
167 list_for_each_entry(napi, nlist, dev_list) {
161 if (napi->poll_owner != smp_processor_id() && 168 if (napi->poll_owner != smp_processor_id() &&
162 spin_trylock(&napi->poll_lock)) { 169 spin_trylock(&napi->poll_lock)) {
163 budget = poll_one_napi(dev->npinfo, napi, budget); 170 budget = poll_one_napi(dev->npinfo, napi, budget);