From: Toshiaki Makita Date: Tue, 18 Feb 2014 12:20:08 +0000 (+0900) Subject: veth: Fix vlan_features so as to be able to use stacked vlan interfaces X-Git-Tag: v3.12.15~125 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cc9f71b2cc82f1fb66dc5d1ff3fc4eefe8b06f91;p=thirdparty%2Fkernel%2Fstable.git veth: Fix vlan_features so as to be able to use stacked vlan interfaces [ Upstream commit 8d0d21f4053c07714802cbe8b1fe26913ec296cc ] Even if we create a stacked vlan interface such as veth0.10.20, it sends single tagged frames (tagged with only vid 10). Because vlan_features of a veth interface has the NETIF_F_HW_VLAN_[CTAG/STAG]_TX bits, veth0.10 also has that feature, so dev_hard_start_xmit(veth0.10) doesn't call __vlan_put_tag() and vlan_dev_hard_start_xmit(veth0.10) overwrites vlan_tci. This prevents us from using a combination of 802.1ad and 802.1Q in containers, etc. Signed-off-by: Toshiaki Makita Acked-by: Flavio Leitner Signed-off-by: David S. Miller Signed-off-by: Jiri Slaby --- diff --git a/drivers/net/veth.c b/drivers/net/veth.c index eee1f19ef1e93..61c4044f644ec 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -269,7 +269,8 @@ static void veth_setup(struct net_device *dev) dev->ethtool_ops = &veth_ethtool_ops; dev->features |= NETIF_F_LLTX; dev->features |= VETH_FEATURES; - dev->vlan_features = dev->features; + dev->vlan_features = dev->features & + ~(NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX); dev->destructor = veth_dev_free; dev->hw_features = VETH_FEATURES;