]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
be2net: Fix vlans_added counter
authorVasundhara Volam <vasundhara.volam@emulex.com>
Tue, 11 Mar 2014 13:23:08 +0000 (18:53 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 12 Mar 2014 20:19:48 +0000 (16:19 -0400)
When a VLAN is added by user, adapter->vlans_added is incremented.
But if the VLAN is already programmed in HW, driver ends up
incrementing the counter wrongly.

Increment the counter only if VLAN is not already programmed in the HW.

Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_main.c

index fc44bb331717e76bcdf11b59b1daf0c6a6cdf1cf..41736937e040bcb638afc9971fefb879094095a4 100644 (file)
@@ -1138,7 +1138,10 @@ static int be_vlan_add_vid(struct net_device *netdev, __be16 proto, u16 vid)
 
        /* Packets with VID 0 are always received by Lancer by default */
        if (lancer_chip(adapter) && vid == 0)
-               goto ret;
+               return status;
+
+       if (adapter->vlan_tag[vid])
+               return status;
 
        adapter->vlan_tag[vid] = 1;
        adapter->vlans_added++;
@@ -1148,7 +1151,7 @@ static int be_vlan_add_vid(struct net_device *netdev, __be16 proto, u16 vid)
                adapter->vlans_added--;
                adapter->vlan_tag[vid] = 0;
        }
-ret:
+
        return status;
 }