On Thu, 26 Jun 2025 18:40:06 -0700 "dimon.zhao" <dimon.z...@nebula-matrix.com> wrote:
> Features: > --------- > - MTU update > - promisc mode set > - xstats > - Basic statsĀ > > Support NICs: > ------------- > - S1205CQ-A00CHT > - S1105AS-A00CHT > - S1055AS-A00CHT > - S1052AS-A00CHT > - S1051AS-A00CHT > - S1045XS-A00CHT > - S1205CQ-A00CSP > - S1055AS-A00CSP > - S1052AS-A00CSP > > Dimon Zhao (16): > net/nbl: add doc and minimum nbl build framework > net/nbl: add simple probe/remove and log module > net/nbl: add PHY layer definitions and implementation > net/nbl: add Channel layer definitions and implementation > net/nbl: add Resource layer definitions and implementation > net/nbl: add Dispatch layer definitions and implementation > net/nbl: add Dev layer definitions and implementation > net/nbl: add complete device init and uninit functionality > net/nbl: add UIO and VFIO mode for nbl > net/nbl: add nbl coexistence mode for nbl > net/nbl: add nbl ethdev configuration > net/nbl: add nbl device rxtx queue setup and release ops > net/nbl: add nbl device start and stop ops > net/nbl: add nbl device Tx and Rx burst > net/nbl: add nbl device xstats and stats > net/nbl: nbl device support set MTU and promisc > > .mailmap | 4 + > MAINTAINERS | 9 + > doc/guides/nics/features/nbl.ini | 9 + > doc/guides/nics/index.rst | 1 + > doc/guides/nics/nbl.rst | 42 + > drivers/net/meson.build | 1 + > drivers/net/nbl/meson.build | 26 + > drivers/net/nbl/nbl_common/nbl_common.c | 47 + > drivers/net/nbl/nbl_common/nbl_common.h | 10 + > drivers/net/nbl/nbl_common/nbl_thread.c | 88 ++ > drivers/net/nbl/nbl_common/nbl_userdev.c | 743 ++++++++++ > drivers/net/nbl/nbl_common/nbl_userdev.h | 21 + > drivers/net/nbl/nbl_core.c | 100 ++ > drivers/net/nbl/nbl_core.h | 98 ++ > drivers/net/nbl/nbl_dev/nbl_dev.c | 1007 ++++++++++++++ > drivers/net/nbl/nbl_dev/nbl_dev.h | 65 + > drivers/net/nbl/nbl_dispatch.c | 1227 +++++++++++++++++ > drivers/net/nbl/nbl_dispatch.h | 31 + > drivers/net/nbl/nbl_ethdev.c | 161 +++ > drivers/net/nbl/nbl_ethdev.h | 32 + > drivers/net/nbl/nbl_hw/nbl_channel.c | 853 ++++++++++++ > drivers/net/nbl/nbl_hw/nbl_channel.h | 127 ++ > .../nbl_hw_leonis/nbl_phy_leonis_snic.c | 230 +++ > .../nbl_hw_leonis/nbl_phy_leonis_snic.h | 53 + > .../nbl/nbl_hw/nbl_hw_leonis/nbl_res_leonis.c | 253 ++++ > .../nbl/nbl_hw/nbl_hw_leonis/nbl_res_leonis.h | 10 + > drivers/net/nbl/nbl_hw/nbl_phy.h | 28 + > drivers/net/nbl/nbl_hw/nbl_resource.c | 5 + > drivers/net/nbl/nbl_hw/nbl_resource.h | 153 ++ > drivers/net/nbl/nbl_hw/nbl_txrx.c | 907 ++++++++++++ > drivers/net/nbl/nbl_hw/nbl_txrx.h | 136 ++ > drivers/net/nbl/nbl_hw/nbl_txrx_ops.h | 91 ++ > drivers/net/nbl/nbl_include/nbl_def_channel.h | 434 ++++++ > drivers/net/nbl/nbl_include/nbl_def_common.h | 128 ++ > drivers/net/nbl/nbl_include/nbl_def_dev.h | 107 ++ > .../net/nbl/nbl_include/nbl_def_dispatch.h | 95 ++ > drivers/net/nbl/nbl_include/nbl_def_phy.h | 35 + > .../net/nbl/nbl_include/nbl_def_resource.h | 87 ++ > drivers/net/nbl/nbl_include/nbl_include.h | 203 +++ > drivers/net/nbl/nbl_include/nbl_logs.h | 25 + > .../net/nbl/nbl_include/nbl_product_base.h | 37 + > 41 files changed, 7719 insertions(+) > create mode 100644 doc/guides/nics/features/nbl.ini > create mode 100644 doc/guides/nics/nbl.rst > create mode 100644 drivers/net/nbl/meson.build > create mode 100644 drivers/net/nbl/nbl_common/nbl_common.c > create mode 100644 drivers/net/nbl/nbl_common/nbl_common.h > create mode 100644 drivers/net/nbl/nbl_common/nbl_thread.c > create mode 100644 drivers/net/nbl/nbl_common/nbl_userdev.c > create mode 100644 drivers/net/nbl/nbl_common/nbl_userdev.h > create mode 100644 drivers/net/nbl/nbl_core.c > create mode 100644 drivers/net/nbl/nbl_core.h > create mode 100644 drivers/net/nbl/nbl_dev/nbl_dev.c > create mode 100644 drivers/net/nbl/nbl_dev/nbl_dev.h > create mode 100644 drivers/net/nbl/nbl_dispatch.c > create mode 100644 drivers/net/nbl/nbl_dispatch.h > create mode 100644 drivers/net/nbl/nbl_ethdev.c > create mode 100644 drivers/net/nbl/nbl_ethdev.h > create mode 100644 drivers/net/nbl/nbl_hw/nbl_channel.c > create mode 100644 drivers/net/nbl/nbl_hw/nbl_channel.h > create mode 100644 drivers/net/nbl/nbl_hw/nbl_hw_leonis/nbl_phy_leonis_snic.c > create mode 100644 drivers/net/nbl/nbl_hw/nbl_hw_leonis/nbl_phy_leonis_snic.h > create mode 100644 drivers/net/nbl/nbl_hw/nbl_hw_leonis/nbl_res_leonis.c > create mode 100644 drivers/net/nbl/nbl_hw/nbl_hw_leonis/nbl_res_leonis.h > create mode 100644 drivers/net/nbl/nbl_hw/nbl_phy.h > create mode 100644 drivers/net/nbl/nbl_hw/nbl_resource.c > create mode 100644 drivers/net/nbl/nbl_hw/nbl_resource.h > create mode 100644 drivers/net/nbl/nbl_hw/nbl_txrx.c > create mode 100644 drivers/net/nbl/nbl_hw/nbl_txrx.h > create mode 100644 drivers/net/nbl/nbl_hw/nbl_txrx_ops.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_def_channel.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_def_common.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_def_dev.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_def_dispatch.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_def_phy.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_def_resource.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_include.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_logs.h > create mode 100644 drivers/net/nbl/nbl_include/nbl_product_base.h > This submission is too late to make 25.07 release; but here is first pass review, will do more when you follow up. The driver compiles and for all variations of compilers, etc this is good. Doc say 32 bit not supported, but build works and not flagged by meson build checks. Saw the following minor things: There are some checkpatch warnings about unused macro argument. Ok, to keep but would be better to fix. The check-git-log scrip flags: Contributor name/email mismatch with .mailmap: dimon.zhao <dimon.z...@nebula-matrix.com> is unknown in .mailmap Probably just capitalization in some patch. You don't say if driver is save from primary secondary process? The driver has more features like multi-q and jumbo frame which are not called out in doc_guides/nics/features/nbl.rst Don't use rte_memcpy (instead just use memcpy). rte_memcpy should be reserved for variable length copies in the data path. The following are more major issues: Kernel module(s): You need explicitly mention kernel modules with RTE_PMD_REGISTER_KMOD_DEP(_) and if it is a not upstream module provide a link to the kernel source. Control thread. Adding additional threads can be a problem in embedded systems. And especially if those threads end up polling. Even worse since all control threads share a single lcore. If you need a control thread then figure out a way to make it blocking using eventfd or pipe? DPDK tries to avoid doing work queue type things. The setup of the DPDK ethdev ops is done dynamically via macros. This is just added confusion and makes the driver different than all the others without any benefit. Just follow the existing design pattern. Ops table should be const. I also look at comparing features in doc vs ethdev ops and this makes review harder.