From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Nitin.Saxena@cavium.com>
Received: from NAM02-CY1-obe.outbound.protection.outlook.com
 (mail-cys01nam02on0057.outbound.protection.outlook.com [104.47.37.57])
 by dpdk.org (Postfix) with ESMTP id 86DA11B01F
 for <dev@dpdk.org>; Mon, 16 Apr 2018 12:45:44 +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=pCOgUwmJsBETjilZJL9XmAB3Zm3TM9pGyM75sT31ZDQ=;
 b=AXncDajSCHpbM4B4WAnd9uq+EO+T91tfNYese1ADpJT+csJEiIbXfOWkWojJT9ZF7XVeWbNxJ+HPAq5FsX4HQcRIv2iZapeTffQ9HiFmxTZE4iOrM/Jl9DeBHoCQCd3cW0LJxSgoiqgn61zCbit03bJkyRkInJcrPBKWxMRLJX8=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Nitin.Saxena@cavium.com; 
Received: from kdocteontx.localdomain.caveonetworks.com (115.113.156.2) by
 BY2PR07MB694.namprd07.prod.outlook.com (2a01:111:e400:2c52::24) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.14; Mon, 16
 Apr 2018 10:45:39 +0000
From: Nitin Saxena <nitin.saxena@caviumnetworks.com>
To: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Cc: Nitin Saxena <nitin.saxena@caviumnetworks.com>,
 Narayana Prasad <narayanaprasad.athreya@caviumnetworks.com>, dev@dpdk.org
Date: Mon, 16 Apr 2018 10:44:47 +0000
Message-Id: <1523875487-5220-1-git-send-email-nitin.saxena@caviumnetworks.com>
X-Mailer: git-send-email 2.7.4
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [115.113.156.2]
X-ClientProxiedBy: BM1PR01CA0099.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00::15)
 To BY2PR07MB694.namprd07.prod.outlook.com
 (2a01:111:e400:2c52::24)
X-MS-PublicTrafficType: Email
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(7020095)(4652020)(5600026)(2017052603328)(7153060)(7193020);
 SRVR:BY2PR07MB694; 
X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB694;
 3:xmQk8FLnZosjs8nc7+yy5w7i70IBDULSOrOSvETFbCFb5XKRw2qbmKnpqFkR9mTOhEkcABZ58RTgQCx72N5cc7AiQc+uwclZ2r3qrO0aKKQ5QCZ1Np9fHiT3ayVB17InUV46n5QpC4d0t/nRU046ArL6H9BpKPzawdWtbBCvZWh6qKnJCHydvxvsskS3ChL06l6J+WQpi2dwzywt2SJ43YtynsdxTtGqaujPZJuGacW2Ub4xvtfSu4opZvSUW9ho;
 25:zjsWfV6hyLCerK2R8mu73xACOAxoTUlywfzFCPryN9JfyjU4LfyBKkOikDh0CNuKTcTUAQq9QK68zUV+rGldo36SviNUV+c0lQMkcrIPL5Ies7cxPipsu36y1iAdBJpr+UKJ8dNJFE9zPba7mFOdf0BhiwRfItGD6mXYxTu8oA3K9KwlR+yDPNbSbYgeDfMq4s7Y0OI4B86Ye6sJyTgI70brWn+yj85vtr1xRZWlgyuZD+pI/QR7ck3FClbNCOG0WoWEaK94y5EcFLCTMnHJmIQ/aGEibcNt42s3jxjuHWsuBB22MIHAXF7mVh4o4f/PS+K0yIPaXuYVS+RNvhRiej+HQwzCRLMNraQaSyymrjs=;
 31:bmA5LLCTgYHetN+CFSLR/pSkFXuOoJh5V5OI06YhzvKm1Rb+rGaE+WGHzdoYbBBQLqOCTib9zo2vdjk5jMEwRaRTrHXMVzr7mlZQM9lg0A8xT7j8ImcDrmO98C6YCGn/27t7n4LR3yRoZP3/Tx7JyIUIJc5tSCb5cU7d1TK7IsiVE9fztu4BjNJvejTQN+1Wn5sM70SmdyH0546Io3Ij8RxSc3T8XMFhvN1VC0wUec4=
