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.
This patch fixed this issue.
Fixes: 5b8d2d89dd99 (net/i40e: enable multi-queue Rx interrupt for VF)
Signed-off-by: Lunyuan Cui <lunyuanx.cui@intel.com>
---
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;
}