[v5,01/32] net/sssnic: add build and doc infrastructure

Message ID 20230904045658.238185-2-wanry@3snic.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series Introduce sssnic PMD for 3SNIC's 9x0 serials Ethernet adapters |

Checks

Context Check Description
ci/checkpatch warning coding style issues

Commit Message

Renyong Wan Sept. 4, 2023, 4:56 a.m. UTC
  From: Renyong Wan <wanry@3snic.com>

Adding minimum PMD code, doc and build infrastructure for sssnic.

Signed-off-by: Steven Song <steven.song@3snic.com>
Signed-off-by: Renyong Wan <wanry@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
  

Comments

Ferruh Yigit Sept. 26, 2023, 1:06 p.m. UTC | #1
On 9/4/2023 5:56 AM, wanry@3snic.com wrote:
> From: Renyong Wan <wanry@3snic.com>
> 
> Adding minimum PMD code, doc and build infrastructure for sssnic.
> 
> Signed-off-by: Steven Song <steven.song@3snic.com>
> Signed-off-by: Renyong Wan <wanry@3snic.com>
> 

<...>

> @@ -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 <wanry@3snic.com>
> +M: Steven Song <steven.song@3snic.com>
> +F: drivers/net/sssnic/
> +F: doc/guides/nics/sssnic.rst
> +F: doc/guides/nics/features/sssnic.ini
> +
>

The list is sorted by the company name, I am aware above virtual devices
(af_xdp, af_packet & bondign) are causing the confusion, they are not
sorted clearly, please move the driver as first net driver, we can fix
the virtual ones later.


>  Amazon ENA
>  M: Michal Krawczyk <mk@semihalf.com>
>  M: Shai Brandes <shaibran@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
>

3S930 ?
I can see from your website, that is the one with 100GbE interface.

It can be nice to have a link to each device page, if possible.


> +
> +
> +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
> +
>

Can you please update this list as features added to the code? Similar
to what you are already doing with sssnic.ini.

This helps whoever checking the git history can find the relevant code
from documentation git blame.


> +
> +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.
>

I don't know listing ICC as relevant anymore, I am not aware of anyone
testing it. So can drop this limitation.
  

Patch

diff --git a/.mailmap b/.mailmap
index 864d33ee46..8b66f866d0 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1156,6 +1156,7 @@  Rebecca Troy <rebecca.troy@intel.com>
 Remi Pommarel <repk@triplefau.lt>
 Remy Horton <remy.horton@intel.com>
 Renata Saiakhova <renata.saiakhova@ekinops.com>
+Renyong Wan <wanry@3snic.com>
 Reshma Pattan <reshma.pattan@intel.com> <reshma.pattan@gmail.com>
 Ricardo Roldan <rroldan@bequant.com>
 Ricardo Salveti <ricardo.salveti@linaro.org>
@@ -1329,6 +1330,7 @@  Stephen Hurd <stephen.hurd@broadcom.com> <shurd@broadcom.com>
 Steve Capper <steve.capper@arm.com>
 Steven Lariau <steven.lariau@arm.com>
 Steven Luong <sluong@cisco.com>
+Steven Song <steven.song@3snic.com>
 Steven Webster <steven.webster@windriver.com>
 Steven Zou <steven.zou@intel.com>
 Steve Rempe <steve.rempe@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 <wanry@3snic.com>
+M: Steven Song <steven.song@3snic.com>
+F: drivers/net/sssnic/
+F: doc/guides/nics/sssnic.rst
+F: doc/guides/nics/features/sssnic.ini
+
 Amazon ENA
 M: Michal Krawczyk <mk@semihalf.com>
 M: Shai Brandes <shaibran@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);