]> git.karo-electronics.de Git - linux-beck.git/commitdiff
vlan: turn on unicast filtering on vlan device
authorZhang Shengju <zhangshengju@cmss.chinamobile.com>
Thu, 18 Feb 2016 10:00:11 +0000 (10:00 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Feb 2016 02:54:05 +0000 (21:54 -0500)
Currently vlan device inherits unicast filtering flag from underlying
device. If underlying device doesn't support unicast filter, this will
put vlan device into promiscuous mode when it's stacked.

Tun on IFF_UNICAST_FLT on the vlan device in any case so that it does
not go into promiscuous mode needlessly. If underlying device does not
support unicast filtering, that device will enter promiscuous mode.

Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/8021q/vlan.c
net/8021q/vlan_dev.c

index d2cd9de4b7241dcc8c1df5fd7832b3b317799923..69929c05c8438e59c5205c72eb6d1b763e374b68 100644 (file)
@@ -261,7 +261,6 @@ static int register_vlan_device(struct net_device *real_dev, u16 vlan_id)
         * hope the underlying device can handle it.
         */
        new_dev->mtu = real_dev->mtu;
-       new_dev->priv_flags |= (real_dev->priv_flags & IFF_UNICAST_FLT);
 
        vlan = vlan_dev_priv(new_dev);
        vlan->vlan_proto = htons(ETH_P_8021Q);
index ad5e2fd1012c4c1fdfedf010055acfae003646e4..055f0e989e90b5b6690447be77df125f6967d090 100644 (file)
@@ -799,6 +799,7 @@ void vlan_setup(struct net_device *dev)
        ether_setup(dev);
 
        dev->priv_flags         |= IFF_802_1Q_VLAN | IFF_NO_QUEUE;
+       dev->priv_flags         |= IFF_UNICAST_FLT;
        dev->priv_flags         &= ~IFF_TX_SKB_SHARING;
        netif_keep_dst(dev);