Commit 1ab1ab75 authored by Sathya Perla's avatar Sathya Perla Committed by David S. Miller

be2net: fix to restore vlan ids into BE2 during a IF DOWN->UP cycle

This is a patch to reconfigure vlan-ids during an i/f down/up cycle
Signed-off-by: default avatarSathya Perla <sathyap@serverengines.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ea1dae11
...@@ -473,7 +473,7 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -473,7 +473,7 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
* program them in BE. If more than BE_NUM_VLANS_SUPPORTED are configured, * program them in BE. If more than BE_NUM_VLANS_SUPPORTED are configured,
* set the BE in promiscuous VLAN mode. * set the BE in promiscuous VLAN mode.
*/ */
static void be_vids_config(struct net_device *netdev) static void be_vid_config(struct net_device *netdev)
{ {
struct be_adapter *adapter = netdev_priv(netdev); struct be_adapter *adapter = netdev_priv(netdev);
u16 vtag[BE_NUM_VLANS_SUPPORTED]; u16 vtag[BE_NUM_VLANS_SUPPORTED];
...@@ -516,7 +516,7 @@ static void be_vlan_add_vid(struct net_device *netdev, u16 vid) ...@@ -516,7 +516,7 @@ static void be_vlan_add_vid(struct net_device *netdev, u16 vid)
adapter->num_vlans++; adapter->num_vlans++;
adapter->vlan_tag[vid] = 1; adapter->vlan_tag[vid] = 1;
be_vids_config(netdev); be_vid_config(netdev);
} }
static void be_vlan_rem_vid(struct net_device *netdev, u16 vid) static void be_vlan_rem_vid(struct net_device *netdev, u16 vid)
...@@ -527,7 +527,7 @@ static void be_vlan_rem_vid(struct net_device *netdev, u16 vid) ...@@ -527,7 +527,7 @@ static void be_vlan_rem_vid(struct net_device *netdev, u16 vid)
adapter->vlan_tag[vid] = 0; adapter->vlan_tag[vid] = 0;
vlan_group_set_device(adapter->vlan_grp, vid, NULL); vlan_group_set_device(adapter->vlan_grp, vid, NULL);
be_vids_config(netdev); be_vid_config(netdev);
} }
static void be_set_multicast_filter(struct net_device *netdev) static void be_set_multicast_filter(struct net_device *netdev)
...@@ -1430,6 +1430,8 @@ static int be_open(struct net_device *netdev) ...@@ -1430,6 +1430,8 @@ static int be_open(struct net_device *netdev)
if (status != 0) if (status != 0)
goto do_none; goto do_none;
be_vid_config(netdev);
status = be_cmd_set_flow_control(ctrl, true, true); status = be_cmd_set_flow_control(ctrl, true, true);
if (status != 0) if (status != 0)
goto if_destroy; goto if_destroy;
...@@ -1864,8 +1866,6 @@ static int be_resume(struct pci_dev *pdev) ...@@ -1864,8 +1866,6 @@ static int be_resume(struct pci_dev *pdev)
pci_set_power_state(pdev, 0); pci_set_power_state(pdev, 0);
pci_restore_state(pdev); pci_restore_state(pdev);
be_vids_config(netdev);
if (netif_running(netdev)) { if (netif_running(netdev)) {
rtnl_lock(); rtnl_lock();
be_open(netdev); be_open(netdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment