On Sat, 14 Mar 2026 16:51:52 +0800
[email protected] wrote:

> From: Jie Liu <[email protected]>
> 
> This patch set implements core functionality for the SXE PMD,
> including basic driver framework, data path setup, and advanced
> offload features (VLAN, RSS, DCB, PTP etc.).
> 
> V19:
>  - Addressed AI comments
> 
> v18:
>  - Addressed AI comments
> 
> Jie Liu (13):
>   net/sxe: add base driver directory and doc
>   net/sxe: add ethdev probe and remove
>   net/sxe: add tx rx setup and data path
>   net/sxe: add link and mac layer operations
>   net/sxe: support vlan filter
>   net/sxe: add filter function
>   net/sxe: support rss offload
>   net/sxe: add dcb function
>   net/sxe: support ptp
>   net/sxe: add xstats function
>   net/sxe: add custom cmd led ctrl
>   net/sxe: add simd function
>   net/sxe: add virtual function
> 
>  MAINTAINERS                                |    6 +
>  doc/guides/nics/features/sxe.ini           |   51 +
>  doc/guides/nics/features/sxe_vf.ini        |   37 +
>  doc/guides/nics/index.rst                  |    1 +
>  doc/guides/nics/sxe.rst                    |   71 +
>  doc/guides/rel_notes/release_26_03.rst     |    6 +
>  drivers/net/meson.build                    |    1 +
>  drivers/net/sxe/base/sxe_common.c          |   45 +
>  drivers/net/sxe/base/sxe_common.h          |   13 +
>  drivers/net/sxe/base/sxe_compat_platform.h |   73 +
>  drivers/net/sxe/base/sxe_compat_version.h  |   34 +
>  drivers/net/sxe/base/sxe_errno.h           |   61 +
>  drivers/net/sxe/base/sxe_hw.c              | 3271 ++++++++++++++++++++
>  drivers/net/sxe/base/sxe_hw.h              | 1010 ++++++
>  drivers/net/sxe/base/sxe_logs.h            |  105 +
>  drivers/net/sxe/base/sxe_offload_common.c  |   54 +
>  drivers/net/sxe/base/sxe_offload_common.h  |   14 +
>  drivers/net/sxe/base/sxe_queue_common.c    |  450 +++
>  drivers/net/sxe/base/sxe_queue_common.h    |  240 ++
>  drivers/net/sxe/base/sxe_rx_common.c       |  358 +++
>  drivers/net/sxe/base/sxe_rx_common.h       |   17 +
>  drivers/net/sxe/base/sxe_tx_common.c       |   40 +
>  drivers/net/sxe/base/sxe_tx_common.h       |   12 +
>  drivers/net/sxe/base/sxe_types.h           |   40 +
>  drivers/net/sxe/base/sxevf_hw.c            |  819 +++++
>  drivers/net/sxe/base/sxevf_hw.h            |  318 ++
>  drivers/net/sxe/base/sxevf_regs.h          |  119 +
>  drivers/net/sxe/include/drv_msg.h          |   18 +
>  drivers/net/sxe/include/sxe/sxe_cli.h      |  218 ++
>  drivers/net/sxe/include/sxe/sxe_hdc.h      |   43 +
>  drivers/net/sxe/include/sxe/sxe_ioctl.h    |   21 +
>  drivers/net/sxe/include/sxe/sxe_msg.h      |  135 +
>  drivers/net/sxe/include/sxe/sxe_regs.h     | 1270 ++++++++
>  drivers/net/sxe/include/sxe_type.h         |  795 +++++
>  drivers/net/sxe/include/sxe_version.h      |   29 +
>  drivers/net/sxe/meson.build                |   65 +
>  drivers/net/sxe/pf/rte_pmd_sxe.h           |   19 +
>  drivers/net/sxe/pf/sxe.h                   |   93 +
>  drivers/net/sxe/pf/sxe_dcb.c               |  945 ++++++
>  drivers/net/sxe/pf/sxe_dcb.h               |   99 +
>  drivers/net/sxe/pf/sxe_ethdev.c            |  928 ++++++
>  drivers/net/sxe/pf/sxe_ethdev.h            |   28 +
>  drivers/net/sxe/pf/sxe_filter.c            |  923 ++++++
>  drivers/net/sxe/pf/sxe_filter.h            |  109 +
>  drivers/net/sxe/pf/sxe_flow_ctrl.c         |   98 +
>  drivers/net/sxe/pf/sxe_flow_ctrl.h         |   16 +
>  drivers/net/sxe/pf/sxe_irq.c               |  516 +++
>  drivers/net/sxe/pf/sxe_irq.h               |   48 +
>  drivers/net/sxe/pf/sxe_main.c              |  196 ++
>  drivers/net/sxe/pf/sxe_offload.c           |  336 ++
>  drivers/net/sxe/pf/sxe_offload.h           |   51 +
>  drivers/net/sxe/pf/sxe_phy.c               |  953 ++++++
>  drivers/net/sxe/pf/sxe_phy.h               |  117 +
>  drivers/net/sxe/pf/sxe_pmd_hdc.c           |  661 ++++
>  drivers/net/sxe/pf/sxe_pmd_hdc.h           |   42 +
>  drivers/net/sxe/pf/sxe_ptp.c               |  209 ++
>  drivers/net/sxe/pf/sxe_ptp.h               |   26 +
>  drivers/net/sxe/pf/sxe_queue.c             |  774 +++++
>  drivers/net/sxe/pf/sxe_queue.h             |  132 +
>  drivers/net/sxe/pf/sxe_rx.c                | 1459 +++++++++
>  drivers/net/sxe/pf/sxe_rx.h                |  188 ++
>  drivers/net/sxe/pf/sxe_stats.c             |  586 ++++
>  drivers/net/sxe/pf/sxe_stats.h             |   69 +
>  drivers/net/sxe/pf/sxe_tx.c                | 1051 +++++++
>  drivers/net/sxe/pf/sxe_tx.h                |   50 +
>  drivers/net/sxe/pf/sxe_vec_common.h        |  321 ++
>  drivers/net/sxe/pf/sxe_vec_neon.c          |  600 ++++
>  drivers/net/sxe/pf/sxe_vec_sse.c           |  622 ++++
>  drivers/net/sxe/pf/sxe_vf.c                | 1199 +++++++
>  drivers/net/sxe/pf/sxe_vf.h                |  200 ++
>  drivers/net/sxe/sxe_drv_type.h             |   15 +
>  drivers/net/sxe/sxe_testpmd.c              |  196 ++
>  drivers/net/sxe/vf/sxevf.h                 |   42 +
>  drivers/net/sxe/vf/sxevf_ethdev.c          |  752 +++++
>  drivers/net/sxe/vf/sxevf_ethdev.h          |   16 +
>  drivers/net/sxe/vf/sxevf_filter.c          |  493 +++
>  drivers/net/sxe/vf/sxevf_filter.h          |   70 +
>  drivers/net/sxe/vf/sxevf_irq.c             |  432 +++
>  drivers/net/sxe/vf/sxevf_irq.h             |   34 +
>  drivers/net/sxe/vf/sxevf_main.c            |   82 +
>  drivers/net/sxe/vf/sxevf_msg.c             |  624 ++++
>  drivers/net/sxe/vf/sxevf_msg.h             |  201 ++
>  drivers/net/sxe/vf/sxevf_offload.c         |   30 +
>  drivers/net/sxe/vf/sxevf_offload.h         |   16 +
>  drivers/net/sxe/vf/sxevf_queue.c           |  208 ++
>  drivers/net/sxe/vf/sxevf_queue.h           |   69 +
>  drivers/net/sxe/vf/sxevf_rx.c              |  162 +
>  drivers/net/sxe/vf/sxevf_rx.h              |   18 +
>  drivers/net/sxe/vf/sxevf_stats.c           |  162 +
>  drivers/net/sxe/vf/sxevf_stats.h           |   31 +
>  drivers/net/sxe/vf/sxevf_tx.c              |   46 +
>  drivers/net/sxe/vf/sxevf_tx.h              |   14 +
>  92 files changed, 27237 insertions(+)
>  create mode 100644 doc/guides/nics/features/sxe.ini
>  create mode 100644 doc/guides/nics/features/sxe_vf.ini
>  create mode 100644 doc/guides/nics/sxe.rst
>  create mode 100644 drivers/net/sxe/base/sxe_common.c
>  create mode 100644 drivers/net/sxe/base/sxe_common.h
>  create mode 100644 drivers/net/sxe/base/sxe_compat_platform.h
>  create mode 100644 drivers/net/sxe/base/sxe_compat_version.h
>  create mode 100644 drivers/net/sxe/base/sxe_errno.h
>  create mode 100644 drivers/net/sxe/base/sxe_hw.c
>  create mode 100644 drivers/net/sxe/base/sxe_hw.h
>  create mode 100644 drivers/net/sxe/base/sxe_logs.h
>  create mode 100644 drivers/net/sxe/base/sxe_offload_common.c
>  create mode 100644 drivers/net/sxe/base/sxe_offload_common.h
>  create mode 100644 drivers/net/sxe/base/sxe_queue_common.c
>  create mode 100644 drivers/net/sxe/base/sxe_queue_common.h
>  create mode 100644 drivers/net/sxe/base/sxe_rx_common.c
>  create mode 100644 drivers/net/sxe/base/sxe_rx_common.h
>  create mode 100644 drivers/net/sxe/base/sxe_tx_common.c
>  create mode 100644 drivers/net/sxe/base/sxe_tx_common.h
>  create mode 100644 drivers/net/sxe/base/sxe_types.h
>  create mode 100644 drivers/net/sxe/base/sxevf_hw.c
>  create mode 100644 drivers/net/sxe/base/sxevf_hw.h
>  create mode 100644 drivers/net/sxe/base/sxevf_regs.h
>  create mode 100644 drivers/net/sxe/include/drv_msg.h
>  create mode 100644 drivers/net/sxe/include/sxe/sxe_cli.h
>  create mode 100644 drivers/net/sxe/include/sxe/sxe_hdc.h
>  create mode 100644 drivers/net/sxe/include/sxe/sxe_ioctl.h
>  create mode 100644 drivers/net/sxe/include/sxe/sxe_msg.h
>  create mode 100644 drivers/net/sxe/include/sxe/sxe_regs.h
>  create mode 100644 drivers/net/sxe/include/sxe_type.h
>  create mode 100644 drivers/net/sxe/include/sxe_version.h
>  create mode 100644 drivers/net/sxe/meson.build
>  create mode 100644 drivers/net/sxe/pf/rte_pmd_sxe.h
>  create mode 100644 drivers/net/sxe/pf/sxe.h
>  create mode 100644 drivers/net/sxe/pf/sxe_dcb.c
>  create mode 100644 drivers/net/sxe/pf/sxe_dcb.h
>  create mode 100644 drivers/net/sxe/pf/sxe_ethdev.c
>  create mode 100644 drivers/net/sxe/pf/sxe_ethdev.h
>  create mode 100644 drivers/net/sxe/pf/sxe_filter.c
>  create mode 100644 drivers/net/sxe/pf/sxe_filter.h
>  create mode 100644 drivers/net/sxe/pf/sxe_flow_ctrl.c
>  create mode 100644 drivers/net/sxe/pf/sxe_flow_ctrl.h
>  create mode 100644 drivers/net/sxe/pf/sxe_irq.c
>  create mode 100644 drivers/net/sxe/pf/sxe_irq.h
>  create mode 100644 drivers/net/sxe/pf/sxe_main.c
>  create mode 100644 drivers/net/sxe/pf/sxe_offload.c
>  create mode 100644 drivers/net/sxe/pf/sxe_offload.h
>  create mode 100644 drivers/net/sxe/pf/sxe_phy.c
>  create mode 100644 drivers/net/sxe/pf/sxe_phy.h
>  create mode 100644 drivers/net/sxe/pf/sxe_pmd_hdc.c
>  create mode 100644 drivers/net/sxe/pf/sxe_pmd_hdc.h
>  create mode 100644 drivers/net/sxe/pf/sxe_ptp.c
>  create mode 100644 drivers/net/sxe/pf/sxe_ptp.h
>  create mode 100644 drivers/net/sxe/pf/sxe_queue.c
>  create mode 100644 drivers/net/sxe/pf/sxe_queue.h
>  create mode 100644 drivers/net/sxe/pf/sxe_rx.c
>  create mode 100644 drivers/net/sxe/pf/sxe_rx.h
>  create mode 100644 drivers/net/sxe/pf/sxe_stats.c
>  create mode 100644 drivers/net/sxe/pf/sxe_stats.h
>  create mode 100644 drivers/net/sxe/pf/sxe_tx.c
>  create mode 100644 drivers/net/sxe/pf/sxe_tx.h
>  create mode 100644 drivers/net/sxe/pf/sxe_vec_common.h
>  create mode 100644 drivers/net/sxe/pf/sxe_vec_neon.c
>  create mode 100644 drivers/net/sxe/pf/sxe_vec_sse.c
>  create mode 100644 drivers/net/sxe/pf/sxe_vf.c
>  create mode 100644 drivers/net/sxe/pf/sxe_vf.h
>  create mode 100644 drivers/net/sxe/sxe_drv_type.h
>  create mode 100644 drivers/net/sxe/sxe_testpmd.c
>  create mode 100644 drivers/net/sxe/vf/sxevf.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_ethdev.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_ethdev.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_filter.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_filter.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_irq.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_irq.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_main.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_msg.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_msg.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_offload.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_offload.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_queue.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_queue.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_rx.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_rx.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_stats.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_stats.h
>  create mode 100644 drivers/net/sxe/vf/sxevf_tx.c
>  create mode 100644 drivers/net/sxe/vf/sxevf_tx.h
> 

