|
@@ -179,6 +179,8 @@ static void igb_check_vf_rate_limit(struct igb_adapter *);
|
|
|
#ifdef CONFIG_PCI_IOV
|
|
|
static int igb_vf_configure(struct igb_adapter *adapter, int vf);
|
|
|
static int igb_pci_enable_sriov(struct pci_dev *dev, int num_vfs);
|
|
|
+static int igb_disable_sriov(struct pci_dev *dev);
|
|
|
+static int igb_pci_disable_sriov(struct pci_dev *dev);
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_PM
|
|
@@ -2651,6 +2653,9 @@ err_eeprom:
|
|
|
err_sw_init:
|
|
|
kfree(adapter->shadow_vfta);
|
|
|
igb_clear_interrupt_scheme(adapter);
|
|
|
+#ifdef CONFIG_PCI_IOV
|
|
|
+ igb_disable_sriov(pdev);
|
|
|
+#endif
|
|
|
pci_iounmap(pdev, hw->hw_addr);
|
|
|
err_ioremap:
|
|
|
free_netdev(netdev);
|
|
@@ -2981,6 +2986,8 @@ static int igb_sw_init(struct igb_adapter *adapter)
|
|
|
}
|
|
|
#endif /* CONFIG_PCI_IOV */
|
|
|
|
|
|
+ igb_probe_vfs(adapter);
|
|
|
+
|
|
|
igb_init_queue_configuration(adapter);
|
|
|
|
|
|
/* Setup and initialize a copy of the hw vlan table array */
|
|
@@ -2993,8 +3000,6 @@ static int igb_sw_init(struct igb_adapter *adapter)
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
|
- igb_probe_vfs(adapter);
|
|
|
-
|
|
|
/* Explicitly disable IRQ since the NIC can be in any state. */
|
|
|
igb_irq_disable(adapter);
|
|
|
|