diff options
author | Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp> | 2014-02-18 21:20:08 +0900 |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2014-03-13 23:19:38 +0100 |
commit | cc9f71b2cc82f1fb66dc5d1ff3fc4eefe8b06f91 (patch) | |
tree | 2333be8cb231bafde647f5ab9340227681f603fb /drivers/net/veth.c | |
parent | 17d633ca63add6ccaa77e125ba1e8693635bc9f1 (diff) | |
download | lwn-cc9f71b2cc82f1fb66dc5d1ff3fc4eefe8b06f91.tar.gz lwn-cc9f71b2cc82f1fb66dc5d1ff3fc4eefe8b06f91.zip |
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 <makita.toshiaki@lab.ntt.co.jp>
Acked-by: Flavio Leitner <fbl@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'drivers/net/veth.c')
-rw-r--r-- | drivers/net/veth.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/veth.c b/drivers/net/veth.c index eee1f19ef1e9..61c4044f644e 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; |