[v2] net/i40e: fixed multi-queue Rx interrupt for VF
Checks
Commit Message
The value of vectors bound to each queue could not large
than the max usable vector. It will let devices start failed.
vf->vf_res->max_vectors is equal to the max vector number.
intr_handle->nb_efd is equal to queue number. Whichever one is
less, it is no need to check intr_handle->nb_efd when we keep
vector value less than vector number.
This patch fixed this issue.
Signed-off-by: Lunyuan Cui <lunyuanx.cui@intel.com>
---
v2:
- Change commit message
---
drivers/net/i40e/i40e_ethdev_vf.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
@@ -657,7 +657,6 @@ i40evf_config_irq_map(struct rte_eth_dev *dev)
struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
uint32_t vector_id;
int i, err;
- uint16_t nb_msix;
if (dev->data->dev_conf.intr_conf.rxq != 0 &&
rte_intr_allow_others(intr_handle))
@@ -665,9 +664,6 @@ i40evf_config_irq_map(struct rte_eth_dev *dev)
else
vector_id = I40E_MISC_VEC_ID;
- nb_msix = RTE_MIN(vf->vf_res->max_vectors,
- intr_handle->nb_efd);
-
map_info = (struct virtchnl_irq_map_info *)cmd_buffer;
map_info->num_vectors = dev->data->nb_rx_queues;
for (i = 0; i < dev->data->nb_rx_queues; i++) {
@@ -682,7 +678,7 @@ i40evf_config_irq_map(struct rte_eth_dev *dev)
intr_handle->intr_vec[i] = vector_id;
if (vector_id > I40E_MISC_VEC_ID)
vector_id++;
- if (vector_id > nb_msix)
+ if (vector_id >= vf->vf_res->max_vectors)
vector_id = I40E_RX_VEC_START;
}