From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <stable-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 03043A0524
	for <public@inbox.dpdk.org>; Fri,  5 Feb 2021 12:23:23 +0100 (CET)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id F10E51606CE;
	Fri,  5 Feb 2021 12:23:22 +0100 (CET)
Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com
 [209.85.128.46])
 by mails.dpdk.org (Postfix) with ESMTP id 797E51606CE
 for <stable@dpdk.org>; Fri,  5 Feb 2021 12:23:22 +0100 (CET)
Received: by mail-wm1-f46.google.com with SMTP id a16so7678640wmm.0
 for <stable@dpdk.org>; Fri, 05 Feb 2021 03:23:22 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=eZgFAGMeBJR4LwmLwRuv1Tvkx4hZeLv56iLIKg9Op6Y=;
 b=myA+3pWl9M3NHFolp13jkHmEk1WjM1vGUCNQN5DlkMBv3+t5Rnc3DK5d90N+39AuBe
 QiU6fTjEEIv8g4oj7FXe0bhrIIMN+g6rzai8MfLLiXePuH9wV9YloD8VCCrRsgL8HHCL
 gBiSf7r46s8fgUp8VwPT0RWTn9jqX1k48sx+3p5OJnfW5inG9QTaU9Zzb65xV8fOhSkE
 BHX3uac0aVSfoDO33aE4xqPTG1VmDqCuZxqzSK6tj7xvZbCjKuNFffBa8KIotpnWkfSM
 hEBuGmEOGWHMAPPlGMx8w7fnwwsxaUPL6w/b86mQUvsNiX//BsW52atDFTuwNbKpXgW2
 LTBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=eZgFAGMeBJR4LwmLwRuv1Tvkx4hZeLv56iLIKg9Op6Y=;
 b=p99evCK4ZoRTqrdmOKkIAdEUo2ZF0rnJPNoDfirmy0dwlK0F3ZT+Mn2goRO0yJ0f4g
 V/AjrAgc9ACZSyw2f9SU9rWmwojLaxOETxhi2lbhFIL86kxsHlg2V/7GdARbS4wJkjmr
 757QTxwIIY9qX7+CXBF2ApJTzm2U/FZ31ib5TUpYkIhnHhXDhFhiujTost/nhsq0h61l
 XGQhfVFqn8J0HZWNj0gF2DUdZPYwCyrE28HHPQlq2a639GR6f0ZUrrmoASaIiWJXatuJ
 /vowpnK1DJi1fEwESO8F1t5TUZyx6B2UTEFaHMl+M+DEy98prfVlulGu+nPDbehpJb0p
 qmgg==
X-Gm-Message-State: AOAM531j8Lxbr8YdPYwSHa+9+LbOZvN/8bnD/wbwz0mDRPC8AMDDccc3
 4FoTfIwVkDtSEA2GgC9ubqY=
X-Google-Smtp-Source: ABdhPJxRkYbKDnXT7jaMJQ9UA5Fmc2eAEt/NwxAlYPT+6eMtifx8I4JDdzS9NUm8UIeWZboT5WI4lw==
X-Received: by 2002:a7b:c95a:: with SMTP id i26mr3194802wml.164.1612524202207; 
 Fri, 05 Feb 2021 03:23:22 -0800 (PST)
Received: from localhost ([88.98.246.218])
 by smtp.gmail.com with ESMTPSA id o13sm5138284wmh.2.2021.02.05.03.23.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 05 Feb 2021 03:23:21 -0800 (PST)
From: luca.boccassi@gmail.com
To: Lance Richardson <lance.richardson@broadcom.com>
Cc: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>,
 Ajit Khaparde <ajit.khaparde@broadcom.com>, dpdk stable <stable@dpdk.org>
Date: Fri,  5 Feb 2021 11:15:58 +0000
Message-Id: <20210205111920.1272063-72-luca.boccassi@gmail.com>
X-Mailer: git-send-email 2.29.2
In-Reply-To: <20210205111920.1272063-1-luca.boccassi@gmail.com>
References: <20210205111920.1272063-1-luca.boccassi@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: [dpdk-stable] patch 'net/bnxt: make offload flags mapping per-ring'
 has been queued to stable release 20.11.1
X-BeenThere: stable@dpdk.org
X-Mailman-Version: 2.1.29
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>
Errors-To: stable-bounces@dpdk.org
Sender: "stable" <stable-bounces@dpdk.org>

Hi,

FYI, your patch has been queued to stable release 20.11.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 02/07/21. 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. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable

This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/cee5f387737a1208eed369f423d96320a970f21f

Thanks.

Luca Boccassi

