|
@@ -1550,7 +1550,10 @@ static void i40e_vsi_setup_queue_map(struct i40e_vsi *vsi,
|
|
|
* vectors available and so we need to lower the used
|
|
|
* q count.
|
|
|
*/
|
|
|
- qcount = min_t(int, vsi->alloc_queue_pairs, pf->num_lan_msix);
|
|
|
+ if (pf->flags & I40E_FLAG_MSIX_ENABLED)
|
|
|
+ qcount = min_t(int, vsi->alloc_queue_pairs, pf->num_lan_msix);
|
|
|
+ else
|
|
|
+ qcount = vsi->alloc_queue_pairs;
|
|
|
num_tc_qps = qcount / numtc;
|
|
|
num_tc_qps = min_t(int, num_tc_qps, i40e_pf_get_max_q_per_tc(pf));
|
|
|
|
|
@@ -1614,7 +1617,7 @@ static void i40e_vsi_setup_queue_map(struct i40e_vsi *vsi,
|
|
|
if ((vsi->type == I40E_VSI_MAIN) && (numtc == 1)) {
|
|
|
if (vsi->req_queue_pairs > 0)
|
|
|
vsi->num_queue_pairs = vsi->req_queue_pairs;
|
|
|
- else
|
|
|
+ else if (pf->flags & I40E_FLAG_MSIX_ENABLED)
|
|
|
vsi->num_queue_pairs = pf->num_lan_msix;
|
|
|
}
|
|
|
|
|
@@ -3416,7 +3419,7 @@ static irqreturn_t i40e_fdir_clean_ring(int irq, void *data)
|
|
|
* @v_idx: vector index
|
|
|
* @qp_idx: queue pair index
|
|
|
**/
|
|
|
-static void map_vector_to_qp(struct i40e_vsi *vsi, int v_idx, int qp_idx)
|
|
|
+static void i40e_map_vector_to_qp(struct i40e_vsi *vsi, int v_idx, int qp_idx)
|
|
|
{
|
|
|
struct i40e_q_vector *q_vector = vsi->q_vectors[v_idx];
|
|
|
struct i40e_ring *tx_ring = vsi->tx_rings[qp_idx];
|
|
@@ -3470,7 +3473,7 @@ static void i40e_vsi_map_rings_to_vectors(struct i40e_vsi *vsi)
|
|
|
q_vector->tx.ring = NULL;
|
|
|
|
|
|
while (num_ringpairs--) {
|
|
|
- map_vector_to_qp(vsi, v_start, qp_idx);
|
|
|
+ i40e_map_vector_to_qp(vsi, v_start, qp_idx);
|
|
|
qp_idx++;
|
|
|
qp_remaining--;
|
|
|
}
|
|
@@ -8798,6 +8801,11 @@ static int i40e_vsi_setup_vectors(struct i40e_vsi *vsi)
|
|
|
goto vector_setup_out;
|
|
|
}
|
|
|
|
|
|
+ /* In Legacy mode, we do not have to get any other vector since we
|
|
|
+ * piggyback on the misc/ICR0 for queue interrupts.
|
|
|
+ */
|
|
|
+ if (!(pf->flags & I40E_FLAG_MSIX_ENABLED))
|
|
|
+ return ret;
|
|
|
if (vsi->num_q_vectors)
|
|
|
vsi->base_vector = i40e_get_lump(pf, pf->irq_pile,
|
|
|
vsi->num_q_vectors, vsi->idx);
|