提交 8f15486d 编写于 作者: A Alexander Duyck 提交者: Jeff Kirsher

ixgbe: Default to queue pairs when number of queues is less than CPUs

The old code had several errors in how it was determining the vector
budget.  In order to simplify things this patch updates the code so that it
will attempt to always allocated paired Rx/Tx vectors instead of attempting
to allocate individual vectors when the number of queues is less than the
number of CPUs.
Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
Tested-by: NStephen Ko <stephen.s.ko@intel.com>
Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
上级 5d967eb7
...@@ -370,7 +370,7 @@ static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) ...@@ -370,7 +370,7 @@ static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring)
#define MAX_MSIX_Q_VECTORS MAX_MSIX_Q_VECTORS_82599 #define MAX_MSIX_Q_VECTORS MAX_MSIX_Q_VECTORS_82599
#define MAX_MSIX_COUNT MAX_MSIX_VECTORS_82599 #define MAX_MSIX_COUNT MAX_MSIX_VECTORS_82599
#define MIN_MSIX_Q_VECTORS 2 #define MIN_MSIX_Q_VECTORS 1
#define MIN_MSIX_COUNT (MIN_MSIX_Q_VECTORS + NON_Q_VECTORS) #define MIN_MSIX_COUNT (MIN_MSIX_Q_VECTORS + NON_Q_VECTORS)
/* default to trying for four seconds */ /* default to trying for four seconds */
......
...@@ -4561,11 +4561,9 @@ static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter, ...@@ -4561,11 +4561,9 @@ static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter,
{ {
int err, vector_threshold; int err, vector_threshold;
/* We'll want at least 3 (vector_threshold): /* We'll want at least 2 (vector_threshold):
* 1) TxQ[0] Cleanup * 1) TxQ[0] + RxQ[0] handler
* 2) RxQ[0] Cleanup * 2) Other (Link Status Change, etc.)
* 3) Other (Link Status Change, etc.)
* 4) TCP Timer (optional)
*/ */
vector_threshold = MIN_MSIX_COUNT; vector_threshold = MIN_MSIX_COUNT;
...@@ -4919,9 +4917,11 @@ static int ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter) ...@@ -4919,9 +4917,11 @@ static int ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
* doesn't do us much good if we have a lot more vectors * doesn't do us much good if we have a lot more vectors
* than CPU's. So let's be conservative and only ask for * than CPU's. So let's be conservative and only ask for
* (roughly) the same number of vectors as there are CPU's. * (roughly) the same number of vectors as there are CPU's.
* The default is to use pairs of vectors.
*/ */
v_budget = min(adapter->num_rx_queues + adapter->num_tx_queues, v_budget = max(adapter->num_rx_queues, adapter->num_tx_queues);
(int)num_online_cpus()) + NON_Q_VECTORS; v_budget = min_t(int, v_budget, num_online_cpus());
v_budget += NON_Q_VECTORS;
/* /*
* At the same time, hardware can only support a maximum of * At the same time, hardware can only support a maximum of
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册