|
@@ -397,6 +397,7 @@ static int qlcnic_pci_sriov_disable(struct qlcnic_adapter *adapter)
|
|
|
{
|
|
|
struct net_device *netdev = adapter->netdev;
|
|
|
|
|
|
+ rtnl_lock();
|
|
|
if (netif_running(netdev))
|
|
|
__qlcnic_down(adapter, netdev);
|
|
|
|
|
@@ -407,12 +408,15 @@ static int qlcnic_pci_sriov_disable(struct qlcnic_adapter *adapter)
|
|
|
/* After disabling SRIOV re-init the driver in default mode
|
|
|
configure opmode based on op_mode of function
|
|
|
*/
|
|
|
- if (qlcnic_83xx_configure_opmode(adapter))
|
|
|
+ if (qlcnic_83xx_configure_opmode(adapter)) {
|
|
|
+ rtnl_unlock();
|
|
|
return -EIO;
|
|
|
+ }
|
|
|
|
|
|
if (netif_running(netdev))
|
|
|
__qlcnic_up(adapter, netdev);
|
|
|
|
|
|
+ rtnl_unlock();
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -533,6 +537,7 @@ static int qlcnic_pci_sriov_enable(struct qlcnic_adapter *adapter, int num_vfs)
|
|
|
return -EIO;
|
|
|
}
|
|
|
|
|
|
+ rtnl_lock();
|
|
|
if (netif_running(netdev))
|
|
|
__qlcnic_down(adapter, netdev);
|
|
|
|
|
@@ -555,6 +560,7 @@ static int qlcnic_pci_sriov_enable(struct qlcnic_adapter *adapter, int num_vfs)
|
|
|
__qlcnic_up(adapter, netdev);
|
|
|
|
|
|
error:
|
|
|
+ rtnl_unlock();
|
|
|
return err;
|
|
|
}
|
|
|
|