add support of IFF_XMIT_DST_RELEASE bit in vlan
Some time ago Eric Dumazet suggested a "hack the IFF_XMIT_DST_RELEASE flag on the vlan netdev". But the last comment was "does not support properly bonding/team.(If the real_dev->privflags IFF_XMIT_DST_RELEASE bit changes, we want to update all the vlans at the same time )" I've extended that patch to support changes of IFF_XMIT_DST_RELEASE in bonding/team. Both bonding and team call netdev_change_features() after recalculation of features including priv_flags IFF_XMIT_DST_RELEASE bit. So the only thing needed to support is to recheck this bit in vlan_transfer_features(). Suggested-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Vadim Fedorenko <vfedorenko@yandex-team.ru> Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1ec6e53029
commit
9d917c207d
|
@ -328,6 +328,9 @@ static void vlan_transfer_features(struct net_device *dev,
|
|||
vlandev->fcoe_ddp_xid = dev->fcoe_ddp_xid;
|
||||
#endif
|
||||
|
||||
vlandev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
|
||||
vlandev->priv_flags |= (vlan->real_dev->priv_flags & IFF_XMIT_DST_RELEASE);
|
||||
|
||||
netdev_update_features(vlandev);
|
||||
}
|
||||
|
||||
|
|
|
@ -143,6 +143,7 @@ static int vlan_newlink(struct net *src_net, struct net_device *dev,
|
|||
vlan->vlan_proto = proto;
|
||||
vlan->vlan_id = nla_get_u16(data[IFLA_VLAN_ID]);
|
||||
vlan->real_dev = real_dev;
|
||||
dev->priv_flags |= (real_dev->priv_flags & IFF_XMIT_DST_RELEASE);
|
||||
vlan->flags = VLAN_FLAG_REORDER_HDR;
|
||||
|
||||
err = vlan_check_real_dev(real_dev, vlan->vlan_proto, vlan->vlan_id);
|
||||
|
|
Loading…
Reference in New Issue