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

Reply via email to