X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=net%2Fcore%2Fnetpoll.c;h=a1a9a7abff50981c1e26fdcca3d2b7b2fa315d59;hb=f35279d3f713e5c97b98cbdbf47d98f79942c11f;hp=d09affdbad3c5cdabb6aa8a6a8fc9a2bdc8ab21a;hpb=0db1d6fc1ea051af49ebe03c503d23996a7c5bbb;p=linux-2.6 diff --git a/net/core/netpoll.c b/net/core/netpoll.c index d09affdbad..a1a9a7abff 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -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: