DPDK patches and discussions
 help / color / mirror / Atom feed
From: Rasesh Mody <rasesh.mody@qlogic.com>
To: <ferruh.yigit@intel.com>, <thomas.monjalon@6wind.com>,
	<bruce.richardson@intel.com>
Cc: <dev@dpdk.org>, <Dept-EngDPDKDev@qlogic.com>,
	Harish Patil <harish.patil@qlogic.com>
Subject: [dpdk-dev] [PATCH v3 28/32] qede: fix status_blk index for VF queues
Date: Sat, 15 Oct 2016 13:08:05 -0700	[thread overview]
Message-ID: <1476562089-21823-29-git-send-email-rasesh.mody@qlogic.com> (raw)
In-Reply-To: <1476562089-21823-1-git-send-email-rasesh.mody@qlogic.com>

From: Harish Patil <harish.patil@qlogic.com>

o Fix the fastpath status block index such that each queue pair shares
the same index value.

o Add ecore_vf_get_num_sbs() API that returns the number of status
blocks assigned by PF. Use that to decide how many VF queues can be
advertised. Additionally, restrict maximum number of VF queues to 16
for 100G VF case.

Fixes: 2ea6f76 ("qede: add core driver")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
---
 drivers/net/qede/base/ecore_vf.c     | 11 ++++++++++-
 drivers/net/qede/base/ecore_vf_api.h |  3 +++
 drivers/net/qede/qede_ethdev.h       |  1 +
 drivers/net/qede/qede_main.c         | 13 ++++++++++++-
 drivers/net/qede/qede_rxtx.c         | 15 ++++++++++++++-
 5 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/drivers/net/qede/base/ecore_vf.c b/drivers/net/qede/base/ecore_vf.c
index 634e2bb..be8b1ec 100644
--- a/drivers/net/qede/base/ecore_vf.c
+++ b/drivers/net/qede/base/ecore_vf.c
@@ -336,7 +336,7 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct ecore_hwfn *p_hwfn)
 	/* Learn of the possibility of CMT */
 	if (IS_LEAD_HWFN(p_hwfn)) {
 		if (resp->pfdev_info.capabilities & PFVF_ACQUIRE_CAP_100G) {
-			DP_NOTICE(p_hwfn, false, "100g VF\n");
+			DP_INFO(p_hwfn, "100g VF\n");
 			p_hwfn->p_dev->num_hwfns = 2;
 		}
 	}
@@ -1382,6 +1382,15 @@ void ecore_vf_get_num_mac_filters(struct ecore_hwfn *p_hwfn,
 	*num_mac = p_vf->acquire_resp.resc.num_mac_filters;
 }
 
