[dpdk-stable] patch 'net/octeontx: fix mbuf corruption with large private sizes' has been queued to stable release 18.08.1
Kevin Traynor
ktraynor at redhat.com
Thu Nov 29 14:20:23 CET 2018
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 at 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 at caviumnetworks.com>
Signed-off-by: Anoob Joseph <anoob.joseph at caviumnetworks.com>
Signed-off-by: Nitin Saxena <nitin.saxena at caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob at 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 at 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 at dpdk.org
Suggested-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>
Signed-off-by: Anoob Joseph <anoob.joseph at 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;
More information about the stable
mailing list