diff options
author | Greg Rose <gregory.v.rose@intel.com> | 2012-10-02 20:57:23 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2012-10-09 05:08:39 -0400 |
commit | 91e2b89b04d3f568dc4ec99f242a4a742061e399 (patch) | |
tree | 0f2b8c7f595616c7c0213d93a04c49fb3047ad7b /drivers/net/ethernet | |
parent | 66eef59f22275002f621ff9d951886b513d011b3 (diff) |
ixgbevf: Set the netdev number of Tx queues
The driver was not setting the number of real Tx queues in the net_device
structure. This caused some serious issues such as Tx hangs and extremely
poor performance with some usages of the driver.
The issue is best observed by running:
iperf -c <host> -P <n>
Where n is greater than one. The greater the value of n the more likely
the problem is to show up.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index 0ee9bd4819f4..de1ad506665d 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | |||
@@ -1747,6 +1747,7 @@ err_tx_ring_allocation: | |||
1747 | **/ | 1747 | **/ |
1748 | static int ixgbevf_set_interrupt_capability(struct ixgbevf_adapter *adapter) | 1748 | static int ixgbevf_set_interrupt_capability(struct ixgbevf_adapter *adapter) |
1749 | { | 1749 | { |
1750 | struct net_device *netdev = adapter->netdev; | ||
1750 | int err = 0; | 1751 | int err = 0; |
1751 | int vector, v_budget; | 1752 | int vector, v_budget; |
1752 | 1753 | ||
@@ -1775,6 +1776,12 @@ static int ixgbevf_set_interrupt_capability(struct ixgbevf_adapter *adapter) | |||
1775 | 1776 | ||
1776 | ixgbevf_acquire_msix_vectors(adapter, v_budget); | 1777 | ixgbevf_acquire_msix_vectors(adapter, v_budget); |
1777 | 1778 | ||
1779 | err = netif_set_real_num_tx_queues(netdev, adapter->num_tx_queues); | ||
1780 | if (err) | ||
1781 | goto out; | ||
1782 | |||
1783 | err = netif_set_real_num_rx_queues(netdev, adapter->num_rx_queues); | ||
1784 | |||
1778 | out: | 1785 | out: |
1779 | return err; | 1786 | return err; |
1780 | } | 1787 | } |