aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/netpoll.c
diff options
context:
space:
mode:
authorAmerigo Wang <amwang@redhat.com>2011-02-17 18:43:34 -0500
committerDavid S. Miller <davem@davemloft.net>2011-02-27 23:11:54 -0500
commit5a698af53fb85b92d6462939a2c75ec4c7233bb9 (patch)
tree7f764fb754039f6f019b80eff874a0c2d9ce1b11 /net/core/netpoll.c
parent080e4130b1fb6a02e75149a1cccc8192e734713d (diff)
bond: service netpoll arp queue on master device
Neil pointed out that we can't send ARP reply on behalf of slaves, we need to move the arp queue to their bond device. Signed-off-by: WANG Cong <amwang@redhat.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/netpoll.c')
-rw-r--r--net/core/netpoll.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index f68e6949294e..06be2431753e 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -193,6 +193,17 @@ void netpoll_poll_dev(struct net_device *dev)
193 193
194 poll_napi(dev); 194 poll_napi(dev);
195 195
196 if (dev->priv_flags & IFF_SLAVE) {
197 if (dev->npinfo) {
198 struct net_device *bond_dev = dev->master;
199 struct sk_buff *skb;
200 while ((skb = skb_dequeue(&dev->npinfo->arp_tx))) {
201 skb->dev = bond_dev;
202 skb_queue_tail(&bond_dev->npinfo->arp_tx, skb);
203 }
204 }
205 }
206
196 service_arp_queue(dev->npinfo); 207 service_arp_queue(dev->npinfo);
197 208
198 zap_completion_queue(); 209 zap_completion_queue();