]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/core/netpoll.c
bonding: Fix napi poll for bonding driver
[net-next-2.6.git] / net / core / netpoll.c
index 4e98ffac3af0259bda8cbadfb9609fa6b57405a8..d79d221fd1f467ebf01f92d69aeadbaf157f5c69 100644 (file)
@@ -156,8 +156,15 @@ static void poll_napi(struct net_device *dev)
 {
        struct napi_struct *napi;
        int budget = 16;
+       struct softnet_data *sd = &__get_cpu_var(softnet_data);
+       struct list_head *nlist;
 
-       list_for_each_entry(napi, &dev->napi_list, dev_list) {
+       if (dev->flags & IFF_MASTER)
+               nlist = &sd->poll_list;
+       else
+               nlist = &dev->napi_list;
+
+       list_for_each_entry(napi, nlist, dev_list) {
                if (napi->poll_owner != smp_processor_id() &&
                    spin_trylock(&napi->poll_lock)) {
                        budget = poll_one_napi(dev->npinfo, napi, budget);