X-MS-TrafficTypeDiagnostic: BY2PR07MB694:
X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB694;
 20:/1+nmvyNpJy8A0dtbyXTLR0J18rSt0Ch/YXBku0bvJGGDeuhEgASzWQGUq2mQfU+ChN3q7J3oNydKQeGqtqqm4p6EMX9hn3JZMC14VOxZ9X2/gcwFrhArOBEL7jHU+XJKCvZ6mPci7IHMg1RHU/+96okZUTgwMOc7ZSwQkAsM0O/Q3SxgrGqSzeUv1fwbuQDwdLdZvdn+UI0u1CYhqyKYGPp56b7cOSt96PprkQdVlO8qhoJDxiYPmz7dQ7gi9KnKEv09nwJ/UxrrjRbTV+LPfP9na0SUHhjs8QeycJKGud7dMntvw6+n/7YBw7ahsLiz9VKaO2znHs7ls46SCdTopb9WfKpg9HbQcfn47wZptUf0g/IhSTmD5+x0c0VE8RBuOkQxo2Dik1MyQ6vNJ5XqwgHIg4XCK8NJMYedPL6MpfBPOdfibarRqnGu+OZCAYVDa1cG5yMfjZU61pzv+u2mkIaSr0sSotXKyqzYCMp3EzwhosGRY4dbZBxAjG9S40Zo4fQSOhgishNgb7QmQo2q5k1T1Y2m5tY6rF3/G/WiS5vy+cjA0+Zodt6IDU3dxMl+qkdIcXicKD2oivOdMui05jr5VtkF4nsP2T2WOVVMrU=;
 4:nAFVnjnFt9Z8RgpTDuKaYwfUw8kCiO/whUbOtA3WANmAjrLJdlf9r0KNswtorJ0tbI5VrUDXDsNneY5IpSIA9TysYe84yk9VQBQOOGtCJV6jbXvSwjt2CuVppm0zqhb75FvzlIbbXJpladL2ZjWQ/WZVK4RBmc2pl07yba7s+8Be9iK0ad9ha2PdghMSav6hhw/ZLW+0kXFcMkqlkmIHCazzxYCVwwMA0b32sW5bf6jM80aKSyEpZh02BPd4koEhzoqr4CTSRX8UwC4QTn3TLA==
X-Microsoft-Antispam-PRVS: <BY2PR07MB6949341E302F45680ABA2FAEAB00@BY2PR07MB694.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231232)(944501327)(52105095)(3002001)(93006095)(6041310)(20161123562045)(20161123558120)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);
 SRVR:BY2PR07MB694; BCL:0; PCL:0; RULEID:; SRVR:BY2PR07MB694; 
