diff options
author | Greg Rose <gregory.v.rose@intel.com> | 2012-12-11 03:26:43 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2013-01-23 17:34:07 -0500 |
commit | da36b64736cf2552e7fb5109c0255d4af804f5e7 (patch) | |
tree | 2a0b5b5693ab96737625349a02646ec556ec56e2 /drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |
parent | 66dcfd756919ef9d8f564a0696a451574012852c (diff) |
ixgbe: Implement PCI SR-IOV sysfs callback operation
Implement callbacks in the driver for the new PCI bus driver
interface that allows the user to enable/disable SR-IOV VFs
in a device via the sysfs interface.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
CC: Don Dutile <ddutile@redhat.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 2472dc85db0d..5e3ed33215f7 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -6836,6 +6836,26 @@ int ixgbe_setup_tc(struct net_device *dev, u8 tc) | |||
6836 | } | 6836 | } |
6837 | 6837 | ||
6838 | #endif /* CONFIG_IXGBE_DCB */ | 6838 | #endif /* CONFIG_IXGBE_DCB */ |
6839 | #ifdef CONFIG_PCI_IOV | ||
6840 | void ixgbe_sriov_reinit(struct ixgbe_adapter *adapter) | ||
6841 | { | ||
6842 | struct net_device *netdev = adapter->netdev; | ||
6843 | |||
6844 | rtnl_lock(); | ||
6845 | #ifdef CONFIG_IXGBE_DCB | ||
6846 | ixgbe_setup_tc(netdev, netdev_get_num_tc(netdev)); | ||
6847 | #else | ||
6848 | if (netif_running(netdev)) | ||
6849 | ixgbe_close(netdev); | ||
6850 | ixgbe_clear_interrupt_scheme(adapter); | ||
6851 | ixgbe_init_interrupt_scheme(adapter); | ||
6852 | if (netif_running(netdev)) | ||
6853 | ixgbe_open(netdev); | ||
6854 | #endif | ||
6855 | rtnl_unlock(); | ||
6856 | } | ||
6857 | |||
6858 | #endif | ||
6839 | void ixgbe_do_reset(struct net_device *netdev) | 6859 | void ixgbe_do_reset(struct net_device *netdev) |
6840 | { | 6860 | { |
6841 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | 6861 | struct ixgbe_adapter *adapter = netdev_priv(netdev); |
@@ -7625,8 +7645,14 @@ static void ixgbe_remove(struct pci_dev *pdev) | |||
7625 | if (netdev->reg_state == NETREG_REGISTERED) | 7645 | if (netdev->reg_state == NETREG_REGISTERED) |
7626 | unregister_netdev(netdev); | 7646 | unregister_netdev(netdev); |
7627 | 7647 | ||
7628 | ixgbe_disable_sriov(adapter); | 7648 | #ifdef CONFIG_PCI_IOV |
7629 | 7649 | /* | |
7650 | * Only disable SR-IOV on unload if the user specified the now | ||
7651 | * deprecated max_vfs module parameter. | ||
7652 | */ | ||
7653 | if (max_vfs) | ||
7654 | ixgbe_disable_sriov(adapter); | ||
7655 | #endif | ||
7630 | ixgbe_clear_interrupt_scheme(adapter); | 7656 | ixgbe_clear_interrupt_scheme(adapter); |
7631 | 7657 | ||
7632 | ixgbe_release_hw_control(adapter); | 7658 | ixgbe_release_hw_control(adapter); |
@@ -7840,6 +7866,7 @@ static struct pci_driver ixgbe_driver = { | |||
7840 | .resume = ixgbe_resume, | 7866 | .resume = ixgbe_resume, |
7841 | #endif | 7867 | #endif |
7842 | .shutdown = ixgbe_shutdown, | 7868 | .shutdown = ixgbe_shutdown, |
7869 | .sriov_configure = ixgbe_pci_sriov_configure, | ||
7843 | .err_handler = &ixgbe_err_handler | 7870 | .err_handler = &ixgbe_err_handler |
7844 | }; | 7871 | }; |
7845 | 7872 | ||