mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04:00
igb: make sure SR-IOV init uses the right number of queues
Recent changes to igb_probe_vfs() could lead to the PF holding onto all of the queues. Reorder igb_probe_vfs() to be before gb_init_queue_configuration() and add some more error checking. Signed-off-by: Todd Fujinaka <[email protected]> Tested-by: Aaron Brown <[email protected]> Signed-off-by: Jeff Kirsher <[email protected]>
This commit is contained in:
1 parent
fae5ecaee3
commit
ceee3450b3
1 file changed
+7
-2
@@ -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);
|
||||
|
||||
|
||||
Reference in new issue
Block a user