[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251223035113.31122-1-illusion.wang@nebula-matrix.com>
Date: Tue, 23 Dec 2025 11:50:23 +0800
From: "illusion.wang" <illusion.wang@...ula-matrix.com>
To: dimon.zhao@...ula-matrix.com,
illusion.wang@...ula-matrix.com,
alvin.wang@...ula-matrix.com,
sam.chen@...ula-matrix.com,
netdev@...r.kernel.org
Cc: linux-kernel@...r.kernel.org (open list)
Subject: [PATCH v1 net-next 00/15] nbl driver for Nebulamatrix NICs
The patch series add the nbl driver, which will support the nebula-matrix 18100 and 18110 series
of network cards.
This submission is the first phase. which includes the PF-based and VF-based Ethernet transmit
and receive functionality. Once this is merged. will submit addition patches to implement support
for other features. such as ethtool support, debugfs support and etc.
Our Driver architecture supports Kernel Mode and Coexistence Mode(kernel and dpdk)
illusion.wang (15):
net/nebula-matrix: add minimum nbl build framework
net/nebula-matrix: add simple probe/remove.
net/nebula-matrix: add HW layer definitions and implementation
net/nebula-matrix: add Channel layer definitions and implementation
net/nebula-matrix: add Resource layer definitions and implementation
net/nebula-matrix: add intr resource definitions and implementation
net/nebula-matrix: add vsi, queue, adminq resource definitions and
implementation
net/nebula-matrix: add flow resource definitions and implementation
net/nebula-matrix: add txrx resource definitions and implementation
net/nebula-matrix: add Dispatch layer definitions and implementation
net/nebula-matrix: add Service layer definitions and implementation
net/nebula-matrix: add Dev layer definitions and implementation
net/nebula-matrix: add Dev start, stop operation
net/nebula-matrix: fully support ndo operations
net/nebula-matrix: add kernel/user coexist mode support
.../ethernet/nebula-matrix/m18100.rst | 52 +
MAINTAINERS | 10 +
drivers/net/ethernet/Kconfig | 1 +
drivers/net/ethernet/Makefile | 1 +
drivers/net/ethernet/nebula-matrix/Kconfig | 39 +
drivers/net/ethernet/nebula-matrix/Makefile | 6 +
.../net/ethernet/nebula-matrix/nbl/Makefile | 41 +
.../nbl/nbl_channel/nbl_channel.c | 1518 +++++
.../nbl/nbl_channel/nbl_channel.h | 214 +
.../nebula-matrix/nbl/nbl_common/nbl_common.c | 1063 ++++
.../nebula-matrix/nbl/nbl_common/nbl_common.h | 69 +
.../net/ethernet/nebula-matrix/nbl/nbl_core.h | 145 +
.../nebula-matrix/nbl/nbl_core/nbl_dev.c | 3277 +++++++++++
.../nebula-matrix/nbl/nbl_core/nbl_dev.h | 343 ++
.../nebula-matrix/nbl/nbl_core/nbl_dev_user.c | 1607 ++++++
.../nebula-matrix/nbl/nbl_core/nbl_dev_user.h | 76 +
.../nebula-matrix/nbl/nbl_core/nbl_dispatch.c | 4756 ++++++++++++++++
.../nebula-matrix/nbl/nbl_core/nbl_dispatch.h | 89 +
.../nebula-matrix/nbl/nbl_core/nbl_service.c | 4895 +++++++++++++++++
.../nebula-matrix/nbl/nbl_core/nbl_service.h | 301 +
.../nebula-matrix/nbl/nbl_core/nbl_sysfs.c | 79 +
.../nebula-matrix/nbl/nbl_core/nbl_sysfs.h | 21 +
.../nebula-matrix/nbl/nbl_hw/nbl_adminq.c | 1520 +++++
.../nebula-matrix/nbl/nbl_hw/nbl_adminq.h | 196 +
.../nebula-matrix/nbl/nbl_hw/nbl_hw.h | 184 +
.../nbl_hw/nbl_hw_leonis/base/nbl_datapath.h | 14 +
.../nbl_hw_leonis/base/nbl_datapath_dpa.h | 765 +++
.../nbl_hw_leonis/base/nbl_datapath_dped.h | 2152 ++++++++
.../nbl_hw_leonis/base/nbl_datapath_dstore.h | 957 ++++
.../nbl_hw_leonis/base/nbl_datapath_ucar.h | 414 ++
.../nbl_hw_leonis/base/nbl_datapath_upa.h | 822 +++
.../nbl_hw_leonis/base/nbl_datapath_uped.h | 1499 +++++
.../nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe.h | 16 +
.../nbl_hw/nbl_hw_leonis/base/nbl_ppe_acl.h | 2417 ++++++++
.../nbl_hw/nbl_hw_leonis/base/nbl_ppe_epro.h | 665 +++
.../nbl_hw/nbl_hw_leonis/base/nbl_ppe_fem.h | 1490 +++++
.../nbl_hw/nbl_hw_leonis/base/nbl_ppe_ipro.h | 1397 +++++
.../nbl_hw/nbl_hw_leonis/base/nbl_ppe_mcc.h | 412 ++
.../nbl_hw/nbl_hw_leonis/base/nbl_ppe_pp0.h | 619 +++
.../nbl_hw/nbl_hw_leonis/base/nbl_ppe_pp1.h | 701 +++
.../nbl_hw/nbl_hw_leonis/base/nbl_ppe_pp2.h | 619 +++
.../nbl_hw/nbl_hw_leonis/nbl_flow_leonis.c | 2094 +++++++
.../nbl_hw/nbl_hw_leonis/nbl_flow_leonis.h | 204 +
.../nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis.c | 3062 +++++++++++
.../nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis.h | 1844 +++++++
.../nbl_hw/nbl_hw_leonis/nbl_hw_leonis_regs.c | 3864 +++++++++++++
.../nbl_hw/nbl_hw_leonis/nbl_hw_leonis_regs.h | 12 +
.../nbl_hw/nbl_hw_leonis/nbl_queue_leonis.c | 1373 +++++
.../nbl_hw/nbl_hw_leonis/nbl_queue_leonis.h | 25 +
.../nbl_hw_leonis/nbl_resource_leonis.c | 1073 ++++
.../nbl_hw_leonis/nbl_resource_leonis.h | 26 +
.../nebula-matrix/nbl/nbl_hw/nbl_hw_reg.h | 187 +
.../nebula-matrix/nbl/nbl_hw/nbl_interrupt.c | 409 ++
.../nebula-matrix/nbl/nbl_hw/nbl_interrupt.h | 13 +
.../nebula-matrix/nbl/nbl_hw/nbl_p4_actions.h | 59 +
.../nebula-matrix/nbl/nbl_hw/nbl_queue.c | 56 +
.../nebula-matrix/nbl/nbl_hw/nbl_queue.h | 11 +
.../nebula-matrix/nbl/nbl_hw/nbl_resource.c | 409 ++
.../nebula-matrix/nbl/nbl_hw/nbl_resource.h | 853 +++
.../nebula-matrix/nbl/nbl_hw/nbl_txrx.c | 2026 +++++++
.../nebula-matrix/nbl/nbl_hw/nbl_txrx.h | 188 +
.../nebula-matrix/nbl/nbl_hw/nbl_vsi.c | 270 +
.../nebula-matrix/nbl/nbl_hw/nbl_vsi.h | 12 +
.../nbl/nbl_include/nbl_def_channel.h | 785 +++
.../nbl/nbl_include/nbl_def_common.h | 515 ++
.../nbl/nbl_include/nbl_def_dev.h | 37 +
.../nbl/nbl_include/nbl_def_dispatch.h | 192 +
.../nbl/nbl_include/nbl_def_hw.h | 142 +
.../nbl/nbl_include/nbl_def_resource.h | 188 +
.../nbl/nbl_include/nbl_def_service.h | 164 +
.../nbl/nbl_include/nbl_include.h | 624 +++
.../nbl/nbl_include/nbl_product_base.h | 21 +
.../net/ethernet/nebula-matrix/nbl/nbl_main.c | 477 ++
73 files changed, 56677 insertions(+)
create mode 100644 Documentation/networking/device_drivers/ethernet/nebula-matrix/m18100.rst
create mode 100644 drivers/net/ethernet/nebula-matrix/Kconfig
create mode 100644 drivers/net/ethernet/nebula-matrix/Makefile
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/Makefile
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_channel/nbl_channel.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_channel/nbl_channel.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_common/nbl_common.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_common/nbl_common.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dev.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dev.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dev_user.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dev_user.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dispatch.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dispatch.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_service.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_service.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_sysfs.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_sysfs.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_adminq.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_adminq.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_datapath.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_datapath_dpa.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_datapath_dped.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_datapath_dstore.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_datapath_ucar.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_datapath_upa.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_datapath_uped.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe_acl.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe_epro.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe_fem.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe_ipro.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe_mcc.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe_pp0.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe_pp1.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/base/nbl_ppe_pp2.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_flow_leonis.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_flow_leonis.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis_regs.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_hw_leonis_regs.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_queue_leonis.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_queue_leonis.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_resource_leonis.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_resource_leonis.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_reg.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_interrupt.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_interrupt.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_p4_actions.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_queue.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_queue.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_resource.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_resource.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_txrx.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_txrx.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_vsi.c
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_vsi.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_def_channel.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_def_common.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_def_dev.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_def_dispatch.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_def_hw.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_def_resource.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_def_service.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_include.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_include/nbl_product_base.h
create mode 100644 drivers/net/ethernet/nebula-matrix/nbl/nbl_main.c
--
2.43.0
Powered by blists - more mailing lists