From: Renyong Wan <wa...@3snic.com> Adding minimum PMD code, doc and build infrastructure for sssnic.
Signed-off-by: Steven Song <steven.s...@3snic.com> Signed-off-by: Renyong Wan <wa...@3snic.com> --- v2: * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst. * Removed error.h from including files. v5: * Fixed rebase mistake. * Fixed incorrect path in MAINTAINERS file. --- .mailmap | 2 + MAINTAINERS | 7 +++ doc/guides/nics/features/sssnic.ini | 9 ++++ doc/guides/nics/index.rst | 1 + doc/guides/nics/sssnic.rst | 73 +++++++++++++++++++++++++++++ drivers/net/meson.build | 1 + drivers/net/sssnic/meson.build | 18 +++++++ drivers/net/sssnic/sssnic_ethdev.c | 28 +++++++++++ 8 files changed, 139 insertions(+) create mode 100644 doc/guides/nics/features/sssnic.ini create mode 100644 doc/guides/nics/sssnic.rst create mode 100644 drivers/net/sssnic/meson.build create mode 100644 drivers/net/sssnic/sssnic_ethdev.c diff --git a/.mailmap b/.mailmap index 864d33ee46..8b66f866d0 100644 --- a/.mailmap +++ b/.mailmap @@ -1156,6 +1156,7 @@ Rebecca Troy <rebecca.t...@intel.com> Remi Pommarel <r...@triplefau.lt> Remy Horton <remy.hor...@intel.com> Renata Saiakhova <renata.saiakh...@ekinops.com> +Renyong Wan <wa...@3snic.com> Reshma Pattan <reshma.pat...@intel.com> <reshma.pat...@gmail.com> Ricardo Roldan <rrol...@bequant.com> Ricardo Salveti <ricardo.salv...@linaro.org> @@ -1329,6 +1330,7 @@ Stephen Hurd <stephen.h...@broadcom.com> <sh...@broadcom.com> Steve Capper <steve.cap...@arm.com> Steven Lariau <steven.lar...@arm.com> Steven Luong <slu...@cisco.com> +Steven Song <steven.s...@3snic.com> Steven Webster <steven.webs...@windriver.com> Steven Zou <steven....@intel.com> Steve Rempe <steve.re...@broadcom.com> diff --git a/MAINTAINERS b/MAINTAINERS index a926155f26..1e161c3305 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -633,6 +633,13 @@ F: drivers/net/af_xdp/ F: doc/guides/nics/af_xdp.rst F: doc/guides/nics/features/af_xdp.ini +3SNIC sssnic +M: Renyong Wan <wa...@3snic.com> +M: Steven Song <steven.s...@3snic.com> +F: drivers/net/sssnic/ +F: doc/guides/nics/sssnic.rst +F: doc/guides/nics/features/sssnic.ini + Amazon ENA M: Michal Krawczyk <m...@semihalf.com> M: Shai Brandes <shaib...@amazon.com> diff --git a/doc/guides/nics/features/sssnic.ini b/doc/guides/nics/features/sssnic.ini new file mode 100644 index 0000000000..6d9786db7e --- /dev/null +++ b/doc/guides/nics/features/sssnic.ini @@ -0,0 +1,9 @@ +; +; Supported features of the 'sssnic' 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 7bfcac880f..9d2b29383b 100644 --- a/doc/guides/nics/index.rst +++ b/doc/guides/nics/index.rst @@ -61,6 +61,7 @@ Network Interface Controller Drivers qede sfc_efx softnic + sssnic tap thunderx txgbe diff --git a/doc/guides/nics/sssnic.rst b/doc/guides/nics/sssnic.rst new file mode 100644 index 0000000000..fe0180c2e6 --- /dev/null +++ b/doc/guides/nics/sssnic.rst @@ -0,0 +1,73 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2022 Shenzhen 3SNIC Information Technology Co., Ltd. + +SSSNIC Poll Mode Driver +======================= + +The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support +for 3SNIC 9x0 serials family of Ethernet adapters. + + +Supported NICs +-------------- + +- 3S910 Dual Port SFP28 10/25GbE Ethernet adapter +- 3S920 Quad Port SFP28 10/25GbE Ethernet adapter +- 3S920 Quad Port QSFP28 100GbE Ethernet adapter + + +Features +-------- + +Features of sssnic PMD are: + +- Link status +- Link status event +- Queue start/stop +- Rx interrupt +- Scattered Rx +- TSO +- LRO +- Promiscuous mode +- Allmulticast mode +- Unicast MAC filter +- Multicast MAC filte +- RSS hash +- RSS key update +- RSS reta update +- Inner RSS +- VLAN filter +- VLAN offload +- L3 checksum offload +- L4 checksum offload +- Inner L3 checksum +- Inner L4 checksum +- Basic stats +- Extended stats +- Stats per queue +- Flow control +- FW version +- Generic flow API + + +Prerequisites +------------- + +- Learning about 3SNIC Ethernet NICs using + `<https://www.3snic.com/products/SSSNIC>`_. + +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. + + +Driver compilation and testing +------------------------------ + +Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>` +for details. + + +Limitations or Known issues +--------------------------- + +Build with ICC is not supported yet. +Power8, ARMv7 and BSD are not supported yet. diff --git a/drivers/net/meson.build b/drivers/net/meson.build index bd38b533c5..224eab99a7 100644 --- a/drivers/net/meson.build +++ b/drivers/net/meson.build @@ -54,6 +54,7 @@ drivers = [ 'ring', 'sfc', 'softnic', + 'sssnic', 'tap', 'thunderx', 'txgbe', diff --git a/drivers/net/sssnic/meson.build b/drivers/net/sssnic/meson.build new file mode 100644 index 0000000000..fda65aa380 --- /dev/null +++ b/drivers/net/sssnic/meson.build @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018-2022 Shenzhen 3SNIC Information Technology Co., Ltd. + +if not is_linux + build = false + reason = 'only supported on Linux' + subdir_done() +endif + +if (arch_subdir != 'x86' and arch_subdir != 'arm') or (not dpdk_conf.get('RTE_ARCH_64')) + build = false + reason = 'only supported on x86_64 and aarch64' + subdir_done() +endif + +sources = files( + 'sssnic_ethdev.c', +) diff --git a/drivers/net/sssnic/sssnic_ethdev.c b/drivers/net/sssnic/sssnic_ethdev.c new file mode 100644 index 0000000000..dcda01eeb8 --- /dev/null +++ b/drivers/net/sssnic/sssnic_ethdev.c @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018-2022 Shenzhen 3SNIC Information Technology Co., Ltd. + */ + +#include <rte_common.h> +#include <ethdev_pci.h> + +static int +sssnic_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) +{ + RTE_SET_USED(pci_drv); + RTE_SET_USED(pci_dev); + return -EINVAL; +} + +static int +sssnic_pci_remove(struct rte_pci_device *pci_dev) +{ + RTE_SET_USED(pci_dev); + return -EINVAL; +} + +static struct rte_pci_driver sssnic_pmd = { + .probe = sssnic_pci_probe, + .remove = sssnic_pci_remove, +}; + +RTE_PMD_REGISTER_PCI(net_sssnic, sssnic_pmd); -- 2.27.0