aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/macvlan.c
diff options
context:
space:
mode:
authorDavid Ward <david.ward@ll.mit.edu>2011-05-18 22:53:20 -0400
committerDavid S. Miller <davem@davemloft.net>2011-05-22 21:01:18 -0400
commita37dd3332319260cce81ac91ce25fcc3a31de997 (patch)
tree719091eb50b56bb19115383c1bc295133068caa2 /drivers/net/macvlan.c
parent67f11f4deda0818640decb19a28c537dbe5d429e (diff)
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>
Diffstat (limited to 'drivers/net/macvlan.c')
-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 d72a70615c0f..d6aeaa5f25ea 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)
238 238
239 dest = macvlan_hash_lookup(port, eth->h_dest); 239 dest = macvlan_hash_lookup(port, eth->h_dest);
240 if (dest && dest->mode == MACVLAN_MODE_BRIDGE) { 240 if (dest && dest->mode == MACVLAN_MODE_BRIDGE) {
241 unsigned int length = skb->len + ETH_HLEN; 241 /* send to lowerdev first for its network taps */
242 int ret = dest->forward(dest->dev, skb); 242 vlan->forward(vlan->lowerdev, skb);
243 macvlan_count_rx(dest, length,
244 ret == NET_RX_SUCCESS, 0);
245 243
246 return NET_XMIT_SUCCESS; 244 return NET_XMIT_SUCCESS;
247 } 245 }