Skip to content

Commit

Permalink
igb: make sure SR-IOV init uses the right number of queues
Browse files Browse the repository at this point in the history
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]>
  • Loading branch information
Todd Fujinaka authored and Jeff Kirsher committed Aug 18, 2015
1 parent fae5eca commit ceee345
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/net/ethernet/intel/igb/igb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -2651,6 +2653,9 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
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);
Expand Down Expand Up @@ -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 */
Expand All @@ -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);

Expand Down

0 comments on commit ceee345

Please sign in to comment.