From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Kamil.Rytarowski@cavium.com>
Received: from NAM03-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam03on0057.outbound.protection.outlook.com [104.47.40.57])
 by dpdk.org (Postfix) with ESMTP id 570115AB0
 for <dev@dpdk.org>; Fri, 26 Aug 2016 18:55:19 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;
 bh=w8e1VQUbFc54sELnJNUOw3fu7y9XQWW29X3m7BX4sG4=;
 b=FGbFyXC9G7e4JQt/9KiKre97qF/AKaLRoVZh0qPAPy1Lg6tEuTy9KTvInjRKD9UPuuDbxLqLhPWcuFj0i/KZ6RoxtF6zjysEriRCi3nO5KCmjMRis3cneP/lyuUszS0YwhzpkDSGPWTQ4Ek6jQfB7zI9rsXfFIhs2KB7amBeMuQ=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Kamil.Rytarowski@cavium.com; 
Received: from cavium1.semihalf.local (31.172.191.173) by
 CY4PR07MB3064.namprd07.prod.outlook.com (10.172.116.145) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id
 15.1.549.15; Fri, 26 Aug 2016 16:55:15 +0000
From: Kamil Rytarowski <krytarowski@caviumnetworks.com>
To: <dev@dpdk.org>
CC: <maciej.czekaj@caviumnetworks.com>, <zyta.szpak@semihalf.com>,
 <slawomir.rosek@semihalf.com>, <rad@semihalf.com>,
 <jerin.jacob@caviumnetworks.com>, Kamil Rytarowski
 <kamil.rytarowski@caviumnetworks.com>
Date: Fri, 26 Aug 2016 18:54:06 +0200
Message-ID: <1472230448-17490-12-git-send-email-krytarowski@caviumnetworks.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1472230448-17490-1-git-send-email-krytarowski@caviumnetworks.com>
References: <1472230448-17490-1-git-send-email-krytarowski@caviumnetworks.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [31.172.191.173]
X-ClientProxiedBy: HE1PR0201CA0008.eurprd02.prod.outlook.com (10.165.229.18)
 To CY4PR07MB3064.namprd07.prod.outlook.com (10.172.116.145)
