[dpdk-dev] [PATCH v2] net/i40e: fixed multi-queue Rx interrupt for VF
Lunyuan Cui
lunyuanx.cui at intel.com
Tue Jan 14 03:04:43 CET 2020
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 at intel.com>
---
v2:
- Change commit message
---
drivers/net/i40e/i40e_ethdev_vf.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 479f8282c..d514e8991 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -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;
}
--
2.17.1
More information about the dev
mailing list