Loading net/core/netpoll.c +9 −1 Original line number Diff line number Diff line Loading @@ -168,17 +168,25 @@ static void poll_napi(struct net_device *dev) struct napi_struct *napi; int budget = 16; WARN_ON_ONCE(!irqs_disabled()); list_for_each_entry(napi, &dev->napi_list, dev_list) { local_irq_enable(); if (napi->poll_owner != smp_processor_id() && spin_trylock(&napi->poll_lock)) { rcu_read_lock_bh(); budget = poll_one_napi(rcu_dereference_bh(dev->npinfo), napi, budget); rcu_read_unlock_bh(); spin_unlock(&napi->poll_lock); if (!budget) if (!budget) { local_irq_disable(); break; } } local_irq_disable(); } } static void service_arp_queue(struct netpoll_info *npi) Loading Loading
net/core/netpoll.c +9 −1 Original line number Diff line number Diff line Loading @@ -168,17 +168,25 @@ static void poll_napi(struct net_device *dev) struct napi_struct *napi; int budget = 16; WARN_ON_ONCE(!irqs_disabled()); list_for_each_entry(napi, &dev->napi_list, dev_list) { local_irq_enable(); if (napi->poll_owner != smp_processor_id() && spin_trylock(&napi->poll_lock)) { rcu_read_lock_bh(); budget = poll_one_napi(rcu_dereference_bh(dev->npinfo), napi, budget); rcu_read_unlock_bh(); spin_unlock(&napi->poll_lock); if (!budget) if (!budget) { local_irq_disable(); break; } } local_irq_disable(); } } static void service_arp_queue(struct netpoll_info *npi) Loading