X-MS-Office365-Filtering-Correlation-Id: 117e93d0-348b-4927-ffad-08d3cdd1c1c6
X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3064;
 2:SzpP/iXHL0sH7MKReRDQstLY60ugC66U8c2aaJ+Qx351y5KSC+zFWuxxZH7ucT0g0lUFyClv68/WPRI8NQjk/NmJcf6ZDlWy11rAtIXvI5q7Cp+00Zi9hcgzpP3sGmuthZcTIQv3CIjEwuadv6SDtoW/ymvlNyzSlNTZ0B+Ieko/7sfunre0dKMq84RdoDV6;
 3:P3Ny0IWFjrrkXkaX31K9mfesTK7vfu1b8HAGTwSs5nFU3etDXekDLYg6BnPnXwDBp51vz9jikOcM0YeePyz+Fbsh6zS0iZL7O5l5Z8+MSh2IYDO2NsBrZeY/w1Glf4E5;
 25:kflhHM+4U1iG0bUJ/EEGTRmhrll6tWkdZoaiBeAeOzjjODuOgACC75cn8tzit9uBNQ8byYwEK2M9Vn5FiJNrnVSmhX4eD+aRphcOdlmHMIeKKfV/xCbWDs3CgagV8N2p8x9WaSF8qWUH/FhLUtiZV5MzPhu3CpiVISgoLDEc45iGH7F4irexoohofFImkEvBkeUPBEGlKpVhaQvOMVLf+UdCGQBK4ZF4zTr039M3jwJvJLqlWtVcLEEfQzSYmyMArfaVe++QPQIt24ElD2VHfW2jV/om8pYqJyudV5I720o+pCcue6GJ8zRN6QY5lz8yYd8YwEl0k605oOQfk3tab4vaHhnFjo/C3YxE1o+C9Ydl2fcsy3PRwlmXQubvsfTqYaR+UB0pIeO8DnxDFWsIoLCL5wXbySG/A5j3iyyIV9I=
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY4PR07MB3064;
X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3064;
 31:EXCe0N8E7RJPHFxPY1QQSUFfiplHWJMzuui95+3JRywUuRA5pfpupGRxpRwqhgspgDEE5L+ZqPtU9zPxn6CeTw4ezTxe2lWYVZa4Urp3A4IZ6AUiTYDOzb4MsIs6zmj1cVLPY69GcdlqflpRIFCwaGQnN5bYMYI0OtP7/utSIgDfD+Z0c7a4CcsOkqcQhMQvvj15q20R3pFiHKV3fC+5BgLArIbRcw6IuCc+AOp9Bcs=;
 20:dWs504jTIOszUsQNwd5HnNlDAlMbWHYx21fpimYNTf2a9Pbrh85YEAPGydXBPx1fiilWtUcYe2MhSByjU3VRs7XtFwrsU+dCrVjetCCfTOdQTQo2LJVlpqXKV1uniWhojv0T4FLiy7mq8v/wNuihZHNF+14KqJnqUGXNinQzY51wBRtZWX86nKxKpP1GwIxhuaq1tTPgai4vLx7Uh3dlxL1g7Vvzy/iVx6Tru3LoT+qxEOaA1UzUhq7keLYuGP1ownP3gRxQxdNhOGmU+iov4fMD0amm62EfushjO5ix3QOsx/rEmc32aULGqnmIDuDp21QsgRs/OQPQGDTBqAD0rD41Ob0xDY2KVPlxDxsh6lJhANSoN27/IZz16uzmvInhArqfxau5LEJw71rVAf4P+hyyaAQIhcc0oua/LIVjKC28HoUXJnH/UF5Sp2lZdWuW6KqxRonT6qFDyNU3zuON22h5qRB3Vj8QtD4wDC2DVGGyxQKbAga5TWRFjnLDWS0X408F+cVm5ATF8Ahd8HRDAB54F0ifjGEOX5sseYGrugYdyBIvLFsCCTNx8Js4tgl3evGUWH4fIXVDTNxnykMClgGUtwhaL+yZirtANoJ+UCE=
X-Microsoft-Antispam-PRVS: <CY4PR07MB3064FE0AA78CB2BB72C91CAEF9EC0@CY4PR07MB3064.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001);
 SRVR:CY4PR07MB3064; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3064; 
X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3064;
 4:KRjj2l3f8v4hvkdyj7us/pSGX01OBZ/O2RUK/UlfdJAou83GPO/hJUhdfYvj5pk2cMWSPiHwrmLJq4ZXtyIlHzCuKxQXVbO3xa8+dcw4z4pwM2nZQvxR/Nn6ehN+/pHF/KaapvAL47mJ6qsMVUspJ2ZrLmBje9ysQ992PmRvZs2Y8biQRASFnNoRR3FQONpEcddO+qXpzSA8remCbXgl+W3iPND7A00U1lHcREx6NXlbkcLm9KZdiwIqfYugH1GPiab5UyoQVJk5G5VIDtJkNjqqbfpeEhHirVBH8JQOSYyob+ZsrZ6Oq56OH+cO4ei+lud+dh6IZ7eUWF/itRSkD9ICjEGKP95v/4c0ZrXhPH8twiBFVjHQt21yhxdEn2bp4SKAa7doytPgN4SZHnUNrg==
X-Forefront-PRVS: 00462943DE
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(81156014)(36756003)(77096005)(189998001)(2906002)(229853001)(2351001)(105586002)(8676002)(101416001)(92566002)(5660300001)(81166006)(6116002)(4001430100002)(2950100001)(7736002)(47776003)(4326007)(66066001)(586003)(50466002)(106356001)(50226002)(5003940100001)(19580405001)(19580395003)(305945005)(50986999)(110136002)(76176999)(7846002)(48376002)(68736007)(42186005)(3846002)(107886002)(33646002)(97736004);
 DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3064; H:cavium1.semihalf.local; FPR:;
 SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; 
