add minimum PMD code, doc and build infrastructure for nbl driver. Signed-off-by: Dimon Zhao <dimon.z...@nebula-matrix.com> --- .mailmap | 4 ++ MAINTAINERS | 9 ++++ doc/guides/nics/features/nbl.ini | 9 ++++ doc/guides/nics/index.rst | 1 + doc/guides/nics/nbl.rst | 87 ++++++++++++++++++++++++++++++++ drivers/net/meson.build | 1 + drivers/net/nbl/meson.build | 11 ++++ drivers/net/nbl/nbl_ethdev.c | 3 ++ 8 files changed, 125 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_ethdev.c
diff --git a/.mailmap b/.mailmap index 293ec12da0..c9dc467182 100644 --- a/.mailmap +++ b/.mailmap @@ -375,6 +375,7 @@ Diana Wang <na.w...@corigine.com> Didier Pallard <didier.pall...@6wind.com> Dilshod Urazov <dilshod.ura...@oktetlabs.ru> Dima Ruinskiy <dima.ruins...@intel.com> +Dimon Zhao <dimon.z...@nebula-matrix.com> Ding Zhi <zhi.d...@6wind.com> Diogo Behrens <diogo.behr...@huawei.com> Dirk-Holger Lenz <dirk.l...@ng4t.com> @@ -857,6 +858,7 @@ Kumar Amber <kumar.am...@intel.com> Kumara Parameshwaran <kumaraparames...@gmail.com> <kparamesh...@vmware.com> Kumar Sanghvi <kuma...@chelsio.com> Kyle Larose <klar...@sandvine.com> +Kyo Liu <kyo....@nebula-matrix.com> Lance Richardson <lance.richard...@broadcom.com> Laszlo Ersek <ler...@redhat.com> Laura Stroe <laura.st...@intel.com> @@ -871,6 +873,7 @@ Lei Gong <arei.gong...@huawei.com> Lei Ji <jil...@huawei.com> Lei Yao <lei.a....@intel.com> Leonid Myravjev <myrav...@amicon.ru> +Leon Yu <leon...@nebula-matrix.com> Leo Xu <yongqu...@nvidia.com> Leszek Zygo <leszek.z...@intel.com> Levend Sayar <levendsa...@gmail.com> @@ -1389,6 +1392,7 @@ Saikrishna Edupuganti <saikrishna.edupuga...@intel.com> Saleh Alsouqi <saleh...@nvidia.com> <saleh...@mellanox.com> Salem Sol <sal...@nvidia.com> Sam Andrew <samand...@microsoft.com> +Sam Chen <sam.c...@nebula-matrix.com> Sameh Gobriel <sameh.gobr...@intel.com> Sam Grove <sam.gr...@sifive.com> Samik Gupta <samik.gu...@broadcom.com> diff --git a/MAINTAINERS b/MAINTAINERS index 7aca98c537..edc93cdda0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1009,6 +1009,15 @@ F: drivers/net/rnp/ F: doc/guides/nics/rnp.rst F: doc/guides/nics/features/rnp.ini +Nebulamatrix nbl +M: Dimon Zhao <dimon.z...@nebula-matrix.com> +M: Kyo Liu<kyo....@nebula-matrix.com> +M: Leon Yu <leon...@nebula-matrix.com> +M: Sam Chen <sam.c...@nebula-matrix.com> +F: drivers/net/nbl +F: doc/guides/nics/nbl.rst +F: doc/guides/nics/features/nbl.ini + Realtek r8169 M: Howard Wang <howard_w...@realsil.com.cn> M: Chunhao Lin <h...@realtek.com> diff --git a/doc/guides/nics/features/nbl.ini b/doc/guides/nics/features/nbl.ini new file mode 100644 index 0000000000..6daabe6ed3 --- /dev/null +++ b/doc/guides/nics/features/nbl.ini @@ -0,0 +1,9 @@ +; +; Supported features of the 'nbl' network poll mode driver. +; +; Refer to default.ini for the full list of available PMD features. +; +[Features] +Linux = Y +ARMv8 = Y +x86-64 = Y diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst index 57d161c526..84d4ece101 100644 --- a/doc/guides/nics/index.rst +++ b/doc/guides/nics/index.rst @@ -50,6 +50,7 @@ Network Interface Controller Drivers mvneta mvpp2 netvsc + nbl nfb nfp ngbe diff --git a/doc/guides/nics/nbl.rst b/doc/guides/nics/nbl.rst new file mode 100644 index 0000000000..94431be859 --- /dev/null +++ b/doc/guides/nics/nbl.rst @@ -0,0 +1,87 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2025 Nebulamatrix Technology Co., Ltd + +NBL Poll Mode Driver +==================== + +The NBL PMD (**librte_net_nbl**) provides poll mode driver support for +10/25/50/100/200 Gbps Nebulamatrix Series Network Adapters. + + +Features +-------- + +Features of the NBL PMD are: + +- Multiple queues for TX and RX +- Receiver Side Scaling (RSS) +- Jumbo frames + + +Supported NICs +-------------- + +The following Nebulamatrix device models are supported by the same nbl driver: + + - S1205CQ-A00CHT + - S1105AS-A00CHT + - S1055AS-A00CHT + - S1052AS-A00CHT + - S1051AS-A00CHT + - S1045XS-A00CHT + - S1205CQ-A00CSP + - S1055AS-A00CSP + - S1052AS-A00CSP + + +Linux Prerequisites +~~~~~~~~~~~~~~~~~~~ + +This driver relies on kernel drivers for resources allocations and initialization. +The following dependencies are not part of DPDK and must be installed separately: + +- **Kernel modules** + + They provide low level device drivers that manage actual hardware initialization + and resources sharing with user-space processes. + + Unlike most other PMDs, these modules must remain loaded and bound to + their devices: + + - ``nbl_core``: hardware driver managing Ethernet kernel network devices. + +Because the nbl_core kernel driver code has not been upstreamed to the Linux kernel community, it cannot be provided by standard Linux distributions. +However, the nbl_core kernel driver has been upstreamed to the openEuler and Anolis communities. You can obtain the nbl_core code from the following links: + +openEuler community: +https://gitee.com/openeuler/kernel/pulls/11667 + +Anolis community: +https://gitee.com/anolis/cloud-kernel/pulls/5185 +https://gitee.com/anolis/cloud-kernel/pulls/5059 + +Alternatively, you can contact us to obtain the nbl_core code and installation package. + + +Prerequisites +------------- + +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` + to setup the basic DPDK environment. + +- Learn about `Nebulamatrix Series NICs + <https://www.nebula-matrix.com/main>`_. + + +Multiple Processes +~~~~~~~~~~~~~~~~~~ + +The NBL PMD does not support Multiple Processes. + + +Limitations or Known Issues +--------------------------- + +32-bit architectures are not supported. + +Windows and BSD are not supported yet. diff --git a/drivers/net/meson.build b/drivers/net/meson.build index 61f8cddb30..517e78d18b 100644 --- a/drivers/net/meson.build +++ b/drivers/net/meson.build @@ -40,6 +40,7 @@ drivers = [ 'mlx5', 'mvneta', 'mvpp2', + 'nbl', 'netvsc', 'nfb', 'nfp', diff --git a/drivers/net/nbl/meson.build b/drivers/net/nbl/meson.build new file mode 100644 index 0000000000..68c045a48c --- /dev/null +++ b/drivers/net/nbl/meson.build @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2025 NebulaMatrix Technology Co., Ltd. + +if not is_linux or not dpdk_conf.get('RTE_ARCH_64') + build = false + reason = 'only supported on 64bit Linux' +endif + +sources = files( + 'nbl_ethdev.c', +) diff --git a/drivers/net/nbl/nbl_ethdev.c b/drivers/net/nbl/nbl_ethdev.c new file mode 100644 index 0000000000..3ad8e4033a --- /dev/null +++ b/drivers/net/nbl/nbl_ethdev.c @@ -0,0 +1,3 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2025 Nebulamatrix Technology Co., Ltd. + */ -- 2.34.1