From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 03043A0524 for ; 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 ; Fri, 5 Feb 2021 12:23:22 +0100 (CET) Received: by mail-wm1-f46.google.com with SMTP id a16so7678640wmm.0 for ; 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 Cc: Kalesh AP , Ajit Khaparde , dpdk stable 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" 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 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 Reviewed-by: Kalesh AP Acked-by: Ajit Khaparde --- 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