aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
diff options
context:
space:
mode:
authorGreg Rose <gregory.v.rose@intel.com>2012-12-11 03:26:43 -0500
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2013-01-23 17:34:07 -0500
commitda36b64736cf2552e7fb5109c0255d4af804f5e7 (patch)
tree2a0b5b5693ab96737625349a02646ec556ec56e2 /drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
parent66dcfd756919ef9d8f564a0696a451574012852c (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.c31
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
6840void 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
6839void ixgbe_do_reset(struct net_device *netdev) 6859void 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