diff options
| author | Greg Rose <gregory.v.rose@intel.com> | 2012-12-11 08:26:43 +0000 | 
|---|---|---|
| committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2013-01-23 14:34:07 -0800 | 
| commit | da36b64736cf2552e7fb5109c0255d4af804f5e7 (patch) | |
| tree | 2a0b5b5693ab96737625349a02646ec556ec56e2 /drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |
| parent | 66dcfd756919ef9d8f564a0696a451574012852c (diff) | |
| download | olio-linux-3.10-da36b64736cf2552e7fb5109c0255d4af804f5e7.tar.xz olio-linux-3.10-da36b64736cf2552e7fb5109c0255d4af804f5e7.zip  | |
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 2472dc85db0..5e3ed33215f 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)  }  #endif /* CONFIG_IXGBE_DCB */ +#ifdef CONFIG_PCI_IOV +void ixgbe_sriov_reinit(struct ixgbe_adapter *adapter) +{ +	struct net_device *netdev = adapter->netdev; + +	rtnl_lock(); +#ifdef CONFIG_IXGBE_DCB +	ixgbe_setup_tc(netdev, netdev_get_num_tc(netdev)); +#else +	if (netif_running(netdev)) +		ixgbe_close(netdev); +	ixgbe_clear_interrupt_scheme(adapter); +	ixgbe_init_interrupt_scheme(adapter); +	if (netif_running(netdev)) +		ixgbe_open(netdev); +#endif +	rtnl_unlock(); +} + +#endif  void ixgbe_do_reset(struct net_device *netdev)  {  	struct ixgbe_adapter *adapter = netdev_priv(netdev); @@ -7625,8 +7645,14 @@ static void ixgbe_remove(struct pci_dev *pdev)  	if (netdev->reg_state == NETREG_REGISTERED)  		unregister_netdev(netdev); -	ixgbe_disable_sriov(adapter); - +#ifdef CONFIG_PCI_IOV +	/* +	 * Only disable SR-IOV on unload if the user specified the now +	 * deprecated max_vfs module parameter. +	 */ +	if (max_vfs) +		ixgbe_disable_sriov(adapter); +#endif  	ixgbe_clear_interrupt_scheme(adapter);  	ixgbe_release_hw_control(adapter); @@ -7840,6 +7866,7 @@ static struct pci_driver ixgbe_driver = {  	.resume   = ixgbe_resume,  #endif  	.shutdown = ixgbe_shutdown, +	.sriov_configure = ixgbe_pci_sriov_configure,  	.err_handler = &ixgbe_err_handler  };  |