summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Boström <peter.bostrom@netrounds.com>2014-03-10 16:17:15 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-04-14 06:47:19 -0700
commit92a887902f1ce91160183372e10c5ea7635efcd4 (patch)
treed411841210c8ab11879782ac52b1637f1b1c467d
parent66295293f1c89b83290dc610db9f8fc555f5a92b (diff)
vlan: Set correct source MAC address with TX VLAN offload enabled
[ Upstream commit dd38743b4cc2f86be250eaf156cf113ba3dd531a ] With TX VLAN offload enabled the source MAC address for frames sent using the VLAN interface is currently set to the address of the real interface. This is wrong since the VLAN interface may be configured with a different address. The bug was introduced in commit 2205369a314e12fcec4781cc73ac9c08fc2b47de ("vlan: Fix header ops passthru when doing TX VLAN offload."). This patch sets the source address before calling the create function of the real interface. Signed-off-by: Peter Boström <peter.bostrom@netrounds.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/8021q/vlan_dev.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 47c908f1f626..d745ff5b63cc 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -538,6 +538,9 @@ static int vlan_passthru_hard_header(struct sk_buff *skb, struct net_device *dev
struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
struct net_device *real_dev = vlan->real_dev;
+ if (saddr == NULL)
+ saddr = dev->dev_addr;
+
return dev_hard_header(skb, real_dev, type, daddr, saddr, len);
}