diff options
author | Amerigo Wang <amwang@redhat.com> | 2011-02-17 23:43:34 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-02-28 04:11:54 (GMT) |
commit | 5a698af53fb85b92d6462939a2c75ec4c7233bb9 (patch) | |
tree | 7f764fb754039f6f019b80eff874a0c2d9ce1b11 /net | |
parent | 080e4130b1fb6a02e75149a1cccc8192e734713d (diff) | |
download | linux-5a698af53fb85b92d6462939a2c75ec4c7233bb9.tar.xz |
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')
-rw-r--r-- | net/core/netpoll.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index f68e694..06be243 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -193,6 +193,17 @@ void netpoll_poll_dev(struct net_device *dev) poll_napi(dev); + if (dev->priv_flags & IFF_SLAVE) { + if (dev->npinfo) { + struct net_device *bond_dev = dev->master; + struct sk_buff *skb; + while ((skb = skb_dequeue(&dev->npinfo->arp_tx))) { + skb->dev = bond_dev; + skb_queue_tail(&bond_dev->npinfo->arp_tx, skb); + } + } + } + service_arp_queue(dev->npinfo); zap_completion_queue(); |