X-Forefront-PRVS: 0644578634
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(396003)(366004)(39850400004)(346002)(376002)(39380400002)(189003)(199004)(6506007)(386003)(6116002)(59450400001)(6666003)(3846002)(478600001)(68736007)(106356001)(72206003)(316002)(956004)(66066001)(54906003)(47776003)(16586007)(50466002)(37006003)(2616005)(476003)(5660300001)(486006)(2906002)(51416003)(52116002)(36756003)(44832011)(50226002)(1857600001)(16526019)(42882007)(25786009)(48376002)(7736002)(105586002)(305945005)(81166006)(81156014)(6512007)(53936002)(8676002)(6486002)(8936002)(6636002)(4326008)(6862004)(97736004)(26005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR07MB694;
 H:kdocteontx.localdomain.caveonetworks.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
Received-SPF: None (protection.outlook.com: cavium.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB694;
 23:qPThVYJsde1QPTkR5xt5EHl597/dBIGLlN4P7IbJWi?=
 =?us-ascii?Q?fokW6K+fyUBGMxHbIKT48Izc1u48a105Kc4EVGsZ8ZzlpAUxdZWzZHLJr6tD?=
 =?us-ascii?Q?XlInIn+GgnyT9N7X30f6dvvAzEt6y7TZ9b40bpsJGsUM74Py1ScBbGIrDlXn?=
 =?us-ascii?Q?D2Pi+VUsNiC8S9Ta9Crv6rqCvldVTp2cRDaITflOfrq9M0J8nOHg5jVfNp9u?=
 =?us-ascii?Q?hpELu0eWbc7fczsikYUH8+9tZLCdlSOM7EbZmtFrjVoPmveafBYk9CVopot2?=
 =?us-ascii?Q?qb/rYhEtByNeJSYOX+w56YIWPIskLSuPnVqeuBXpSGPWW73uAskBHiTk2i9k?=
 =?us-ascii?Q?lLM3OEZ+GZRs8ns1F+pTZhRLtBgC8dSShXjSsx5X/HUKa1SVr5Gh/+brGugR?=
 =?us-ascii?Q?fZyKZk3rVfzoPScYIJtD+OiHAunXQOOwqrCdo1sH692ju0RS/GoCJWdLzBX8?=
 =?us-ascii?Q?AYrXET+8Uo8WP8rXBUDz9kYUJR3m0HvjR1h/bnXwAUc3aB1yGchb9hZPpRyw?=
 =?us-ascii?Q?pSrgaalOzv9uDu6V99w+ScinegYIaCaGA1oX1QSa32v1uD/2NBXdnyfrCVtY?=
 =?us-ascii?Q?WgZqrwqfspCD59o9bLj6p4xt7jULI+1qJvIdf4RazEVeL/yM8o0DM1f5MF9h?=
 =?us-ascii?Q?y8+DvVi4awklRR91whsC8N1eEFxpJoxpGAGYsCLdsMKO7TFfpdwwm3/NG4hX?=
 =?us-ascii?Q?WzA1dbLpD1AJgOk3p67xfMs5w+4PACGOeyr92nxAFGgbLaD8hZV7BDshwqD4?=
 =?us-ascii?Q?mUelNpDZiJSR1HinfTephj/SVx2XZfdRYTQxCDtJrMzGP4eOuoD1N3eBJaN7?=
 =?us-ascii?Q?vLeA0hUkZmVIWeXrB2gsHHwkenGO0UOtZWnm+ShkTN8hfmV29ij/OCyUhfu1?=
 =?us-ascii?Q?SMI+DR4zu3pFvVJ7FCL6e25X1OtzMsq2/hBpBJoFf9fObhxca8UkycDIeP+8?=
 =?us-ascii?Q?IArweBK+i+q27gyd37ipUFp2m7onb7oYa0ZOQwAkk6EIFXBr7Xo/SuKwPvr1?=
 =?us-ascii?Q?D7xegctWb0ztBB/53+NWDjW6lGj3PGO1wXB6vFO3jJedUhMfzybomI5ui/lS?=
 =?us-ascii?Q?IXD3B/+V/Qk/vbKqB9x/DAN8MKzECBilgnegmwwprgtxQDDq8KQ/o16No+Yg?=
 =?us-ascii?Q?a2kwQz+0bp41K5jyp2HTg1btCrMlZDTyNly9lyk21ZepMazBQrAOjnEPvmHV?=
 =?us-ascii?Q?Cit1sN9TPE6FwvCc5kFe688jAn0vPvBuzRNuraQ+pqi3H8hetfgX3tkF8UZh?=
 =?us-ascii?Q?O9vBso/jJbrNQjx2dU5zcDHUBeF8tKI9Rezkn3?=
X-Microsoft-Antispam-Message-Info: 7jfyAGGT29q+ZeASuIea6lAjUuj7X0lbSqIeKu5t0B2wmvFLBWI3p2jGn0uwouVk8AhB/38S+nTI5QqY2EGprEeI6J52/wkuCUmeeMsnLoTfAmGyLlz05GuSY/eBYGzrRdbyhPRJ2mjPOje3eF5xn1Xmfv/R2yWw/Z09Ngm4/1n/kR6isAZlLFt4gQEydVZQ
X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB694;
 6:Rrd/ObBEwtjoBWtke32dL5Ys/Htd6JCzEpcCVeu9QqUdrK2iYgpV0ZqU08x18TYIhQuvYUCKtr5YTtnbFJ41kxM4M99OkHTsYK/y9bvOGKTGxWuiYq3osQUfl2n4dfYBDBjNDQWPKYs3xTlQWlS8UuU6dKckgoJu9X9w9VEIHfhD7sqkEFSq9QSiddG+z28eY7V9txop68vtRUaXvKz9p7aHnRCxnRKvoFBNYKhBxvu0Rbtae4bGIj4skSuuOfzcR/g+l64y5LaLzYgPBWx9xibgl9PZ2oX8LCzrONRmmDFNJeOL1NK/Rard8a/giGxdqHWuj48bBwBjLPx0+EmskokotdIfzghqDIqBL8nnREgt4ifgKZFV5xNoTHh2FI0Vu3LHF4t3Aa7k3O/yX/oJ6OVzGw0YE2lyFLy1Tvh5hUyxt7GTYfTXd23eQTp0BqzIxCDVvkkLA+miFSuICoKT1Q==;
 5:U5wcJZvR0f1Q9o/+tm9pjxuqnE5ZrggeosUsyfekZUF8V4QzOV13zRuaW8QWtcX62RYIWkl7LQQyQO1AMkeJNFa7BJv5Nf1XlZHauq8mDCBWYTJvtYThp9bKAaBtFCiDMIaY4xNmFzd3C2EFov6mptwkOjK9Q/Y1TP4xOOtrxBo=;
 24:U6xZMGEEup1b4+S5ba6gt6Dim9NDDoUPHNV5eQhP25wWySUmKf2M/NQEbBIhSyQNJwKCJw2Tmp7NFWrLvXoa8upVQ5aIGNbPUQJbgF/95Vg=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB694;
 7:9PxE2qnfVZZYtRyVCdIVRbfmsaqkFsXaavK5jZ39PiVDcdJIAoROOPbKttszHR9OMc8vklg5+47B7w58inIOLMiWpR1nl3tpbfO0rN16GhK57BYQC60u8u0/CUPd9qwy4SBGdcGfq9sICDDpZHEm7zIoNqwRB4slK9bMddhDEuS3HkY9eewX2bi/MSgpc8pKCex3gAHAGRc7aZpZ6jGrh+4+tAI22nurgXlEzi0qbgxfhKwchf+uca7YdAbo4CdM
X-MS-Office365-Filtering-Correlation-Id: e7f6c92c-8458-4c87-5eca-08d5a38732df
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2018 10:45:39.7520 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e7f6c92c-8458-4c87-5eca-08d5a38732df
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR07MB694
Subject: [dpdk-dev] [PATCH] net/thunderx: fix MTU configuration for jumbo
	pkts
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://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: <https://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Apr 2018 10:45:45 -0000

thunderx pmd driver passes dev_info.max_rx_pktlen as
9200 (via rte_eth_dev_info_get()) to application.
But, when application tries to set MTU as
(9200 - sizeof(ethernet_header_t)) the operation fails
because of missing CRC and VLAN additions.

This patch fixes the following for thunderx pmd driver:
 - Sets NIC_HW_MAX_FRS to 9216 (instead of 9200)
 - Sets NIC_HW_MAX_MTU to 9190 (NIC_HW_MAX_FRS - ETH_HLEN
   - ETHER_CRC_LEN - 2*VLAN_HLEN)
 - Sets dev_info->max_rx_pkt_len to NIC_HW_MAX_MTU +
   ETH_HLEN (instead of 9200)
 - Allows rte_eth_dev_set_mtu() to pass if application
   (like VPP) calls rte_eth_dev_set_mtu() before
   rte_eth_dev_start() by putting appropriate check for
   dev->data->dev_started

Fixes: 65d9804edc05 ("net/thunderx: support MTU configuration")

Signed-off-by: Nitin Saxena <nitin.saxena@caviumnetworks.com>
---
 drivers/net/thunderx/base/nicvf_hw_defs.h |  5 ++++-
 drivers/net/thunderx/nicvf_ethdev.c       | 15 +++++++--------
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/net/thunderx/base/nicvf_hw_defs.h b/drivers/net/thunderx/base/nicvf_hw_defs.h
index b13c21f..b12c8ec 100644
--- a/drivers/net/thunderx/base/nicvf_hw_defs.h
+++ b/drivers/net/thunderx/base/nicvf_hw_defs.h
@@ -171,7 +171,10 @@
 
 /* Min/Max packet size */
 #define NIC_HW_MIN_FRS                  (64)
-#define NIC_HW_MAX_FRS                  (9200) /* 9216 max pkt including FCS */
+/* ETH_HLEN+ETH_FCS_LEN+2*VLAN_HLEN */
+#define NIC_HW_L2_OVERHEAD              (26)
+#define NIC_HW_MAX_MTU                  (9190)
+#define NIC_HW_MAX_FRS                  (NIC_HW_MAX_MTU + NIC_HW_L2_OVERHEAD)
 #define NIC_HW_MAX_SEGS                 (12)
 
 /* Descriptor alignments */
diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c
index 75e9d16..a7931af 100644
--- a/drivers/net/thunderx/nicvf_ethdev.c
+++ b/drivers/net/thunderx/nicvf_ethdev.c
@@ -162,7 +162,7 @@ static int
 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;
+	uint32_t buffsz, frame_size = mtu + NIC_HW_L2_OVERHEAD;
 	size_t i;
 	struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;
 
@@ -180,7 +180,7 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 	 * Refuse mtu that requires the support of scattered packets
 	 * when this feature has not been enabled before.
 	 */
-	if (!dev->data->scattered_rx &&
+	if (dev->data->dev_started && !dev->data->scattered_rx &&
 		(frame_size + 2 * VLAN_TAG_SIZE > buffsz))
 		return -EINVAL;
 
@@ -194,11 +194,11 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 	else
 		rxmode->offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;
 
-	if (nicvf_mbox_update_hw_max_frs(nic, frame_size))
+	if (nicvf_mbox_update_hw_max_frs(nic, mtu))
 		return -EINVAL;
 
-	/* Update max frame size */
-	rxmode->max_rx_pkt_len = (uint32_t)frame_size;
+	/* Update max_rx_pkt_len */
+	rxmode->max_rx_pkt_len = mtu + ETHER_HDR_LEN;
 	nic->mtu = mtu;
 
 	for (i = 0; i < nic->sqs_count; i++)
@@ -1408,7 +1408,7 @@ nicvf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 		dev_info->speed_capa |= ETH_LINK_SPEED_40G;
 
 	dev_info->min_rx_bufsize = ETHER_MIN_MTU;
-	dev_info->max_rx_pktlen = NIC_HW_MAX_FRS;
+	dev_info->max_rx_pktlen = NIC_HW_MAX_MTU + ETHER_HDR_LEN;
 	dev_info->max_rx_queues =
 			(uint16_t)MAX_RCV_QUEUES_PER_QS * (MAX_SQS_PER_VF + 1);
 	dev_info->max_tx_queues =
@@ -1741,8 +1741,7 @@ nicvf_dev_start(struct rte_eth_dev *dev)
 	/* Setup MTU based on max_rx_pkt_len or default */
 	mtu = dev->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_JUMBO_FRAME ?
 		dev->data->dev_conf.rxmode.max_rx_pkt_len
-			-  ETHER_HDR_LEN - ETHER_CRC_LEN
-		: ETHER_MTU;
+			-  ETHER_HDR_LEN : ETHER_MTU;
 
 	if (nicvf_dev_set_mtu(dev, mtu)) {
 		PMD_INIT_LOG(ERR, "Failed to set default mtu size");
-- 
2.7.4