summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Ward <david.ward@ll.mit.edu>2011-05-19 02:53:20 +0000
committerDavid S. Miller <davem@davemloft.net>2011-05-22 21:01:18 -0400
commita37dd3332319260cce81ac91ce25fcc3a31de997 (patch)
tree719091eb50b56bb19115383c1bc295133068caa2
parent67f11f4deda0818640decb19a28c537dbe5d429e (diff)
downloadlinux-3.10-a37dd3332319260cce81ac91ce25fcc3a31de997.tar.gz
linux-3.10-a37dd3332319260cce81ac91ce25fcc3a31de997.tar.bz2
linux-3.10-a37dd3332319260cce81ac91ce25fcc3a31de997.zip
macvlan: Forward unicast frames in bridge mode to lowerdev
Unicast frames between macvlan interfaces in bridge mode are not otherwise sent to network taps on the lowerdev (as all other macvlan frames are), so forward the frames to the receive queue of the lowerdev first. Signed-off-by: David Ward <david.ward@ll.mit.edu> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/macvlan.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index d72a70615c0..d6aeaa5f25e 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -238,10 +238,8 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
dest = macvlan_hash_lookup(port, eth->h_dest);
if (dest && dest->mode == MACVLAN_MODE_BRIDGE) {
- unsigned int length = skb->len + ETH_HLEN;
- int ret = dest->forward(dest->dev, skb);
- macvlan_count_rx(dest, length,
- ret == NET_RX_SUCCESS, 0);
+ /* send to lowerdev first for its network taps */
+ vlan->forward(vlan->lowerdev, skb);
return NET_XMIT_SUCCESS;
}