+void ecore_vf_get_num_sbs(struct ecore_hwfn *p_hwfn,
+			  u32 *num_sbs)
+{
+	struct ecore_vf_iov *p_vf;
+
+	p_vf = p_hwfn->vf_iov_info;
+	*num_sbs = (u32)p_vf->acquire_resp.resc.num_sbs;
+}
+
 bool ecore_vf_check_mac(struct ecore_hwfn *p_hwfn, u8 *mac)
 {
 	struct ecore_bulletin_content *bulletin;
diff --git a/drivers/net/qede/base/ecore_vf_api.h b/drivers/net/qede/base/ecore_vf_api.h
index c73244f..571fd37 100644
--- a/drivers/net/qede/base/ecore_vf_api.h
+++ b/drivers/net/qede/base/ecore_vf_api.h
@@ -87,6 +87,9 @@ void ecore_vf_get_num_vlan_filters(struct ecore_hwfn *p_hwfn,
 void ecore_vf_get_num_mac_filters(struct ecore_hwfn *p_hwfn,
 				  u32 *num_mac_filters);
 
+void ecore_vf_get_num_sbs(struct ecore_hwfn *p_hwfn,
+			  u32 *num_sbs);
+
 /**
  * @brief Check if VF can set a MAC address
  *
diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
index c3b87e8..7b235b1 100644
--- a/drivers/net/qede/qede_ethdev.h
+++ b/drivers/net/qede/qede_ethdev.h
@@ -29,6 +29,7 @@
 #include "base/ecore_hsi_eth.h"
 #include "base/ecore_dev_api.h"
 #include "base/ecore_iov_api.h"
+#include "base/ecore_cxt.h"
 
 #include "qede_logs.h"
 #include "qede_if.h"
diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c
index 0483116..4f1e3b0 100644
--- a/drivers/net/qede/qede_main.c
+++ b/drivers/net/qede/qede_main.c
@@ -384,6 +384,7 @@ int
 qed_fill_eth_dev_info(struct ecore_dev *edev, struct qed_dev_eth_info *info)
 {
 	struct qede_dev *qdev = (struct qede_dev *)edev;
+	uint8_t queues = 0;
 	int i;
 
 	memset(info, 0, sizeof(*info));
@@ -407,7 +408,17 @@ qed_fill_eth_dev_info(struct ecore_dev *edev, struct qed_dev_eth_info *info)
 		rte_memcpy(&info->port_mac, &edev->hwfns[0].hw_info.hw_mac_addr,
 			   ETHER_ADDR_LEN);
 	} else {
-		ecore_vf_get_num_rxqs(&edev->hwfns[0], &info->num_queues);
+		ecore_vf_get_num_rxqs(ECORE_LEADING_HWFN(edev),
+				      &info->num_queues);
+		if (edev->num_hwfns > 1) {
+			ecore_vf_get_num_rxqs(&edev->hwfns[1], &queues);
+			info->num_queues += queues;
+			/* Restrict 100G VF to advertise 16 queues till the
+			 * required support is available to go beyond 16.
+			 */
+			info->num_queues = RTE_MIN(info->num_queues,
+						   ECORE_MAX_VF_CHAINS_PER_PF);
+		}
 
 		ecore_vf_get_num_vlan_filters(&edev->hwfns[0],
 					      (u8 *)&info->num_vlan_filters);
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index d903a84..087a2bb 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -424,9 +424,22 @@ qede_alloc_mem_sb(struct qede_dev *qdev, struct ecore_sb_info *sb_info,
 
 int qede_alloc_fp_resc(struct qede_dev *qdev)
 {
+	struct ecore_dev *edev = &qdev->edev;
 	struct qede_fastpath *fp;
+	uint32_t num_sbs;
 	int rc, i;
 
+	if (IS_VF(edev))
+		ecore_vf_get_num_sbs(ECORE_LEADING_HWFN(edev), &num_sbs);
+	else
+		num_sbs = (ecore_cxt_get_proto_cid_count
+			  (ECORE_LEADING_HWFN(edev), PROTOCOLID_ETH, NULL)) / 2;
+
+	if (num_sbs == 0) {
+		DP_ERR(edev, "No status blocks available\n");
+		return -EINVAL;
+	}
+
 	if (qdev->fp_array)
 		qede_free_fp_arrays(qdev);
 
@@ -438,7 +451,7 @@ int qede_alloc_fp_resc(struct qede_dev *qdev)
 
 	for (i = 0; i < QEDE_QUEUE_CNT(qdev); i++) {
 		fp = &qdev->fp_array[i];
-		if (qede_alloc_mem_sb(qdev, fp->sb_info, i)) {
+		if (qede_alloc_mem_sb(qdev, fp->sb_info, i % num_sbs)) {
 			qede_free_fp_arrays(qdev);
 			return -ENOMEM;
 		}
-- 
1.8.3.1

  parent reply	other threads:[~2016-10-15 20:10 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-15 20:07 [dpdk-dev] [PATCH v3 00/32] qede: update qede pmd to 1.2.0.1 and enable by default Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 01/32] qede/base: add new init files and rearrange the code Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 02/32] qede/base: formatting changes Rasesh Mody
2016-10-17 16:28   ` Ferruh Yigit
2016-10-17 17:25     ` Mody, Rasesh
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 03/32] qede: use FW CONFIG defines as needed Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 04/32] qede/base: add HSI changes and register defines Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 05/32] qede/base: fix the attention formating string Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 06/32] qede/base: additional formatting/comment changes Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 07/32] qede: fix 32 bit compilation Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 08/32] qede: change the API signature of ecore_mcp_cmd_and_union() Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 09/32] qede: serialize access to MFW mbox Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 10/32] qede: add APIs to support NIC selftests and query sensor info Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 11/32] qede/base: update base driver Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 12/32] qede/base: rename structure and defines Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 13/32] qede/base: comment enhancements Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 14/32] qede/base: add MFW crash dump support Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 15/32] qede: enable support for unequal number of RX/TX queues Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 16/32] qede: fix port (re)configuration issue Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 17/32] qede/base: allow MTU change via vport-update Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 18/32] qede: add missing 100G link speed capability Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 19/32] qede: remove unused/dead code Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 20/32] qede: fixes for VLAN filters Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 21/32] qede: add enable/disable VLAN filtering Rasesh Mody
2016-10-15 20:07 ` [dpdk-dev] [PATCH v3 22/32] qede: fix RSS related issues Rasesh Mody
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 23/32] qede: add scatter gather support Rasesh Mody
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 24/32] qede/base: change rx tx queue start APIs Rasesh Mody
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 25/32] qede/base: add support to initiate PF FLR Rasesh Mody
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 26/32] qede: skip slowpath polling for 100G VF device Rasesh Mody
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 27/32] qede: fix driver version string Rasesh Mody
2016-10-15 20:08 ` Rasesh Mody [this message]
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 29/32] qede: add support for queue statistics Rasesh Mody
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 30/32] qede: remove zlib dependency and enable PMD by default Rasesh Mody
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 31/32] doc: update qede pmd documentation Rasesh Mody
2016-10-15 20:08 ` [dpdk-dev] [PATCH v3 32/32] qede: update driver version Rasesh Mody
2016-10-17 17:05 ` [dpdk-dev] [PATCH v3 00/32] qede: update qede pmd to 1.2.0.1 and enable by default Ferruh Yigit
2016-10-17 17:52   ` Mody, Rasesh

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=1476562089-21823-29-git-send-email-rasesh.mody@qlogic.com \
    --to=rasesh.mody@qlogic.com \
    --cc=Dept-EngDPDKDev@qlogic.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=harish.patil@qlogic.com \
    --cc=thomas.monjalon@6wind.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).