---
>From cee5f387737a1208eed369f423d96320a970f21f Mon Sep 17 00:00:00 2001
From: Lance Richardson <lance.richardson@broadcom.com>
Date: Fri, 18 Dec 2020 15:28:36 -0500
Subject: [PATCH] net/bnxt: make offload flags mapping per-ring

[ upstream commit d5bbd722469b61c0bc8bc95c51c46b80de045149 ]

Refactor offload flags mapping table to be dynamic  and
per-ring instead of static and global.

Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxr.c           | 34 +++++++++------------------
 drivers/net/bnxt/bnxt_rxr.h           | 12 +++++-----
 drivers/net/bnxt/bnxt_rxtx_vec_neon.c | 10 ++++----
 drivers/net/bnxt/bnxt_rxtx_vec_sse.c  | 10 ++++----
 4 files changed, 29 insertions(+), 37 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index c5d23050e6..cba03bb38e 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -406,24 +406,14 @@ bnxt_parse_pkt_type(struct rx_pkt_cmpl *rxcmp, struct rx_pkt_cmpl_hi *rxcmp1)
 	return bnxt_ptype_table[index];
 }
 
-uint32_t
-bnxt_ol_flags_table[BNXT_OL_FLAGS_TBL_DIM] __rte_cache_aligned;
-
-uint32_t
-bnxt_ol_flags_err_table[BNXT_OL_FLAGS_ERR_TBL_DIM] __rte_cache_aligned;
-
 static void __rte_cold
-bnxt_init_ol_flags_tables(void)
+bnxt_init_ol_flags_tables(struct bnxt_rx_ring_info *rxr)
 {
-	static bool initialized;
 	uint32_t *pt;
 	int i;
 
-	if (initialized)
-		return;
-
 	/* Initialize ol_flags table. */
-	pt = bnxt_ol_flags_table;
+	pt = rxr->ol_flags_table;
 	for (i = 0; i < BNXT_OL_FLAGS_TBL_DIM; i++) {
 		pt[i] = 0;
 		if (i & RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN)
@@ -440,7 +430,7 @@ bnxt_init_ol_flags_tables(void)
 	}
 
 	/* Initialize checksum error table. */
-	pt = bnxt_ol_flags_err_table;
+	pt = rxr->ol_flags_err_table;
 	for (i = 0; i < BNXT_OL_FLAGS_ERR_TBL_DIM; i++) {
 		pt[i] = 0;
 		if (i & (RX_PKT_CMPL_ERRORS_IP_CS_ERROR >> 4))
@@ -455,13 +445,11 @@ bnxt_init_ol_flags_tables(void)
 		if (i & (RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR >> 4))
 			pt[i] |= PKT_RX_OUTER_L4_CKSUM_BAD;
 	}
-
-	initialized = true;
 }
 
 static void
