66 lines
1.8 KiB
Diff
66 lines
1.8 KiB
Diff
From: Ajit Khaparde <ajit.khaparde@emulex.com>
|
|
Date: Fri, 25 May 2012 21:21:23 +0530
|
|
Subject: [PATCH 23/58] be2net: fix be_vlan_add/rem_vid
|
|
|
|
commit 80817cbf5ac13da76f3ee2b9259f26c09b385e84 upstream.
|
|
|
|
1) fix be_vlan_add/rem_vid to return proper status
|
|
2) perform appropriate housekeeping if firmware command succeeds.
|
|
|
|
Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/ethernet/emulex/benet/be_main.c | 19 ++++++++++++++-----
|
|
1 file changed, 14 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
|
|
index a185e61..acef082 100644
|
|
--- a/drivers/net/ethernet/emulex/benet/be_main.c
|
|
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
|
|
@@ -817,28 +817,37 @@ static int be_vid_config(struct be_adapter *adapter, bool vf, u32 vf_num)
|
|
static void be_vlan_add_vid(struct net_device *netdev, u16 vid)
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
+ int status = 0;
|
|
|
|
- adapter->vlans_added++;
|
|
if (!be_physfn(adapter))
|
|
return;
|
|
|
|
adapter->vlan_tag[vid] = 1;
|
|
if (adapter->vlans_added <= (adapter->max_vlans + 1))
|
|
- be_vid_config(adapter, false, 0);
|
|
+ status = be_vid_config(adapter, false, 0);
|
|
+
|
|
+ if (!status)
|
|
+ adapter->vlans_added++;
|
|
+ else
|
|
+ adapter->vlan_tag[vid] = 0;
|
|
}
|
|
|
|
static void be_vlan_rem_vid(struct net_device *netdev, u16 vid)
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
-
|
|
- adapter->vlans_added--;
|
|
+ int status = 0;
|
|
|
|
if (!be_physfn(adapter))
|
|
return;
|
|
|
|
adapter->vlan_tag[vid] = 0;
|
|
if (adapter->vlans_added <= adapter->max_vlans)
|
|
- be_vid_config(adapter, false, 0);
|
|
+ status = be_vid_config(adapter, false, 0);
|
|
+
|
|
+ if (!status)
|
|
+ adapter->vlans_added--;
|
|
+ else
|
|
+ adapter->vlan_tag[vid] = 1;
|
|
}
|
|
|
|
static void be_set_rx_mode(struct net_device *netdev)
|
|
--
|
|
1.7.10
|
|
|