Since this is a new driver. added an AI review of documentation
(features matrix) vs code

Implemented (ops wired up):
Feature Status  Evidence
Speed capabilities      ✅       dev_infos_get reports speed_capa
Link speed configuration        ✅       dev_set_link_up / dev_set_link_down
Link status     ✅       link_update
Link status event       ✅       LSC interrupt handler + SXE_IRQ_LINK_UPDATE
Rx interrupt    ✅       rx_queue_intr_enable / rx_queue_intr_disable
Queue start/stop        ✅       rx_queue_start/stop, tx_queue_start/stop
MTU update      ✅       mtu_set
Scattered Rx    ✅       scattered_rx logic in queue configure
LRO     ✅       LRO Rx burst functions
TSO     ✅       TSO offload in tx_offload_capa
Promiscuous mode        ✅       promiscuous_enable / promiscuous_disable
Allmulticast mode       ✅       allmulticast_enable / allmulticast_disable
Unicast MAC filter      ✅       mac_addr_add / mac_addr_remove / mac_addr_set
Multicast MAC filter    ✅       set_mc_addr_list
RSS hash        ✅       rss_hash_update / rss_hash_conf_get
RSS key update  ✅       via rss_hash_update
RSS reta update ✅       reta_update / reta_query
VMDq    ✅       VMDQ configure code present
SR-IOV  ✅       VF driver in patch 13, sxe_vt_configure
DCB     ✅       get_dcb_info, DCB configure functions
VLAN filter     ✅       vlan_filter_set
Flow control    ✅       flow_ctrl_get / flow_ctrl_set / priority_flow_ctrl_set
CRC offload     ✅       RTE_ETH_RX_OFFLOAD_KEEP_CRC handling
VLAN offload    ✅       vlan_offload_set / vlan_strip_queue_set / vlan_tpid_set
L3/L4 checksum offload  ✅       In offload capabilities
Packet type parsing     ✅       dev_supported_ptypes_get, ptype tables
Timesync        ✅       Full set of timesync ops
Rx descriptor status    ✅       Assigned to eth_dev->rx_descriptor_status
Tx descriptor status    ✅       Assigned to eth_dev->tx_descriptor_status
Basic stats     ✅       stats_get / stats_reset
Extended stats  ✅       xstats_get / xstats_reset / xstats_get_names
Stats per queue ✅       queue_stats_mapping_set
FW version      ✅       fw_version_get
Registers dump  ✅       get_reg
Module EEPROM dump      ✅       get_module_info / get_module_eeprom
Linux   ✅       Platform code present
x86-64  ✅       SIMD code in patch 12

Claimed but NOT implemented (no ops wired):
Feature Status  Notes
EEPROM dump     ❌       No get_eeprom_length or get_eeprom ops wired. sxe.ini 
claims EEPROM dump = Y but there's no get_eeprom callback in sxe_eth_dev_ops. 
Module EEPROM (get_module_eeprom) is present but that's a different feature.
Power mgmt address monitor      ❓       No get_monitor_addr op visible in the 
ops struct. This feature requires the PMD to implement get_monitor_addr to 
support rte_power_monitor().
QinQ offload    ❓       Claimed as P (partial). vlan_tpid_set is present, but I 
didn't see explicit QinQ double-tag handling in the offload path. The overhead 
calculations reference 2 * SXE_VLAN_TAG_SIZE suggesting awareness, but the 
actual hardware offload for QinQ insertion/stripping needs verification.
Inner L3/L4 checksum    ❓       Claimed as P. The ptype tables cover 
NVGRE/VXLAN tunnel types, but whether inner checksum offload is actually wired 
in the Tx path needs verification against the offload capabilities returned.
ARMv8   ❓       Claimed as Y but the SIMD code in patch 12 appears to be 
x86-specific (SSE/AVX). No NEON intrinsics visible.

Reply via email to