-bnxt_set_ol_flags(struct rx_pkt_cmpl *rxcmp, struct rx_pkt_cmpl_hi *rxcmp1,
-		  struct rte_mbuf *mbuf)
+bnxt_set_ol_flags(struct bnxt_rx_ring_info *rxr, struct rx_pkt_cmpl *rxcmp,
+		  struct rx_pkt_cmpl_hi *rxcmp1, struct rte_mbuf *mbuf)
 {
 	uint16_t flags_type, errors, flags;
 	uint64_t ol_flags;
@@ -482,10 +470,10 @@ bnxt_set_ol_flags(struct rx_pkt_cmpl *rxcmp, struct rx_pkt_cmpl_hi *rxcmp1,
 				 RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR);
 	errors = (errors >> 4) & flags;
 
-	ol_flags = bnxt_ol_flags_table[flags & ~errors];
+	ol_flags = rxr->ol_flags_table[flags & ~errors];
 
 	if (errors)
-		ol_flags |= bnxt_ol_flags_err_table[errors];
+		ol_flags |= rxr->ol_flags_err_table[errors];
 
 	if (flags_type & RX_PKT_CMPL_FLAGS_RSS_VALID) {
 		mbuf->hash.rss = rte_le_to_cpu_32(rxcmp->rss_hash);
@@ -740,7 +728,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,
 	mbuf->data_len = mbuf->pkt_len;
 	mbuf->port = rxq->port_id;
 
-	bnxt_set_ol_flags(rxcmp, rxcmp1, mbuf);
+	bnxt_set_ol_flags(rxr, rxcmp, rxcmp1, mbuf);
 
 #ifdef RTE_LIBRTE_IEEE1588
 	if (unlikely((rte_le_to_cpu_16(rxcmp->flags_type) &
@@ -1109,9 +1097,6 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
 	/* Initialize packet type table. */
 	bnxt_init_ptype_table();
 
-	/* Initialize offload flags parsing table. */
-	bnxt_init_ol_flags_tables();
-
 	size = rte_pktmbuf_data_room_size(rxq->mb_pool) - RTE_PKTMBUF_HEADROOM;
 	size = RTE_MIN(BNXT_MAX_PKT_LEN, size);
 
@@ -1121,6 +1106,9 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
 	ring = rxr->rx_ring_struct;
 	bnxt_init_rxbds(ring, type, size);
 
+	/* Initialize offload flags parsing table. */
+	bnxt_init_ol_flags_tables(rxr);
+
 	prod = rxr->rx_prod;
 	for (i = 0; i < ring->ring_size; i++) {
 		if (unlikely(!rxr->rx_buf_ring[i])) {
diff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h
index 3fc901fdf0..6ba997e150 100644
--- a/drivers/net/bnxt/bnxt_rxr.h
+++ b/drivers/net/bnxt/bnxt_rxr.h
@@ -42,6 +42,9 @@ static inline uint16_t bnxt_tpa_start_agg_id(struct bnxt *bp,
 /* Number of descriptors to process per inner loop in vector mode. */
 #define RTE_BNXT_DESCS_PER_LOOP		4U
 
+#define BNXT_OL_FLAGS_TBL_DIM	32
+#define BNXT_OL_FLAGS_ERR_TBL_DIM 16
+
 struct bnxt_tpa_info {
 	struct rte_mbuf			*mbuf;
 	uint16_t			len;
@@ -73,6 +76,9 @@ struct bnxt_rx_ring_info {
 	struct rte_bitmap	*ag_bitmap;
 
 	struct bnxt_tpa_info *tpa_info;
+
+	uint32_t ol_flags_table[BNXT_OL_FLAGS_TBL_DIM];
+	uint32_t ol_flags_err_table[BNXT_OL_FLAGS_ERR_TBL_DIM];
 };
 
 uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
@@ -116,10 +122,4 @@ bnxt_cfa_code_dynfield(struct rte_mbuf *mbuf)
 
 #define BNXT_PTYPE_TBL_DIM	128
 extern uint32_t bnxt_ptype_table[BNXT_PTYPE_TBL_DIM];
-
-#define BNXT_OL_FLAGS_TBL_DIM	32
-extern uint32_t bnxt_ol_flags_table[BNXT_OL_FLAGS_TBL_DIM];
-
-#define BNXT_OL_FLAGS_ERR_TBL_DIM 16
-extern uint32_t bnxt_ol_flags_err_table[BNXT_OL_FLAGS_ERR_TBL_DIM];
 #endif
diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_neon.c b/drivers/net/bnxt/bnxt_rxtx_vec_neon.c
index de1d96570c..226a3f22d4 100644
--- a/drivers/net/bnxt/bnxt_rxtx_vec_neon.c
+++ b/drivers/net/bnxt/bnxt_rxtx_vec_neon.c
@@ -27,11 +27,11 @@
 	uint32_t tmp, of;						       \
 									       \
 	of = vgetq_lane_u32((rss_flags), (pi)) |			       \
-		   bnxt_ol_flags_table[vgetq_lane_u32((ol_idx), (pi))];	       \
+		   rxr->ol_flags_table[vgetq_lane_u32((ol_idx), (pi))];	       \
 									       \
 	tmp = vgetq_lane_u32((errors), (pi));				       \
 	if (tmp)							       \
-		of |= bnxt_ol_flags_err_table[tmp];			       \
+		of |= rxr->ol_flags_err_table[tmp];			       \
 	(ol_flags) = of;						       \
 }
 
@@ -58,7 +58,8 @@
 
 static void
 descs_to_mbufs(uint32x4_t mm_rxcmp[4], uint32x4_t mm_rxcmp1[4],
-	       uint64x2_t mb_init, struct rte_mbuf **mbuf)
+	       uint64x2_t mb_init, struct rte_mbuf **mbuf,
+	       struct bnxt_rx_ring_info *rxr)
 {
 	const uint8x16_t shuf_msk = {
 		0xFF, 0xFF, 0xFF, 0xFF,    /* pkt_type (zeroes) */
@@ -286,7 +287,8 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 			goto out;
 		}
 
-		descs_to_mbufs(rxcmp, rxcmp1, mb_init, &rx_pkts[nb_rx_pkts]);
+		descs_to_mbufs(rxcmp, rxcmp1, mb_init, &rx_pkts[nb_rx_pkts],
+			       rxr);
 		nb_rx_pkts += num_valid;
 
 		if (num_valid < RTE_BNXT_DESCS_PER_LOOP)
diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_sse.c b/drivers/net/bnxt/bnxt_rxtx_vec_sse.c
index e12bf8bb76..982dac0d9c 100644
--- a/drivers/net/bnxt/bnxt_rxtx_vec_sse.c
+++ b/drivers/net/bnxt/bnxt_rxtx_vec_sse.c
@@ -27,11 +27,11 @@
 	uint32_t tmp, of;						       \
 									       \
 	of = _mm_extract_epi32((rss_flags), (pi)) |			       \
-		bnxt_ol_flags_table[_mm_extract_epi32((ol_index), (pi))];      \
+		rxr->ol_flags_table[_mm_extract_epi32((ol_index), (pi))];      \
 									       \
 	tmp = _mm_extract_epi32((errors), (pi));			       \
 	if (tmp)							       \
-		of |= bnxt_ol_flags_err_table[tmp];			       \
+		of |= rxr->ol_flags_err_table[tmp];			       \
 	(ol_flags) = of;						       \
 }
 
@@ -54,7 +54,8 @@
 
 static inline void
 descs_to_mbufs(__m128i mm_rxcmp[4], __m128i mm_rxcmp1[4],
-	       __m128i mbuf_init, struct rte_mbuf **mbuf)
+	       __m128i mbuf_init, struct rte_mbuf **mbuf,
+	       struct bnxt_rx_ring_info *rxr)
 {
 	const __m128i shuf_msk =
 		_mm_set_epi8(15, 14, 13, 12,          /* rss */
@@ -268,7 +269,8 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 			goto out;
 		}
 
-		descs_to_mbufs(rxcmp, rxcmp1, mbuf_init, &rx_pkts[nb_rx_pkts]);
+		descs_to_mbufs(rxcmp, rxcmp1, mbuf_init, &rx_pkts[nb_rx_pkts],
+			       rxr);
 		nb_rx_pkts += num_valid;
 
 		if (num_valid < RTE_BNXT_DESCS_PER_LOOP)
-- 
2.29.2

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-02-05 11:18:32.492987274 +0000
+++ 0072-net-bnxt-make-offload-flags-mapping-per-ring.patch	2021-02-05 11:18:28.846691874 +0000
@@ -1 +1 @@
-From d5bbd722469b61c0bc8bc95c51c46b80de045149 Mon Sep 17 00:00:00 2001
+From cee5f387737a1208eed369f423d96320a970f21f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d5bbd722469b61c0bc8bc95c51c46b80de045149 ]
+
@@ -9,2 +10,0 @@
-Cc: stable@dpdk.org
-
@@ -22 +22 @@
-index 288b403bf0..1edc8dac43 100644
+index c5d23050e6..cba03bb38e 100644
@@ -25 +25 @@
-@@ -415,24 +415,14 @@ bnxt_parse_pkt_type(struct rx_pkt_cmpl *rxcmp, struct rx_pkt_cmpl_hi *rxcmp1)
+@@ -406,24 +406,14 @@ bnxt_parse_pkt_type(struct rx_pkt_cmpl *rxcmp, struct rx_pkt_cmpl_hi *rxcmp1)
@@ -52 +52 @@
-@@ -449,7 +439,7 @@ bnxt_init_ol_flags_tables(void)
+@@ -440,7 +430,7 @@ bnxt_init_ol_flags_tables(void)
@@ -61 +61 @@
-@@ -464,13 +454,11 @@ bnxt_init_ol_flags_tables(void)
+@@ -455,13 +445,11 @@ bnxt_init_ol_flags_tables(void)
@@ -77 +77 @@
-@@ -491,10 +479,10 @@ bnxt_set_ol_flags(struct rx_pkt_cmpl *rxcmp, struct rx_pkt_cmpl_hi *rxcmp1,
+@@ -482,10 +470,10 @@ bnxt_set_ol_flags(struct rx_pkt_cmpl *rxcmp, struct rx_pkt_cmpl_hi *rxcmp1,
@@ -90 +90 @@
-@@ -749,7 +737,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,
+@@ -740,7 +728,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,
@@ -99 +99 @@
-@@ -1127,9 +1115,6 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
+@@ -1109,9 +1097,6 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
@@ -109 +109 @@
-@@ -1139,6 +1124,9 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
+@@ -1121,6 +1106,9 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
@@ -116 +116 @@
- 	raw_prod = rxr->rx_raw_prod;
+ 	prod = rxr->rx_prod;
@@ -120 +120 @@
-index af6ff0972d..4db1e8761e 100644
+index 3fc901fdf0..6ba997e150 100644
@@ -155 +155 @@
-index 81f9a7da2b..d9ac822be8 100644
+index de1d96570c..226a3f22d4 100644
@@ -193 +193 @@
-index ce92629ab0..7f5825d333 100644
+index e12bf8bb76..982dac0d9c 100644