From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ktraynor@redhat.com>
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28])
 by dpdk.org (Postfix) with ESMTP id 0BC601B4AA
 for <stable@dpdk.org>; Thu, 29 Nov 2018 14:22:31 +0100 (CET)
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com
 [10.5.11.22])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mx1.redhat.com (Postfix) with ESMTPS id 4FA5D85541;
 Thu, 29 Nov 2018 13:22:30 +0000 (UTC)
Received: from ktraynor.remote.csb (ovpn-117-230.ams2.redhat.com
 [10.36.117.230])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 65B49105B1E0;
 Thu, 29 Nov 2018 13:22:28 +0000 (UTC)
From: Kevin Traynor <ktraynor@redhat.com>
To: Nitin Saxena <nitin.saxena@caviumnetworks.com>
Cc: Jerin Jacob <jerin.jacob@caviumnetworks.com>,
 Anoob Joseph <anoob.joseph@caviumnetworks.com>,
 dpdk stable <stable@dpdk.org>
Date: Thu, 29 Nov 2018 13:20:23 +0000
Message-Id: <20181129132128.7609-23-ktraynor@redhat.com>
In-Reply-To: <20181129132128.7609-1-ktraynor@redhat.com>
References: <20181129132128.7609-1-ktraynor@redhat.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16
 (mx1.redhat.com [10.5.110.28]); Thu, 29 Nov 2018 13:22:30 +0000 (UTC)
Subject: [dpdk-stable] patch 'net/octeontx: fix mbuf corruption with large
	private sizes' has been queued to stable release 18.08.1
X-BeenThere: stable@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches for DPDK stable branches <stable.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/stable>,
 <mailto:stable-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/stable/>
List-Post: <mailto:stable@dpdk.org>
List-Help: <mailto:stable-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/stable>,
 <mailto:stable-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Nov 2018 13:22:31 -0000

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/08/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>>From 880234be51cf1911645a7fd65305e0dbc553539a Mon Sep 17 00:00:00 2001
From: Nitin Saxena <nitin.saxena@caviumnetworks.com>
Date: Mon, 12 Nov 2018 17:54:09 +0000
Subject: [PATCH] net/octeontx: fix mbuf corruption with large private sizes

[ upstream commit 679dfdc96ef9ae0b1a54098fc19986f93621c8cb ]

When the priv_size of the mbuf is > 128 bytes, the mbuf would not be
properly constructed. This would lead to a corrupt mbuf.

This patch fixes the issue by accounting for
rte_pktmbuf_priv_size(pool) and RTE_PKTMBUF_HEADROOM
while configuring first skip register calculation.

Fixes: 197438ee9f18 ("net/octeontx: add Rx queue setup and release ops")

Suggested-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Anoob Joseph <anoob.joseph@caviumnetworks.com>
Signed-off-by: Nitin Saxena <nitin.saxena@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 drivers/net/octeontx/base/octeontx_pki_var.h | 13 +++++++++++--
 drivers/net/octeontx/octeontx_ethdev.c       |  3 ++-
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx/base/octeontx_pki_var.h b/drivers/net/octeontx/base/octeontx_pki_var.h
index c793b655a..f4661d24e 100644
--- a/drivers/net/octeontx/base/octeontx_pki_var.h
+++ b/drivers/net/octeontx/base/octeontx_pki_var.h
@@ -8,6 +8,15 @@
 #include <rte_byteorder.h>
 
-#define OCTTX_PACKET_WQE_SKIP		128
-#define OCTTX_PACKET_FIRST_SKIP		240
+#define OCTTX_PACKET_WQE_SKIP			128
+#define OCTTX_PACKET_FIRST_SKIP_MAXREGVAL	496
+#define OCTTX_PACKET_FIRST_SKIP_MAXLEN		512
+#define OCTTX_PACKET_FIRST_SKIP_ADJUST(x)				\
+		(RTE_MIN(x, OCTTX_PACKET_FIRST_SKIP_MAXREGVAL))
+#define OCTTX_PACKET_FIRST_SKIP_SUM(p)					\
+				(OCTTX_PACKET_WQE_SKIP			\
+				+ rte_pktmbuf_priv_size(p)		\
+				+ RTE_PKTMBUF_HEADROOM)
+#define OCTTX_PACKET_FIRST_SKIP(p)					\
+	OCTTX_PACKET_FIRST_SKIP_ADJUST(OCTTX_PACKET_FIRST_SKIP_SUM(p))
 #define OCTTX_PACKET_LATER_SKIP		128
 
diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c
index 0f3d5d673..328187c70 100644
--- a/drivers/net/octeontx/octeontx_ethdev.c
+++ b/drivers/net/octeontx/octeontx_ethdev.c
@@ -853,8 +853,9 @@ octeontx_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qidx,
 
 		pktbuf_conf.wqe_skip = OCTTX_PACKET_WQE_SKIP;
-		pktbuf_conf.first_skip = OCTTX_PACKET_FIRST_SKIP;
+		pktbuf_conf.first_skip = OCTTX_PACKET_FIRST_SKIP(mb_pool);
 		pktbuf_conf.later_skip = OCTTX_PACKET_LATER_SKIP;
 		pktbuf_conf.mbuff_size = (mb_pool->elt_size -
 					RTE_PKTMBUF_HEADROOM -
+					rte_pktmbuf_priv_size(mb_pool) -
 					sizeof(struct rte_mbuf));
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-29 13:11:35.609879259 +0000
+++ 0022-net-octeontx-fix-mbuf-corruption-with-large-private-.patch	2018-11-29 13:11:34.000000000 +0000
@@ -1,8 +1,10 @@
-From 679dfdc96ef9ae0b1a54098fc19986f93621c8cb Mon Sep 17 00:00:00 2001
+From 880234be51cf1911645a7fd65305e0dbc553539a Mon Sep 17 00:00:00 2001
 From: Nitin Saxena <nitin.saxena@caviumnetworks.com>
 Date: Mon, 12 Nov 2018 17:54:09 +0000
 Subject: [PATCH] net/octeontx: fix mbuf corruption with large private sizes
 
+[ upstream commit 679dfdc96ef9ae0b1a54098fc19986f93621c8cb ]
+
 When the priv_size of the mbuf is > 128 bytes, the mbuf would not be
 properly constructed. This would lead to a corrupt mbuf.
 
@@ -11,7 +13,6 @@
 while configuring first skip register calculation.
 
 Fixes: 197438ee9f18 ("net/octeontx: add Rx queue setup and release ops")
-Cc: stable@dpdk.org
 
 Suggested-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Signed-off-by: Anoob Joseph <anoob.joseph@caviumnetworks.com>
@@ -45,10 +46,10 @@
  #define OCTTX_PACKET_LATER_SKIP		128
  
 diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c
-index 068148624..a3063be42 100644
+index 0f3d5d673..328187c70 100644
 --- a/drivers/net/octeontx/octeontx_ethdev.c
 +++ b/drivers/net/octeontx/octeontx_ethdev.c
-@@ -845,8 +845,9 @@ octeontx_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qidx,
+@@ -853,8 +853,9 @@ octeontx_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qidx,
  
  		pktbuf_conf.wqe_skip = OCTTX_PACKET_WQE_SKIP;
 -		pktbuf_conf.first_skip = OCTTX_PACKET_FIRST_SKIP;