Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5106930bd6b57402205e3de54dae9476e215b622
Commit:     5106930bd6b57402205e3de54dae9476e215b622
Parent:     0adc9add7709f87995c003c0ccb085076afdc923
Author:     Stephen Hemminger <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 19 19:18:11 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 14:54:16 2008 -0800

    [NETPOLL]: netpoll_poll() cleanup
    
    Restructure code slightly to improve readability:
      * dereference device once
      * change obvious while() loop
      * let poll_napi() handle null list itself
    
    Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/core/netpoll.c |   32 ++++++++++++++------------------
 1 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index f63a70b..250868f 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -139,16 +139,15 @@ static int poll_one_napi(struct netpoll_info *npinfo,
        return budget - work;
 }
 
-static void poll_napi(struct netpoll *np)
+static void poll_napi(struct net_device *dev)
 {
-       struct netpoll_info *npinfo = np->dev->npinfo;
        struct napi_struct *napi;
        int budget = 16;
 
-       list_for_each_entry(napi, &np->dev->napi_list, dev_list) {
+       list_for_each_entry(napi, &dev->napi_list, dev_list) {
                if (napi->poll_owner != smp_processor_id() &&
                    spin_trylock(&napi->poll_lock)) {
-                       budget = poll_one_napi(npinfo, napi, budget);
+                       budget = poll_one_napi(dev->npinfo, napi, budget);
                        spin_unlock(&napi->poll_lock);
 
                        if (!budget)
@@ -159,30 +158,27 @@ static void poll_napi(struct netpoll *np)
 
 static void service_arp_queue(struct netpoll_info *npi)
 {
-       struct sk_buff *skb;
-
-       if (unlikely(!npi))
-               return;
+       if (npi) {
+               struct sk_buff *skb;
 
-       skb = skb_dequeue(&npi->arp_tx);
-
-       while (skb != NULL) {
-               arp_reply(skb);
-               skb = skb_dequeue(&npi->arp_tx);
+               while ((skb = skb_dequeue(&npi->arp_tx)))
+                       arp_reply(skb);
        }
 }
 
 void netpoll_poll(struct netpoll *np)
 {
-       if (!np->dev || !netif_running(np->dev) || !np->dev->poll_controller)
+       struct net_device *dev = np->dev;
+
+       if (!dev || !netif_running(dev) || !dev->poll_controller)
                return;
 
        /* Process pending work on NIC */
-       np->dev->poll_controller(np->dev);
-       if (!list_empty(&np->dev->napi_list))
-               poll_napi(np);
+       dev->poll_controller(dev);
+
+       poll_napi(dev);
 
-       service_arp_queue(np->dev->npinfo);
+       service_arp_queue(dev->npinfo);
 
        zap_completion_queue();
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to