]> err.no Git - linux-2.6/blobdiff - net/core/netpoll.c
[IPV6]: Don't redo xfrm_lookup for cached dst entries
[linux-2.6] / net / core / netpoll.c
index d09affdbad3c5cdabb6aa8a6a8fc9a2bdc8ab21a..a1a9a7abff50981c1e26fdcca3d2b7b2fa315d59 100644 (file)
@@ -357,7 +357,6 @@ static void arp_reply(struct sk_buff *skb)
        unsigned char *arp_ptr;
        int size, type = ARPOP_REPLY, ptype = ETH_P_ARP;
        u32 sip, tip;
-       unsigned long flags;
        struct sk_buff *send_skb;
        struct netpoll *np = NULL;
 
@@ -725,9 +724,16 @@ int netpoll_setup(struct netpoll *np)
                npinfo->rx_np = np;
                spin_unlock_irqrestore(&npinfo->rx_lock, flags);
        }
+
+       /* fill up the skb queue */
+       refill_skbs();
+
        /* last thing to do is link it to the net device structure */
        ndev->npinfo = npinfo;
 
+       /* avoid racing with NAPI reading npinfo */
+       synchronize_rcu();
+
        return 0;
 
  release: