[PATCH v3 net-next 00/15] net: enetc: SR-IOV improvements and ENETC v4 VF support

wei.fang@oss.nxp.com posted 15 patches 3 weeks, 5 days ago
There is a newer version of this series
drivers/net/ethernet/freescale/enetc/Kconfig  |   1 +
drivers/net/ethernet/freescale/enetc/enetc.c  |  57 +-
drivers/net/ethernet/freescale/enetc/enetc.h  |  12 +-
.../ethernet/freescale/enetc/enetc4_debugfs.c |  51 +-
.../net/ethernet/freescale/enetc/enetc4_hw.h  |   1 +
.../net/ethernet/freescale/enetc/enetc4_pf.c  |  48 +-
.../ethernet/freescale/enetc/enetc_ethtool.c  |   6 +
.../net/ethernet/freescale/enetc/enetc_hw.h   |  26 +
.../ethernet/freescale/enetc/enetc_mailbox.h  | 104 ++-
.../net/ethernet/freescale/enetc/enetc_msg.c  | 615 ++++++++++++++++--
.../net/ethernet/freescale/enetc/enetc_pf.c   |  64 +-
.../net/ethernet/freescale/enetc/enetc_pf.h   |  20 +-
.../freescale/enetc/enetc_pf_common.c         | 145 ++++-
.../freescale/enetc/enetc_pf_common.h         |  26 +
.../net/ethernet/freescale/enetc/enetc_vf.c   | 385 ++++++++++-
15 files changed, 1443 insertions(+), 118 deletions(-)
[PATCH v3 net-next 00/15] net: enetc: SR-IOV improvements and ENETC v4 VF support
Posted by wei.fang@oss.nxp.com 3 weeks, 5 days ago
From: Wei Fang <wei.fang@nxp.com>

This series enhances SR-IOV support for ENETC v1 and adds VF support
for ENETC v4. For ENETC v1, the trusted VF management and per-VF
configuration query via ndo_get_vf_config() are added. For ENETC v4,
preliminary VF support is introduced for i.MX94 and i.MX95 platforms.

On the PF side, the series introduces trust level management and MAC
address assignment for VFs, and implements ndo_get_vf_config() so that
userspace tools such as 'ip link show' can query the current per-VF
configuration. The PSI-to-VSI messaging infrastructure is extended to
handle link status and link speed queries from VFs, enabling DPDK-owned
VFs to obtain accurate link information from the PF.

On the VF side, MAC address filtering is implemented via the VSI-to-PSI
mailbox, supporting both unicast/multicast hash filters and promiscuous
mode control. Since the ndo_set_rx_mode callback is invoked with BH
disabled and is incompatible with the mailbox polling path,
ndo_set_rx_mode_async is used instead. Link status notifications are also
supported: the VF registers with the PF and receives PSI-to-VSI messages
on every PF link transition, keeping the VF carrier state in sync without
polling.

VF Function Level Reset is handled explicitly to restore the PF-managed
MAC promiscuous policy after each reset, since the hardware default after
FLR enables promiscuous mode regardless of the policy set by the PF
driver.

Several preparatory refactors are included to share infrastructure
between the PF and VF drivers, such as moving msg_task and mac_filter
from struct enetc_pf into the common struct enetc_si.

---
v3:
1. Add link_up flag to struct enetc_pf, refine
   enetc_pf_notify_vf_link_status() and enetc_msg_notify_vf_link_status()
2. Link state is now encoded as bit flags in the 8-bit class code:
   ENETC_CLASS_CODE_LINK_DOWN (bit 0) and ENETC_CLASS_CODE_TX_PAUSE_EN
   (bit 1), so that convey the PF TX-PAUSE state so the VF can decide
   whether to enable RX-ring congestion mode
3. Refactor the shared enetc_build_link_status_msg() helper, link state
   cached in a new pf->link_up field instead of reading netif_carrier_ok()
   each time.
4. Add mutex_lock(&pf->msg_lock) protection; reset link_status_ms_mask = 0
   under the lock on the pci_enable_sriov() failure path
5. Uses pf->total_vfs (not num_vfs) to gate the notify path
6. Replace the hardcoded speed enum (10G/25G/40G/50G/100G) with a
   formula-based scheme, capped at ENETC_MSG_SPEED_MAX = 0xff, so any
   future high speed is supported without touching the enum/switch.
7. Refactored speed lookup into a new enetc_build_link_speed_msg() helper
8. Use bitmap_to_arr32() instead of memcpy()
9. Remove the ndev->state check, refine enetc_vf_wq_task_destroy()
10. VF MR interrupt enable moved to enetc_vf_probe(); explicit
    enetc_vf_disable_mr_int() added in probe-error and remove paths
11. Remove set_si_mac_promisc(), set_si_mac_hash_filter() from struct
    enetc_pf_ops, use the generic helpers enetc_set_si_uc/mc_promisc()
    and enetc_set_si_uc/mc_hash_filter() directly
12. Remove get_si_mac_hash_filter() from struct enetc_pf_ops, use the
    generic helper enetc_get_si_mc_hash_filter()
13. Introduce ENETC_VF_MC_HASH_BITS_MAX (8) constant instead of the
    magic number 8
14. Add enetc_msg_clear_vf_config() to clear promisc/hash config on
    SR-IOV teardown
15. enetc_vf_set_rx_mode() now returns int (was void), with proper error
    propagation and goto out cleanup
16. VF MR-interrupt helpers now take struct enetc_si * and are no-ops on
    ENETC v1 (is_enetc_rev1() guard); disable now writes 0 outright
17. Workqueue switched from create_singlethread_workqueue() to
    alloc_ordered_workqueue(..., WQ_MEM_RECLAIM, ...)
18. Update commit messages
v2 link: https://lore.kernel.org/imx/20260610091844.3423693-1-wei.fang@oss.nxp.com/
v1 link: https://lore.kernel.org/imx/20260605065550.3038579-1-wei.fang@oss.nxp.com/
---

Claudiu Manoil (1):
  net: enetc: add trusted VF support

Wei Fang (14):
  net: enetc: move msg_task and msg_int_name to struct enetc_si
  net: enetc: add link status message support to PF driver
  net: enetc: add link speed message support to PF driver
  net: enetc: use enetc_set_si_hw_addr() to set VF MAC address
  net: enetc: relocate enetc_pf_set_vf_mac() for common PF support
  net: enetc: add .ndo_set_vf_mac() to the enetc v4 driver
  net: enetc: move mac_filter from struct enetc_pf to struct enetc_si
  net: enetc: add MAC address filtering support for VFs of ENETC v4
  net: enetc: simplify and rename PSIIER enable/disable helpers
  net: enetc: restore VF MAC promiscuous mode after FLR for ENETC v4
  net: enetc: add VF support for i.MX94 and i.MX95
  net: enetc: implement ndo_set_rx_mode_async for ENETC v4 VF
  net: enetc: add PSI-to-VSI link status notification support for VF
  net: enetc: add ndo_get_vf_config() support

 drivers/net/ethernet/freescale/enetc/Kconfig  |   1 +
 drivers/net/ethernet/freescale/enetc/enetc.c  |  57 +-
 drivers/net/ethernet/freescale/enetc/enetc.h  |  12 +-
 .../ethernet/freescale/enetc/enetc4_debugfs.c |  51 +-
 .../net/ethernet/freescale/enetc/enetc4_hw.h  |   1 +
 .../net/ethernet/freescale/enetc/enetc4_pf.c  |  48 +-
 .../ethernet/freescale/enetc/enetc_ethtool.c  |   6 +
 .../net/ethernet/freescale/enetc/enetc_hw.h   |  26 +
 .../ethernet/freescale/enetc/enetc_mailbox.h  | 104 ++-
 .../net/ethernet/freescale/enetc/enetc_msg.c  | 615 ++++++++++++++++--
 .../net/ethernet/freescale/enetc/enetc_pf.c   |  64 +-
 .../net/ethernet/freescale/enetc/enetc_pf.h   |  20 +-
 .../freescale/enetc/enetc_pf_common.c         | 145 ++++-
 .../freescale/enetc/enetc_pf_common.h         |  26 +
 .../net/ethernet/freescale/enetc/enetc_vf.c   | 385 ++++++++++-
 15 files changed, 1443 insertions(+), 118 deletions(-)

-- 
2.34.1
Re: [PATCH v3 net-next 00/15] net: enetc: SR-IOV improvements and ENETC v4 VF support
Posted by Jakub Kicinski 3 weeks, 2 days ago
On Mon, 31 Aug 2026 10:54:26 +0800 wei.fang@oss.nxp.com wrote:
> This series enhances SR-IOV support for ENETC v1 and adds VF support
> for ENETC v4. For ENETC v1, the trusted VF management and per-VF
> configuration query via ndo_get_vf_config() are added. For ENETC v4,
> preliminary VF support is introduced for i.MX94 and i.MX95 platforms.

You only replied to some of the AI feedback, should we assume that
feedback on patches 12/13/14 is legit and expect v4?