* [PATCH 00/10] Fix multi process path selection in Intel drivers
@ 2026-02-05 10:29 Ciara Loftus
2026-02-05 10:29 ` [PATCH 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
` (10 more replies)
0 siblings, 11 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:29 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
This series fixes and makes consistent the approach to selecting Rx and
Tx paths in a multi process scenario across the Intel drivers that use
the common path selection framework.
In v25.11 the i40e, iavf and ice drivers prevented Rx path selection by
secondary processes, in favour of simply selecting the path chosen by
the primary process. However, this model does not work if the primary
process hasn't started the device before the secondary process
encounters the path selection logic. To address this, permit path
selection by any process, so long as the device has not yet been
started. This allows for the use case where the secondary process is the
process that starts the device.
The idpf and cpfl drivers are updated to follow this model as well.
The same issue exists for the Tx path selection for i40e, iavf, ice,
idpf and cpfl, so implement the same logic when selecting a Tx path as
well ie. permit path selection if the device has not been started.
I kept the patches for fixing the Rx and Tx path selection separate, as
the patches that target the Rx side will need to be backported to v25.11
whereas the patches for the Tx side do not as that logic was introduced
post v25.11.
Ciara Loftus (10):
net/i40e: permit secondary process Rx path selection
net/iavf: permit secondary process Rx path selection
net/ice: permit secondary process Rx path selection
net/idpf: prevent Rx path selection after device start
net/cpfl: prevent Rx path selection after device start
net/i40e: permit secondary process Tx path selection
net/iavf: permit secondary process Tx path selection
net/ice: permit secondary process Tx path selection
net/idpf: permit secondary process Tx path selection
net/cpfl: permit secondary process Tx path selection
drivers/net/intel/cpfl/cpfl_rxtx.c | 9 +++++++--
drivers/net/intel/i40e/i40e_rxtx.c | 8 ++++----
drivers/net/intel/iavf/iavf_rxtx.c | 8 ++++----
drivers/net/intel/ice/ice_rxtx.c | 8 ++++----
drivers/net/intel/idpf/idpf_rxtx.c | 9 +++++++--
5 files changed, 26 insertions(+), 16 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH 01/10] net/i40e: permit secondary process Rx path selection
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
@ 2026-02-05 10:29 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 02/10] net/iavf: " Ciara Loftus
` (9 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:29 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 258f346f5d5e ("net/i40e: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 258f346f5d5e ("net/i40e: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/i40e/i40e_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
index 1c3586778c..3deeff165d 100644
--- a/drivers/net/intel/i40e/i40e_rxtx.c
+++ b/drivers/net/intel/i40e/i40e_rxtx.c
@@ -3494,8 +3494,8 @@ i40e_set_rx_function(struct rte_eth_dev *dev)
uint16_t i;
enum rte_vect_max_simd rx_simd_width = i40e_get_max_simd_bitwidth();
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
/* In order to allow Vector Rx there are a few configuration
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 02/10] net/iavf: permit secondary process Rx path selection
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-05 10:29 ` [PATCH 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 03/10] net/ice: " Ciara Loftus
` (8 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 3f59c3d97a89 ("net/iavf: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 3f59c3d97a89 ("net/iavf: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/iavf/iavf_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
index 4b763627bc..bca80eccfa 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.c
+++ b/drivers/net/intel/iavf/iavf_rxtx.c
@@ -4173,8 +4173,8 @@ iavf_set_rx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
for (i = 0; i < dev->data->nb_rx_queues; i++) {
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 03/10] net/ice: permit secondary process Rx path selection
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-05 10:29 ` [PATCH 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
2026-02-05 10:30 ` [PATCH 02/10] net/iavf: " Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
` (7 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 197e70fb8961 ("net/ice: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 197e70fb8961 ("net/ice: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/ice/ice_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
index f3bc79423d..bbd9cfa7a5 100644
--- a/drivers/net/intel/ice/ice_rxtx.c
+++ b/drivers/net/intel/ice/ice_rxtx.c
@@ -3822,8 +3822,8 @@ ice_set_rx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 04/10] net/idpf: prevent Rx path selection after device start
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (2 preceding siblings ...)
2026-02-05 10:30 ` [PATCH 03/10] net/ice: " Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 05/10] net/cpfl: " Ciara Loftus
` (6 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
To fall in line with other drivers using the Rx path selection
infrastructure, prevent Rx path selection after the device has started.
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/idpf/idpf_rxtx.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c
index cee454244f..de880bdc5f 100644
--- a/drivers/net/intel/idpf/idpf_rxtx.c
+++ b/drivers/net/intel/idpf/idpf_rxtx.c
@@ -783,6 +783,10 @@ idpf_set_rx_function(struct rte_eth_dev *dev)
struct idpf_rx_queue *rxq;
int i;
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
+ goto out;
+
if (idpf_rx_vec_dev_check_default(dev) == IDPF_VECTOR_PATH &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
req_features.simd_width = idpf_get_max_simd_bitwidth();
@@ -814,6 +818,7 @@ idpf_set_rx_function(struct rte_eth_dev *dev)
}
#endif
+out:
dev->rx_pkt_burst = idpf_rx_path_infos[ad->rx_func_type].pkt_burst;
PMD_DRV_LOG(NOTICE, "Using %s Rx (port %d).",
idpf_rx_path_infos[ad->rx_func_type].info, dev->data->port_id);
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 05/10] net/cpfl: prevent Rx path selection after device start
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (3 preceding siblings ...)
2026-02-05 10:30 ` [PATCH 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
` (5 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
To fall in line with other drivers using the Rx path selection
infrastructure, prevent Rx path selection after the device has started.
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/cpfl/cpfl_rxtx.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/net/intel/cpfl/cpfl_rxtx.c b/drivers/net/intel/cpfl/cpfl_rxtx.c
index d0438b5da0..1de53f8827 100644
--- a/drivers/net/intel/cpfl/cpfl_rxtx.c
+++ b/drivers/net/intel/cpfl/cpfl_rxtx.c
@@ -1430,6 +1430,10 @@ cpfl_set_rx_function(struct rte_eth_dev *dev)
struct cpfl_rx_queue *cpfl_rxq;
int i;
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
+ goto out;
+
if (cpfl_rx_vec_dev_check_default(dev) == CPFL_VECTOR_PATH &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
req_features.simd_width = cpfl_get_max_simd_bitwidth();
@@ -1462,6 +1466,7 @@ cpfl_set_rx_function(struct rte_eth_dev *dev)
}
#endif
+out:
dev->rx_pkt_burst = idpf_rx_path_infos[ad->rx_func_type].pkt_burst;
PMD_DRV_LOG(NOTICE, "Using %s Rx (port %d).",
idpf_rx_path_infos[ad->rx_func_type].info, dev->data->port_id);
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 06/10] net/i40e: permit secondary process Tx path selection
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (4 preceding siblings ...)
2026-02-05 10:30 ` [PATCH 05/10] net/cpfl: " Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 07/10] net/iavf: " Ciara Loftus
` (4 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 8d57c1788806 ("net/i40e: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 8d57c1788806 ("net/i40e: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/i40e/i40e_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
index 3deeff165d..1c46e19582 100644
--- a/drivers/net/intel/i40e/i40e_rxtx.c
+++ b/drivers/net/intel/i40e/i40e_rxtx.c
@@ -3597,8 +3597,8 @@ i40e_set_tx_function(struct rte_eth_dev *dev)
.simple_tx = ad->tx_simple_allowed
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
if (ad->tx_vec_allowed) {
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 07/10] net/iavf: permit secondary process Tx path selection
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (5 preceding siblings ...)
2026-02-05 10:30 ` [PATCH 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 08/10] net/ice: " Ciara Loftus
` (3 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit ebcfb039afa8 ("net/iavf: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: ebcfb039afa8 ("net/iavf: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/iavf/iavf_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
index bca80eccfa..abe0f7c529 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.c
+++ b/drivers/net/intel/iavf/iavf_rxtx.c
@@ -4235,8 +4235,8 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 08/10] net/ice: permit secondary process Tx path selection
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (6 preceding siblings ...)
2026-02-05 10:30 ` [PATCH 07/10] net/iavf: " Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 09/10] net/idpf: " Ciara Loftus
` (2 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit cf96ec231d02 ("net/ice: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: cf96ec231d02 ("net/ice: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/ice/ice_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
index bbd9cfa7a5..8ed47b957f 100644
--- a/drivers/net/intel/ice/ice_rxtx.c
+++ b/drivers/net/intel/ice/ice_rxtx.c
@@ -4163,8 +4163,8 @@ ice_set_tx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
req_features.simple_tx = ad->tx_simple_allowed;
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 09/10] net/idpf: permit secondary process Tx path selection
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (7 preceding siblings ...)
2026-02-05 10:30 ` [PATCH 08/10] net/ice: " Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 10:30 ` [PATCH 10/10] net/cpfl: " Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 7cab7e67363a ("net/idpf: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 7cab7e67363a ("net/idpf: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/idpf/idpf_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c
index de880bdc5f..344bca995d 100644
--- a/drivers/net/intel/idpf/idpf_rxtx.c
+++ b/drivers/net/intel/idpf/idpf_rxtx.c
@@ -842,8 +842,8 @@ idpf_set_tx_function(struct rte_eth_dev *dev)
.single_queue = (vport->txq_model == VIRTCHNL2_QUEUE_MODEL_SINGLE)
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH 10/10] net/cpfl: permit secondary process Tx path selection
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (8 preceding siblings ...)
2026-02-05 10:30 ` [PATCH 09/10] net/idpf: " Ciara Loftus
@ 2026-02-05 10:30 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 10:30 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 6970745698b9 ("net/cpfl: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 6970745698b9 ("net/cpfl: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/cpfl/cpfl_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/cpfl/cpfl_rxtx.c b/drivers/net/intel/cpfl/cpfl_rxtx.c
index 1de53f8827..7c0d576b75 100644
--- a/drivers/net/intel/cpfl/cpfl_rxtx.c
+++ b/drivers/net/intel/cpfl/cpfl_rxtx.c
@@ -1491,8 +1491,8 @@ cpfl_set_tx_function(struct rte_eth_dev *dev)
.single_queue = (vport->txq_model == VIRTCHNL2_QUEUE_MODEL_SINGLE)
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 00/10] Fix multi process path selection in Intel drivers
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (9 preceding siblings ...)
2026-02-05 10:30 ` [PATCH 10/10] net/cpfl: " Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
` (10 more replies)
10 siblings, 11 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
This series fixes and makes consistent the approach to selecting Rx and
Tx paths in a multi process scenario across the Intel drivers that use
the common path selection framework.
In v25.11 the i40e, iavf and ice drivers prevented Rx path selection by
secondary processes, in favour of simply selecting the path chosen by
the primary process. However, this model does not work if the primary
process hasn't started the device before the secondary process
encounters the path selection logic. To address this, permit path
selection by any process, so long as the device has not yet been
started. This allows for the use case where the secondary process is the
process that starts the device.
The idpf and cpfl drivers are updated to follow this model as well.
The same issue exists for the Tx path selection for i40e, iavf, ice,
idpf and cpfl, so implement the same logic when selecting a Tx path as
well ie. permit path selection if the device has not been started.
I kept the patches for fixing the Rx and Tx path selection separate, as
the patches that target the Rx side will need to be backported to v25.11
whereas the patches for the Tx side do not as that logic was introduced
post v25.11.
v2: fix some cross compile build errors
Ciara Loftus (10):
net/i40e: permit secondary process Rx path selection
net/iavf: permit secondary process Rx path selection
net/ice: permit secondary process Rx path selection
net/idpf: prevent Rx path selection after device start
net/cpfl: prevent Rx path selection after device start
net/i40e: permit secondary process Tx path selection
net/iavf: permit secondary process Tx path selection
net/ice: permit secondary process Tx path selection
net/idpf: permit secondary process Tx path selection
net/cpfl: permit secondary process Tx path selection
drivers/net/intel/cpfl/cpfl_rxtx.c | 13 ++++++++++---
drivers/net/intel/i40e/i40e_rxtx.c | 8 ++++----
drivers/net/intel/iavf/iavf_rxtx.c | 8 ++++----
drivers/net/intel/ice/ice_rxtx.c | 8 ++++----
drivers/net/intel/idpf/idpf_rxtx.c | 13 ++++++++++---
5 files changed, 32 insertions(+), 18 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH v2 01/10] net/i40e: permit secondary process Rx path selection
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-13 13:15 ` Bruce Richardson
2026-02-05 12:46 ` [PATCH v2 02/10] net/iavf: " Ciara Loftus
` (9 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 258f346f5d5e ("net/i40e: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 258f346f5d5e ("net/i40e: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/i40e/i40e_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
index 1c3586778c..3deeff165d 100644
--- a/drivers/net/intel/i40e/i40e_rxtx.c
+++ b/drivers/net/intel/i40e/i40e_rxtx.c
@@ -3494,8 +3494,8 @@ i40e_set_rx_function(struct rte_eth_dev *dev)
uint16_t i;
enum rte_vect_max_simd rx_simd_width = i40e_get_max_simd_bitwidth();
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
/* In order to allow Vector Rx there are a few configuration
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 02/10] net/iavf: permit secondary process Rx path selection
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 03/10] net/ice: " Ciara Loftus
` (8 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 3f59c3d97a89 ("net/iavf: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 3f59c3d97a89 ("net/iavf: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/iavf/iavf_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
index 4b763627bc..bca80eccfa 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.c
+++ b/drivers/net/intel/iavf/iavf_rxtx.c
@@ -4173,8 +4173,8 @@ iavf_set_rx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
for (i = 0; i < dev->data->nb_rx_queues; i++) {
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 03/10] net/ice: permit secondary process Rx path selection
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 02/10] net/iavf: " Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
` (7 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 197e70fb8961 ("net/ice: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 197e70fb8961 ("net/ice: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/ice/ice_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
index f3bc79423d..bbd9cfa7a5 100644
--- a/drivers/net/intel/ice/ice_rxtx.c
+++ b/drivers/net/intel/ice/ice_rxtx.c
@@ -3822,8 +3822,8 @@ ice_set_rx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 04/10] net/idpf: prevent Rx path selection after device start
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (2 preceding siblings ...)
2026-02-05 12:46 ` [PATCH v2 03/10] net/ice: " Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 05/10] net/cpfl: " Ciara Loftus
` (6 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
To fall in line with other drivers using the Rx path selection
infrastructure, prevent Rx path selection after the device has started.
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
v2:
* Fix unused label error for non x86 arch
---
drivers/net/intel/idpf/idpf_rxtx.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c
index cee454244f..e7d44f7beb 100644
--- a/drivers/net/intel/idpf/idpf_rxtx.c
+++ b/drivers/net/intel/idpf/idpf_rxtx.c
@@ -782,11 +782,17 @@ idpf_set_rx_function(struct rte_eth_dev *dev)
#ifdef RTE_ARCH_X86
struct idpf_rx_queue *rxq;
int i;
+#endif
+
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
+ goto out;
+#ifdef RTE_ARCH_X86
if (idpf_rx_vec_dev_check_default(dev) == IDPF_VECTOR_PATH &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
req_features.simd_width = idpf_get_max_simd_bitwidth();
-#endif /* RTE_ARCH_X86 */
+#endif
req_features.single_queue = (vport->rxq_model == VIRTCHNL2_QUEUE_MODEL_SINGLE);
req_features.scattered = dev->data->scattered_rx;
@@ -814,6 +820,7 @@ idpf_set_rx_function(struct rte_eth_dev *dev)
}
#endif
+out:
dev->rx_pkt_burst = idpf_rx_path_infos[ad->rx_func_type].pkt_burst;
PMD_DRV_LOG(NOTICE, "Using %s Rx (port %d).",
idpf_rx_path_infos[ad->rx_func_type].info, dev->data->port_id);
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 05/10] net/cpfl: prevent Rx path selection after device start
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (3 preceding siblings ...)
2026-02-05 12:46 ` [PATCH v2 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
` (5 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
To fall in line with other drivers using the Rx path selection
infrastructure, prevent Rx path selection after the device has started.
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
* Fix unused label error for non x86 arch
---
drivers/net/intel/cpfl/cpfl_rxtx.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/net/intel/cpfl/cpfl_rxtx.c b/drivers/net/intel/cpfl/cpfl_rxtx.c
index d0438b5da0..7da360d56e 100644
--- a/drivers/net/intel/cpfl/cpfl_rxtx.c
+++ b/drivers/net/intel/cpfl/cpfl_rxtx.c
@@ -1429,11 +1429,17 @@ cpfl_set_rx_function(struct rte_eth_dev *dev)
#ifdef RTE_ARCH_X86
struct cpfl_rx_queue *cpfl_rxq;
int i;
+#endif
+
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
+ goto out;
+#ifdef RTE_ARCH_X86
if (cpfl_rx_vec_dev_check_default(dev) == CPFL_VECTOR_PATH &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
req_features.simd_width = cpfl_get_max_simd_bitwidth();
-#endif /* RTE_ARCH_X86 */
+#endif
req_features.single_queue = (vport->rxq_model == VIRTCHNL2_QUEUE_MODEL_SINGLE);
req_features.scattered = dev->data->scattered_rx;
@@ -1462,6 +1468,7 @@ cpfl_set_rx_function(struct rte_eth_dev *dev)
}
#endif
+out:
dev->rx_pkt_burst = idpf_rx_path_infos[ad->rx_func_type].pkt_burst;
PMD_DRV_LOG(NOTICE, "Using %s Rx (port %d).",
idpf_rx_path_infos[ad->rx_func_type].info, dev->data->port_id);
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 06/10] net/i40e: permit secondary process Tx path selection
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (4 preceding siblings ...)
2026-02-05 12:46 ` [PATCH v2 05/10] net/cpfl: " Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 07/10] net/iavf: " Ciara Loftus
` (4 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 8d57c1788806 ("net/i40e: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 8d57c1788806 ("net/i40e: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/i40e/i40e_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
index 3deeff165d..1c46e19582 100644
--- a/drivers/net/intel/i40e/i40e_rxtx.c
+++ b/drivers/net/intel/i40e/i40e_rxtx.c
@@ -3597,8 +3597,8 @@ i40e_set_tx_function(struct rte_eth_dev *dev)
.simple_tx = ad->tx_simple_allowed
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
if (ad->tx_vec_allowed) {
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 07/10] net/iavf: permit secondary process Tx path selection
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (5 preceding siblings ...)
2026-02-05 12:46 ` [PATCH v2 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 08/10] net/ice: " Ciara Loftus
` (3 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit ebcfb039afa8 ("net/iavf: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: ebcfb039afa8 ("net/iavf: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/iavf/iavf_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
index bca80eccfa..abe0f7c529 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.c
+++ b/drivers/net/intel/iavf/iavf_rxtx.c
@@ -4235,8 +4235,8 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 08/10] net/ice: permit secondary process Tx path selection
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (6 preceding siblings ...)
2026-02-05 12:46 ` [PATCH v2 07/10] net/iavf: " Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 09/10] net/idpf: " Ciara Loftus
` (2 subsequent siblings)
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit cf96ec231d02 ("net/ice: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: cf96ec231d02 ("net/ice: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/ice/ice_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
index bbd9cfa7a5..8ed47b957f 100644
--- a/drivers/net/intel/ice/ice_rxtx.c
+++ b/drivers/net/intel/ice/ice_rxtx.c
@@ -4163,8 +4163,8 @@ ice_set_tx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
req_features.simple_tx = ad->tx_simple_allowed;
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 09/10] net/idpf: permit secondary process Tx path selection
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (7 preceding siblings ...)
2026-02-05 12:46 ` [PATCH v2 08/10] net/ice: " Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 10/10] net/cpfl: " Ciara Loftus
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 7cab7e67363a ("net/idpf: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 7cab7e67363a ("net/idpf: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/idpf/idpf_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c
index e7d44f7beb..6d7624731a 100644
--- a/drivers/net/intel/idpf/idpf_rxtx.c
+++ b/drivers/net/intel/idpf/idpf_rxtx.c
@@ -844,8 +844,8 @@ idpf_set_tx_function(struct rte_eth_dev *dev)
.single_queue = (vport->txq_model == VIRTCHNL2_QUEUE_MODEL_SINGLE)
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v2 10/10] net/cpfl: permit secondary process Tx path selection
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (8 preceding siblings ...)
2026-02-05 12:46 ` [PATCH v2 09/10] net/idpf: " Ciara Loftus
@ 2026-02-05 12:46 ` Ciara Loftus
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
10 siblings, 0 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-05 12:46 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 6970745698b9 ("net/cpfl: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 6970745698b9 ("net/cpfl: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/cpfl/cpfl_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/cpfl/cpfl_rxtx.c b/drivers/net/intel/cpfl/cpfl_rxtx.c
index 7da360d56e..b7d62a1379 100644
--- a/drivers/net/intel/cpfl/cpfl_rxtx.c
+++ b/drivers/net/intel/cpfl/cpfl_rxtx.c
@@ -1493,8 +1493,8 @@ cpfl_set_tx_function(struct rte_eth_dev *dev)
.single_queue = (vport->txq_model == VIRTCHNL2_QUEUE_MODEL_SINGLE)
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* Re: [PATCH v2 01/10] net/i40e: permit secondary process Rx path selection
2026-02-05 12:46 ` [PATCH v2 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
@ 2026-02-13 13:15 ` Bruce Richardson
2026-02-17 11:38 ` Loftus, Ciara
0 siblings, 1 reply; 46+ messages in thread
From: Bruce Richardson @ 2026-02-13 13:15 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev, stable
On Thu, Feb 05, 2026 at 12:46:18PM +0000, Ciara Loftus wrote:
> Commit 258f346f5d5e ("net/i40e: use same Rx path across processes")
> changed the way that secondary processes selected their Rx burst
> function. Instead of letting secondary processes select their own
> function, they now used the function selected by the primary process.
> However, the primary process only selects the function at device start,
> so if the primary process hadn't started the device by the time the
> secondary process was selecting its Rx burst function, the secondary
> process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> Fixes: 258f346f5d5e ("net/i40e: use same Rx path across processes")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
> drivers/net/intel/i40e/i40e_rxtx.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
> index 1c3586778c..3deeff165d 100644
> --- a/drivers/net/intel/i40e/i40e_rxtx.c
> +++ b/drivers/net/intel/i40e/i40e_rxtx.c
> @@ -3494,8 +3494,8 @@ i40e_set_rx_function(struct rte_eth_dev *dev)
> uint16_t i;
> enum rte_vect_max_simd rx_simd_width = i40e_get_max_simd_bitwidth();
>
> - /* The primary process selects the rx path for all processes. */
> - if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> + /* If the device has started the function has already been selected. */
> + if (dev->data->dev_started)
> goto out;
>
There is no atomic ops or mutual exclusion here, so what happens if two
processes both call this function at the same time? Do both just get the
same result or do we end up with some conflicts?
^ permalink raw reply [flat|nested] 46+ messages in thread
* RE: [PATCH v2 01/10] net/i40e: permit secondary process Rx path selection
2026-02-13 13:15 ` Bruce Richardson
@ 2026-02-17 11:38 ` Loftus, Ciara
0 siblings, 0 replies; 46+ messages in thread
From: Loftus, Ciara @ 2026-02-17 11:38 UTC (permalink / raw)
To: Richardson, Bruce; +Cc: dev@dpdk.org, stable@dpdk.org
> On Thu, Feb 05, 2026 at 12:46:18PM +0000, Ciara Loftus wrote:
> > Commit 258f346f5d5e ("net/i40e: use same Rx path across processes")
> > changed the way that secondary processes selected their Rx burst
> > function. Instead of letting secondary processes select their own
> > function, they now used the function selected by the primary process.
> > However, the primary process only selects the function at device start,
> > so if the primary process hadn't started the device by the time the
> > secondary process was selecting its Rx burst function, the secondary
> > process would not select the correct function.
> >
> > This commit addresses this issue by allowing the secondary process to
> > select the path if the device has not been started yet.
> >
> > Fixes: 258f346f5d5e ("net/i40e: use same Rx path across processes")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> > ---
> > drivers/net/intel/i40e/i40e_rxtx.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/intel/i40e/i40e_rxtx.c
> b/drivers/net/intel/i40e/i40e_rxtx.c
> > index 1c3586778c..3deeff165d 100644
> > --- a/drivers/net/intel/i40e/i40e_rxtx.c
> > +++ b/drivers/net/intel/i40e/i40e_rxtx.c
> > @@ -3494,8 +3494,8 @@ i40e_set_rx_function(struct rte_eth_dev *dev)
> > uint16_t i;
> > enum rte_vect_max_simd rx_simd_width =
> i40e_get_max_simd_bitwidth();
> >
> > - /* The primary process selects the rx path for all processes. */
> > - if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> > + /* If the device has started the function has already been selected. */
> > + if (dev->data->dev_started)
> > goto out;
> >
> There is no atomic ops or mutual exclusion here, so what happens if two
> processes both call this function at the same time? Do both just get the
> same result or do we end up with some conflicts?
If two processes were to call the path selection at the same time, in
most cases they should both land on the same result. Both would be using
the same information from dev->data to build up the req_features
structure which is used as input to the path selection function. The
effect would be both writing the same values to shared variables eg.
rx_func_type in dev->data->dev_private
However I've identified two exceptions:
1. If the primary and secondary processes have different max SIMD
bitwidths configured, two different paths could be selected. However,
this is an invalid use case IMO.
2. When LLDP is enabled in iavf, the global variable
"rte_pmd_iavf_tx_lldp_dynfield_offset" is set for the process from which
it was enabled. The Tx path selection will set req_features.ctx_desc if
that variable is positive. However that variable will be different
between processes so different processes may in this case select a
different path (eg. one with a ctx desc and one without). I think adding
a bool lldp_enabled to the iavf_adapter struct can work around this.
I'll submit a v3 with this change.
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH v3 00/10] Fix multi process path selection in Intel drivers
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (9 preceding siblings ...)
2026-02-05 12:46 ` [PATCH v2 10/10] net/cpfl: " Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 9:49 ` [PATCH v3 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
` (10 more replies)
10 siblings, 11 replies; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
This series fixes and makes consistent the approach to selecting Rx and
Tx paths in a multi process scenario across the Intel drivers that use
the common path selection framework.
In v25.11 the i40e, iavf and ice drivers prevented Rx path selection by
secondary processes, in favour of simply selecting the path chosen by
the primary process. However, this model does not work if the primary
process hasn't started the device before the secondary process
encounters the path selection logic. To address this, permit path
selection by any process, so long as the device has not yet been
started. This allows for the use case where the secondary process is the
process that starts the device.
The idpf and cpfl drivers are updated to follow this model as well.
The same issue exists for the Tx path selection for i40e, iavf, ice,
idpf and cpfl, so implement the same logic when selecting a Tx path as
well ie. permit path selection if the device has not been started.
If two processes were to call the path selection at the same time, in
most cases they should both land on the same result. Both would be using
the same information from dev->data to build up the structure that is
used as input to the path selection function. The effect would be both
writing the same values to shared variables eg. rx_func_type in
dev->data->dev_private. For this reason I did not add any locking around
the path selection logic. The only exception would be the case where the
primary and secondary processes are configured with different maximum
SIMD bitwidths however this is an invalid use case IMO.
I kept the patches for fixing the Rx and Tx path selection separate, as
the patches that target the Rx side will need to be backported to v25.11
whereas the patches for the Tx side do not as that logic was introduced
post v25.11.
v3: In iavf ensure a secondary process can see if the primary process has
enabled LLDP, which ensures that the correct Tx path will be chosen ie.
one with context descriptor support if LLDP is enabled.
Ciara Loftus (10):
net/i40e: permit secondary process Rx path selection
net/iavf: permit secondary process Rx path selection
net/ice: permit secondary process Rx path selection
net/idpf: prevent Rx path selection after device start
net/cpfl: prevent Rx path selection after device start
net/i40e: permit secondary process Tx path selection
net/iavf: permit secondary process Tx path selection
net/ice: permit secondary process Tx path selection
net/idpf: permit secondary process Tx path selection
net/cpfl: permit secondary process Tx path selection
drivers/net/intel/cpfl/cpfl_rxtx.c | 13 ++++++++++---
drivers/net/intel/i40e/i40e_rxtx.c | 8 ++++----
drivers/net/intel/iavf/iavf_ethdev.c | 5 +++++
drivers/net/intel/iavf/iavf_rxtx.c | 8 ++++----
drivers/net/intel/ice/ice_rxtx.c | 8 ++++----
drivers/net/intel/idpf/idpf_rxtx.c | 13 ++++++++++---
6 files changed, 37 insertions(+), 18 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH v3 01/10] net/i40e: permit secondary process Rx path selection
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:03 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 02/10] net/iavf: " Ciara Loftus
` (9 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 258f346f5d5e ("net/i40e: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 258f346f5d5e ("net/i40e: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/i40e/i40e_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
index ffb303158b..d189ba263b 100644
--- a/drivers/net/intel/i40e/i40e_rxtx.c
+++ b/drivers/net/intel/i40e/i40e_rxtx.c
@@ -3001,8 +3001,8 @@ i40e_set_rx_function(struct rte_eth_dev *dev)
uint16_t i;
enum rte_vect_max_simd rx_simd_width = i40e_get_max_simd_bitwidth();
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
/* In order to allow Vector Rx there are a few configuration
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 02/10] net/iavf: permit secondary process Rx path selection
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-18 9:49 ` [PATCH v3 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:03 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 03/10] net/ice: " Ciara Loftus
` (8 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 3f59c3d97a89 ("net/iavf: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 3f59c3d97a89 ("net/iavf: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/iavf/iavf_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
index e621d4bf47..a47d2547dd 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.c
+++ b/drivers/net/intel/iavf/iavf_rxtx.c
@@ -3815,8 +3815,8 @@ iavf_set_rx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
for (i = 0; i < dev->data->nb_rx_queues; i++) {
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 03/10] net/ice: permit secondary process Rx path selection
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-18 9:49 ` [PATCH v3 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
2026-02-18 9:49 ` [PATCH v3 02/10] net/iavf: " Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:04 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
` (7 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus, stable
Commit 197e70fb8961 ("net/ice: use same Rx path across processes")
changed the way that secondary processes selected their Rx burst
function. Instead of letting secondary processes select their own
function, they now used the function selected by the primary process.
However, the primary process only selects the function at device start,
so if the primary process hadn't started the device by the time the
secondary process was selecting its Rx burst function, the secondary
process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 197e70fb8961 ("net/ice: use same Rx path across processes")
Cc: stable@dpdk.org
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/ice/ice_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
index 321415d839..637c57b209 100644
--- a/drivers/net/intel/ice/ice_rxtx.c
+++ b/drivers/net/intel/ice/ice_rxtx.c
@@ -3371,8 +3371,8 @@ ice_set_rx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the rx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 04/10] net/idpf: prevent Rx path selection after device start
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (2 preceding siblings ...)
2026-02-18 9:49 ` [PATCH v3 03/10] net/ice: " Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:04 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 05/10] net/cpfl: " Ciara Loftus
` (6 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
To fall in line with other drivers using the Rx path selection
infrastructure, prevent Rx path selection after the device has started.
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
v2:
* Fix unused label error for non x86 arch
---
drivers/net/intel/idpf/idpf_rxtx.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c
index 6317112353..81bcc08126 100644
--- a/drivers/net/intel/idpf/idpf_rxtx.c
+++ b/drivers/net/intel/idpf/idpf_rxtx.c
@@ -795,11 +795,17 @@ idpf_set_rx_function(struct rte_eth_dev *dev)
#ifdef RTE_ARCH_X86
struct idpf_rx_queue *rxq;
int i;
+#endif
+
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
+ goto out;
+#ifdef RTE_ARCH_X86
if (idpf_rx_vec_dev_check_default(dev) == IDPF_VECTOR_PATH &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
req_features.simd_width = idpf_get_max_simd_bitwidth();
-#endif /* RTE_ARCH_X86 */
+#endif
req_features.single_queue = (vport->rxq_model == VIRTCHNL2_QUEUE_MODEL_SINGLE);
req_features.scattered = dev->data->scattered_rx;
@@ -827,6 +833,7 @@ idpf_set_rx_function(struct rte_eth_dev *dev)
}
#endif
+out:
dev->rx_pkt_burst = idpf_rx_path_infos[ad->rx_func_type].pkt_burst;
PMD_DRV_LOG(NOTICE, "Using %s Rx (port %d).",
idpf_rx_path_infos[ad->rx_func_type].info, dev->data->port_id);
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 05/10] net/cpfl: prevent Rx path selection after device start
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (3 preceding siblings ...)
2026-02-18 9:49 ` [PATCH v3 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:05 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
` (5 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
To fall in line with other drivers using the Rx path selection
infrastructure, prevent Rx path selection after the device has started.
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
* Fix unused label error for non x86 arch
---
drivers/net/intel/cpfl/cpfl_rxtx.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/net/intel/cpfl/cpfl_rxtx.c b/drivers/net/intel/cpfl/cpfl_rxtx.c
index 11451e1666..dc729d31af 100644
--- a/drivers/net/intel/cpfl/cpfl_rxtx.c
+++ b/drivers/net/intel/cpfl/cpfl_rxtx.c
@@ -1446,11 +1446,17 @@ cpfl_set_rx_function(struct rte_eth_dev *dev)
#ifdef RTE_ARCH_X86
struct cpfl_rx_queue *cpfl_rxq;
int i;
+#endif
+
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
+ goto out;
+#ifdef RTE_ARCH_X86
if (cpfl_rx_vec_dev_check_default(dev) == CPFL_VECTOR_PATH &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
req_features.simd_width = cpfl_get_max_simd_bitwidth();
-#endif /* RTE_ARCH_X86 */
+#endif
req_features.single_queue = (vport->rxq_model == VIRTCHNL2_QUEUE_MODEL_SINGLE);
req_features.scattered = dev->data->scattered_rx;
@@ -1479,6 +1485,7 @@ cpfl_set_rx_function(struct rte_eth_dev *dev)
}
#endif
+out:
dev->rx_pkt_burst = idpf_rx_path_infos[ad->rx_func_type].pkt_burst;
PMD_DRV_LOG(NOTICE, "Using %s Rx (port %d).",
idpf_rx_path_infos[ad->rx_func_type].info, dev->data->port_id);
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 06/10] net/i40e: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (4 preceding siblings ...)
2026-02-18 9:49 ` [PATCH v3 05/10] net/cpfl: " Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:05 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 07/10] net/iavf: " Ciara Loftus
` (4 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 8d57c1788806 ("net/i40e: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 8d57c1788806 ("net/i40e: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/i40e/i40e_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
index d189ba263b..c5ac75e0f0 100644
--- a/drivers/net/intel/i40e/i40e_rxtx.c
+++ b/drivers/net/intel/i40e/i40e_rxtx.c
@@ -3104,8 +3104,8 @@ i40e_set_tx_function(struct rte_eth_dev *dev)
.simple_tx = ad->tx_simple_allowed
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
if (ad->tx_vec_allowed) {
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 07/10] net/iavf: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (5 preceding siblings ...)
2026-02-18 9:49 ` [PATCH v3 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:06 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 08/10] net/ice: " Ciara Loftus
` (3 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit ebcfb039afa8 ("net/iavf: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
This commit also introduces logic to the secondary process probe
sequence that ensures that if a dynamic mbuf field was registered in the
primary process for LLDP, that the offset is visible in the secondary
process. This also ensures that a correct Tx path with context
descriptor support will be selected by the secondary process.
Fixes: ebcfb039afa8 ("net/iavf: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/iavf/iavf_ethdev.c | 5 +++++
drivers/net/intel/iavf/iavf_rxtx.c | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
index 802e095174..954bce723d 100644
--- a/drivers/net/intel/iavf/iavf_ethdev.c
+++ b/drivers/net/intel/iavf/iavf_ethdev.c
@@ -2804,6 +2804,11 @@ iavf_dev_init(struct rte_eth_dev *eth_dev)
*/
if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
iavf_set_rx_function(eth_dev);
+ /* LLDP may have been enabled by the primary process. Store the offset before
+ * setting the TX function because it may be used in the selection function.
+ */
+ rte_pmd_iavf_tx_lldp_dynfield_offset =
+ rte_mbuf_dynfield_lookup(IAVF_TX_LLDP_DYNFIELD, NULL);
iavf_set_tx_function(eth_dev);
return 0;
}
diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
index a47d2547dd..0d19efb94d 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.c
+++ b/drivers/net/intel/iavf/iavf_rxtx.c
@@ -3877,8 +3877,8 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 08/10] net/ice: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (6 preceding siblings ...)
2026-02-18 9:49 ` [PATCH v3 07/10] net/iavf: " Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:08 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 09/10] net/idpf: " Ciara Loftus
` (2 subsequent siblings)
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit cf96ec231d02 ("net/ice: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: cf96ec231d02 ("net/ice: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/ice/ice_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
index 637c57b209..31b74be9ba 100644
--- a/drivers/net/intel/ice/ice_rxtx.c
+++ b/drivers/net/intel/ice/ice_rxtx.c
@@ -3712,8 +3712,8 @@ ice_set_tx_function(struct rte_eth_dev *dev)
.simd_width = RTE_VECT_SIMD_DISABLED,
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
req_features.simple_tx = ad->tx_simple_allowed;
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 09/10] net/idpf: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (7 preceding siblings ...)
2026-02-18 9:49 ` [PATCH v3 08/10] net/ice: " Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:08 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 10/10] net/cpfl: " Ciara Loftus
2026-02-18 12:29 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Bruce Richardson
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 7cab7e67363a ("net/idpf: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 7cab7e67363a ("net/idpf: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/idpf/idpf_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c
index 81bcc08126..d387650719 100644
--- a/drivers/net/intel/idpf/idpf_rxtx.c
+++ b/drivers/net/intel/idpf/idpf_rxtx.c
@@ -875,8 +875,8 @@ idpf_set_tx_function(struct rte_eth_dev *dev)
.simple_tx = simple_allowed
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [PATCH v3 10/10] net/cpfl: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (8 preceding siblings ...)
2026-02-18 9:49 ` [PATCH v3 09/10] net/idpf: " Ciara Loftus
@ 2026-02-18 9:49 ` Ciara Loftus
2026-02-18 10:09 ` Bruce Richardson
2026-02-18 12:29 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Bruce Richardson
10 siblings, 1 reply; 46+ messages in thread
From: Ciara Loftus @ 2026-02-18 9:49 UTC (permalink / raw)
To: dev; +Cc: Ciara Loftus
Commit 6970745698b9 ("net/cpfl: use common Tx path selection
infrastructure") changed the way that secondary processes selected their
Tx burst function. Instead of letting secondary processes select their
own function, they now used the function selected by the primary
process. However, the primary process only selects the function at
device start, so if the primary process hadn't started the device by the
time the secondary process was selecting its Tx burst function, the
secondary process would not select the correct function.
This commit addresses this issue by allowing the secondary process to
select the path if the device has not been started yet.
Fixes: 6970745698b9 ("net/cpfl: use common Tx path selection infrastructure")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/cpfl/cpfl_rxtx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/intel/cpfl/cpfl_rxtx.c b/drivers/net/intel/cpfl/cpfl_rxtx.c
index dc729d31af..2e706aaaf1 100644
--- a/drivers/net/intel/cpfl/cpfl_rxtx.c
+++ b/drivers/net/intel/cpfl/cpfl_rxtx.c
@@ -1529,8 +1529,8 @@ cpfl_set_tx_function(struct rte_eth_dev *dev)
.simple_tx = simple_allowed
};
- /* The primary process selects the tx path for all processes. */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ /* If the device has started the function has already been selected. */
+ if (dev->data->dev_started)
goto out;
#ifdef RTE_ARCH_X86
--
2.43.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* Re: [PATCH v3 01/10] net/i40e: permit secondary process Rx path selection
2026-02-18 9:49 ` [PATCH v3 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
@ 2026-02-18 10:03 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:03 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev, stable
On Wed, Feb 18, 2026 at 09:49:28AM +0000, Ciara Loftus wrote:
> Commit 258f346f5d5e ("net/i40e: use same Rx path across processes")
> changed the way that secondary processes selected their Rx burst
> function. Instead of letting secondary processes select their own
> function, they now used the function selected by the primary process.
> However, the primary process only selects the function at device start,
> so if the primary process hadn't started the device by the time the
> secondary process was selecting its Rx burst function, the secondary
> process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> Fixes: 258f346f5d5e ("net/i40e: use same Rx path across processes")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 02/10] net/iavf: permit secondary process Rx path selection
2026-02-18 9:49 ` [PATCH v3 02/10] net/iavf: " Ciara Loftus
@ 2026-02-18 10:03 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:03 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev, stable
On Wed, Feb 18, 2026 at 09:49:29AM +0000, Ciara Loftus wrote:
> Commit 3f59c3d97a89 ("net/iavf: use same Rx path across processes")
> changed the way that secondary processes selected their Rx burst
> function. Instead of letting secondary processes select their own
> function, they now used the function selected by the primary process.
> However, the primary process only selects the function at device start,
> so if the primary process hadn't started the device by the time the
> secondary process was selecting its Rx burst function, the secondary
> process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> Fixes: 3f59c3d97a89 ("net/iavf: use same Rx path across processes")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 03/10] net/ice: permit secondary process Rx path selection
2026-02-18 9:49 ` [PATCH v3 03/10] net/ice: " Ciara Loftus
@ 2026-02-18 10:04 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:04 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev, stable
On Wed, Feb 18, 2026 at 09:49:30AM +0000, Ciara Loftus wrote:
> Commit 197e70fb8961 ("net/ice: use same Rx path across processes")
> changed the way that secondary processes selected their Rx burst
> function. Instead of letting secondary processes select their own
> function, they now used the function selected by the primary process.
> However, the primary process only selects the function at device start,
> so if the primary process hadn't started the device by the time the
> secondary process was selecting its Rx burst function, the secondary
> process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> Fixes: 197e70fb8961 ("net/ice: use same Rx path across processes")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 04/10] net/idpf: prevent Rx path selection after device start
2026-02-18 9:49 ` [PATCH v3 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
@ 2026-02-18 10:04 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:04 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev
On Wed, Feb 18, 2026 at 09:49:31AM +0000, Ciara Loftus wrote:
> To fall in line with other drivers using the Rx path selection
> infrastructure, prevent Rx path selection after the device has started.
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
> v2:
> * Fix unused label error for non x86 arch
> ---
> drivers/net/intel/idpf/idpf_rxtx.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 05/10] net/cpfl: prevent Rx path selection after device start
2026-02-18 9:49 ` [PATCH v3 05/10] net/cpfl: " Ciara Loftus
@ 2026-02-18 10:05 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:05 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev
On Wed, Feb 18, 2026 at 09:49:32AM +0000, Ciara Loftus wrote:
> To fall in line with other drivers using the Rx path selection
> infrastructure, prevent Rx path selection after the device has started.
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
> * Fix unused label error for non x86 arch
> ---
> drivers/net/intel/cpfl/cpfl_rxtx.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 06/10] net/i40e: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
@ 2026-02-18 10:05 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:05 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev
On Wed, Feb 18, 2026 at 09:49:33AM +0000, Ciara Loftus wrote:
> Commit 8d57c1788806 ("net/i40e: use common Tx path selection
> infrastructure") changed the way that secondary processes selected their
> Tx burst function. Instead of letting secondary processes select their
> own function, they now used the function selected by the primary
> process. However, the primary process only selects the function at
> device start, so if the primary process hadn't started the device by the
> time the secondary process was selecting its Tx burst function, the
> secondary process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> Fixes: 8d57c1788806 ("net/i40e: use common Tx path selection infrastructure")
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 07/10] net/iavf: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 07/10] net/iavf: " Ciara Loftus
@ 2026-02-18 10:06 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:06 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev
On Wed, Feb 18, 2026 at 09:49:34AM +0000, Ciara Loftus wrote:
> Commit ebcfb039afa8 ("net/iavf: use common Tx path selection
> infrastructure") changed the way that secondary processes selected their
> Tx burst function. Instead of letting secondary processes select their
> own function, they now used the function selected by the primary
> process. However, the primary process only selects the function at
> device start, so if the primary process hadn't started the device by the
> time the secondary process was selecting its Tx burst function, the
> secondary process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> This commit also introduces logic to the secondary process probe
> sequence that ensures that if a dynamic mbuf field was registered in the
> primary process for LLDP, that the offset is visible in the secondary
> process. This also ensures that a correct Tx path with context
> descriptor support will be selected by the secondary process.
>
> Fixes: ebcfb039afa8 ("net/iavf: use common Tx path selection infrastructure")
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 08/10] net/ice: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 08/10] net/ice: " Ciara Loftus
@ 2026-02-18 10:08 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:08 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev
On Wed, Feb 18, 2026 at 09:49:35AM +0000, Ciara Loftus wrote:
> Commit cf96ec231d02 ("net/ice: use common Tx path selection
> infrastructure") changed the way that secondary processes selected their
> Tx burst function. Instead of letting secondary processes select their
> own function, they now used the function selected by the primary
> process. However, the primary process only selects the function at
> device start, so if the primary process hadn't started the device by the
> time the secondary process was selecting its Tx burst function, the
> secondary process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> Fixes: cf96ec231d02 ("net/ice: use common Tx path selection infrastructure")
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 09/10] net/idpf: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 09/10] net/idpf: " Ciara Loftus
@ 2026-02-18 10:08 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:08 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev
On Wed, Feb 18, 2026 at 09:49:36AM +0000, Ciara Loftus wrote:
> Commit 7cab7e67363a ("net/idpf: use common Tx path selection
> infrastructure") changed the way that secondary processes selected their
> Tx burst function. Instead of letting secondary processes select their
> own function, they now used the function selected by the primary
> process. However, the primary process only selects the function at
> device start, so if the primary process hadn't started the device by the
> time the secondary process was selecting its Tx burst function, the
> secondary process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> Fixes: 7cab7e67363a ("net/idpf: use common Tx path selection infrastructure")
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 10/10] net/cpfl: permit secondary process Tx path selection
2026-02-18 9:49 ` [PATCH v3 10/10] net/cpfl: " Ciara Loftus
@ 2026-02-18 10:09 ` Bruce Richardson
0 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 10:09 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev
On Wed, Feb 18, 2026 at 09:49:37AM +0000, Ciara Loftus wrote:
> Commit 6970745698b9 ("net/cpfl: use common Tx path selection
> infrastructure") changed the way that secondary processes selected their
> Tx burst function. Instead of letting secondary processes select their
> own function, they now used the function selected by the primary
> process. However, the primary process only selects the function at
> device start, so if the primary process hadn't started the device by the
> time the secondary process was selecting its Tx burst function, the
> secondary process would not select the correct function.
>
> This commit addresses this issue by allowing the secondary process to
> select the path if the device has not been started yet.
>
> Fixes: 6970745698b9 ("net/cpfl: use common Tx path selection infrastructure")
>
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH v3 00/10] Fix multi process path selection in Intel drivers
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
` (9 preceding siblings ...)
2026-02-18 9:49 ` [PATCH v3 10/10] net/cpfl: " Ciara Loftus
@ 2026-02-18 12:29 ` Bruce Richardson
10 siblings, 0 replies; 46+ messages in thread
From: Bruce Richardson @ 2026-02-18 12:29 UTC (permalink / raw)
To: Ciara Loftus; +Cc: dev
On Wed, Feb 18, 2026 at 09:49:27AM +0000, Ciara Loftus wrote:
> This series fixes and makes consistent the approach to selecting Rx and
> Tx paths in a multi process scenario across the Intel drivers that use
> the common path selection framework.
>
> In v25.11 the i40e, iavf and ice drivers prevented Rx path selection by
> secondary processes, in favour of simply selecting the path chosen by
> the primary process. However, this model does not work if the primary
> process hasn't started the device before the secondary process
> encounters the path selection logic. To address this, permit path
> selection by any process, so long as the device has not yet been
> started. This allows for the use case where the secondary process is the
> process that starts the device.
> The idpf and cpfl drivers are updated to follow this model as well.
>
> The same issue exists for the Tx path selection for i40e, iavf, ice,
> idpf and cpfl, so implement the same logic when selecting a Tx path as
> well ie. permit path selection if the device has not been started.
>
> If two processes were to call the path selection at the same time, in
> most cases they should both land on the same result. Both would be using
> the same information from dev->data to build up the structure that is
> used as input to the path selection function. The effect would be both
> writing the same values to shared variables eg. rx_func_type in
> dev->data->dev_private. For this reason I did not add any locking around
> the path selection logic. The only exception would be the case where the
> primary and secondary processes are configured with different maximum
> SIMD bitwidths however this is an invalid use case IMO.
>
> I kept the patches for fixing the Rx and Tx path selection separate, as
> the patches that target the Rx side will need to be backported to v25.11
> whereas the patches for the Tx side do not as that logic was introduced
> post v25.11.
>
> v3: In iavf ensure a secondary process can see if the primary process has
> enabled LLDP, which ensures that the correct Tx path will be chosen ie.
> one with context descriptor support if LLDP is enabled.
>
> Ciara Loftus (10):
> net/i40e: permit secondary process Rx path selection
> net/iavf: permit secondary process Rx path selection
> net/ice: permit secondary process Rx path selection
> net/idpf: prevent Rx path selection after device start
> net/cpfl: prevent Rx path selection after device start
> net/i40e: permit secondary process Tx path selection
> net/iavf: permit secondary process Tx path selection
> net/ice: permit secondary process Tx path selection
> net/idpf: permit secondary process Tx path selection
> net/cpfl: permit secondary process Tx path selection
>
Applied to next-net-intel.
I've squashed the final 5 patches together as they are the same changes
just made to different drivers + one other small incidental change for iavf
The first 5 I've kept all separate as they are also for backporting, and having
them smaller should make that easier.
Thanks,
/Bruce
^ permalink raw reply [flat|nested] 46+ messages in thread
end of thread, other threads:[~2026-02-18 12:30 UTC | newest]
Thread overview: 46+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-05 10:29 [PATCH 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-05 10:29 ` [PATCH 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
2026-02-05 10:30 ` [PATCH 02/10] net/iavf: " Ciara Loftus
2026-02-05 10:30 ` [PATCH 03/10] net/ice: " Ciara Loftus
2026-02-05 10:30 ` [PATCH 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
2026-02-05 10:30 ` [PATCH 05/10] net/cpfl: " Ciara Loftus
2026-02-05 10:30 ` [PATCH 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
2026-02-05 10:30 ` [PATCH 07/10] net/iavf: " Ciara Loftus
2026-02-05 10:30 ` [PATCH 08/10] net/ice: " Ciara Loftus
2026-02-05 10:30 ` [PATCH 09/10] net/idpf: " Ciara Loftus
2026-02-05 10:30 ` [PATCH 10/10] net/cpfl: " Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
2026-02-13 13:15 ` Bruce Richardson
2026-02-17 11:38 ` Loftus, Ciara
2026-02-05 12:46 ` [PATCH v2 02/10] net/iavf: " Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 03/10] net/ice: " Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 05/10] net/cpfl: " Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 07/10] net/iavf: " Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 08/10] net/ice: " Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 09/10] net/idpf: " Ciara Loftus
2026-02-05 12:46 ` [PATCH v2 10/10] net/cpfl: " Ciara Loftus
2026-02-18 9:49 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Ciara Loftus
2026-02-18 9:49 ` [PATCH v3 01/10] net/i40e: permit secondary process Rx path selection Ciara Loftus
2026-02-18 10:03 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 02/10] net/iavf: " Ciara Loftus
2026-02-18 10:03 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 03/10] net/ice: " Ciara Loftus
2026-02-18 10:04 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 04/10] net/idpf: prevent Rx path selection after device start Ciara Loftus
2026-02-18 10:04 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 05/10] net/cpfl: " Ciara Loftus
2026-02-18 10:05 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 06/10] net/i40e: permit secondary process Tx path selection Ciara Loftus
2026-02-18 10:05 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 07/10] net/iavf: " Ciara Loftus
2026-02-18 10:06 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 08/10] net/ice: " Ciara Loftus
2026-02-18 10:08 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 09/10] net/idpf: " Ciara Loftus
2026-02-18 10:08 ` Bruce Richardson
2026-02-18 9:49 ` [PATCH v3 10/10] net/cpfl: " Ciara Loftus
2026-02-18 10:09 ` Bruce Richardson
2026-02-18 12:29 ` [PATCH v3 00/10] Fix multi process path selection in Intel drivers Bruce Richardson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox