Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

qlcnic: Fix SR-IOV configuration

o Interface needs to be brought down and up while configuring SR-IOV.
Protect interface up/down using rtnl_lock()/rtnl_unlock()

Signed-off-by: Manish Chopra <manish.chopra@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Manish Chopra and committed by
David S. Miller
1ed98ed5 7167cf0e

+7 -1
+7 -1
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
··· 397 397 { 398 398 struct net_device *netdev = adapter->netdev; 399 399 400 + rtnl_lock(); 400 401 if (netif_running(netdev)) 401 402 __qlcnic_down(adapter, netdev); 402 403 ··· 408 407 /* After disabling SRIOV re-init the driver in default mode 409 408 configure opmode based on op_mode of function 410 409 */ 411 - if (qlcnic_83xx_configure_opmode(adapter)) 410 + if (qlcnic_83xx_configure_opmode(adapter)) { 411 + rtnl_unlock(); 412 412 return -EIO; 413 + } 413 414 414 415 if (netif_running(netdev)) 415 416 __qlcnic_up(adapter, netdev); 416 417 418 + rtnl_unlock(); 417 419 return 0; 418 420 } 419 421 ··· 537 533 return -EIO; 538 534 } 539 535 536 + rtnl_lock(); 540 537 if (netif_running(netdev)) 541 538 __qlcnic_down(adapter, netdev); 542 539 ··· 560 555 __qlcnic_up(adapter, netdev); 561 556 562 557 error: 558 + rtnl_unlock(); 563 559 return err; 564 560 } 565 561