* patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2
@ 2025-03-24 16:16 Kevin Traynor
2025-03-24 16:16 ` patch 'net/bnxt: fix epoch bit calculation' " Kevin Traynor
` (30 more replies)
0 siblings, 31 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Kevin Traynor; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d28cb22b315be358590c4b51d1f0c942b90b6c7a
Thanks.
Kevin
---
From d28cb22b315be358590c4b51d1f0c942b90b6c7a Mon Sep 17 00:00:00 2001
From: Kevin Traynor <ktraynor@redhat.com>
Date: Mon, 10 Mar 2025 10:08:07 +0000
Subject: [PATCH] doc: fix year of final LTS release
[ upstream commit 7d6c28c9199351805e693e9b8f58f60e6f51c2ab ]
LTS length was updated to 3 years, but a sentence saying
when the final release would be was not updated.
Fixes: 3c60ea7b289a ("doc: update LTS maintenance to 3 years")
Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
doc/guides/contributing/stable.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/guides/contributing/stable.rst b/doc/guides/contributing/stable.rst
index 289769a61d..808e7fa779 100644
--- a/doc/guides/contributing/stable.rst
+++ b/doc/guides/contributing/stable.rst
@@ -74,5 +74,5 @@ For a list of the currently maintained stable/LTS branches please see
the latest `stable roadmap <https://core.dpdk.org/roadmap/#stable>`_.
-At the end of the 2 years, a final X.11.N release will be made and at that
+At the end of the 3 years, a final X.11.N release will be made and at that
point the LTS branch will no longer be maintained with no further releases.
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:14.888737668 +0000
+++ 0001-doc-fix-year-of-final-LTS-release.patch 2025-03-24 16:15:14.687735243 +0000
@@ -1 +1 @@
-From 7d6c28c9199351805e693e9b8f58f60e6f51c2ab Mon Sep 17 00:00:00 2001
+From d28cb22b315be358590c4b51d1f0c942b90b6c7a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7d6c28c9199351805e693e9b8f58f60e6f51c2ab ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/bnxt: fix epoch bit calculation' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/iavf: fix mbuf release in Arm multi-process' " Kevin Traynor
` (29 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Ajit Khaparde; +Cc: Damodharam Ammepalli, Somnath Kotur, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4bbe513ff7134586ed9170c8ad1310db1b4218ff
Thanks.
Kevin
---
From 4bbe513ff7134586ed9170c8ad1310db1b4218ff Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Wed, 26 Feb 2025 14:01:24 -0800
Subject: [PATCH] net/bnxt: fix epoch bit calculation
[ upstream commit 12f77a5f69ee35cf8dae5801c1ed8d4ef2423f97 ]
The epoch bit is a binary value which needs to be toggled with
every pass of the ring in the hardware.
The code was doing this prematurely in vector path.
Improve the ring wrap identification and fix epoch bit calculation
in the vector path.
Fixes: 30656a1cace8 ("net/bnxt: refactor epoch setting")
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
drivers/net/bnxt/bnxt_ring.h | 19 +++++++++++++++++++
drivers/net/bnxt/bnxt_rxq.c | 1 +
drivers/net/bnxt/bnxt_rxq.h | 1 +
drivers/net/bnxt/bnxt_rxr.c | 4 ++++
drivers/net/bnxt/bnxt_rxtx_vec_common.h | 11 +++++------
5 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/drivers/net/bnxt/bnxt_ring.h b/drivers/net/bnxt/bnxt_ring.h
index a7470a0e73..3e2bd634a8 100644
--- a/drivers/net/bnxt/bnxt_ring.h
+++ b/drivers/net/bnxt/bnxt_ring.h
@@ -109,4 +109,23 @@ static inline void bnxt_db_write(struct bnxt_db_info *db, uint32_t idx)
}
+static inline void bnxt_db_epoch_write(struct bnxt_db_info *db, uint32_t idx, uint32_t epoch)
+{
+ uint32_t db_idx = DB_RING_IDX(db, idx);
+ void *doorbell = db->doorbell;
+
+ if (db->db_64) {
+ uint64_t key_idx = db->db_key64 | db_idx;
+
+ key_idx |= epoch << DBR_EPOCH_SFT;
+
+ rte_compiler_barrier();
+ rte_write64_relaxed(key_idx, doorbell);
+ } else {
+ uint32_t key_idx = db->db_key32 | db_idx;
+
+ rte_write32(key_idx, doorbell);
+ }
+}
+
static inline void bnxt_db_mpc_write(struct bnxt_db_info *db, uint32_t idx, uint32_t epoch)
{
diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index a1c3777f33..91b3555df6 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -426,4 +426,5 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev,
}
rxq->rx_mbuf_alloc_fail = 0;
+ rxq->epoch = 0;
/* rxq 0 must not be stopped when used as async CPR */
diff --git a/drivers/net/bnxt/bnxt_rxq.h b/drivers/net/bnxt/bnxt_rxq.h
index 0b411a941a..2e4dd20a1a 100644
--- a/drivers/net/bnxt/bnxt_rxq.h
+++ b/drivers/net/bnxt/bnxt_rxq.h
@@ -30,4 +30,5 @@ struct bnxt_rx_queue {
uint16_t rxrearm_start; /* next desc index to reinit. */
#endif
+ uint32_t epoch;
uint16_t port_id; /* Device port identifier */
uint8_t crc_len; /* 0 if CRC stripped, 4 otherwise */
diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index b53d9a917a..c94abefa01 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -1367,4 +1367,8 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
rxq->rxrearm_start++;
rxq->rxrearm_nb--;
+ if (rxq->rxrearm_start >= rxq->nb_rx_desc) {
+ rxq->rxrearm_start = 0;
+ rxq->epoch = rxq->epoch == 0 ? 1 : 0;
+ }
} else {
/* Retry allocation on next call. */
diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_common.h b/drivers/net/bnxt/bnxt_rxtx_vec_common.h
index f608b5152e..e185005293 100644
--- a/drivers/net/bnxt/bnxt_rxtx_vec_common.h
+++ b/drivers/net/bnxt/bnxt_rxtx_vec_common.h
@@ -51,4 +51,5 @@ bnxt_rxq_vec_setup_common(struct bnxt_rx_queue *rxq)
rxq->rxrearm_nb = 0;
rxq->rxrearm_start = 0;
+ rxq->epoch = 1;
return 0;
}
@@ -89,11 +90,9 @@ bnxt_rxq_rearm(struct bnxt_rx_queue *rxq, struct bnxt_rx_ring_info *rxr)
rxq->rxrearm_start += nb;
- /*
- * We can pass rxq->rxrearm_star - 1 as well, but then the epoch
- * bit calculation is messed up.
- */
- bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod);
- if (rxq->rxrearm_start >= rxq->nb_rx_desc)
+ bnxt_db_epoch_write(&rxr->rx_db, rxq->rxrearm_start - 1, rxq->epoch);
+ if (rxq->rxrearm_start >= rxq->nb_rx_desc) {
rxq->rxrearm_start = 0;
+ rxq->epoch = rxq->epoch == 0 ? 1 : 0;
+ }
rxq->rxrearm_nb -= nb;
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:14.917836671 +0000
+++ 0002-net-bnxt-fix-epoch-bit-calculation.patch 2025-03-24 16:15:14.690735255 +0000
@@ -1 +1 @@
-From 12f77a5f69ee35cf8dae5801c1ed8d4ef2423f97 Mon Sep 17 00:00:00 2001
+From 4bbe513ff7134586ed9170c8ad1310db1b4218ff Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 12f77a5f69ee35cf8dae5801c1ed8d4ef2423f97 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -65 +66 @@
-index cd49faf4cf..3385496e70 100644
+index 0b411a941a..2e4dd20a1a 100644
@@ -68 +69 @@
-@@ -31,4 +31,5 @@ struct bnxt_rx_queue {
+@@ -30,4 +30,5 @@ struct bnxt_rx_queue {
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/iavf: fix mbuf release in Arm multi-process' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
2025-03-24 16:16 ` patch 'net/bnxt: fix epoch bit calculation' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/ice: fix flow engines order' " Kevin Traynor
` (28 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Yang Ming; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/427272a2a9571e244dadeb7433d5d4cfdabf8fc2
Thanks.
Kevin
---
From 427272a2a9571e244dadeb7433d5d4cfdabf8fc2 Mon Sep 17 00:00:00 2001
From: Yang Ming <ming.1.yang@nokia-sbell.com>
Date: Fri, 7 Mar 2025 13:40:22 +0800
Subject: [PATCH] net/iavf: fix mbuf release in Arm multi-process
[ upstream commit 289d1b2e348032543f9b823d2eaf3d0e0073af56 ]
This patch addresses a bug related to mbuf release in the Arm
architecture. The previous patch resolved the mbuf release issue
in a multi-process environment but was only applicable to the
x86 architecture, leaving Arm unaddressed.
This patch extends the fix to include the Arm architecture,
ensuring consistent behavior across both x86 and Arm platforms.
Fixes: fced83c1229e ("net/iavf: fix mbuf release in multi-process")
Signed-off-by: Yang Ming <ming.1.yang@nokia-sbell.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/iavf/iavf_rxtx.c | 3 +++
drivers/net/iavf/iavf_rxtx.h | 2 ++
drivers/net/iavf/iavf_rxtx_vec_neon.c | 8 ++------
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index 98a1d3f69d..0ffb9762fe 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -412,4 +412,7 @@ struct iavf_rxq_ops iavf_rxq_release_mbufs_ops[] = {
[IAVF_REL_MBUFS_SSE_VEC].release_mbufs = iavf_rx_queue_release_mbufs_sse,
#endif
+#ifdef RTE_ARCH_ARM64
+ [IAVF_REL_MBUFS_NEON_VEC].release_mbufs = iavf_rx_queue_release_mbufs_neon,
+#endif
};
diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
index 7b56076d32..ef8aab4e9d 100644
--- a/drivers/net/iavf/iavf_rxtx.h
+++ b/drivers/net/iavf/iavf_rxtx.h
@@ -449,4 +449,5 @@ enum iavf_rxtx_rel_mbufs_type {
IAVF_REL_MBUFS_SSE_VEC = 1,
IAVF_REL_MBUFS_AVX512_VEC = 2,
+ IAVF_REL_MBUFS_NEON_VEC = 3,
};
@@ -774,4 +775,5 @@ void iavf_tx_queue_release_mbufs_avx512(struct iavf_tx_queue *txq);
void iavf_rx_queue_release_mbufs_sse(struct iavf_rx_queue *rxq);
void iavf_tx_queue_release_mbufs_sse(struct iavf_tx_queue *txq);
+void iavf_rx_queue_release_mbufs_neon(struct iavf_rx_queue *rxq);
static inline
diff --git a/drivers/net/iavf/iavf_rxtx_vec_neon.c b/drivers/net/iavf/iavf_rxtx_vec_neon.c
index 04be574683..4202adfb06 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_neon.c
+++ b/drivers/net/iavf/iavf_rxtx_vec_neon.c
@@ -394,5 +394,5 @@ iavf_recv_pkts_vec(void *__rte_restrict rx_queue,
}
-static void __rte_cold
+void __rte_cold
iavf_rx_queue_release_mbufs_neon(struct iavf_rx_queue *rxq)
{
@@ -400,12 +400,8 @@ iavf_rx_queue_release_mbufs_neon(struct iavf_rx_queue *rxq)
}
-static const struct iavf_rxq_ops neon_vec_rxq_ops = {
- .release_mbufs = iavf_rx_queue_release_mbufs_neon,
-};
-
int __rte_cold
iavf_rxq_vec_setup(struct iavf_rx_queue *rxq)
{
- rxq->ops = &neon_vec_rxq_ops;
+ rxq->rel_mbufs_type = IAVF_REL_MBUFS_NEON_VEC;
return iavf_rxq_vec_setup_default(rxq);
}
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:14.946775411 +0000
+++ 0003-net-iavf-fix-mbuf-release-in-Arm-multi-process.patch 2025-03-24 16:15:14.698735288 +0000
@@ -1 +1 @@
-From 289d1b2e348032543f9b823d2eaf3d0e0073af56 Mon Sep 17 00:00:00 2001
+From 427272a2a9571e244dadeb7433d5d4cfdabf8fc2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 289d1b2e348032543f9b823d2eaf3d0e0073af56 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19,3 +20,3 @@
- drivers/net/intel/iavf/iavf_rxtx.c | 3 +++
- drivers/net/intel/iavf/iavf_rxtx.h | 2 ++
- drivers/net/intel/iavf/iavf_rxtx_vec_neon.c | 8 ++------
+ drivers/net/iavf/iavf_rxtx.c | 3 +++
+ drivers/net/iavf/iavf_rxtx.h | 2 ++
+ drivers/net/iavf/iavf_rxtx_vec_neon.c | 8 ++------
@@ -24,5 +25,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
-index 657963750d..a999073691 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.c
-+++ b/drivers/net/intel/iavf/iavf_rxtx.c
-@@ -381,4 +381,7 @@ struct iavf_rxq_ops iavf_rxq_release_mbufs_ops[] = {
+diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
+index 98a1d3f69d..0ffb9762fe 100644
+--- a/drivers/net/iavf/iavf_rxtx.c
++++ b/drivers/net/iavf/iavf_rxtx.c
+@@ -412,4 +412,7 @@ struct iavf_rxq_ops iavf_rxq_release_mbufs_ops[] = {
@@ -36,5 +37,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.h b/drivers/net/intel/iavf/iavf_rxtx.h
-index 6a54b446cf..823a6efa9a 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.h
-+++ b/drivers/net/intel/iavf/iavf_rxtx.h
-@@ -405,4 +405,5 @@ enum iavf_rxtx_rel_mbufs_type {
+diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
+index 7b56076d32..ef8aab4e9d 100644
+--- a/drivers/net/iavf/iavf_rxtx.h
++++ b/drivers/net/iavf/iavf_rxtx.h
+@@ -449,4 +449,5 @@ enum iavf_rxtx_rel_mbufs_type {
@@ -46 +47 @@
-@@ -730,4 +731,5 @@ void iavf_tx_queue_release_mbufs_avx512(struct ci_tx_queue *txq);
+@@ -774,4 +775,5 @@ void iavf_tx_queue_release_mbufs_avx512(struct iavf_tx_queue *txq);
@@ -48 +49 @@
- void iavf_tx_queue_release_mbufs_sse(struct ci_tx_queue *txq);
+ void iavf_tx_queue_release_mbufs_sse(struct iavf_tx_queue *txq);
@@ -52,4 +53,4 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx_vec_neon.c b/drivers/net/intel/iavf/iavf_rxtx_vec_neon.c
-index 6bc8e1db2a..a583340f15 100644
---- a/drivers/net/intel/iavf/iavf_rxtx_vec_neon.c
-+++ b/drivers/net/intel/iavf/iavf_rxtx_vec_neon.c
+diff --git a/drivers/net/iavf/iavf_rxtx_vec_neon.c b/drivers/net/iavf/iavf_rxtx_vec_neon.c
+index 04be574683..4202adfb06 100644
+--- a/drivers/net/iavf/iavf_rxtx_vec_neon.c
++++ b/drivers/net/iavf/iavf_rxtx_vec_neon.c
@@ -75,2 +76,2 @@
- rxq->mbuf_initializer = ci_rxq_mbuf_initializer(rxq->port_id);
- return 0;
+ return iavf_rxq_vec_setup_default(rxq);
+ }
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/ice: fix flow engines order' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
2025-03-24 16:16 ` patch 'net/bnxt: fix epoch bit calculation' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/iavf: fix mbuf release in Arm multi-process' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/ice: fix dropped packets when using VRRP' " Kevin Traynor
` (27 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Vladimir Medvedkin; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/12e9bbdcb1d569de187e21d6ff9ae214dae16901
Thanks.
Kevin
---
From 12e9bbdcb1d569de187e21d6ff9ae214dae16901 Mon Sep 17 00:00:00 2001
From: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Date: Mon, 10 Mar 2025 17:40:28 +0000
Subject: [PATCH] net/ice: fix flow engines order
[ upstream commit b309503d63159680d4ff8ca9e968fcb12ac609a0 ]
Currently, the driver evaluates rules with the engines in the order they
are executed in the hardware. However, in this situation, some
wildcarded flows that are also supported by the ACL engine are installed
as switch engine rules, which scales poorly with each distinct wildcard
mask configuration. Reorder flow engine evaluation for RTE flow rule
installation to fix this problem.
Fixes: fabc9e1322e2 ("net/ice: fix flows handling")
Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_generic_flow.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c
index 5c34e0385f..4049157eab 100644
--- a/drivers/net/ice/ice_generic_flow.c
+++ b/drivers/net/ice/ice_generic_flow.c
@@ -2240,7 +2240,7 @@ static struct ice_flow_parser *get_flow_parser(uint32_t group)
switch (group) {
case 0:
- return &ice_switch_parser;
- case 1:
return &ice_acl_parser;
+ case 1:
+ return &ice_switch_parser;
case 2:
return &ice_fdir_parser;
@@ -2299,4 +2299,11 @@ ice_flow_process_filter(struct rte_eth_dev *dev,
for (int i = 0; i < ICE_FLOW_ENGINE_NB; i++) {
+ /**
+ * Evaluate parsers in the following order:
+ * ACL - for some subset of wildcard matching rules
+ * Switch - This engine is placed after ACL because
+ * it scales worse than ACL for different wildcard masks.
+ * FDIR - for exact match rules
+ **/
parser = get_flow_parser(i);
if (parser == NULL) {
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:14.978019886 +0000
+++ 0004-net-ice-fix-flow-engines-order.patch 2025-03-24 16:15:14.701735300 +0000
@@ -1 +1 @@
-From b309503d63159680d4ff8ca9e968fcb12ac609a0 Mon Sep 17 00:00:00 2001
+From 12e9bbdcb1d569de187e21d6ff9ae214dae16901 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b309503d63159680d4ff8ca9e968fcb12ac609a0 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
- drivers/net/intel/ice/ice_generic_flow.c | 11 +++++++++--
+ drivers/net/ice/ice_generic_flow.c | 11 +++++++++--
@@ -22 +23 @@
-diff --git a/drivers/net/intel/ice/ice_generic_flow.c b/drivers/net/intel/ice/ice_generic_flow.c
+diff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c
@@ -24,2 +25,2 @@
---- a/drivers/net/intel/ice/ice_generic_flow.c
-+++ b/drivers/net/intel/ice/ice_generic_flow.c
+--- a/drivers/net/ice/ice_generic_flow.c
++++ b/drivers/net/ice/ice_generic_flow.c
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/ice: fix dropped packets when using VRRP' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (2 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/ice: fix flow engines order' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/iavf: check interrupt registration failure' " Kevin Traynor
` (26 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Matthew Smith; +Cc: Vladimir Medvedkin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/1ea4b841a336fc8421d14feebca26c38b0cba852
Thanks.
Kevin
---
From 1ea4b841a336fc8421d14feebca26c38b0cba852 Mon Sep 17 00:00:00 2001
From: Matthew Smith <mgsmith@netgate.com>
Date: Tue, 11 Mar 2025 21:40:31 +0000
Subject: [PATCH] net/ice: fix dropped packets when using VRRP
[ upstream commit 6f866eb93e796aaf226f66c689e4c4e1b2290c90 ]
While adding a vsi for an ice PF, set the ICE_AQ_VSI_SW_FLAG_LOCAL_LB
flag. This will prevent packets from being dropped when using a virtual
MAC address with VRRP.
Also set the ICE_AQ_VSI_SW_FLAG_SRC_PRUNE flag to prevent transmitted
packets from being looped back in some circumstances.
Fixes: f9cf4f864150 ("net/ice: support device initialization")
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
drivers/net/ice/ice_ethdev.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 93a6308a86..2929f1253d 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -1697,4 +1697,8 @@ ice_setup_vsi(struct ice_pf *pf, enum ice_vsi_type type)
*/
vsi_ctx.info.sw_id = hw->port_info->sw_id;
+ vsi_ctx.info.sw_flags = ICE_AQ_VSI_SW_FLAG_LOCAL_LB;
+ vsi_ctx.info.sw_flags |= ICE_AQ_VSI_SW_FLAG_SRC_PRUNE;
+ cfg = ICE_AQ_VSI_PROP_SW_VALID;
+ vsi_ctx.info.valid_sections |= rte_cpu_to_le_16(cfg);
vsi_ctx.info.sw_flags2 = ICE_AQ_VSI_SW_FLAG_LAN_ENA;
/* Allow all untagged or tagged packets */
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.007884633 +0000
+++ 0005-net-ice-fix-dropped-packets-when-using-VRRP.patch 2025-03-24 16:15:14.707735325 +0000
@@ -1 +1 @@
-From 6f866eb93e796aaf226f66c689e4c4e1b2290c90 Mon Sep 17 00:00:00 2001
+From 1ea4b841a336fc8421d14feebca26c38b0cba852 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6f866eb93e796aaf226f66c689e4c4e1b2290c90 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
- drivers/net/intel/ice/ice_ethdev.c | 4 ++++
+ drivers/net/ice/ice_ethdev.c | 4 ++++
@@ -22,4 +23,4 @@
-diff --git a/drivers/net/intel/ice/ice_ethdev.c b/drivers/net/intel/ice/ice_ethdev.c
-index 3cdfa16f77..21d3795954 100644
---- a/drivers/net/intel/ice/ice_ethdev.c
-+++ b/drivers/net/intel/ice/ice_ethdev.c
+diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
+index 93a6308a86..2929f1253d 100644
+--- a/drivers/net/ice/ice_ethdev.c
++++ b/drivers/net/ice/ice_ethdev.c
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/iavf: check interrupt registration failure' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (3 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/ice: fix dropped packets when using VRRP' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/iavf: fix crash on app exit on FreeBSD' " Kevin Traynor
` (25 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Vladimir Medvedkin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f19ad7db5cb62ce548c23a9b31d84d70ade68464
Thanks.
Kevin
---
From f19ad7db5cb62ce548c23a9b31d84d70ade68464 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Mon, 10 Mar 2025 13:11:15 +0000
Subject: [PATCH] net/iavf: check interrupt registration failure
[ upstream commit 12e8844f0bda3c4e4e578e180dfa0136f9285182 ]
When registering interrupts, there was no check if the registration of
the interrupt succeeded. Add in such a check, and go to fallback path
if the check fails. This prevents errors on FreeBSD due to missed
admin queue messages.
Fixes: cd3b124955d4 ("net/iavf: enable interrupt polling")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
drivers/net/iavf/iavf_ethdev.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 7f80cd6258..9767f1d372 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -2826,16 +2826,14 @@ iavf_dev_init(struct rte_eth_dev *eth_dev)
- if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) {
- /* register callback func to eal lib */
- rte_intr_callback_register(pci_dev->intr_handle,
- iavf_dev_interrupt_handler,
- (void *)eth_dev);
+ if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR &&
+ /* register callback func to eal lib */
+ rte_intr_callback_register(pci_dev->intr_handle,
+ iavf_dev_interrupt_handler, (void *)eth_dev) == 0)
/* enable uio intr after callback register */
rte_intr_enable(pci_dev->intr_handle);
- } else {
+ else
rte_eal_alarm_set(IAVF_ALARM_INTERVAL,
iavf_dev_alarm_handler, eth_dev);
- }
/* configure and enable device interrupt */
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.040561800 +0000
+++ 0006-net-iavf-check-interrupt-registration-failure.patch 2025-03-24 16:15:14.710735337 +0000
@@ -1 +1 @@
-From 12e8844f0bda3c4e4e578e180dfa0136f9285182 Mon Sep 17 00:00:00 2001
+From f19ad7db5cb62ce548c23a9b31d84d70ade68464 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 12e8844f0bda3c4e4e578e180dfa0136f9285182 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/iavf/iavf_ethdev.c | 12 +++++-------
+ drivers/net/iavf/iavf_ethdev.c | 12 +++++-------
@@ -20,4 +21,4 @@
-diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
-index 9cd2b0c867..1ab84b0bfc 100644
---- a/drivers/net/intel/iavf/iavf_ethdev.c
-+++ b/drivers/net/intel/iavf/iavf_ethdev.c
+diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
+index 7f80cd6258..9767f1d372 100644
+--- a/drivers/net/iavf/iavf_ethdev.c
++++ b/drivers/net/iavf/iavf_ethdev.c
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/iavf: fix crash on app exit on FreeBSD' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (4 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/iavf: check interrupt registration failure' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix hairpin queue release' " Kevin Traynor
` (24 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Vladimir Medvedkin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/eac74e15d918cd528c7d879a6ce39dab80093845
Thanks.
Kevin
---
From eac74e15d918cd528c7d879a6ce39dab80093845 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Mon, 10 Mar 2025 13:11:16 +0000
Subject: [PATCH] net/iavf: fix crash on app exit on FreeBSD
[ upstream commit 44a86bcf2447d7d914d7195448285aa82eaedcba ]
With the fallback interrupt path now enabled on FreeBSD there are
segmentation faults on app exit, due to the alarm interrupt trying to
access invalid pointers. Add checks for null to fix these crashes.
Fixes: cd3b124955d4 ("net/iavf: enable interrupt polling")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
drivers/net/iavf/iavf_ethdev.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 9767f1d372..2ea84cef6d 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -2699,4 +2699,7 @@ iavf_dev_alarm_handler(void *param)
{
struct rte_eth_dev *dev = (struct rte_eth_dev *)param;
+ if (dev == NULL || dev->data == NULL || dev->data->dev_private == NULL)
+ return;
+
struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private);
uint32_t icr0;
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.070291098 +0000
+++ 0007-net-iavf-fix-crash-on-app-exit-on-FreeBSD.patch 2025-03-24 16:15:14.712735345 +0000
@@ -1 +1 @@
-From 44a86bcf2447d7d914d7195448285aa82eaedcba Mon Sep 17 00:00:00 2001
+From eac74e15d918cd528c7d879a6ce39dab80093845 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 44a86bcf2447d7d914d7195448285aa82eaedcba ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -16 +17 @@
- drivers/net/intel/iavf/iavf_ethdev.c | 3 +++
+ drivers/net/iavf/iavf_ethdev.c | 3 +++
@@ -19,4 +20,4 @@
-diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
-index 1ab84b0bfc..2335746f04 100644
---- a/drivers/net/intel/iavf/iavf_ethdev.c
-+++ b/drivers/net/intel/iavf/iavf_ethdev.c
+diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
+index 9767f1d372..2ea84cef6d 100644
+--- a/drivers/net/iavf/iavf_ethdev.c
++++ b/drivers/net/iavf/iavf_ethdev.c
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix hairpin queue release' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (5 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/iavf: fix crash on app exit on FreeBSD' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix LACP packet handling in isolated mode' " Kevin Traynor
` (23 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3d96eb2c96a25adc97ad9977916af10a01f95680
Thanks.
Kevin
---
From 3d96eb2c96a25adc97ad9977916af10a01f95680 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 27 Feb 2025 12:14:14 +0200
Subject: [PATCH] net/mlx5: fix hairpin queue release
[ upstream commit 6886b5f39d66770fb7e233fa1c8fc74ed1935116 ]
Fix an assert failure that occurs when releasing a hairpin queue. The issue
arises from incorrect handling of shared Rx queues during release.
Fixes: 09c2555303be ("net/mlx5: support shared Rx queue")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5.h | 1 +
drivers/net/mlx5/mlx5_flow.c | 4 ++--
drivers/net/mlx5/mlx5_rx.h | 1 +
drivers/net/mlx5/mlx5_rxq.c | 12 ++++++++----
4 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 89d277b523..21df917d6f 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -2005,4 +2005,5 @@ struct mlx5_priv {
rte_spinlock_t flow_list_lock;
struct mlx5_obj_ops obj_ops; /* HW objects operations. */
+ LIST_HEAD(rxq, mlx5_rxq_ctrl) rxqsctrl; /* DPDK Rx queues. */
LIST_HEAD(rxqobj, mlx5_rxq_obj) rxqsobj; /* Verbs/DevX Rx queues. */
struct mlx5_list *hrxqs; /* Hash Rx queues. */
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 936a82e524..9678c94ff3 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1649,5 +1649,5 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
opriv->mark_enabled)
continue;
- LIST_FOREACH(rxq_ctrl, &opriv->sh->shared_rxqs, share_entry) {
+ LIST_FOREACH(rxq_ctrl, &opriv->rxqsctrl, next) {
rxq_ctrl->rxq.mark = 1;
}
@@ -1655,5 +1655,5 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
}
} else {
- LIST_FOREACH(rxq_ctrl, &priv->sh->shared_rxqs, share_entry) {
+ LIST_FOREACH(rxq_ctrl, &priv->rxqsctrl, next) {
rxq_ctrl->rxq.mark = 1;
}
diff --git a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h
index 1a6f174c40..6c48a37be7 100644
--- a/drivers/net/mlx5/mlx5_rx.h
+++ b/drivers/net/mlx5/mlx5_rx.h
@@ -152,4 +152,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
struct mlx5_rxq_ctrl {
struct mlx5_rxq_data rxq; /* Data path structure. */
+ LIST_ENTRY(mlx5_rxq_ctrl) next; /* Pointer to the next element. */
LIST_HEAD(priv, mlx5_rxq_priv) owners; /* Owner rxq list. */
struct mlx5_rxq_obj *obj; /* Verbs/DevX elements. */
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 126b1970e6..6047529535 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -1038,4 +1038,5 @@ mlx5_rx_hairpin_queue_setup(struct rte_eth_dev *dev, uint16_t idx,
return -rte_errno;
}
+ rte_atomic_fetch_add_explicit(&rxq_ctrl->ctrl_ref, 1, rte_memory_order_relaxed);
DRV_LOG(DEBUG, "port %u adding hairpin Rx queue %u to list",
dev->data->port_id, idx);
@@ -1971,6 +1972,7 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
tmpl->share_group = conf->share_group;
tmpl->share_qid = conf->share_qid;
+ LIST_INSERT_HEAD(&priv->sh->shared_rxqs, tmpl, share_entry);
}
- LIST_INSERT_HEAD(&priv->sh->shared_rxqs, tmpl, share_entry);
+ LIST_INSERT_HEAD(&priv->rxqsctrl, tmpl, next);
rte_atomic_store_explicit(&tmpl->ctrl_ref, 1, rte_memory_order_relaxed);
return tmpl;
@@ -2026,5 +2028,5 @@ mlx5_rxq_hairpin_new(struct rte_eth_dev *dev, struct mlx5_rxq_priv *rxq,
rxq->hairpin_conf = *hairpin_conf;
mlx5_rxq_ref(dev, idx);
- LIST_INSERT_HEAD(&priv->sh->shared_rxqs, tmpl, share_entry);
+ LIST_INSERT_HEAD(&priv->rxqsctrl, tmpl, next);
rte_atomic_store_explicit(&tmpl->ctrl_ref, 1, rte_memory_order_relaxed);
return tmpl;
@@ -2301,5 +2303,7 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
mlx5_mr_btree_free
(&rxq_ctrl->rxq.mr_ctrl.cache_bh);
- LIST_REMOVE(rxq_ctrl, share_entry);
+ if (rxq_ctrl->rxq.shared)
+ LIST_REMOVE(rxq_ctrl, share_entry);
+ LIST_REMOVE(rxq_ctrl, next);
mlx5_free(rxq_ctrl);
}
@@ -2327,5 +2331,5 @@ mlx5_rxq_verify(struct rte_eth_dev *dev)
int ret = 0;
- LIST_FOREACH(rxq_ctrl, &priv->sh->shared_rxqs, share_entry) {
+ LIST_FOREACH(rxq_ctrl, &priv->rxqsctrl, next) {
DRV_LOG(DEBUG, "port %u Rx Queue %u still referenced",
dev->data->port_id, rxq_ctrl->rxq.idx);
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.098927283 +0000
+++ 0008-net-mlx5-fix-hairpin-queue-release.patch 2025-03-24 16:15:14.724735394 +0000
@@ -1 +1 @@
-From 6886b5f39d66770fb7e233fa1c8fc74ed1935116 Mon Sep 17 00:00:00 2001
+From 3d96eb2c96a25adc97ad9977916af10a01f95680 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6886b5f39d66770fb7e233fa1c8fc74ed1935116 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 545ba48b3c..6df99c25e2 100644
+index 89d277b523..21df917d6f 100644
@@ -25 +26 @@
-@@ -2024,4 +2024,5 @@ struct mlx5_priv {
+@@ -2005,4 +2005,5 @@ struct mlx5_priv {
@@ -32 +33 @@
-index f8b3e504b3..6169ebc13f 100644
+index 936a82e524..9678c94ff3 100644
@@ -50 +51 @@
-index f80a2e3227..6380895502 100644
+index 1a6f174c40..6c48a37be7 100644
@@ -53 +54 @@
-@@ -170,4 +170,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
+@@ -152,4 +152,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
@@ -60 +61 @@
-index a5971b5cdd..5cf7d4971b 100644
+index 126b1970e6..6047529535 100644
@@ -69 +70 @@
-@@ -2007,6 +2008,7 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
+@@ -1971,6 +1972,7 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
@@ -78 +79 @@
-@@ -2062,5 +2064,5 @@ mlx5_rxq_hairpin_new(struct rte_eth_dev *dev, struct mlx5_rxq_priv *rxq,
+@@ -2026,5 +2028,5 @@ mlx5_rxq_hairpin_new(struct rte_eth_dev *dev, struct mlx5_rxq_priv *rxq,
@@ -85 +86 @@
-@@ -2337,5 +2339,7 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2301,5 +2303,7 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
@@ -94 +95 @@
-@@ -2363,5 +2367,5 @@ mlx5_rxq_verify(struct rte_eth_dev *dev)
+@@ -2327,5 +2331,5 @@ mlx5_rxq_verify(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix LACP packet handling in isolated mode' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (6 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix hairpin queue release' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5/hws: fix crash using represented port without ID' " Kevin Traynor
` (22 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a41da12914a83f039a1b1d38783a1408e3cfd951
Thanks.
Kevin
---
From a41da12914a83f039a1b1d38783a1408e3cfd951 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 27 Feb 2025 12:20:44 +0200
Subject: [PATCH] net/mlx5: fix LACP packet handling in isolated mode
[ upstream commit d15d74fc4b22cf7f09194f7d4de8d8ee03ca63a6 ]
Fix an issue with handling LACP packets when the device is operating
in isolated mode. The problem was caused by an incorrectly positioned
isolated mode check, which led to improper processing of these packets.
This ensures that LACP packets are handled correctly in compliance
with the expected behavior.
Fixes: 87e4384d2662 ("net/mlx5: fix condition of LACP miss flow")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_trigger.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 79b3d4d982..4ee44e9165 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1534,9 +1534,9 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
DRV_LOG(INFO, "port %u FDB default rule is disabled", dev->data->port_id);
}
- if (priv->isolated)
- return 0;
if (!priv->sh->config.lacp_by_user && priv->pf_bond >= 0 && priv->master)
if (mlx5_flow_hw_lacp_rx_flow(dev))
goto error;
+ if (priv->isolated)
+ return 0;
if (dev->data->promiscuous)
flags |= MLX5_CTRL_PROMISCUOUS;
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.136673738 +0000
+++ 0009-net-mlx5-fix-LACP-packet-handling-in-isolated-mode.patch 2025-03-24 16:15:14.725735398 +0000
@@ -1 +1 @@
-From d15d74fc4b22cf7f09194f7d4de8d8ee03ca63a6 Mon Sep 17 00:00:00 2001
+From a41da12914a83f039a1b1d38783a1408e3cfd951 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d15d74fc4b22cf7f09194f7d4de8d8ee03ca63a6 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5/hws: fix crash using represented port without ID' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (7 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix LACP packet handling in isolated mode' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template set VLAN VID' " Kevin Traynor
` (21 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9a3c182073ca565958fe5e9c59653e064efa08fc
Thanks.
Kevin
---
From 9a3c182073ca565958fe5e9c59653e064efa08fc Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 27 Feb 2025 12:33:29 +0200
Subject: [PATCH] net/mlx5/hws: fix crash using represented port without ID
[ upstream commit 1de93ca6aee6acb785c8080f84da26b09835af0f ]
For non-template API on top of HWS, when trying to use
represented-port item w/o setting the ethdev_port_id,
it crashes.
Added default values to match the case for SWS.
Default port is now eswitch manager id.
Fixes: c55c2bf35333 ("net/mlx5/hws: add definer layer")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_definer.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c
index 837e0c47bd..399cb1013a 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.c
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c
@@ -744,8 +744,9 @@ mlx5dr_definer_vport_set(struct mlx5dr_definer_fc *fc,
{
const struct rte_flow_item_ethdev *v = item_spec;
- const struct flow_hw_port_info *port_info;
+ const struct flow_hw_port_info *port_info = NULL;
uint32_t regc_value;
- port_info = flow_hw_conv_port_id(fc->dr_ctx, v->port_id);
+ if (v)
+ port_info = flow_hw_conv_port_id(fc->dr_ctx, v->port_id);
if (unlikely(!port_info))
regc_value = BAD_PORT;
@@ -1557,8 +1558,9 @@ mlx5dr_definer_conv_item_port(struct mlx5dr_definer_conv_data *cd,
{
struct mlx5dr_cmd_query_caps *caps = cd->ctx->caps;
- const struct rte_flow_item_ethdev *m = item->mask;
+ uint16_t port_id = item->mask ?
+ ((const struct rte_flow_item_ethdev *)(item->mask))->port_id : 0;
struct mlx5dr_definer_fc *fc;
- if (m->port_id) {
+ if (port_id) {
if (!caps->wire_regc_mask) {
DR_LOG(ERR, "Port ID item not supported, missing wire REGC mask");
@@ -1575,8 +1577,4 @@ mlx5dr_definer_conv_item_port(struct mlx5dr_definer_conv_data *cd,
fc->bit_mask = caps->wire_regc_mask >> fc->bit_off;
fc->dr_ctx = cd->ctx;
- } else {
- DR_LOG(ERR, "Pord ID item mask must specify ID mask");
- rte_errno = EINVAL;
- return rte_errno;
}
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.164897745 +0000
+++ 0010-net-mlx5-hws-fix-crash-using-represented-port-withou.patch 2025-03-24 16:15:14.728735410 +0000
@@ -1 +1 @@
-From 1de93ca6aee6acb785c8080f84da26b09835af0f Mon Sep 17 00:00:00 2001
+From 9a3c182073ca565958fe5e9c59653e064efa08fc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1de93ca6aee6acb785c8080f84da26b09835af0f ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 98d670fc1c..a4b9306d2b 100644
+index 837e0c47bd..399cb1013a 100644
@@ -26 +27 @@
-@@ -773,8 +773,9 @@ mlx5dr_definer_vport_set(struct mlx5dr_definer_fc *fc,
+@@ -744,8 +744,9 @@ mlx5dr_definer_vport_set(struct mlx5dr_definer_fc *fc,
@@ -38 +39 @@
-@@ -1586,8 +1587,9 @@ mlx5dr_definer_conv_item_port(struct mlx5dr_definer_conv_data *cd,
+@@ -1557,8 +1558,9 @@ mlx5dr_definer_conv_item_port(struct mlx5dr_definer_conv_data *cd,
@@ -50 +51 @@
-@@ -1604,8 +1606,4 @@ mlx5dr_definer_conv_item_port(struct mlx5dr_definer_conv_data *cd,
+@@ -1575,8 +1577,4 @@ mlx5dr_definer_conv_item_port(struct mlx5dr_definer_conv_data *cd,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix non-template set VLAN VID' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (8 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5/hws: fix crash using represented port without ID' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix error info in actions construct' " Kevin Traynor
` (20 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a1aa7eba64735891ba7cff539aa9a0cfd586fe7e
Thanks.
Kevin
---
From a1aa7eba64735891ba7cff539aa9a0cfd586fe7e Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 27 Feb 2025 12:45:27 +0200
Subject: [PATCH] net/mlx5: fix non-template set VLAN VID
[ upstream commit 5fd4de3aef4cec5ca3395139135b1c58d43d5a9c ]
Support set vlan vid in non template on top of HWS.
Update relevant return errors in the relevant functions to avoid crash.
Mask the vlan vid action in non template mode
such that the action template create will use the vid value.
Fixes: 00a0a6b80674 ("net/mlx5: support indirect actions in non-template setup")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index e72b87d70f..fc78bf2e1d 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -671,4 +671,7 @@ flow_hw_action_flags_get(const struct rte_flow_action actions[],
action_flags |= MLX5_FLOW_ACTION_OF_POP_VLAN;
break;
+ case RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID:
+ action_flags |= MLX5_FLOW_ACTION_OF_SET_VLAN_VID;
+ break;
case RTE_FLOW_ACTION_TYPE_JUMP:
action_flags |= MLX5_FLOW_ACTION_JUMP;
@@ -7700,5 +7703,5 @@ err_actions_num:
}
-static void
+static int
flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
struct rte_flow_action *ra,
@@ -7706,7 +7709,7 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
struct rte_flow_action_modify_field *spec,
struct rte_flow_action_modify_field *mask,
- int set_vlan_vid_ix)
+ int set_vlan_vid_ix,
+ struct rte_flow_error *error)
{
- struct rte_flow_error error;
const bool masked = rm[set_vlan_vid_ix].conf &&
(((const struct rte_flow_action_of_set_vlan_vid *)
@@ -7715,5 +7718,6 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
ra[set_vlan_vid_ix].conf;
int width = mlx5_flow_item_field_width(dev, RTE_FLOW_FIELD_VLAN_ID, 0,
- NULL, &error);
+ NULL, error);
+ MLX5_ASSERT(width);
*spec = (typeof(*spec)) {
.operation = RTE_FLOW_MODIFY_SET,
@@ -7748,4 +7752,5 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
rm[set_vlan_vid_ix].type = RTE_FLOW_ACTION_TYPE_MODIFY_FIELD;
rm[set_vlan_vid_ix].conf = mask;
+ return 0;
}
@@ -7993,7 +7998,9 @@ __flow_hw_actions_template_create(struct rte_eth_dev *dev,
&ra, &rm,
act_num);
- flow_hw_set_vlan_vid(dev, ra, rm,
- &set_vlan_vid_spec, &set_vlan_vid_mask,
- set_vlan_vid_ix);
+ ret = flow_hw_set_vlan_vid(dev, ra, rm,
+ &set_vlan_vid_spec, &set_vlan_vid_mask,
+ set_vlan_vid_ix, error);
+ if (ret)
+ goto error;
action_flags |= MLX5_FLOW_ACTION_MODIFY_FIELD;
}
@@ -13506,4 +13513,8 @@ flow_nta_build_template_mask(const struct rte_flow_action actions[],
mask->conf = conf;
break;
+ case RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID:
+ memset(conf, 0xff, sizeof(struct rte_flow_action_of_set_vlan_vid));
+ mask->conf = conf;
+ break;
default:
break;
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.196284543 +0000
+++ 0011-net-mlx5-fix-non-template-set-VLAN-VID.patch 2025-03-24 16:15:14.737735447 +0000
@@ -1 +1 @@
-From 5fd4de3aef4cec5ca3395139135b1c58d43d5a9c Mon Sep 17 00:00:00 2001
+From a1aa7eba64735891ba7cff539aa9a0cfd586fe7e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5fd4de3aef4cec5ca3395139135b1c58d43d5a9c ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 03cbf53f49..7f34af49de 100644
+index e72b87d70f..fc78bf2e1d 100644
@@ -24 +25 @@
-@@ -715,4 +715,7 @@ flow_hw_action_flags_get(const struct rte_flow_action actions[],
+@@ -671,4 +671,7 @@ flow_hw_action_flags_get(const struct rte_flow_action actions[],
@@ -32 +33 @@
-@@ -7814,5 +7817,5 @@ err_actions_num:
+@@ -7700,5 +7703,5 @@ err_actions_num:
@@ -39 +40 @@
-@@ -7820,7 +7823,7 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
+@@ -7706,7 +7709,7 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
@@ -49 +50 @@
-@@ -7829,5 +7832,6 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
+@@ -7715,5 +7718,6 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
@@ -57 +58 @@
-@@ -7862,4 +7866,5 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
+@@ -7748,4 +7752,5 @@ flow_hw_set_vlan_vid(struct rte_eth_dev *dev,
@@ -63 +64 @@
-@@ -8107,7 +8112,9 @@ __flow_hw_actions_template_create(struct rte_eth_dev *dev,
+@@ -7993,7 +7998,9 @@ __flow_hw_actions_template_create(struct rte_eth_dev *dev,
@@ -76 +77 @@
-@@ -13750,4 +13757,8 @@ flow_nta_build_template_mask(const struct rte_flow_action actions[],
+@@ -13506,4 +13513,8 @@ flow_nta_build_template_mask(const struct rte_flow_action actions[],
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix error info in actions construct' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (9 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template set VLAN VID' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5/hws: fix GTP flags matching' " Kevin Traynor
` (19 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/88c582b391e757c2edf7af59415467fce84fecea
Thanks.
Kevin
---
From 88c582b391e757c2edf7af59415467fce84fecea Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 27 Feb 2025 12:45:28 +0200
Subject: [PATCH] net/mlx5: fix error info in actions construct
[ upstream commit 562eba858fa4fcd049a797145fcb1f7b72d5a35e ]
In some cases in debug it misses the error info.
Fix to update the error structure.
Fixes: 654ebd8cb7a3 ("net/mlx5: support flow table resizing")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index fc78bf2e1d..c82db20bfa 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -3570,5 +3570,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
mp_segment = mlx5_multi_pattern_segment_find(table, flow->res_idx);
if (!mp_segment || !mp_segment->mhdr_action)
- return -1;
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ NULL, "No modify header action found");
rule_acts[pos].action = mp_segment->mhdr_action;
/* offset is relative to DR action */
@@ -3900,6 +3901,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
error:
flow_hw_release_actions(dev, queue, flow);
- rte_errno = EINVAL;
- return -rte_errno;
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ NULL, "Action construction failed");
}
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.236299333 +0000
+++ 0012-net-mlx5-fix-error-info-in-actions-construct.patch 2025-03-24 16:15:14.747735488 +0000
@@ -1 +1 @@
-From 562eba858fa4fcd049a797145fcb1f7b72d5a35e Mon Sep 17 00:00:00 2001
+From 88c582b391e757c2edf7af59415467fce84fecea Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 562eba858fa4fcd049a797145fcb1f7b72d5a35e ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 7f34af49de..88660c1627 100644
+index fc78bf2e1d..c82db20bfa 100644
@@ -22 +23 @@
-@@ -3616,5 +3616,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
+@@ -3570,5 +3570,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
@@ -30 +31 @@
-@@ -3947,6 +3948,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
+@@ -3900,6 +3901,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5/hws: fix GTP flags matching' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (10 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix error info in actions construct' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template flow validation' " Kevin Traynor
` (18 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f998084dbb7a718806e1fa59b36513f2f0e40db5
Thanks.
Kevin
---
From f998084dbb7a718806e1fa59b36513f2f0e40db5 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 27 Feb 2025 12:49:40 +0200
Subject: [PATCH] net/mlx5/hws: fix GTP flags matching
[ upstream commit a31da10717be6a79877621e94eeb003f547c5f88 ]
Support GTP flags in non-template on top of HWS.
Currently, only extension flag was supported,
Added support to all bits under v_pt_rsv_flags.
Fixes: c55c2bf35333 ("net/mlx5/hws: add definer layer")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_definer.c | 12 ++++++------
drivers/net/mlx5/hws/mlx5dr_definer.h | 18 ++++++++++++------
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c
index 399cb1013a..4af24c788a 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.c
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c
@@ -200,5 +200,5 @@ struct mlx5dr_definer_conv_data {
X(SET_BE32, gtp_teid, v->hdr.teid, rte_flow_item_gtp) \
X(SET, gtp_msg_type, v->hdr.msg_type, rte_flow_item_gtp) \
- X(SET, gtp_ext_flag, !!v->hdr.gtp_hdr_info, rte_flow_item_gtp) \
+ X(SET, gtp_flags, v->hdr.gtp_hdr_info, rte_flow_item_gtp) \
X(SET, gtp_next_ext_hdr, GTP_PDU_SC, rte_flow_item_gtp_psc) \
X(SET, gtp_ext_hdr_pdu, v->hdr.type, rte_flow_item_gtp_psc) \
@@ -1435,5 +1435,5 @@ mlx5dr_definer_conv_item_gtp(struct mlx5dr_definer_conv_data *cd,
return 0;
- if (m->hdr.plen || m->hdr.gtp_hdr_info & ~MLX5DR_DEFINER_GTP_EXT_HDR_BIT) {
+ if (m->msg_len) {
rte_errno = ENOTSUP;
return rte_errno;
@@ -1457,9 +1457,9 @@ mlx5dr_definer_conv_item_gtp(struct mlx5dr_definer_conv_data *cd,
return rte_errno;
}
- fc = &cd->fc[MLX5DR_DEFINER_FNAME_GTP_EXT_FLAG];
+ fc = &cd->fc[MLX5DR_DEFINER_FNAME_GTP_FLAGS];
fc->item_idx = item_idx;
- fc->tag_set = &mlx5dr_definer_gtp_ext_flag_set;
- fc->bit_mask = __mlx5_mask(header_gtp, ext_hdr_flag);
- fc->bit_off = __mlx5_dw_bit_off(header_gtp, ext_hdr_flag);
+ fc->tag_set = &mlx5dr_definer_gtp_flags_set;
+ fc->bit_mask = __mlx5_mask(header_gtp, v_pt_rsv_flags);
+ fc->bit_off = __mlx5_dw_bit_off(header_gtp, v_pt_rsv_flags);
fc->byte_off = caps->format_select_gtpu_dw_0 * DW_SIZE;
}
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.h b/drivers/net/mlx5/hws/mlx5dr_definer.h
index 092b1b3b10..d0c99399ae 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.h
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.h
@@ -111,4 +111,5 @@ enum mlx5dr_definer_fname {
MLX5DR_DEFINER_FNAME_GTP_MSG_TYPE,
MLX5DR_DEFINER_FNAME_GTP_EXT_FLAG,
+ MLX5DR_DEFINER_FNAME_GTP_FLAGS,
MLX5DR_DEFINER_FNAME_GTP_NEXT_EXT_HDR,
MLX5DR_DEFINER_FNAME_GTP_EXT_HDR_PDU,
@@ -607,10 +608,15 @@ enum mlx5dr_definer_gtp {
struct mlx5_ifc_header_gtp_bits {
- u8 version[0x3];
- u8 proto_type[0x1];
- u8 reserved1[0x1];
- u8 ext_hdr_flag[0x1];
- u8 seq_num_flag[0x1];
- u8 pdu_flag[0x1];
+ union {
+ u8 v_pt_rsv_flags[0x8];
+ struct {
+ u8 version[0x3];
+ u8 proto_type[0x1];
+ u8 reserved1[0x1];
+ u8 ext_hdr_flag[0x1];
+ u8 seq_num_flag[0x1];
+ u8 pdu_flag[0x1];
+ };
+ };
u8 msg_type[0x8];
u8 msg_len[0x8];
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.274671555 +0000
+++ 0013-net-mlx5-hws-fix-GTP-flags-matching.patch 2025-03-24 16:15:14.749735496 +0000
@@ -1 +1 @@
-From a31da10717be6a79877621e94eeb003f547c5f88 Mon Sep 17 00:00:00 2001
+From f998084dbb7a718806e1fa59b36513f2f0e40db5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a31da10717be6a79877621e94eeb003f547c5f88 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index a4b9306d2b..5272119bcb 100644
+index 399cb1013a..4af24c788a 100644
@@ -31 +32 @@
-@@ -1464,5 +1464,5 @@ mlx5dr_definer_conv_item_gtp(struct mlx5dr_definer_conv_data *cd,
+@@ -1435,5 +1435,5 @@ mlx5dr_definer_conv_item_gtp(struct mlx5dr_definer_conv_data *cd,
@@ -38 +39 @@
-@@ -1486,9 +1486,9 @@ mlx5dr_definer_conv_item_gtp(struct mlx5dr_definer_conv_data *cd,
+@@ -1457,9 +1457,9 @@ mlx5dr_definer_conv_item_gtp(struct mlx5dr_definer_conv_data *cd,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix non-template flow validation' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (11 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5/hws: fix GTP flags matching' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template flow validation on create' " Kevin Traynor
` (17 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3057c26c7f113b530fe2d7d4bb2687a4ed6f1cb5
Thanks.
Kevin
---
From 3057c26c7f113b530fe2d7d4bb2687a4ed6f1cb5 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Mon, 3 Mar 2025 15:34:48 +0200
Subject: [PATCH] net/mlx5: fix non-template flow validation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 5b0b6742d222299f3369eeeaa484639ef0134db3 ]
For non template API on top of HWS,
it’s validation function pointed to SWS legacy validation function,
which does not match HWS restrictions.
Added HWS validation function for non template rules.
Fixes: e38776c36c8a ("net/mlx5: introduce HWS for non-template flow API")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 56 ++++++++++++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index c82db20bfa..95c13d6a11 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -211,4 +211,11 @@ flow_hw_allocate_actions(struct rte_eth_dev *dev,
struct rte_flow_error *error);
+static int
+flow_hw_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+ const struct rte_flow_item items[],
+ const struct rte_flow_action actions[],
+ bool external __rte_unused, int hairpin __rte_unused,
+ struct rte_flow_error *error);
+
bool
mlx5_hw_ctx_validate(const struct rte_eth_dev *dev, struct rte_flow_error *error)
@@ -15136,8 +15143,55 @@ flow_hw_update_resized(struct rte_eth_dev *dev, uint32_t queue,
}
+/**
+ * Internal validation function. For validating both actions and items.
+ *
+ * @param[in] dev
+ * Pointer to the rte_eth_dev structure.
+ * @param[in] attr
+ * Pointer to the flow attributes.
+ * @param[in] items
+ * Pointer to the list of items.
+ * @param[in] actions
+ * Pointer to the list of actions.
+ * @param[in] external
+ * This flow rule is created by request external to PMD.
+ * @param[in] hairpin
+ * Number of hairpin TX actions, 0 means classic flow.
+ * @param[out] error
+ * Pointer to the error structure.
+ *
+ * @return
+ * 0 on success, a negative errno value otherwise and rte_errno is set.
+ */
+static int
+flow_hw_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+ const struct rte_flow_item items[],
+ const struct rte_flow_action actions[] __rte_unused,
+ bool external, int hairpin __rte_unused,
+ struct rte_flow_error *error)
+{
+ const struct rte_flow_pattern_template_attr pattern_template_attr = {
+ .relaxed_matching = 0,
+ .ingress = attr->ingress,
+ .egress = attr->egress,
+ .transfer = attr->transfer,
+ };
+ uint64_t item_flags = 0;
+ int ret = 0;
+
+ if (external) {
+ /* Validate application items only */
+ ret = flow_hw_pattern_validate(dev, &pattern_template_attr, items,
+ &item_flags, error);
+ if (ret < 0)
+ return -rte_errno;
+ }
+ return 0;
+}
+
const struct mlx5_flow_driver_ops mlx5_flow_hw_drv_ops = {
.list_create = flow_hw_list_create,
.list_destroy = flow_hw_list_destroy,
- .validate = flow_dv_validate,
+ .validate = flow_hw_validate,
.info_get = flow_hw_info_get,
.configure = flow_hw_configure,
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.305148912 +0000
+++ 0014-net-mlx5-fix-non-template-flow-validation.patch 2025-03-24 16:15:14.759735537 +0000
@@ -1 +1 @@
-From 5b0b6742d222299f3369eeeaa484639ef0134db3 Mon Sep 17 00:00:00 2001
+From 3057c26c7f113b530fe2d7d4bb2687a4ed6f1cb5 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 5b0b6742d222299f3369eeeaa484639ef0134db3 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 88660c1627..8d9c0d2813 100644
+index c82db20bfa..95c13d6a11 100644
@@ -40 +41 @@
-@@ -15398,8 +15405,55 @@ flow_hw_update_resized(struct rte_eth_dev *dev, uint32_t queue,
+@@ -15136,8 +15143,55 @@ flow_hw_update_resized(struct rte_eth_dev *dev, uint32_t queue,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix non-template flow validation on create' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (12 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template flow validation' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix flow group ID for action translation' " Kevin Traynor
` (16 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/535cab510acc023f6a9bee4214396f0ac444987c
Thanks.
Kevin
---
From 535cab510acc023f6a9bee4214396f0ac444987c Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Mon, 3 Mar 2025 15:34:49 +0200
Subject: [PATCH] net/mlx5: fix non-template flow validation on create
[ upstream commit f8ce702cd05f555ab8a52e6d827f096d80fbb825 ]
Currently, a non template rule on top of HWS can
be created successfully although validation fails.
Added in flow creation, the rule validation,
And deduce the items flags from the validation items loop.
Fixes: 0989f6808401 ("net/mlx5: update NTA rule pattern and actions flags")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 98 ++++-----------------------------
1 file changed, 12 insertions(+), 86 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 95c13d6a11..8f3cb45daf 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -546,85 +546,4 @@ flow_hw_hashfields_set(struct mlx5_flow_rss_desc *rss_desc,
}
-/**
- * Generate the matching pattern item flags.
- *
- * @param[in] items
- * Pointer to the list of items.
- *
- * @return
- * Matching item flags. RSS hash field function
- * silently ignores the flags which are unsupported.
- */
-static uint64_t
-flow_hw_matching_item_flags_get(const struct rte_flow_item items[])
-{
- uint64_t item_flags = 0;
- uint64_t last_item = 0;
-
- for (; items->type != RTE_FLOW_ITEM_TYPE_END; items++) {
- enum rte_flow_item_flex_tunnel_mode tunnel_mode = FLEX_TUNNEL_MODE_SINGLE;
- int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL);
- int item_type = items->type;
-
- switch (item_type) {
- case RTE_FLOW_ITEM_TYPE_IPV4:
- last_item = tunnel ? MLX5_FLOW_LAYER_INNER_L3_IPV4 :
- MLX5_FLOW_LAYER_OUTER_L3_IPV4;
- break;
- case RTE_FLOW_ITEM_TYPE_IPV6:
- last_item = tunnel ? MLX5_FLOW_LAYER_INNER_L3_IPV6 :
- MLX5_FLOW_LAYER_OUTER_L3_IPV6;
- break;
- case RTE_FLOW_ITEM_TYPE_TCP:
- last_item = tunnel ? MLX5_FLOW_LAYER_INNER_L4_TCP :
- MLX5_FLOW_LAYER_OUTER_L4_TCP;
- break;
- case RTE_FLOW_ITEM_TYPE_UDP:
- last_item = tunnel ? MLX5_FLOW_LAYER_INNER_L4_UDP :
- MLX5_FLOW_LAYER_OUTER_L4_UDP;
- break;
- case RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT:
- last_item = tunnel ? MLX5_FLOW_ITEM_INNER_IPV6_ROUTING_EXT :
- MLX5_FLOW_ITEM_OUTER_IPV6_ROUTING_EXT;
- break;
- case RTE_FLOW_ITEM_TYPE_GRE:
- last_item = MLX5_FLOW_LAYER_GRE;
- break;
- case RTE_FLOW_ITEM_TYPE_NVGRE:
- last_item = MLX5_FLOW_LAYER_GRE;
- break;
- case RTE_FLOW_ITEM_TYPE_VXLAN:
- last_item = MLX5_FLOW_LAYER_VXLAN;
- break;
- case RTE_FLOW_ITEM_TYPE_VXLAN_GPE:
- last_item = MLX5_FLOW_LAYER_VXLAN_GPE;
- break;
- case RTE_FLOW_ITEM_TYPE_GENEVE:
- last_item = MLX5_FLOW_LAYER_GENEVE;
- break;
- case RTE_FLOW_ITEM_TYPE_MPLS:
- last_item = MLX5_FLOW_LAYER_MPLS;
- break;
- case RTE_FLOW_ITEM_TYPE_GTP:
- last_item = MLX5_FLOW_LAYER_GTP;
- break;
- case RTE_FLOW_ITEM_TYPE_COMPARE:
- last_item = MLX5_FLOW_ITEM_COMPARE;
- break;
- case RTE_FLOW_ITEM_TYPE_FLEX:
- mlx5_flex_get_tunnel_mode(items, &tunnel_mode);
- last_item = tunnel_mode == FLEX_TUNNEL_MODE_TUNNEL ?
- MLX5_FLOW_ITEM_FLEX_TUNNEL :
- tunnel ? MLX5_FLOW_ITEM_INNER_FLEX :
- MLX5_FLOW_ITEM_OUTER_FLEX;
- break;
- default:
- break;
- }
- item_flags |= last_item;
- }
- return item_flags;
-}
-
static uint64_t
flow_hw_action_flags_get(const struct rte_flow_action actions[],
@@ -14043,5 +13962,5 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
const struct rte_flow_action *qrss = NULL;
const struct rte_flow_action *mark = NULL;
- uint64_t item_flags = flow_hw_matching_item_flags_get(items);
+ uint64_t item_flags = 0;
uint64_t action_flags = flow_hw_action_flags_get(actions, &qrss, &mark,
&encap_idx, &actions_n, error);
@@ -14054,9 +13973,16 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
};
struct rte_flow_error shadow_error = {0, };
+ const struct rte_flow_pattern_template_attr pattern_template_attr = {
+ .relaxed_matching = 0,
+ .ingress = attr->ingress,
+ .egress = attr->egress,
+ .transfer = attr->transfer,
+ };
- /*
- * TODO: add a call to flow_hw_validate function once it exist.
- * and update mlx5_flow_hw_drv_ops accordingly.
- */
+ /* Validate application items only */
+ ret = flow_hw_pattern_validate(dev, &pattern_template_attr, items,
+ &item_flags, error);
+ if (ret < 0)
+ return 0;
RTE_SET_USED(encap_idx);
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.342125502 +0000
+++ 0015-net-mlx5-fix-non-template-flow-validation-on-create.patch 2025-03-24 16:15:14.769735578 +0000
@@ -1 +1 @@
-From f8ce702cd05f555ab8a52e6d827f096d80fbb825 Mon Sep 17 00:00:00 2001
+From 535cab510acc023f6a9bee4214396f0ac444987c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f8ce702cd05f555ab8a52e6d827f096d80fbb825 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 8d9c0d2813..c95261cd01 100644
+index 95c13d6a11..8f3cb45daf 100644
@@ -25 +26 @@
-@@ -590,85 +590,4 @@ flow_hw_hashfields_set(struct mlx5_flow_rss_desc *rss_desc,
+@@ -546,85 +546,4 @@ flow_hw_hashfields_set(struct mlx5_flow_rss_desc *rss_desc,
@@ -111 +112 @@
-@@ -14296,5 +14215,5 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
+@@ -14043,5 +13962,5 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
@@ -118 +119 @@
-@@ -14307,9 +14226,16 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
+@@ -14054,9 +13973,16 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix flow group ID for action translation' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (13 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template flow validation on create' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix flow matching GENEVE options' " Kevin Traynor
` (15 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Bing Zhao; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a9b2ac1bf31e5e8c6a136fbf4f6c8311353050c9
Thanks.
Kevin
---
From a9b2ac1bf31e5e8c6a136fbf4f6c8311353050c9 Mon Sep 17 00:00:00 2001
From: Bing Zhao <bingz@nvidia.com>
Date: Mon, 3 Mar 2025 15:49:20 +0200
Subject: [PATCH] net/mlx5: fix flow group ID for action translation
[ upstream commit 39c93b85866bad6c43a8a6d8bb3f81bfc0d2ff94 ]
In HWS non-template API, the actual group ID is calculated in the
flow_hw_translate_flow_actions(). This would be set into the dummy
template table for the following usage.
Since __flow_hw_translate_actions_template() is also called for the
dummy action template and some fixed actions' translation. The actual
group ID is also needed to avoid the misuse of actions for 'root'
table. Only the 'group' in the attributes can be used in this
function. The actual group should be set explicitly before calling
it in the non-template API.
Fixes: 27d171b88031 ("net/mlx5: abstract flow action and enable reconfigure")
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 8f3cb45daf..07037d49cb 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -13520,4 +13520,5 @@ flow_hw_translate_flow_actions(struct rte_eth_dev *dev,
table->nb_action_templates = 1;
memcpy(&table->cfg.attr.flow_attr, attr, sizeof(*attr));
+ table->cfg.attr.flow_attr.group = src_group;
table->ats[0].action_template = at;
ret = __flow_hw_translate_actions_template(dev, &table->cfg, hw_acts, at,
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.382677775 +0000
+++ 0016-net-mlx5-fix-flow-group-ID-for-action-translation.patch 2025-03-24 16:15:14.779735618 +0000
@@ -1 +1 @@
-From 39c93b85866bad6c43a8a6d8bb3f81bfc0d2ff94 Mon Sep 17 00:00:00 2001
+From a9b2ac1bf31e5e8c6a136fbf4f6c8311353050c9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 39c93b85866bad6c43a8a6d8bb3f81bfc0d2ff94 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index c95261cd01..22778310b0 100644
+index 8f3cb45daf..07037d49cb 100644
@@ -30 +31 @@
-@@ -13764,4 +13764,5 @@ flow_hw_translate_flow_actions(struct rte_eth_dev *dev,
+@@ -13520,4 +13520,5 @@ flow_hw_translate_flow_actions(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix flow matching GENEVE options' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (14 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix flow group ID for action translation' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix IPIP tunnel verification' " Kevin Traynor
` (14 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/44d0ab5afc575e375f44ab75a0b6b380aba605af
Thanks.
Kevin
---
From 44d0ab5afc575e375f44ab75a0b6b380aba605af Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Tue, 4 Mar 2025 09:56:54 +0200
Subject: [PATCH] net/mlx5: fix flow matching GENEVE options
[ upstream commit fdca628a3e22080a27ff5cd166b2e6537f3cf464 ]
For non-template API on top of HWS,
geneve options were missing a parser and therefore it failed.
In template API it geneve options is configured by the user
using mlx5 set/apply tlv_options commands.
To support hybrid mode, if no parser exists,
added inner configuration of geneve parser, else,
in debug mode, check if the geneve option needed exist in
current parser configured.
In release mode, assume the option exist in current configured parser.
Updated needed configuration for geneve options in doc.
Fixes: e38776c36c8a ("net/mlx5: introduce HWS for non-template flow API")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
doc/guides/nics/mlx5.rst | 5 +++
drivers/net/mlx5/mlx5_flow.h | 17 +++++++
drivers/net/mlx5/mlx5_flow_dv.c | 69 ++++++++++++++++++++++++++++-
drivers/net/mlx5/mlx5_flow_geneve.c | 2 +-
drivers/net/mlx5/mlx5_flow_hw.c | 6 +--
5 files changed, 93 insertions(+), 6 deletions(-)
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index c9c23eedb2..896f9a0027 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -280,4 +280,9 @@ Limitations
d. Only in transfer (switchdev) mode.
+ - When using synchronous flow API,
+ the following limitations and considerations apply:
+
+ - Geneve options is supported when ``FLEX_PARSER_PROFILE_ENABLE`` = 0 (default).
+
- When using Verbs flow engine (``dv_flow_en`` = 0), flow pattern without any
specific VLAN will match for VLAN packets as well:
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 9c8892b194..72f6cf6a32 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -2158,4 +2158,21 @@ flow_hw_get_port_id_from_ctx(void *dr_ctx, uint32_t *port_val)
}
+/**
+ * Get GENEVE TLV option matching to given type and class.
+ *
+ * @param priv
+ * Pointer to port's private data.
+ * @param type
+ * GENEVE option type.
+ * @param class
+ * GENEVE option class.
+ *
+ * @return
+ * Pointer to option structure if exist, NULL otherwise and rte_errno is set.
+ */
+struct mlx5_geneve_tlv_option *
+mlx5_geneve_tlv_option_get(const struct mlx5_priv *priv, uint8_t type,
+ uint16_t class);
+
/**
* Get GENEVE TLV option FW information according type and class.
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 633c41e358..a4a3552386 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -14447,4 +14447,62 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
}
+static int
+flow_dv_translate_items_geneve_opt_nta(struct rte_eth_dev *dev,
+ const struct rte_flow_item *items,
+ struct mlx5_flow_attr *attr,
+ struct rte_flow_error *error)
+{
+ rte_be32_t geneve_mask = 0xffffffff;
+ struct rte_pmd_mlx5_geneve_tlv geneve_tlv = {
+ /* Take from item spec, if changed, destroy and add new parser. */
+ .option_class = 0,
+ /* Take from item spec, if changed, destroy and add new parser. */
+ .option_type = 0,
+ /* 1DW is supported. */
+ .option_len = 1,
+ .match_on_class_mode = 1,
+ .offset = 0,
+ .sample_len = 1,
+ .match_data_mask = &geneve_mask
+ };
+ const struct rte_flow_item_geneve_opt *geneve_opt_v = items->spec;
+ const struct rte_flow_item_geneve_opt *geneve_opt_m = items->mask;
+ void *geneve_parser;
+ struct mlx5_priv *priv = dev->data->dev_private;
+#ifdef RTE_LIBRTE_MLX5_DEBUG
+ struct mlx5_geneve_tlv_option *option;
+#endif
+
+ /* option length is not as supported. */
+ if ((geneve_opt_v->option_len & geneve_opt_m->option_len) > geneve_tlv.option_len)
+ return rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ITEM, items,
+ " GENEVE OPT length is not supported ");
+ geneve_tlv.option_class = geneve_opt_v->option_class & geneve_opt_m->option_class;
+ geneve_tlv.option_type = geneve_opt_v->option_type & geneve_opt_m->option_type;
+ /* if parser doesn't exist */
+ if (!priv->tlv_options) {
+ /* Create a GENEVE option parser. */
+ geneve_parser = mlx5_geneve_tlv_parser_create(attr->port_id,
+ &geneve_tlv, 1);
+ if (!geneve_parser)
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM, items,
+ " GENEVE OPT parser creation failed ");
+#ifdef RTE_LIBRTE_MLX5_DEBUG
+ } else {
+ /* Check if option exist in current parser. */
+ option = mlx5_geneve_tlv_option_get(priv,
+ geneve_tlv.option_type,
+ geneve_tlv.option_class);
+ if (!option)
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM, items,
+ " GENEVE OPT configured does not match this rule class/type");
+#endif
+ }
+ return 0;
+}
+
/**
* Fill the flow matcher with DV spec for items supported in non template mode.
@@ -14471,4 +14529,5 @@ flow_dv_translate_items_nta(struct rte_eth_dev *dev,
struct mlx5_dv_matcher_workspace *wks,
void *key, uint32_t key_type,
+ struct mlx5_flow_attr *attr,
struct rte_flow_error *error)
{
@@ -14491,4 +14550,10 @@ flow_dv_translate_items_nta(struct rte_eth_dev *dev,
wks->last_item = tunnel ? MLX5_FLOW_ITEM_INNER_FLEX : MLX5_FLOW_ITEM_OUTER_FLEX;
break;
+ case RTE_FLOW_ITEM_TYPE_GENEVE_OPT:
+ ret = flow_dv_translate_items_geneve_opt_nta(dev, items, attr, error);
+ if (ret)
+ return ret;
+ wks->last_item = MLX5_FLOW_LAYER_GENEVE_OPT;
+ break;
default:
ret = flow_dv_translate_items(dev, items, wks, key, key_type, error);
@@ -14561,10 +14626,10 @@ __flow_dv_translate_items_hws(const struct rte_flow_item *items,
if (nt_flow) {
ret = flow_dv_translate_items_nta(&rte_eth_devices[attr->port_id],
- items, &wks, key, key_type, NULL);
+ items, &wks, key, key_type, attr, error);
if (ret)
goto exit;
} else {
ret = flow_dv_translate_items(&rte_eth_devices[attr->port_id],
- items, &wks, key, key_type, NULL);
+ items, &wks, key, key_type, error);
if (ret)
goto exit;
diff --git a/drivers/net/mlx5/mlx5_flow_geneve.c b/drivers/net/mlx5/mlx5_flow_geneve.c
index d8086d333f..6bf53e1270 100644
--- a/drivers/net/mlx5/mlx5_flow_geneve.c
+++ b/drivers/net/mlx5/mlx5_flow_geneve.c
@@ -98,5 +98,5 @@ option_match_type_and_class(uint8_t type, uint16_t class,
* Pointer to option structure if exist, NULL otherwise and rte_errno is set.
*/
-static struct mlx5_geneve_tlv_option *
+struct mlx5_geneve_tlv_option *
mlx5_geneve_tlv_option_get(const struct mlx5_priv *priv, uint8_t type,
uint16_t class)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 07037d49cb..126f0475d5 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -13792,7 +13792,7 @@ flow_hw_create_flow(struct rte_eth_dev *dev, enum mlx5_flow_type type,
(*flow)->nt_rule = true;
(*flow)->nt2hws->matcher = &matcher;
- ret = flow_dv_translate_items_hws(items, &flow_attr, &matcher.mask.buf,
- MLX5_SET_MATCHER_HS_M, NULL,
- NULL, error);
+ ret = __flow_dv_translate_items_hws(items, &flow_attr, &matcher.mask.buf,
+ MLX5_SET_MATCHER_HS_M, NULL,
+ NULL, true, error);
if (ret)
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.423845567 +0000
+++ 0017-net-mlx5-fix-flow-matching-GENEVE-options.patch 2025-03-24 16:15:14.804735721 +0000
@@ -1 +1 @@
-From fdca628a3e22080a27ff5cd166b2e6537f3cf464 Mon Sep 17 00:00:00 2001
+From 44d0ab5afc575e375f44ab75a0b6b380aba605af Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fdca628a3e22080a27ff5cd166b2e6537f3cf464 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
-index b45abb6d95..afb19241dc 100644
+index c9c23eedb2..896f9a0027 100644
@@ -36,2 +37,2 @@
-@@ -294,4 +294,9 @@ Limitations
- - RTE_FLOW_ITEM_TYPE_MPLS matching is not supported on group 0.
+@@ -280,4 +280,9 @@ Limitations
+ d. Only in transfer (switchdev) mode.
@@ -47 +48 @@
-index e5245edd46..a5bde158ca 100644
+index 9c8892b194..72f6cf6a32 100644
@@ -50 +51 @@
-@@ -2159,4 +2159,21 @@ flow_hw_get_port_id_from_ctx(void *dr_ctx, uint32_t *port_val)
+@@ -2158,4 +2158,21 @@ flow_hw_get_port_id_from_ctx(void *dr_ctx, uint32_t *port_val)
@@ -73 +74 @@
-index 61d3101ce8..c77041317b 100644
+index 633c41e358..a4a3552386 100644
@@ -76 +77 @@
-@@ -14449,4 +14449,62 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
+@@ -14447,4 +14447,62 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
@@ -139 +140 @@
-@@ -14473,4 +14531,5 @@ flow_dv_translate_items_nta(struct rte_eth_dev *dev,
+@@ -14471,4 +14529,5 @@ flow_dv_translate_items_nta(struct rte_eth_dev *dev,
@@ -145 +146 @@
-@@ -14493,4 +14552,10 @@ flow_dv_translate_items_nta(struct rte_eth_dev *dev,
+@@ -14491,4 +14550,10 @@ flow_dv_translate_items_nta(struct rte_eth_dev *dev,
@@ -156 +157 @@
-@@ -14563,10 +14628,10 @@ __flow_dv_translate_items_hws(const struct rte_flow_item *items,
+@@ -14561,10 +14626,10 @@ __flow_dv_translate_items_hws(const struct rte_flow_item *items,
@@ -181 +182 @@
-index 22778310b0..6254857301 100644
+index 07037d49cb..126f0475d5 100644
@@ -184 +185 @@
-@@ -14036,7 +14036,7 @@ flow_hw_create_flow(struct rte_eth_dev *dev, enum mlx5_flow_type type,
+@@ -13792,7 +13792,7 @@ flow_hw_create_flow(struct rte_eth_dev *dev, enum mlx5_flow_type type,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix IPIP tunnel verification' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (15 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix flow matching GENEVE options' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix mark action validation in FDB mode' " Kevin Traynor
` (13 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/116949c7a7b780f147613068cbbd6257e6053654
Thanks.
Kevin
---
From 116949c7a7b780f147613068cbbd6257e6053654 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Mon, 10 Mar 2025 13:19:45 +0200
Subject: [PATCH] net/mlx5: fix IPIP tunnel verification
[ upstream commit 3d80d35b118ecfb650e51fabafc682ea8a3adb8f ]
Assuming a case with the following pattern:
eth / ipv4 / udp / vxlan / eth / ipv4 proto is (IPv4 | IPv6)
MLX5 PMD incorrectly recognized this as a packet encapsulated as
VXLAN and IP in IP at the same packet header level.
This caused a flow validation error.
This patch fixes the inner IP in IP detection logic.
Fixes: 2db234e769e1 ("net/mlx5: fix IP-in-IP tunnels recognition")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_dv.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index a4a3552386..6fe4204c1f 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -7926,5 +7926,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
item_flags,
&l3_tunnel_flag);
- if (l3_tunnel_detection == l3_tunnel_inner) {
+ /*
+ * explicitly allow inner IPIP match
+ */
+ if (l3_tunnel_detection == l3_tunnel_outer) {
item_flags |= l3_tunnel_flag;
tunnel = 1;
@@ -7950,5 +7953,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
item_flags,
&l3_tunnel_flag);
- if (l3_tunnel_detection == l3_tunnel_inner) {
+ /*
+ * explicitly allow inner IPIP match
+ */
+ if (l3_tunnel_detection == l3_tunnel_outer) {
item_flags |= l3_tunnel_flag;
tunnel = 1;
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.478266052 +0000
+++ 0018-net-mlx5-fix-IPIP-tunnel-verification.patch 2025-03-24 16:15:14.815735765 +0000
@@ -1 +1 @@
-From 3d80d35b118ecfb650e51fabafc682ea8a3adb8f Mon Sep 17 00:00:00 2001
+From 116949c7a7b780f147613068cbbd6257e6053654 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3d80d35b118ecfb650e51fabafc682ea8a3adb8f ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index c77041317b..8703403b8f 100644
+index a4a3552386..6fe4204c1f 100644
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix mark action validation in FDB mode' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (16 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix IPIP tunnel verification' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix NAT64 register selection' " Kevin Traynor
` (12 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/80d22471aebcd9e04fc1699d66567890a5ff4c37
Thanks.
Kevin
---
From 80d22471aebcd9e04fc1699d66567890a5ff4c37 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Tue, 11 Mar 2025 14:46:35 +0200
Subject: [PATCH] net/mlx5: fix mark action validation in FDB mode
[ upstream commit 3e83c4821d57874b2677d7344bcc26f587ce5ba2 ]
The MARK action is supported in FDB SWS mode, but it
was not supported in the early FDB HWS implementations.
The current MARK action validation reflects the original
HWS functionality.
Recent MLX5 FW supports the MARK flow action in FDB mode.
The patch clears the MARK action for both SWS FDB and HWS FDB.
Fixes: d6dc072aeb12 ("net/mlx5: validate flow actions in table creation")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 9678c94ff3..e909a6ab63 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1945,5 +1945,5 @@ mlx5_flow_validate_action_flag(uint64_t action_flags,
*/
int
-mlx5_flow_validate_action_mark(struct rte_eth_dev *dev,
+mlx5_flow_validate_action_mark(__rte_unused struct rte_eth_dev *dev,
const struct rte_flow_action *action,
uint64_t action_flags,
@@ -1978,8 +1978,4 @@ mlx5_flow_validate_action_mark(struct rte_eth_dev *dev,
"mark action not supported for "
"egress");
- if (attr->transfer && mlx5_hws_active(dev))
- return rte_flow_error_set(error, ENOTSUP,
- RTE_FLOW_ERROR_TYPE_ATTR_EGRESS, NULL,
- "non-template mark action not supported for transfer");
return 0;
}
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.521070878 +0000
+++ 0019-net-mlx5-fix-mark-action-validation-in-FDB-mode.patch 2025-03-24 16:15:14.822735794 +0000
@@ -1 +1 @@
-From 3e83c4821d57874b2677d7344bcc26f587ce5ba2 Mon Sep 17 00:00:00 2001
+From 80d22471aebcd9e04fc1699d66567890a5ff4c37 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3e83c4821d57874b2677d7344bcc26f587ce5ba2 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 6169ebc13f..e2f4bd8cef 100644
+index 9678c94ff3..e909a6ab63 100644
@@ -38 +39 @@
-- if (attr->transfer && !mlx5_hws_active(dev))
+- if (attr->transfer && mlx5_hws_active(dev))
@@ -40 +41 @@
-- RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER, NULL,
+- RTE_FLOW_ERROR_TYPE_ATTR_EGRESS, NULL,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix NAT64 register selection' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (17 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix mark action validation in FDB mode' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix GRE matching on root table' " Kevin Traynor
` (11 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9ca66f3f0cbcc7d3e646e3c5f22c3b9859ad982c
Thanks.
Kevin
---
From 9ca66f3f0cbcc7d3e646e3c5f22c3b9859ad982c Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Wed, 12 Mar 2025 10:51:08 +0100
Subject: [PATCH] net/mlx5: fix NAT64 register selection
[ upstream commit f15535128617db8c1e9cad4793e7daf0d698eef9 ]
PMD statically assumed that REG_C_6 is always available for use
with NAT64 HW action.
This led to PMD configuration errors on FW versions which do not expose
that specific register.
This patch fixes that by adding a check for REG_C_6 against FW
capabilities, when registers for NAT64 are selected.
Also, if not enough registers are available, PMD will not attempt to
create NAT64 actions.
Fixes: 7a26bfec06a4 ("net/mlx5: fetch available registers for NAT64")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5.c | 16 +++++++++++-----
drivers/net/mlx5/mlx5_flow_hw.c | 22 ++++++++++++++++++++--
2 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 6e4473e2f4..5616cf4011 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -1626,5 +1626,6 @@ mlx5_init_hws_flow_tags_registers(struct mlx5_dev_ctx_shared *sh)
struct mlx5_dev_registers *reg = &sh->registers;
uint32_t meta_mode = sh->config.dv_xmeta_en;
- uint16_t masks = (uint16_t)sh->cdev->config.hca_attr.set_reg_c;
+ uint16_t reg_c_caps = (uint16_t)sh->cdev->config.hca_attr.set_reg_c;
+ uint16_t masks = reg_c_caps;
uint16_t unset = 0;
uint32_t i, j;
@@ -1650,9 +1651,14 @@ mlx5_init_hws_flow_tags_registers(struct mlx5_dev_ctx_shared *sh)
* The other 2 registers will be fetched from right to left, at least 2
* tag registers should be available.
+ * If not enough registers are available or REG_C_6 is not supported by current FW,
+ * NAT64 action will not be supported.
*/
- MLX5_ASSERT(j >= (MLX5_FLOW_NAT64_REGS_MAX - 1));
- reg->nat64_regs[0] = REG_C_6;
- reg->nat64_regs[1] = reg->hw_avl_tags[j - 2];
- reg->nat64_regs[2] = reg->hw_avl_tags[j - 1];
+ if ((reg_c_caps & RTE_BIT32(mlx5_regc_index(REG_C_6))) &&
+ j >= MLX5_FLOW_NAT64_REGS_MAX - 1) {
+ MLX5_ASSERT(j >= (MLX5_FLOW_NAT64_REGS_MAX - 1));
+ reg->nat64_regs[0] = REG_C_6;
+ reg->nat64_regs[1] = reg->hw_avl_tags[j - 2];
+ reg->nat64_regs[2] = reg->hw_avl_tags[j - 1];
+ }
}
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 126f0475d5..5601abf90d 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -9500,4 +9500,17 @@ flow_hw_destroy_send_to_kernel_action(struct mlx5_priv *priv)
}
+static bool
+flow_hw_should_create_nat64_actions(struct mlx5_priv *priv)
+{
+ int i;
+
+ /* Check if all registers are available. */
+ for (i = 0; i < MLX5_FLOW_NAT64_REGS_MAX; ++i)
+ if (priv->sh->registers.nat64_regs[i] == REG_NON)
+ return false;
+
+ return true;
+}
+
static void
flow_hw_destroy_nat64_actions(struct mlx5_priv *priv)
@@ -11966,7 +11979,12 @@ __flow_hw_configure(struct rte_eth_dev *dev,
goto err;
}
- if (flow_hw_create_nat64_actions(priv, error))
+ if (flow_hw_should_create_nat64_actions(priv)) {
+ if (flow_hw_create_nat64_actions(priv, error))
+ goto err;
+ } else {
DRV_LOG(WARNING, "Cannot create NAT64 action on port %u, "
- "please check the FW version", dev->data->port_id);
+ "please check the FW version. NAT64 will not be supported.",
+ dev->data->port_id);
+ }
if (_queue_attr)
mlx5_free(_queue_attr);
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.557558370 +0000
+++ 0020-net-mlx5-fix-NAT64-register-selection.patch 2025-03-24 16:15:14.834735843 +0000
@@ -1 +1 @@
-From f15535128617db8c1e9cad4793e7daf0d698eef9 Mon Sep 17 00:00:00 2001
+From 9ca66f3f0cbcc7d3e646e3c5f22c3b9859ad982c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f15535128617db8c1e9cad4793e7daf0d698eef9 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 0f49cb5e5b..e175f81031 100644
+index 6e4473e2f4..5616cf4011 100644
@@ -31 +32 @@
-@@ -1625,5 +1625,6 @@ mlx5_init_hws_flow_tags_registers(struct mlx5_dev_ctx_shared *sh)
+@@ -1626,5 +1626,6 @@ mlx5_init_hws_flow_tags_registers(struct mlx5_dev_ctx_shared *sh)
@@ -39 +40 @@
-@@ -1649,9 +1650,14 @@ mlx5_init_hws_flow_tags_registers(struct mlx5_dev_ctx_shared *sh)
+@@ -1650,9 +1651,14 @@ mlx5_init_hws_flow_tags_registers(struct mlx5_dev_ctx_shared *sh)
@@ -59 +60 @@
-index 6254857301..20d38ce414 100644
+index 126f0475d5..5601abf90d 100644
@@ -62 +63 @@
-@@ -9657,4 +9657,17 @@ flow_hw_destroy_send_to_kernel_action(struct mlx5_priv *priv)
+@@ -9500,4 +9500,17 @@ flow_hw_destroy_send_to_kernel_action(struct mlx5_priv *priv)
@@ -80 +81 @@
-@@ -12198,7 +12211,12 @@ __flow_hw_configure(struct rte_eth_dev *dev,
+@@ -11966,7 +11979,12 @@ __flow_hw_configure(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix GRE matching on root table' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (18 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix NAT64 register selection' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'common/mlx5: add device duplication function' " Kevin Traynor
` (10 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9d941764d961e80eca3b4de2e123548ea2736380
Thanks.
Kevin
---
From 9d941764d961e80eca3b4de2e123548ea2736380 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Wed, 12 Mar 2025 13:23:48 +0200
Subject: [PATCH] net/mlx5: fix GRE matching on root table
[ upstream commit 111bde25455114e1d4ad843e7b3a03c5ffd6eca5 ]
The current implementation sets a gre mask with protocol masked in
case the user did not supply the protocol mask.
In template mode, for group 0, the gre translation was called
once with the mask and later with the value.
with gre open matcher(mask/value is null) default values were assigned
gre protocol mask=0xffff and gre protocol value=0.
Therefore gre packet with protocol value not equal zero,
will not match the rule.
Changed the default protocol mask to be zero instead of 0xffff.
In case of empty gre match,
this fix will ignore the protocol field matching,
gre will only be matched by the IP next header field in
previous header in packet.
Fixes: 25ab2cbba31d ("net/mlx5: fix GRE flow item translation for root table")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_dv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 6fe4204c1f..62eb835b7c 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -9855,5 +9855,5 @@ flow_dv_translate_item_gre(void *key, const struct rte_flow_item *item,
if (key_type & MLX5_SET_MATCHER_HS_M) {
if (!gre_m)
- gre_m = &rte_flow_item_gre_mask;
+ gre_m = &empty_gre;
gre_v = gre_m;
} else if (!gre_v) {
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.599408888 +0000
+++ 0021-net-mlx5-fix-GRE-matching-on-root-table.patch 2025-03-24 16:15:14.845735888 +0000
@@ -1 +1 @@
-From 111bde25455114e1d4ad843e7b3a03c5ffd6eca5 Mon Sep 17 00:00:00 2001
+From 9d941764d961e80eca3b4de2e123548ea2736380 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 111bde25455114e1d4ad843e7b3a03c5ffd6eca5 ]
+
@@ -24 +25,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
-index 8703403b8f..608c42db1d 100644
+index 6fe4204c1f..62eb835b7c 100644
@@ -36 +37 @@
-@@ -9857,5 +9857,5 @@ flow_dv_translate_item_gre(void *key, const struct rte_flow_item *item,
+@@ -9855,5 +9855,5 @@ flow_dv_translate_item_gre(void *key, const struct rte_flow_item *item,
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'common/mlx5: add device duplication function' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (19 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix GRE matching on root table' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix GENEVE parser cleanup' " Kevin Traynor
` (9 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Michael Baum; +Cc: Matan Azrad, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b3c8347553fb62b70ec4fff07b71c1667a59acf9
Thanks.
Kevin
---
From b3c8347553fb62b70ec4fff07b71c1667a59acf9 Mon Sep 17 00:00:00 2001
From: Michael Baum <michaelba@nvidia.com>
Date: Thu, 13 Mar 2025 10:33:50 +0200
Subject: [PATCH] common/mlx5: add device duplication function
[ upstream commit 786cd5b0fac36386695627a102d58deb7b3552f8 ]
Add function for creating additional CTX for same device base on
existing CTX.
Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
drivers/common/mlx5/linux/mlx5_common_os.c | 52 ++++++++++++++++++++
drivers/common/mlx5/mlx5_common.h | 4 ++
drivers/common/mlx5/version.map | 1 +
drivers/common/mlx5/windows/mlx5_common_os.c | 31 ++++++++++++
4 files changed, 88 insertions(+)
diff --git a/drivers/common/mlx5/linux/mlx5_common_os.c b/drivers/common/mlx5/linux/mlx5_common_os.c
index 41345e1597..2f5032f0da 100644
--- a/drivers/common/mlx5/linux/mlx5_common_os.c
+++ b/drivers/common/mlx5/linux/mlx5_common_os.c
@@ -874,4 +874,56 @@ mlx5_os_open_device(struct mlx5_common_device *cdev, uint32_t classes)
}
+/**
+ * API function to obtain a new InfiniBand (IB) context for a given common device.
+ *
+ * This function provides a port-agnostic IB context for a physical device, enabling the
+ * device to create and manage resources that can be initialized when a port starts and
+ * released when another port stops.
+ *
+ * For Linux, it imports new context from the existing context.
+ *
+ * @param cdev
+ * Pointer to the mlx5 device structure.
+ *
+ * @return
+ * Pointer to an `ibv_context` on success, or NULL on failure, with `rte_errno` set.
+ */
+void *
+mlx5_os_get_physical_device_ctx(struct mlx5_common_device *cdev)
+{
+ struct ibv_context *ctx = NULL;
+ int cmd_fd = ((struct ibv_context *)cdev->ctx)->cmd_fd;
+ int new_cmd_fd;
+
+ /*
+ * Duplicate the command FD to pass it as input to the import device function.
+ * If the import function succeeds, the new device context takes ownership of
+ * this FD, which will be freed when the new device is closed.
+ * If the import function fails, we are responsible for closing this FD.
+ */
+ new_cmd_fd = dup(cmd_fd);
+ if (new_cmd_fd < 0) {
+ DRV_LOG(ERR,
+ "Failed to duplicate FD %d for IB device \"%s\": %s",
+ cmd_fd, mlx5_os_get_ctx_device_name(cdev->ctx),
+ rte_strerror(errno));
+ rte_errno = errno;
+ return NULL;
+ }
+ /* Attempt to import the duplicated FD to create a new device context. */
+ ctx = mlx5_glue->import_device(new_cmd_fd);
+ if (!ctx) {
+ DRV_LOG(ERR, "Failed to import IB device \"%s\": %s",
+ mlx5_os_get_ctx_device_name(cdev->ctx),
+ rte_strerror(errno));
+ close(new_cmd_fd);
+ rte_errno = errno;
+ return NULL;
+ }
+ DRV_LOG(INFO, "IB device \"%s\" successfully imported, old_fd=%d, new_fd=%d",
+ mlx5_os_get_ctx_device_name(cdev->ctx), cmd_fd, new_cmd_fd);
+ return (void *)ctx;
+}
+
int
mlx5_get_device_guid(const struct rte_pci_addr *dev, uint8_t *guid, size_t len)
diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h
index 1abd1e8239..304cabcc7e 100644
--- a/drivers/common/mlx5/mlx5_common.h
+++ b/drivers/common/mlx5/mlx5_common.h
@@ -636,4 +636,8 @@ mlx5_devx_uar_release(struct mlx5_uar *uar);
/* mlx5_common_os.c */
+__rte_internal
+void *
+mlx5_os_get_physical_device_ctx(struct mlx5_common_device *cdev);
+
int mlx5_os_open_device(struct mlx5_common_device *cdev, uint32_t classes);
int mlx5_os_pd_prepare(struct mlx5_common_device *cdev);
diff --git a/drivers/common/mlx5/version.map b/drivers/common/mlx5/version.map
index a2f72ef46a..6311b27c8a 100644
--- a/drivers/common/mlx5/version.map
+++ b/drivers/common/mlx5/version.map
@@ -148,4 +148,5 @@ INTERNAL {
mlx5_nl_vlan_vmwa_delete; # WINDOWS_NO_EXPORT
+ mlx5_os_get_physical_device_ctx;
mlx5_os_umem_dereg;
mlx5_os_umem_reg;
diff --git a/drivers/common/mlx5/windows/mlx5_common_os.c b/drivers/common/mlx5/windows/mlx5_common_os.c
index 2b6058eb3e..68f1981193 100644
--- a/drivers/common/mlx5/windows/mlx5_common_os.c
+++ b/drivers/common/mlx5/windows/mlx5_common_os.c
@@ -267,4 +267,35 @@ error:
}
+/**
+ * API function to obtain a new MLX5 context for a given common device.
+ *
+ * This function provides a port-agnostic context for a physical device, enabling the
+ * device to create and manage resources that can be initialized when a port starts and
+ * released when another port stops.
+ *
+ * For Windows, it creates a new context for the device regardless to existing context.
+ *
+ * @param cdev
+ * Pointer to the mlx5 device structure.
+ *
+ * @return
+ * Pointer to an `ibv_context` on success, or NULL on failure, with `rte_errno` set.
+ */
+void *
+mlx5_os_get_physical_device_ctx(struct mlx5_common_device *cdev)
+{
+ struct mlx5_common_device temp = {
+ .dev = cdev->dev,
+ };
+
+ if (mlx5_os_open_device(&temp, MLX5_CLASS_ETH) < 0) {
+ DRV_LOG(ERR, "Failed to duplicate DevX device \"%s\": %s",
+ mlx5_os_get_ctx_device_name(cdev->ctx),
+ rte_strerror(rte_errno));
+ return NULL;
+ }
+ return (void *)temp.ctx;
+}
+
/**
* Register umem.
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.639304331 +0000
+++ 0022-common-mlx5-add-device-duplication-function.patch 2025-03-24 16:15:14.847735896 +0000
@@ -1 +1 @@
-From 786cd5b0fac36386695627a102d58deb7b3552f8 Mon Sep 17 00:00:00 2001
+From b3c8347553fb62b70ec4fff07b71c1667a59acf9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 786cd5b0fac36386695627a102d58deb7b3552f8 ]
+
@@ -80 +82 @@
-index e7bd4c6ec4..bea1382911 100644
+index 1abd1e8239..304cabcc7e 100644
@@ -83 +85 @@
-@@ -652,4 +652,8 @@ mlx5_devx_uar_release(struct mlx5_uar *uar);
+@@ -636,4 +636,8 @@ mlx5_devx_uar_release(struct mlx5_uar *uar);
@@ -93 +95 @@
-index 8301485839..819e6b96cb 100644
+index a2f72ef46a..6311b27c8a 100644
@@ -96,2 +98,2 @@
-@@ -151,4 +151,5 @@ INTERNAL {
- mlx5_nl_rdma_monitor_cap_get; # WINDOWS_NO_EXPORT
+@@ -148,4 +148,5 @@ INTERNAL {
+ mlx5_nl_vlan_vmwa_delete; # WINDOWS_NO_EXPORT
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/mlx5: fix GENEVE parser cleanup' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (20 preceding siblings ...)
2025-03-24 16:16 ` patch 'common/mlx5: add device duplication function' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'baseband/acc: fix queue setup failure clean up' " Kevin Traynor
` (8 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Michael Baum; +Cc: Matan Azrad, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/699d7237b61ba8b7080ef1bfe92ea396bdb6cfea
Thanks.
Kevin
---
From 699d7237b61ba8b7080ef1bfe92ea396bdb6cfea Mon Sep 17 00:00:00 2001
From: Michael Baum <michaelba@nvidia.com>
Date: Thu, 13 Mar 2025 10:33:51 +0200
Subject: [PATCH] net/mlx5: fix GENEVE parser cleanup
[ upstream commit c8a6da8678c12bd4c7814a9b15c3cd05402d253f ]
The GENEVE parser is shared across ports on the same physical device. It
is created once for the first port and increments a reference counter
for each additional port. The parser is created using the InfiniBand
(IBV) context (CTX) of the first port, and cleanup should use the same
context.
Previously, if the port owning the context closed while another port
still used the parser, the port closure would fail due to the shared
parser dependency.
This patch addresses the issue by changing the approach: the physical
device now creates its own distinct context by importing the context
from the first initialized port. This ensures that parser creation and
cleanup use a consistent context, independent of individual port
lifecycles.
Fixes: f5177bdc8b76 ("net/mlx5: add GENEVE TLV options parser API")
Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
drivers/net/mlx5/mlx5.c | 21 ++++++------
drivers/net/mlx5/mlx5.h | 2 +-
drivers/net/mlx5/mlx5_flow.h | 2 --
drivers/net/mlx5/mlx5_flow_geneve.c | 50 +++--------------------------
4 files changed, 18 insertions(+), 57 deletions(-)
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 5616cf4011..96269d4e8e 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -1732,4 +1732,14 @@ mlx5_get_physical_device(struct mlx5_common_device *cdev)
return NULL;
}
+ /*
+ * The same CTX create the physical device objects should destroy them.
+ * Since we can't be sure it will be done by same CTX, we prepare for
+ * the physical device a special CTX used by objects creation.
+ */
+ phdev->ctx = mlx5_os_get_physical_device_ctx(cdev);
+ if (!phdev->ctx) {
+ mlx5_free(phdev);
+ return NULL;
+ }
phdev->guid = attr->system_image_guid;
phdev->refcnt = 1;
@@ -1775,4 +1785,6 @@ mlx5_physical_device_destroy(struct mlx5_physical_device *phdev)
/* Remove physical device from the global device list. */
LIST_REMOVE(phdev, next);
+ MLX5_ASSERT(phdev->ctx);
+ claim_zero(mlx5_glue->close_device(phdev->ctx));
mlx5_free(phdev);
}
@@ -2331,13 +2343,4 @@ mlx5_dev_close(struct rte_eth_dev *dev)
return -EBUSY;
}
-#ifdef HAVE_MLX5_HWS_SUPPORT
- /* Check if shared GENEVE options created on context being closed. */
- ret = mlx5_geneve_tlv_options_check_busy(priv);
- if (ret) {
- DRV_LOG(ERR, "port %u maintains shared GENEVE TLV options",
- dev->data->port_id);
- return ret;
- }
-#endif
DRV_LOG(DEBUG, "port %u closing device \"%s\"",
dev->data->port_id, sh->ibdev_name);
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 21df917d6f..856d432c69 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -1514,5 +1514,5 @@ struct mlx5_common_nic_config {
struct mlx5_physical_device {
LIST_ENTRY(mlx5_physical_device) next;
- struct mlx5_dev_ctx_shared *sh; /* Created on sherd context. */
+ void *ctx; /* CTX for creation of options. */
uint64_t guid; /* System image guid, the uniq ID of physical device. */
struct mlx5_geneve_tlv_options *tlv_options;
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 72f6cf6a32..8c3daed7d0 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -3469,6 +3469,4 @@ int
mlx5_geneve_tlv_options_destroy(struct mlx5_geneve_tlv_options *options,
struct mlx5_physical_device *phdev);
-int
-mlx5_geneve_tlv_options_check_busy(struct mlx5_priv *priv);
void
flow_hw_rxq_flag_set(struct rte_eth_dev *dev, bool enable);
diff --git a/drivers/net/mlx5/mlx5_flow_geneve.c b/drivers/net/mlx5/mlx5_flow_geneve.c
index 6bf53e1270..4d57bb763f 100644
--- a/drivers/net/mlx5/mlx5_flow_geneve.c
+++ b/drivers/net/mlx5/mlx5_flow_geneve.c
@@ -591,6 +591,6 @@ mlx5_geneve_tlv_option_copy(struct rte_pmd_mlx5_geneve_tlv *dst,
* Create list of GENEVE TLV options according to user configuration list.
*
- * @param sh
- * Shared context the options are being created on.
+ * @param ctx
+ * Context returned from mlx5 open_device() glue function.
* @param tlv_list
* A list of GENEVE TLV options to create parser for them.
@@ -605,5 +605,5 @@ mlx5_geneve_tlv_option_copy(struct rte_pmd_mlx5_geneve_tlv *dst,
*/
static struct mlx5_geneve_tlv_options *
-mlx5_geneve_tlv_options_create(struct mlx5_dev_ctx_shared *sh,
+mlx5_geneve_tlv_options_create(void *ctx,
const struct rte_pmd_mlx5_geneve_tlv tlv_list[],
uint8_t nb_options, uint8_t sample_id)
@@ -626,5 +626,5 @@ mlx5_geneve_tlv_options_create(struct mlx5_dev_ctx_shared *sh,
for (i = 0; i < nb_options; ++i) {
spec = &tlv_list[i];
- ret = mlx5_geneve_tlv_option_create(sh->cdev->ctx, spec,
+ ret = mlx5_geneve_tlv_option_create(ctx, spec,
&options->options[i], sample_id);
if (ret < 0)
@@ -634,6 +634,4 @@ mlx5_geneve_tlv_options_create(struct mlx5_dev_ctx_shared *sh,
mlx5_geneve_tlv_option_copy(&options->spec[i], spec, data_mask);
}
- MLX5_ASSERT(sh->phdev->sh == NULL);
- sh->phdev->sh = sh;
options->nb_options = nb_options;
options->refcnt = 1;
@@ -677,39 +675,7 @@ mlx5_geneve_tlv_options_destroy(struct mlx5_geneve_tlv_options *options,
mlx5_free(options);
phdev->tlv_options = NULL;
- phdev->sh = NULL;
return 0;
}
-/**
- * Check if GENEVE TLV options are hosted on the current port
- * and the port can be closed
- *
- * @param priv
- * Device private data.
- *
- * @return
- * 0 on success, a negative EBUSY and rte_errno is set.
- */
-int
-mlx5_geneve_tlv_options_check_busy(struct mlx5_priv *priv)
-{
- struct mlx5_physical_device *phdev = mlx5_get_locked_physical_device(priv);
- struct mlx5_dev_ctx_shared *sh = priv->sh;
-
- if (!phdev || phdev->sh != sh) {
- mlx5_unlock_physical_device();
- return 0;
- }
- if (!sh->phdev->tlv_options || sh->phdev->tlv_options->refcnt == 1) {
- /* Mark port as being closed one */
- sh->phdev->sh = NULL;
- mlx5_unlock_physical_device();
- return 0;
- }
- mlx5_unlock_physical_device();
- rte_errno = EBUSY;
- return -EBUSY;
-}
-
/**
* Validate GENEVE TLV option user request structure.
@@ -956,10 +922,4 @@ mlx5_geneve_tlv_parser_create(uint16_t port_id,
return NULL;
}
- if (phdev->sh == NULL) {
- mlx5_unlock_physical_device();
- DRV_LOG(ERR, "GENEVE TLV options are hosted on port being closed.");
- rte_errno = EBUSY;
- return NULL;
- }
/* Use existing options. */
options->refcnt++;
@@ -967,5 +927,5 @@ mlx5_geneve_tlv_parser_create(uint16_t port_id,
}
/* Create GENEVE TLV options for this physical device. */
- options = mlx5_geneve_tlv_options_create(priv->sh, tlv_list, nb_options, sample_id);
+ options = mlx5_geneve_tlv_options_create(phdev->ctx, tlv_list, nb_options, sample_id);
if (!options) {
mlx5_unlock_physical_device();
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.669778137 +0000
+++ 0023-net-mlx5-fix-GENEVE-parser-cleanup.patch 2025-03-24 16:15:14.853735920 +0000
@@ -1 +1 @@
-From c8a6da8678c12bd4c7814a9b15c3cd05402d253f Mon Sep 17 00:00:00 2001
+From 699d7237b61ba8b7080ef1bfe92ea396bdb6cfea Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c8a6da8678c12bd4c7814a9b15c3cd05402d253f ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -35 +36 @@
-index e175f81031..646da8e846 100644
+index 5616cf4011..96269d4e8e 100644
@@ -38 +39 @@
-@@ -1731,4 +1731,14 @@ mlx5_get_physical_device(struct mlx5_common_device *cdev)
+@@ -1732,4 +1732,14 @@ mlx5_get_physical_device(struct mlx5_common_device *cdev)
@@ -53 +54 @@
-@@ -1774,4 +1784,6 @@ mlx5_physical_device_destroy(struct mlx5_physical_device *phdev)
+@@ -1775,4 +1785,6 @@ mlx5_physical_device_destroy(struct mlx5_physical_device *phdev)
@@ -60 +61 @@
-@@ -2330,13 +2342,4 @@ mlx5_dev_close(struct rte_eth_dev *dev)
+@@ -2331,13 +2343,4 @@ mlx5_dev_close(struct rte_eth_dev *dev)
@@ -75 +76 @@
-index 6df99c25e2..0194887a8b 100644
+index 21df917d6f..856d432c69 100644
@@ -78 +79 @@
-@@ -1528,5 +1528,5 @@ struct mlx5_common_nic_config {
+@@ -1514,5 +1514,5 @@ struct mlx5_common_nic_config {
@@ -86 +87 @@
-index a5bde158ca..9816ed9238 100644
+index 72f6cf6a32..8c3daed7d0 100644
@@ -89 +90 @@
-@@ -3470,6 +3470,4 @@ int
+@@ -3469,6 +3469,4 @@ int
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'baseband/acc: fix queue setup failure clean up' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (21 preceding siblings ...)
2025-03-24 16:16 ` patch 'net/mlx5: fix GENEVE parser cleanup' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'common/qat: fix devargs parsing' " Kevin Traynor
` (7 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Nicolas Chautru; +Cc: Maxime Coquelin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/29a23f6fa880a98352d9acb4d76cb298da7d8050
Thanks.
Kevin
---
From 29a23f6fa880a98352d9acb4d76cb298da7d8050 Mon Sep 17 00:00:00 2001
From: Nicolas Chautru <nicolas.chautru@intel.com>
Date: Wed, 5 Mar 2025 10:27:16 -0800
Subject: [PATCH] baseband/acc: fix queue setup failure clean up
[ upstream commit dd81690238585a1985767a8473ac452a048643ea ]
Incomplete clean up for vrb2 variant when queue setup fails
to complete successfully.
Fixes: fc65d3dcabe0 ("baseband/acc: refactor queue allocation")
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
drivers/baseband/acc/rte_vrb_pmd.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/baseband/acc/rte_vrb_pmd.c b/drivers/baseband/acc/rte_vrb_pmd.c
index eb9892ff31..0652447da1 100644
--- a/drivers/baseband/acc/rte_vrb_pmd.c
+++ b/drivers/baseband/acc/rte_vrb_pmd.c
@@ -1157,4 +1157,6 @@ free_q:
rte_free(q);
q = NULL;
+ if (d->device_variant == VRB2_VARIANT)
+ d->queue_index[conf->op_type]--;
return ret;
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.705170837 +0000
+++ 0024-baseband-acc-fix-queue-setup-failure-clean-up.patch 2025-03-24 16:15:14.856735933 +0000
@@ -1 +1 @@
-From dd81690238585a1985767a8473ac452a048643ea Mon Sep 17 00:00:00 2001
+From 29a23f6fa880a98352d9acb4d76cb298da7d8050 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dd81690238585a1985767a8473ac452a048643ea ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 27620ccc10..2c10ef2c94 100644
+index eb9892ff31..0652447da1 100644
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'common/qat: fix devargs parsing' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (22 preceding siblings ...)
2025-03-24 16:16 ` patch 'baseband/acc: fix queue setup failure clean up' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'dts: fix smoke tests docstring' " Kevin Traynor
` (6 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Arkadiusz Kusztal; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/e189913951ecee123cdb09633a0af414d3bf126c
Thanks.
Kevin
---
From e189913951ecee123cdb09633a0af414d3bf126c Mon Sep 17 00:00:00 2001
From: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
Date: Tue, 11 Mar 2025 10:30:24 +0000
Subject: [PATCH] common/qat: fix devargs parsing
[ upstream commit b5f561739d81ed248fee9c801db4cd84caffc5b2 ]
The function `strlen` returns the size of the string without a terminating
null-character, therefore a request to allocate memory space for a parsed
argument is too small by 1.
Fixes: 99ab2806687b ("common/qat: isolate parser arguments configuration")
Signed-off-by: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
---
drivers/common/qat/qat_device.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/common/qat/qat_device.c b/drivers/common/qat/qat_device.c
index bca88fd9bd..b582e3bf8b 100644
--- a/drivers/common/qat/qat_device.c
+++ b/drivers/common/qat/qat_device.c
@@ -230,4 +230,5 @@ qat_dev_parse_command_line(struct qat_pci_device *qat_dev,
if (len == 0)
return 0;
+ ++len;
/* Allocate per-device command line */
qat_dev->command_line = rte_malloc(NULL, len, 0);
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.736973209 +0000
+++ 0025-common-qat-fix-devargs-parsing.patch 2025-03-24 16:15:14.857923766 +0000
@@ -1 +1 @@
-From b5f561739d81ed248fee9c801db4cd84caffc5b2 Mon Sep 17 00:00:00 2001
+From e189913951ecee123cdb09633a0af414d3bf126c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b5f561739d81ed248fee9c801db4cd84caffc5b2 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'dts: fix smoke tests docstring' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (23 preceding siblings ...)
2025-03-24 16:16 ` patch 'common/qat: fix devargs parsing' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'pdump: clear statistics when enabled' " Kevin Traynor
` (5 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Luca Vizzarro; +Cc: Paul Szczepanek, Dean Marx, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/cae454d4fc50ebe9f452cb39bfd1c9b14183239b
Thanks.
Kevin
---
From cae454d4fc50ebe9f452cb39bfd1c9b14183239b Mon Sep 17 00:00:00 2001
From: Luca Vizzarro <luca.vizzarro@arm.com>
Date: Wed, 6 Nov 2024 16:12:06 +0000
Subject: [PATCH] dts: fix smoke tests docstring
[ upstream commit 478c735c5160af21b375466e76c8f4fad06b7b32 ]
Sphinx autodoc complains of is_blocking being duplicated. This is the
case as the parent already holds a docstring for this attribute. Remove
the duplication.
Fixes: 6ef07151aac4 ("dts: update docstrings")
Signed-off-by: Luca Vizzarro <luca.vizzarro@arm.com>
Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
Reviewed-by: Dean Marx <dmarx@iol.unh.edu>
---
dts/tests/TestSuite_smoke_tests.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/dts/tests/TestSuite_smoke_tests.py b/dts/tests/TestSuite_smoke_tests.py
index ab5ad44850..6085e3dbc9 100644
--- a/dts/tests/TestSuite_smoke_tests.py
+++ b/dts/tests/TestSuite_smoke_tests.py
@@ -31,6 +31,4 @@ class TestSmokeTests(TestSuite):
Attributes:
- is_blocking: This test suite will block the execution of all other test suites
- in the test run after it.
nics_in_node: The NICs present on the SUT node.
"""
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.766086448 +0000
+++ 0026-dts-fix-smoke-tests-docstring.patch 2025-03-24 16:15:14.858316096 +0000
@@ -1 +1 @@
-From 478c735c5160af21b375466e76c8f4fad06b7b32 Mon Sep 17 00:00:00 2001
+From cae454d4fc50ebe9f452cb39bfd1c9b14183239b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 478c735c5160af21b375466e76c8f4fad06b7b32 ]
+
@@ -20 +22 @@
-index a8ea07595f..0474b82bd2 100644
+index ab5ad44850..6085e3dbc9 100644
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'pdump: clear statistics when enabled' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (24 preceding siblings ...)
2025-03-24 16:16 ` patch 'dts: fix smoke tests docstring' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'examples/flow_filtering: fix IPv4 matching snippet' " Kevin Traynor
` (4 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Bruce Richardson, Vladimir Medvedkin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/aa006690018044577d7e532bb8e549c3868d2944
Thanks.
Kevin
---
From aa006690018044577d7e532bb8e549c3868d2944 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Thu, 19 Dec 2024 15:58:53 -0800
Subject: [PATCH] pdump: clear statistics when enabled
[ upstream commit b8392fa204ed46b580d61e7621948f1b187c9f98 ]
The pdump statistics are used to keep track of the number
of packets captured, filtered, etc. These need not be cumalative
and instead should be start counting when capture starts.
This fixes the issue where multiple invocations of dumpcap
would include counts from previous invocations.
Bugzilla ID: 1604
Fixes: 10f726efe26c ("pdump: support pcapng and filtering")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
lib/pdump/rte_pdump.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/pdump/rte_pdump.c b/lib/pdump/rte_pdump.c
index 679c3dd0b5..0e6ffc167b 100644
--- a/lib/pdump/rte_pdump.c
+++ b/lib/pdump/rte_pdump.c
@@ -200,4 +200,6 @@ pdump_register_rx_callbacks(enum pdump_version ver,
return rte_errno;
}
+
+ memset(&pdump_stats->rx[port][qid], 0, sizeof(struct rte_pdump_stats));
} else if (operation == DISABLE) {
int ret;
@@ -258,4 +260,5 @@ pdump_register_tx_callbacks(enum pdump_version ver,
return rte_errno;
}
+ memset(&pdump_stats->tx[port][qid], 0, sizeof(struct rte_pdump_stats));
} else if (operation == DISABLE) {
int ret;
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.796128285 +0000
+++ 0027-pdump-clear-statistics-when-enabled.patch 2025-03-24 16:15:14.858803779 +0000
@@ -1 +1 @@
-From b8392fa204ed46b580d61e7621948f1b187c9f98 Mon Sep 17 00:00:00 2001
+From aa006690018044577d7e532bb8e549c3868d2944 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b8392fa204ed46b580d61e7621948f1b187c9f98 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'examples/flow_filtering: fix IPv4 matching snippet' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (25 preceding siblings ...)
2025-03-24 16:16 ` patch 'pdump: clear statistics when enabled' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'examples/ipsec-secgw: fix cryptodev and eventdev IDs' " Kevin Traynor
` (3 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Shani Peretz; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b540e51a864d25b1e254fa8c311b92223e0f4162
Thanks.
Kevin
---
From b540e51a864d25b1e254fa8c311b92223e0f4162 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Sun, 12 Jan 2025 09:52:00 +0200
Subject: [PATCH] examples/flow_filtering: fix IPv4 matching snippet
[ upstream commit 5fa25916f1ab47c82310264449a6d67dbb15ca4d ]
This patch corrects the destination IP address mask to
restore the previous implementation's behavior.
Also it fixes a misuse of rte_flow_item_tcp struct.
Replace it with the appropriate rte_flow_item_ipv4 struct,
as the code in this context filters ipv4 traffic.
Fixes: 16158f349000 ("examples/flow_filtering: introduce use cases snippets")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
---
examples/flow_filtering/snippets/snippet_match_ipv4.c | 11 ++++++-----
examples/flow_filtering/snippets/snippet_match_ipv4.h | 1 -
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/examples/flow_filtering/snippets/snippet_match_ipv4.c b/examples/flow_filtering/snippets/snippet_match_ipv4.c
index 65fb045e8b..d32f4ebfdc 100644
--- a/examples/flow_filtering/snippets/snippet_match_ipv4.c
+++ b/examples/flow_filtering/snippets/snippet_match_ipv4.c
@@ -56,5 +56,5 @@ snippet_ipv4_flow_create_patterns(struct rte_flow_item *patterns)
ip_spec->hdr.dst_addr = htonl(DEST_IP); /* The dest ip value to match the input packet. */
- ip_mask->hdr.dst_addr = DEST_MASK; /* The mask to apply to the dest ip. */
+ ip_mask->hdr.dst_addr = FULL_MASK; /* The mask to apply to the dest ip. */
ip_spec->hdr.src_addr = htonl(SRC_IP); /* The src ip value to match the input packet. */
ip_mask->hdr.src_addr = EMPTY_MASK; /* The mask to apply to the src ip. */
@@ -77,5 +77,6 @@ snippet_ipv4_flow_create_actions_template(uint16_t port_id, struct rte_flow_erro
};
- tactions[0].type = RTE_FLOW_ACTION_TYPE_END;
+ tactions[0].type = RTE_FLOW_ACTION_TYPE_QUEUE;
+ tactions[1].type = RTE_FLOW_ACTION_TYPE_END;
/* This sets the masks to match the actions, indicating that all fields of the actions
@@ -93,5 +94,5 @@ snippet_ipv4_flow_create_pattern_template(uint16_t port_id, struct rte_flow_erro
{
struct rte_flow_item titems[MAX_PATTERN_NUM] = {0};
- struct rte_flow_item_tcp ip_mask = {0};
+ struct rte_flow_item_ipv4 ip_mask = {0};
struct rte_flow_pattern_template_attr attr = {
@@ -102,6 +103,6 @@ snippet_ipv4_flow_create_pattern_template(uint16_t port_id, struct rte_flow_erro
titems[0].type = RTE_FLOW_ITEM_TYPE_ETH;
titems[1].type = RTE_FLOW_ITEM_TYPE_IPV4;
- ip_mask.hdr.src_port = EMPTY_MASK;
- ip_mask.hdr.dst_port = DEST_MASK;
+ ip_mask.hdr.src_addr = EMPTY_MASK;
+ ip_mask.hdr.dst_addr = FULL_MASK;
titems[1].mask = &ip_mask;
titems[2].type = RTE_FLOW_ITEM_TYPE_END;
diff --git a/examples/flow_filtering/snippets/snippet_match_ipv4.h b/examples/flow_filtering/snippets/snippet_match_ipv4.h
index 847784beef..597a1c954e 100644
--- a/examples/flow_filtering/snippets/snippet_match_ipv4.h
+++ b/examples/flow_filtering/snippets/snippet_match_ipv4.h
@@ -14,5 +14,4 @@
#define FULL_MASK 0xffffffff /* full mask */
#define EMPTY_MASK 0x0 /* empty mask */
-#define DEST_MASK 0xffff /* full mask */
#define MAX_PATTERN_NUM 3 /* Maximal number of patterns for this example. */
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.825469086 +0000
+++ 0028-examples-flow_filtering-fix-IPv4-matching-snippet.patch 2025-03-24 16:15:14.859131256 +0000
@@ -1 +1 @@
-From 5fa25916f1ab47c82310264449a6d67dbb15ca4d Mon Sep 17 00:00:00 2001
+From b540e51a864d25b1e254fa8c311b92223e0f4162 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5fa25916f1ab47c82310264449a6d67dbb15ca4d ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'examples/ipsec-secgw: fix cryptodev and eventdev IDs' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (26 preceding siblings ...)
2025-03-24 16:16 ` patch 'examples/flow_filtering: fix IPv4 matching snippet' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'doc: add no-IOMMU mode in devbind tool guide' " Kevin Traynor
` (2 subsequent siblings)
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Tejasree Kondoj; +Cc: Anoob Joseph, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ecedc28fafa7e4eb7e093fde75bb37d402c3dd4d
Thanks.
Kevin
---
From ecedc28fafa7e4eb7e093fde75bb37d402c3dd4d Mon Sep 17 00:00:00 2001
From: Tejasree Kondoj <ktejasree@marvell.com>
Date: Mon, 2 Dec 2024 12:19:06 +0530
Subject: [PATCH] examples/ipsec-secgw: fix cryptodev and eventdev IDs
[ upstream commit c7b38c687d920000aef08659465e07106caa22c5 ]
Fixing cryptodev and eventdev ID numbers.
Fixes: 0dbe550a4af5 ("examples/ipsec-secgw: initialize event crypto adapter")
Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
---
examples/ipsec-secgw/event_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/ipsec-secgw/event_helper.c b/examples/ipsec-secgw/event_helper.c
index dadddcb306..fc9fa1b000 100644
--- a/examples/ipsec-secgw/event_helper.c
+++ b/examples/ipsec-secgw/event_helper.c
@@ -888,5 +888,5 @@ eh_initialize_crypto_adapter(struct eventmode_conf *em_conf)
/* Add crypto queue pairs to event crypto adapter */
- ret = rte_event_crypto_adapter_queue_pair_add(cdev_id, eventdev_id,
+ ret = rte_event_crypto_adapter_queue_pair_add(eventdev_id, cdev_id,
-1, /* adds all the pre configured queue pairs to the instance */
&queue_conf);
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.855012889 +0000
+++ 0029-examples-ipsec-secgw-fix-cryptodev-and-eventdev-IDs.patch 2025-03-24 16:15:14.860022785 +0000
@@ -1 +1 @@
-From c7b38c687d920000aef08659465e07106caa22c5 Mon Sep 17 00:00:00 2001
+From ecedc28fafa7e4eb7e093fde75bb37d402c3dd4d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c7b38c687d920000aef08659465e07106caa22c5 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'doc: add no-IOMMU mode in devbind tool guide' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (27 preceding siblings ...)
2025-03-24 16:16 ` patch 'examples/ipsec-secgw: fix cryptodev and eventdev IDs' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'eal: fix undetected NUMA nodes' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/ixgbe: add checks for E610 VF' " Kevin Traynor
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f06641c1adfbff3e2ba12258131a5bf938885414
Thanks.
Kevin
---
From f06641c1adfbff3e2ba12258131a5bf938885414 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Mon, 2 Dec 2024 09:35:01 +0000
Subject: [PATCH] doc: add no-IOMMU mode in devbind tool guide
[ upstream commit a85d7ca7d075d314c780e845fd9788ae2d532289 ]
Support for `--noiommu-mode` flag was added, but documentation for it was
not. Add documentation for the flag.
Fixes: 6ca0f1c8450d ("usertools/devbind: support VFIO non-IOMMU mode")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/tools/devbind.rst | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/doc/guides/tools/devbind.rst b/doc/guides/tools/devbind.rst
index df4f3505ac..b16cc9a4e3 100644
--- a/doc/guides/tools/devbind.rst
+++ b/doc/guides/tools/devbind.rst
@@ -57,4 +57,9 @@ OPTIONS
with caution.
+* ``--noiommu-mode``
+
+ When using vfio-pci driver on a system with no IOMMU,
+ this flag should be used to enable unsafe no-IOMMU mode for vfio-pci driver.
+
.. warning::
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.884772549 +0000
+++ 0030-doc-add-no-IOMMU-mode-in-devbind-tool-guide.patch 2025-03-24 16:15:14.860353005 +0000
@@ -1 +1 @@
-From a85d7ca7d075d314c780e845fd9788ae2d532289 Mon Sep 17 00:00:00 2001
+From f06641c1adfbff3e2ba12258131a5bf938885414 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a85d7ca7d075d314c780e845fd9788ae2d532289 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 20f0d76411..90b289de1e 100644
+index df4f3505ac..b16cc9a4e3 100644
@@ -22,2 +23,2 @@
-@@ -63,4 +63,9 @@ OPTIONS
- so that devices bound to VFIO would be usable by unprivileged users.
+@@ -57,4 +57,9 @@ OPTIONS
+ with caution.
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'eal: fix undetected NUMA nodes' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (28 preceding siblings ...)
2025-03-24 16:16 ` patch 'doc: add no-IOMMU mode in devbind tool guide' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
2025-03-24 16:16 ` patch 'net/ixgbe: add checks for E610 VF' " Kevin Traynor
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c77400b42630fc568e99d7565dbe2b75b5081373
Thanks.
Kevin
---
From c77400b42630fc568e99d7565dbe2b75b5081373 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Wed, 5 Mar 2025 16:24:58 +0000
Subject: [PATCH] eal: fix undetected NUMA nodes
[ upstream commit ef41b96461703c766e4a39ecf4bf7cb731d9617d ]
In cases where the number of cores on a given socket is greater than
RTE_MAX_LCORES, then EAL will be unaware of all the sockets/numa nodes
on a system. Fix this limitation by having the EAL probe the NUMA node
for cores it isn't going to use, and recording that for completeness.
This is necessary as memory is tracked per node, and with the --lcores
parameters our app lcores may be on different sockets than the lcore ids
may imply. For example, lcore 0 is on socket zero, but if app is run
with --lcores=0@64, then DPDK lcore 0 may be on socket one, so DPDK
needs to be aware of that socket.
Fixes: 952b20777255 ("eal: provide API for querying valid socket ids")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/eal/common/eal_common_lcore.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/lib/eal/common/eal_common_lcore.c b/lib/eal/common/eal_common_lcore.c
index 2ff9252c52..820a6534b1 100644
--- a/lib/eal/common/eal_common_lcore.c
+++ b/lib/eal/common/eal_common_lcore.c
@@ -145,5 +145,9 @@ rte_eal_cpu_init(void)
unsigned count = 0;
unsigned int socket_id, prev_socket_id;
- int lcore_to_socket_id[RTE_MAX_LCORE];
+#if CPU_SETSIZE > RTE_MAX_LCORE
+ int lcore_to_socket_id[CPU_SETSIZE] = {0};
+#else
+ int lcore_to_socket_id[RTE_MAX_LCORE] = {0};
+#endif
/*
@@ -184,7 +188,9 @@ rte_eal_cpu_init(void)
if (eal_cpu_detected(lcore_id) == 0)
continue;
+ socket_id = eal_cpu_socket_id(lcore_id);
+ lcore_to_socket_id[lcore_id] = socket_id;
EAL_LOG(DEBUG, "Skipped lcore %u as core %u on socket %u",
lcore_id, eal_cpu_core_id(lcore_id),
- eal_cpu_socket_id(lcore_id));
+ socket_id);
}
@@ -202,10 +208,11 @@ rte_eal_cpu_init(void)
prev_socket_id = -1;
config->numa_node_count = 0;
- for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+ for (lcore_id = 0; lcore_id < RTE_DIM(lcore_to_socket_id); lcore_id++) {
socket_id = lcore_to_socket_id[lcore_id];
if (socket_id != prev_socket_id)
- config->numa_nodes[config->numa_node_count++] =
- socket_id;
+ config->numa_nodes[config->numa_node_count++] = socket_id;
prev_socket_id = socket_id;
+ if (config->numa_node_count >= RTE_MAX_NUMA_NODES)
+ break;
}
EAL_LOG(INFO, "Detected NUMA nodes: %u", config->numa_node_count);
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.913985309 +0000
+++ 0031-eal-fix-undetected-NUMA-nodes.patch 2025-03-24 16:15:14.860844031 +0000
@@ -1 +1 @@
-From ef41b96461703c766e4a39ecf4bf7cb731d9617d Mon Sep 17 00:00:00 2001
+From c77400b42630fc568e99d7565dbe2b75b5081373 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ef41b96461703c766e4a39ecf4bf7cb731d9617d ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 32+ messages in thread
* patch 'net/ixgbe: add checks for E610 VF' has been queued to stable release 24.11.2
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
` (29 preceding siblings ...)
2025-03-24 16:16 ` patch 'eal: fix undetected NUMA nodes' " Kevin Traynor
@ 2025-03-24 16:16 ` Kevin Traynor
30 siblings, 0 replies; 32+ messages in thread
From: Kevin Traynor @ 2025-03-24 16:16 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Vladimir Medvedkin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.2
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/28/25. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/20a6a691b22b3b76eefa0275e57973d3ab2d19b0
Thanks.
Kevin
---
From 20a6a691b22b3b76eefa0275e57973d3ab2d19b0 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 21 Mar 2025 17:12:11 +0000
Subject: [PATCH] net/ixgbe: add checks for E610 VF
[ upstream commit 6e41ba1306e6f57f6812883df0e4687894fa70b7 ]
A number of places in the ixgbe code check for a virtual function, but
these checks were missing the identifier for the E610 VF. Add them into
the conditionals.
Fixes: f678f3dea8fd ("net/ixgbe: fix missing VF PCI ID")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
drivers/net/ixgbe/ixgbe_rxtx.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c
index 7d16eb9df7..5c5601907d 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx.c
@@ -2783,4 +2783,5 @@ ixgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
*/
if (hw->mac.type == ixgbe_mac_82599_vf ||
+ hw->mac.type == ixgbe_mac_E610_vf ||
hw->mac.type == ixgbe_mac_X540_vf ||
hw->mac.type == ixgbe_mac_X550_vf ||
@@ -3003,4 +3004,5 @@ ixgbe_is_vf(struct rte_eth_dev *dev)
case ixgbe_mac_X550EM_x_vf:
case ixgbe_mac_X550EM_a_vf:
+ case ixgbe_mac_E610_vf:
return 1;
default:
@@ -3169,4 +3171,5 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
*/
if (hw->mac.type == ixgbe_mac_82599_vf ||
+ hw->mac.type == ixgbe_mac_E610_vf ||
hw->mac.type == ixgbe_mac_X540_vf ||
hw->mac.type == ixgbe_mac_X550_vf ||
@@ -5851,4 +5854,5 @@ ixgbevf_dev_rx_init(struct rte_eth_dev *dev)
case ixgbe_mac_X550EM_x_vf:
case ixgbe_mac_X550EM_a_vf:
+ case ixgbe_mac_E610_vf:
switch (dev->data->dev_conf.rxmode.mq_mode) {
case RTE_ETH_MQ_RX_RSS:
--
2.48.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-03-24 16:15:15.944393434 +0000
+++ 0032-net-ixgbe-add-checks-for-E610-VF.patch 2025-03-24 16:15:14.862735957 +0000
@@ -1 +1 @@
-From 6e41ba1306e6f57f6812883df0e4687894fa70b7 Mon Sep 17 00:00:00 2001
+From 20a6a691b22b3b76eefa0275e57973d3ab2d19b0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6e41ba1306e6f57f6812883df0e4687894fa70b7 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -16 +17 @@
- drivers/net/intel/ixgbe/ixgbe_rxtx.c | 4 ++++
+ drivers/net/ixgbe/ixgbe_rxtx.c | 4 ++++
@@ -19,5 +20,5 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx.c b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
-index 3b7a6a6f0e..0c8a9ec763 100644
---- a/drivers/net/intel/ixgbe/ixgbe_rxtx.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
-@@ -2768,4 +2768,5 @@ ixgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
+diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c
+index 7d16eb9df7..5c5601907d 100644
+--- a/drivers/net/ixgbe/ixgbe_rxtx.c
++++ b/drivers/net/ixgbe/ixgbe_rxtx.c
+@@ -2783,4 +2783,5 @@ ixgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
@@ -29 +30 @@
-@@ -2988,4 +2989,5 @@ ixgbe_is_vf(struct rte_eth_dev *dev)
+@@ -3003,4 +3004,5 @@ ixgbe_is_vf(struct rte_eth_dev *dev)
@@ -35 +36 @@
-@@ -3154,4 +3156,5 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -3169,4 +3171,5 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -41 +42 @@
-@@ -5836,4 +5839,5 @@ ixgbevf_dev_rx_init(struct rte_eth_dev *dev)
+@@ -5851,4 +5854,5 @@ ixgbevf_dev_rx_init(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2025-03-24 16:20 UTC | newest]
Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-24 16:16 patch 'doc: fix year of final LTS release' has been queued to stable release 24.11.2 Kevin Traynor
2025-03-24 16:16 ` patch 'net/bnxt: fix epoch bit calculation' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/iavf: fix mbuf release in Arm multi-process' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/ice: fix flow engines order' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/ice: fix dropped packets when using VRRP' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/iavf: check interrupt registration failure' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/iavf: fix crash on app exit on FreeBSD' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix hairpin queue release' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix LACP packet handling in isolated mode' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5/hws: fix crash using represented port without ID' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template set VLAN VID' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix error info in actions construct' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5/hws: fix GTP flags matching' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template flow validation' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix non-template flow validation on create' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix flow group ID for action translation' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix flow matching GENEVE options' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix IPIP tunnel verification' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix mark action validation in FDB mode' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix NAT64 register selection' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix GRE matching on root table' " Kevin Traynor
2025-03-24 16:16 ` patch 'common/mlx5: add device duplication function' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/mlx5: fix GENEVE parser cleanup' " Kevin Traynor
2025-03-24 16:16 ` patch 'baseband/acc: fix queue setup failure clean up' " Kevin Traynor
2025-03-24 16:16 ` patch 'common/qat: fix devargs parsing' " Kevin Traynor
2025-03-24 16:16 ` patch 'dts: fix smoke tests docstring' " Kevin Traynor
2025-03-24 16:16 ` patch 'pdump: clear statistics when enabled' " Kevin Traynor
2025-03-24 16:16 ` patch 'examples/flow_filtering: fix IPv4 matching snippet' " Kevin Traynor
2025-03-24 16:16 ` patch 'examples/ipsec-secgw: fix cryptodev and eventdev IDs' " Kevin Traynor
2025-03-24 16:16 ` patch 'doc: add no-IOMMU mode in devbind tool guide' " Kevin Traynor
2025-03-24 16:16 ` patch 'eal: fix undetected NUMA nodes' " Kevin Traynor
2025-03-24 16:16 ` patch 'net/ixgbe: add checks for E610 VF' " Kevin Traynor
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).