Received-SPF: None (protection.outlook.com: cavium.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3064;
 23:wwakyJX8uEC65g8RH028eWp39PcuxjqBeAV8dCu2n?=
 =?us-ascii?Q?fB/DuHHa6qQzKnxGdu8G0aZ2qmfiAjq5FNafViizrv/uPu6HQd3R6PjvCrYj?=
 =?us-ascii?Q?5+QjVjQpMYlznlx/IaMJA/y3zscVyEr9+A37n3ssd6b5VVfBsVhknPxcF0wR?=
 =?us-ascii?Q?wi+vHj8VANilu7Xj2hBKdwdDesGKXkJwRDfSauZvodAdHwcRLMxfGEk+fpIe?=
 =?us-ascii?Q?s16cJJ9Qd0ec3h+A2M9EECnfCIp7uihIHxLA67zNW+PSbybbEqgGMsBqHnxu?=
 =?us-ascii?Q?6+nimkAIDG6kOHj3MWXUkHu2uyNJRZRoXuuXGm2bCtmn/Snf11CE/yiZ9rot?=
 =?us-ascii?Q?7SQablthHvcaQQAxKN09TO8P1YaikeWg1hA9JxjbfcYobGViCVqH5zT+dxQC?=
 =?us-ascii?Q?u76sJs5dTlVdH6nII3GmYgtWjYa/Dg9eNzYq+HrxLCsFbMzr15j2qf78WVZ4?=
 =?us-ascii?Q?Tlz2sB3MzZIUzdwSF8C806n2k4yh59OtvysFAeEAnFf/l0LWa59ytpRoaw0E?=
 =?us-ascii?Q?hVwBK8wyUexu7y5y8Pj24nj3lqGH++PTbjO5l/ASUpxuvSSYlV64BSrDTJx3?=
 =?us-ascii?Q?XLUWegLSB+2jS+mNpzbzE6vpLI6vwUPPXAD31ROKvHVY7CjEG+Pl5556HLmc?=
 =?us-ascii?Q?YxSx854/XkzAITqFjAlpDLn4Whu83Yed+/vd5PwZpNLLGPKgdE3fMgo8u+vB?=
 =?us-ascii?Q?6TZIi+K6GHnICszhl+ulw/ZnfJ/IsCrkG6aACDObWpBPoFPOUbwmybksyniK?=
 =?us-ascii?Q?lFDvMgQpigt/FhGLSozncyjf+2Lpz2JFM0HFjZFkrLcFAU7i6PVasB6grKRo?=
 =?us-ascii?Q?8PQsohibYPkfIRYdgGnam8linm+LXWVwCHo4b9snEUkCnJDhk4ff9GGoFcOf?=
 =?us-ascii?Q?H+K5gJ8E8GBxYg0liqA3p94Tkqa0H+C0wTR7rM80HWbqSiPj4wPI7FNGW0RB?=
 =?us-ascii?Q?ZR2c1eMTr7hKCOfH6YL2rRXSUFAFcN1xX5yEKkPVGVqD20YL5TVvyK9U+tke?=
 =?us-ascii?Q?vU2mty0tgWbgFo3599LNisPmxQ0mXDVcPbMqGRpyXfYZDsiecDWvB7IKYdYp?=
 =?us-ascii?Q?5jnX4nDeByX4gOmfN/ST4n2ai7Bwi/53pGHh/0TBzt4DkjNSXceQXgBRLhfC?=
 =?us-ascii?Q?OPYXcvQQ20=3D?=
X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3064;
 6:IUFC6LKnPibtSLVG72jkza0WF0bwiALK3U5JN9X8i1+fPhrn4FSdsqYyotFUdpQXzA0ajkgq5U4tyDOwUKI0QI2Fp4seYuvj+XYsqASc0XgMrWyRG4xVT+jMg1tS7yUhh4ciGPm4g4zj0VPzSKn8m37MfbqA742W4jYqd70ySsOycUsFaBDj4MfMn8UBK+cCtJxZTmmDBy/BliDyBq5gyvu/PZ3RVJG/g1gUdi6bUAX9YnA0YkVRyT0D/FAiHCKG6S8bSaM1cxtOA9OwReU2N0c3DHtAGCYpv4LKhikMbgw=;
 5:LUni+ArioqtzCtElY+Qbi+HM7+mh3La/O5uKB/1tv8uc5eiYoK2dgEIpJfQ7mxlgZhnNZGZ6ZFBn2fLJ07BSoDc+ndX0WKwLDGiuE6zMXMaMSTstvSt6E1Om3fp81/gUoKB2N87Qo8snI/vznqOS6A==;
 24:GJCGx8CEvvJNEtvFeMeh1QnmnS+axRiyJi2JXo4m88Ha0XF+aQTSyaly6bgY3ccWLRo0MOiOKQf3vGYX9v3j7I+IQTvaSFv/D3cfOJlgu3k=;
 7:UqOZhqD7PC3QMrPbKumQ6CT5uO2mGNrPZLmyCvaNkdoo+X3Pc/PfHcwyF4jlS/XHGoHPs5/juTMpiGdqkgyz2OH07YvahxIM8ZWa36PtPiP7oosGyjRCPBfmJqoRG9OgaqjZ0NJb+b0ORiNp3gpdynv+tTukeUHPIWS3MxtOtGlzE5q3PysdcBKcEu1sacHgR7UUs4DfJulSM2BKLOeCHATTQuSnLkxPCZBXWEcKw6kVUj3JNGvO/W/my4dFE3Ty
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2016 16:55:15.4139 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3064
Subject: [dpdk-dev] [PATCH 11/13] net/thunderx: add secondary qset support
	in device configure
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 26 Aug 2016 16:55:20 -0000

From: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 drivers/net/thunderx/nicvf_ethdev.c | 65 +++++++++++++++++++++++++++++++++----
 1 file changed, 59 insertions(+), 6 deletions(-)

diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c
index 8510675..fcdbebf 100644
--- a/drivers/net/thunderx/nicvf_ethdev.c
+++ b/drivers/net/thunderx/nicvf_ethdev.c
@@ -163,6 +163,7 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 {
 	struct nicvf *nic = nicvf_pmd_priv(dev);
 	uint32_t buffsz, frame_size = mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
+	size_t i;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -198,6 +199,10 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 	/* Update max frame size */
 	dev->data->dev_conf.rxmode.max_rx_pkt_len = (uint32_t)frame_size;
 	nic->mtu = mtu;
+
+	for (i = 0; i < nic->sqs_count; i++)
+		nic->snicvf[i]->mtu = mtu;
+
 	return 0;
 }
 
@@ -507,7 +512,8 @@ nicvf_qset_cq_alloc(struct rte_eth_dev *dev, struct nicvf *nic,
 	const struct rte_memzone *rz;
 	uint32_t ring_size = CMP_QUEUE_SZ_MAX * sizeof(union cq_entry_t);
 
-	rz = rte_eth_dma_zone_reserve(dev, "cq_ring", qidx, ring_size,
+	rz = rte_eth_dma_zone_reserve(dev, "cq_ring",
+				      nicvf_netdev_qidx(nic, qidx), ring_size,
 				      NICVF_CQ_BASE_ALIGN_BYTES, nic->node);
 	if (rz == NULL) {
 		PMD_INIT_LOG(ERR, "Failed to allocate mem for cq hw ring");
@@ -530,8 +536,9 @@ nicvf_qset_sq_alloc(struct rte_eth_dev *dev, struct nicvf *nic,
 	const struct rte_memzone *rz;
 	uint32_t ring_size = SND_QUEUE_SZ_MAX * sizeof(union sq_entry_t);
 
-	rz = rte_eth_dma_zone_reserve(dev, "sq", qidx, ring_size,
-				NICVF_SQ_BASE_ALIGN_BYTES, nic->node);
+	rz = rte_eth_dma_zone_reserve(dev, "sq",
+				      nicvf_netdev_qidx(nic, qidx), ring_size,
+				      NICVF_SQ_BASE_ALIGN_BYTES, nic->node);
 	if (rz == NULL) {
 		PMD_INIT_LOG(ERR, "Failed allocate mem for sq hw ring");
 		return -ENOMEM;
@@ -563,8 +570,9 @@ nicvf_qset_rbdr_alloc(struct rte_eth_dev *dev, struct nicvf *nic,
 	}
 
 	ring_size = sizeof(struct rbdr_entry_t) * RBDR_QUEUE_SZ_MAX;
-	rz = rte_eth_dma_zone_reserve(dev, "rbdr", 0, ring_size,
-				   NICVF_RBDR_BASE_ALIGN_BYTES, nic->node);
+	rz = rte_eth_dma_zone_reserve(dev, "rbdr",
+				      nicvf_netdev_qidx(nic, 0), ring_size,
+				      NICVF_RBDR_BASE_ALIGN_BYTES, nic->node);
 	if (rz == NULL) {
 		PMD_INIT_LOG(ERR, "Failed to allocate mem for rbdr desc ring");
 		return -ENOMEM;
@@ -1678,12 +1686,37 @@ nicvf_dev_close(struct rte_eth_dev *dev)
 }
 
 static int
+nicvf_request_sqs(struct nicvf *nic)
+{
+	size_t i;
+
+	assert_if_secondary(nic);
+	assert(nic->sqs_count > 0);
+	assert(nic->sqs_count <= MAX_SQS_PER_VF);
+
+	/* Set no of Rx/Tx queues in each of the SQsets */
+	for (i = 0; i < nic->sqs_count; i++) {
+		if (nicvf_svf_empty())
+			rte_panic("Cannot assign sufficient number of "
+				  "secondary queues to primary VF%" PRIu8 "\n",
+				  nic->vf_id);
+
+		nic->snicvf[i] = nicvf_svf_pop();
+		nic->snicvf[i]->sqs_id = i;
+	}
+
+	return nicvf_mbox_request_sqs(nic);
+}
+
+static int
 nicvf_dev_configure(struct rte_eth_dev *dev)
 {
-	struct rte_eth_conf *conf = &dev->data->dev_conf;
+	struct rte_eth_dev_data *data = dev->data;
+	struct rte_eth_conf *conf = &data->dev_conf;
 	struct rte_eth_rxmode *rxmode = &conf->rxmode;
 	struct rte_eth_txmode *txmode = &conf->txmode;
 	struct nicvf *nic = nicvf_pmd_priv(dev);
+	uint8_t cqcount;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -1748,6 +1781,26 @@ nicvf_dev_configure(struct rte_eth_dev *dev)
 		return -EINVAL;
 	}
 
+	assert_if_secondary(nic);
+	NICVF_STATIC_ASSERT(MAX_RCV_QUEUES_PER_QS == MAX_SND_QUEUES_PER_QS);
+	cqcount = RTE_MAX(data->nb_tx_queues, data->nb_rx_queues);
+	if (cqcount > MAX_RCV_QUEUES_PER_QS) {
+		nic->sqs_count = RTE_ALIGN_CEIL(cqcount, MAX_RCV_QUEUES_PER_QS);
+		nic->sqs_count = (nic->sqs_count / MAX_RCV_QUEUES_PER_QS) - 1;
+	} else {
+		nic->sqs_count = 0;
+	}
+
+	assert(nic->sqs_count <= MAX_SQS_PER_VF);
+
+	if (nic->sqs_count > 0) {
+		if (nicvf_request_sqs(nic)) {
+			rte_panic("Cannot assign sufficient number of "
+				  "secondary queues to PORT%d VF%" PRIu8 "\n",
+				  dev->data->port_id, nic->vf_id);
+		}
+	}
+
 	PMD_INIT_LOG(DEBUG, "Configured ethdev port%d hwcap=0x%" PRIx64,
 		dev->data->port_id, nicvf_hw_cap(nic));
 
-- 
1.9.1