All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ye Xiaolong <xiaolong.ye@intel.com>
To: Jiang Mao <maox.jiang@intel.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH 1/2] net/i40e: fix binding interrupt without msix vectors
Date: Tue, 9 Jun 2020 10:02:19 +0800	[thread overview]
Message-ID: <20200609020219.GA7842@intel.com> (raw)
In-Reply-To: <20200609013712.27026-1-maox.jiang@intel.com>

On 06/09, Jiang Mao wrote:
>The value of vsi->nb_msix shouldn`t be zero, otherwise, all of interrupts will be bind to vector 0.
>
>Signed-off-by: Jiang Mao <maox.jiang@intel.com>
>
>Fixes: 4861cde461 (i40e: new poll mode driver)

Fixes tag should be put before SOB line and please cc stable@dpdk.org.

>---
> drivers/net/i40e/i40e_ethdev.c | 41 +++++++++++++++++++++++-----------
> drivers/net/i40e/i40e_ethdev.h |  2 +-
> 2 files changed, 29 insertions(+), 14 deletions(-)
>
>diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
>index 970a31cb2..33ed556c8 100644
>--- a/drivers/net/i40e/i40e_ethdev.c
>+++ b/drivers/net/i40e/i40e_ethdev.c
>@@ -2013,7 +2013,7 @@ __vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t msix_vect,
> 	I40E_WRITE_FLUSH(hw);
> }
> 
>-void
>+int
> i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx)
> {
> 	struct rte_eth_dev *dev = vsi->adapter->eth_dev;
>@@ -2033,10 +2033,14 @@ i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx)
> 
> 	/* VF bind interrupt */
> 	if (vsi->type == I40E_VSI_SRIOV) {
>+		if (vsi->nb_msix == 0) {
>+			PMD_DRV_LOG(ERR, "No msix resource");
>+			return -EINVAL;
>+		}
> 		__vsi_queues_bind_intr(vsi, msix_vect,
>-				       vsi->base_queue, vsi->nb_qps,
>-				       itr_idx);
>-		return;
>+							   vsi->base_queue, vsi->nb_qps,
>+							   itr_idx);

The indentation seems weird, please keep it as before, and same for other
occurrences in this patch.

>+		return 0;
> 	}
> 
> 	/* PF & VMDq bind interrupt */
>@@ -2053,16 +2057,19 @@ i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx)
> 	}
> 
> 	for (i = 0; i < vsi->nb_used_qps; i++) {
>-		if (nb_msix <= 1) {
>+		if (vsi->nb_msix == 0) {
>+			PMD_DRV_LOG(ERR, "No msix resource");
>+			return -EINVAL;
>+		} else if (nb_msix <= 1) {
> 			if (!rte_intr_allow_others(intr_handle))
> 				/* allow to share MISC_VEC_ID */
> 				msix_vect = I40E_MISC_VEC_ID;
> 
> 			/* no enough msix_vect, map all to one */
> 			__vsi_queues_bind_intr(vsi, msix_vect,
>-					       vsi->base_queue + i,
>-					       vsi->nb_used_qps - i,
>-					       itr_idx);
>+								   vsi->base_queue + i,
>+								   vsi->nb_used_qps - i,
>+								   itr_idx);
> 			for (; !!record && i < vsi->nb_used_qps; i++)
> 				intr_handle->intr_vec[queue_idx + i] =
> 					msix_vect;
>@@ -2078,6 +2085,8 @@ i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx)
> 		msix_vect++;
> 		nb_msix--;
> 	}
>+
>+	return 0;
> }
> 
> static void
>@@ -2318,21 +2327,27 @@ i40e_dev_start(struct rte_eth_dev *dev)
> 	/* Map queues with MSIX interrupt */
> 	main_vsi->nb_used_qps = dev->data->nb_rx_queues -
> 		pf->nb_cfg_vmdq_vsi * RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM;
>-	i40e_vsi_queues_bind_intr(main_vsi, I40E_ITR_INDEX_DEFAULT);
>+	ret = i40e_vsi_queues_bind_intr(main_vsi, I40E_ITR_INDEX_DEFAULT);
>+	if (ret < 0)
>+		return ret;
> 	i40e_vsi_enable_queues_intr(main_vsi);
> 
> 	/* Map VMDQ VSI queues with MSIX interrupt */
> 	for (i = 0; i < pf->nb_cfg_vmdq_vsi; i++) {
> 		pf->vmdq[i].vsi->nb_used_qps = RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM;
>-		i40e_vsi_queues_bind_intr(pf->vmdq[i].vsi,
>-					  I40E_ITR_INDEX_DEFAULT);
>+		ret = i40e_vsi_queues_bind_intr(pf->vmdq[i].vsi,
>+										I40E_ITR_INDEX_DEFAULT);
>+		if (ret < 0)
>+			return ret;
> 		i40e_vsi_enable_queues_intr(pf->vmdq[i].vsi);
> 	}
> 
> 	/* enable FDIR MSIX interrupt */
> 	if (pf->fdir.fdir_vsi) {
>-		i40e_vsi_queues_bind_intr(pf->fdir.fdir_vsi,
>-					  I40E_ITR_INDEX_NONE);
>+		ret = i40e_vsi_queues_bind_intr(pf->fdir.fdir_vsi,
>+										I40E_ITR_INDEX_NONE);
>+		if (ret < 0)
>+			return ret;
> 		i40e_vsi_enable_queues_intr(pf->fdir.fdir_vsi);
> 	}
> 
>diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h
>index e5d0ce53f..33fbe776b 100644
>--- a/drivers/net/i40e/i40e_ethdev.h
>+++ b/drivers/net/i40e/i40e_ethdev.h
>@@ -1248,7 +1248,7 @@ void i40e_update_vsi_stats(struct i40e_vsi *vsi);
> void i40e_pf_disable_irq0(struct i40e_hw *hw);
> void i40e_pf_enable_irq0(struct i40e_hw *hw);
> int i40e_dev_link_update(struct rte_eth_dev *dev, int wait_to_complete);
>-void i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx);
>+int i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx);
> void i40e_vsi_queues_unbind_intr(struct i40e_vsi *vsi);
> int i40e_vsi_vlan_pvid_set(struct i40e_vsi *vsi,
> 			   struct i40e_vsi_vlan_pvid_info *info);
>-- 
>2.17.1
>

  parent reply	other threads:[~2020-06-09  2:10 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-09  1:37 [dpdk-dev] [PATCH 1/2] net/i40e: fix binding interrupt without msix vectors Jiang Mao
2020-06-09  1:37 ` [dpdk-dev] [PATCH 2/2] net/i40e: fix fdir allocating msix resource error Jiang Mao
2020-06-09  2:02 ` Ye Xiaolong [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-06-09  2:25 [dpdk-dev] [PATCH 1/2] net/i40e: fix binding interrupt without msix vectors Jiang Mao
2020-06-17  5:42 ` Huang, ZhiminX
2020-07-08 19:50 ` Jiang Mao
2020-07-21  3:57   ` Jeff Guo
2020-07-21  6:50     ` Jiang, MaoX

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200609020219.GA7842@intel.com \
    --to=xiaolong.ye@intel.com \
    --cc=dev@dpdk.org \
    --cc=maox.jiang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.