[v5,00/32] Introduce sssnic PMD for 3SNIC's 9x0 serials Ethernet adapters

Message ID 20230904045658.238185-1-wanry@3snic.com (mailing list archive)
Headers
Series Introduce sssnic PMD for 3SNIC's 9x0 serials Ethernet adapters |

Message

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

The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
for 3SNIC 9x0 serials family of Ethernet adapters.

Supported NICs are:

- 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
- 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
- 3S920 Quad Port QSFP28 100GbE Ethernet adapter

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

---
v2:
* Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
* Removed error.h from including files.
* Fixed variable 'cmd_len' is uninitialized when used.
* Fixed 'EINVAL' undeclared.
* Fixed wrong format of printing uint64_t.
* Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.

v3:
* Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.

v4:
* Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
* Fixed coding style issue of COMPLEX_MACRO.
* Fixed coding style issue of REPEATED_WORD.

v5:
* Fixed rebase mistake.
* Fixed incorrect path in MAINTAINERS file.
---

Renyong Wan (32):
  net/sssnic: add build and doc infrastructure
  net/sssnic: add log type and log macros
  net/sssnic: support probe and remove
  net/sssnic: initialize hardware base
  net/sssnic: add event queue
  net/sssnic/base: add message definition and utility
  net/sssnic/base: add mailbox support
  net/sssnic/base: add work queue
  net/sssnic/base: add control queue
  net/sssnic: add dev configure and infos get
  net/sssnic: add dev MAC ops
  net/sssnic: support dev link status
  net/sssnic: support link status event
  net/sssnic: support Rx queue setup and release
  net/sssnic: support Tx queue setup and release
  net/sssnic: support Rx queue start and stop
  net/sssnic: support Tx queue start and stop
  net/sssnic: add Rx interrupt support
  net/sssnic: support dev start and stop
  net/sssnic: support dev close and reset
  net/sssnic: add allmulticast and promiscuous ops
  net/sssnic: add basic and extended stats ops
  net/sssnic: support Rx packet burst
  net/sssnic: support Tx packet burst
  net/sssnic: add RSS support
  net/sssnic: support dev MTU set
  net/sssnic: support dev queue info get
  net/sssnic: support dev firmware version get
  net/sssnic: add dev flow control ops
  net/sssnic: support VLAN offload and filter
  net/sssnic: add generic flow ops
  net/sssnic: add VF dev support

 .mailmap                                   |    2 +
 MAINTAINERS                                |    7 +
 doc/guides/nics/features/sssnic.ini        |   47 +
 doc/guides/nics/index.rst                  |    1 +
 doc/guides/nics/sssnic.rst                 |   73 +
 drivers/net/meson.build                    |    1 +
 drivers/net/sssnic/base/meson.build        |   20 +
 drivers/net/sssnic/base/sssnic_api.c       | 1943 ++++++++++++++++++++
 drivers/net/sssnic/base/sssnic_api.h       |  498 +++++
 drivers/net/sssnic/base/sssnic_cmd.h       |  514 ++++++
 drivers/net/sssnic/base/sssnic_ctrlq.c     |  521 ++++++
 drivers/net/sssnic/base/sssnic_ctrlq.h     |   58 +
 drivers/net/sssnic/base/sssnic_eventq.c    |  461 +++++
 drivers/net/sssnic/base/sssnic_eventq.h    |   84 +
 drivers/net/sssnic/base/sssnic_exception.c |  116 ++
 drivers/net/sssnic/base/sssnic_exception.h |   10 +
 drivers/net/sssnic/base/sssnic_hw.c        |  486 +++++
 drivers/net/sssnic/base/sssnic_hw.h        |  117 ++
 drivers/net/sssnic/base/sssnic_mbox.c      |  615 +++++++
 drivers/net/sssnic/base/sssnic_mbox.h      |   45 +
 drivers/net/sssnic/base/sssnic_misc.h      |   52 +
 drivers/net/sssnic/base/sssnic_msg.c       |  254 +++
 drivers/net/sssnic/base/sssnic_msg.h       |  166 ++
 drivers/net/sssnic/base/sssnic_reg.h       |  267 +++
 drivers/net/sssnic/base/sssnic_workq.c     |  141 ++
 drivers/net/sssnic/base/sssnic_workq.h     |  108 ++
 drivers/net/sssnic/meson.build             |   28 +
 drivers/net/sssnic/sssnic_ethdev.c         | 1139 ++++++++++++
 drivers/net/sssnic/sssnic_ethdev.h         |  102 +
 drivers/net/sssnic/sssnic_ethdev_fdir.c    | 1017 ++++++++++
 drivers/net/sssnic/sssnic_ethdev_fdir.h    |  332 ++++
 drivers/net/sssnic/sssnic_ethdev_flow.c    |  981 ++++++++++
 drivers/net/sssnic/sssnic_ethdev_flow.h    |   11 +
 drivers/net/sssnic/sssnic_ethdev_link.c    |  209 +++
 drivers/net/sssnic/sssnic_ethdev_link.h    |   14 +
 drivers/net/sssnic/sssnic_ethdev_rss.c     |  377 ++++
 drivers/net/sssnic/sssnic_ethdev_rss.h     |   20 +
 drivers/net/sssnic/sssnic_ethdev_rx.c      | 1396 ++++++++++++++
 drivers/net/sssnic/sssnic_ethdev_rx.h      |   50 +
 drivers/net/sssnic/sssnic_ethdev_stats.c   |  414 +++++
 drivers/net/sssnic/sssnic_ethdev_stats.h   |   18 +
 drivers/net/sssnic/sssnic_ethdev_tx.c      | 1123 +++++++++++
 drivers/net/sssnic/sssnic_ethdev_tx.h      |   45 +
 drivers/net/sssnic/sssnic_log.h            |   51 +
 44 files changed, 13934 insertions(+)
 create mode 100644 doc/guides/nics/features/sssnic.ini
 create mode 100644 doc/guides/nics/sssnic.rst
 create mode 100644 drivers/net/sssnic/base/meson.build
 create mode 100644 drivers/net/sssnic/base/sssnic_api.c
 create mode 100644 drivers/net/sssnic/base/sssnic_api.h
 create mode 100644 drivers/net/sssnic/base/sssnic_cmd.h
 create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.c
 create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.h
 create mode 100644 drivers/net/sssnic/base/sssnic_eventq.c
 create mode 100644 drivers/net/sssnic/base/sssnic_eventq.h
 create mode 100644 drivers/net/sssnic/base/sssnic_exception.c
 create mode 100644 drivers/net/sssnic/base/sssnic_exception.h
 create mode 100644 drivers/net/sssnic/base/sssnic_hw.c
 create mode 100644 drivers/net/sssnic/base/sssnic_hw.h
 create mode 100644 drivers/net/sssnic/base/sssnic_mbox.c
 create mode 100644 drivers/net/sssnic/base/sssnic_mbox.h
 create mode 100644 drivers/net/sssnic/base/sssnic_misc.h
 create mode 100644 drivers/net/sssnic/base/sssnic_msg.c
 create mode 100644 drivers/net/sssnic/base/sssnic_msg.h
 create mode 100644 drivers/net/sssnic/base/sssnic_reg.h
 create mode 100644 drivers/net/sssnic/base/sssnic_workq.c
 create mode 100644 drivers/net/sssnic/base/sssnic_workq.h
 create mode 100644 drivers/net/sssnic/meson.build
 create mode 100644 drivers/net/sssnic/sssnic_ethdev.c
 create mode 100644 drivers/net/sssnic/sssnic_ethdev.h
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.c
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.h
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.c
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.h
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.c
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.h
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.c
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.h
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.c
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.h
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.c
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.h
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.c
 create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.h
 create mode 100644 drivers/net/sssnic/sssnic_log.h
  

Comments

Stephen Hemminger Sept. 18, 2023, 2:37 a.m. UTC | #1
On Mon, 4 Sep 2023 12:56:26 +0800
<wanry@3snic.com> wrote:

> From: Renyong Wan <wanry@3snic.com>
> 
> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
> for 3SNIC 9x0 serials family of Ethernet adapters.
> 
> Supported NICs are:
> 
> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
> 
> 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

Does this device support primary/secondary process?
  
Renyong Wan Sept. 18, 2023, 3:23 a.m. UTC | #2
Hello Stephen,

SSSNIC PMD does not support primary/secondary process right now, it can 
only run in primary process. We are going to support multiprocessnext 
release.

Thanks.

On 2023/9/18 10:37, Stephen Hemminger wrote:
> On Mon, 4 Sep 2023 12:56:26 +0800
> <wanry@3snic.com> wrote:
>
>> From: Renyong Wan <wanry@3snic.com>
>>
>> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
>> for 3SNIC 9x0 serials family of Ethernet adapters.
>>
>> Supported NICs are:
>>
>> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
>>
>> 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
> Does this device support primary/secondary process?
  
Stephen Hemminger Sept. 19, 2023, 3:19 a.m. UTC | #3
On Mon, 4 Sep 2023 12:56:26 +0800
<wanry@3snic.com> wrote:

> From: Renyong Wan <wanry@3snic.com>
> 
> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
> for 3SNIC 9x0 serials family of Ethernet adapters.
> 
> Supported NICs are:
> 
> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
> 
> 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
> 
> ---
> v2:
> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
> * Removed error.h from including files.
> * Fixed variable 'cmd_len' is uninitialized when used.
> * Fixed 'EINVAL' undeclared.
> * Fixed wrong format of printing uint64_t.
> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
> 
> v3:
> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
> 
> v4:
> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
> * Fixed coding style issue of COMPLEX_MACRO.
> * Fixed coding style issue of REPEATED_WORD.
> 
> v5:
> * Fixed rebase mistake.
> * Fixed incorrect path in MAINTAINERS file.
> ---
> 
> Renyong Wan (32):
>   net/sssnic: add build and doc infrastructure
>   net/sssnic: add log type and log macros
>   net/sssnic: support probe and remove
>   net/sssnic: initialize hardware base
>   net/sssnic: add event queue
>   net/sssnic/base: add message definition and utility
>   net/sssnic/base: add mailbox support
>   net/sssnic/base: add work queue
>   net/sssnic/base: add control queue
>   net/sssnic: add dev configure and infos get
>   net/sssnic: add dev MAC ops
>   net/sssnic: support dev link status
>   net/sssnic: support link status event
>   net/sssnic: support Rx queue setup and release
>   net/sssnic: support Tx queue setup and release
>   net/sssnic: support Rx queue start and stop
>   net/sssnic: support Tx queue start and stop
>   net/sssnic: add Rx interrupt support
>   net/sssnic: support dev start and stop
>   net/sssnic: support dev close and reset
>   net/sssnic: add allmulticast and promiscuous ops
>   net/sssnic: add basic and extended stats ops
>   net/sssnic: support Rx packet burst
>   net/sssnic: support Tx packet burst
>   net/sssnic: add RSS support
>   net/sssnic: support dev MTU set
>   net/sssnic: support dev queue info get
>   net/sssnic: support dev firmware version get
>   net/sssnic: add dev flow control ops
>   net/sssnic: support VLAN offload and filter
>   net/sssnic: add generic flow ops
>   net/sssnic: add VF dev support
> 
>  .mailmap                                   |    2 +
>  MAINTAINERS                                |    7 +
>  doc/guides/nics/features/sssnic.ini        |   47 +
>  doc/guides/nics/index.rst                  |    1 +
>  doc/guides/nics/sssnic.rst                 |   73 +
>  drivers/net/meson.build                    |    1 +
>  drivers/net/sssnic/base/meson.build        |   20 +
>  drivers/net/sssnic/base/sssnic_api.c       | 1943 ++++++++++++++++++++
>  drivers/net/sssnic/base/sssnic_api.h       |  498 +++++
>  drivers/net/sssnic/base/sssnic_cmd.h       |  514 ++++++
>  drivers/net/sssnic/base/sssnic_ctrlq.c     |  521 ++++++
>  drivers/net/sssnic/base/sssnic_ctrlq.h     |   58 +
>  drivers/net/sssnic/base/sssnic_eventq.c    |  461 +++++
>  drivers/net/sssnic/base/sssnic_eventq.h    |   84 +
>  drivers/net/sssnic/base/sssnic_exception.c |  116 ++
>  drivers/net/sssnic/base/sssnic_exception.h |   10 +
>  drivers/net/sssnic/base/sssnic_hw.c        |  486 +++++
>  drivers/net/sssnic/base/sssnic_hw.h        |  117 ++
>  drivers/net/sssnic/base/sssnic_mbox.c      |  615 +++++++
>  drivers/net/sssnic/base/sssnic_mbox.h      |   45 +
>  drivers/net/sssnic/base/sssnic_misc.h      |   52 +
>  drivers/net/sssnic/base/sssnic_msg.c       |  254 +++
>  drivers/net/sssnic/base/sssnic_msg.h       |  166 ++
>  drivers/net/sssnic/base/sssnic_reg.h       |  267 +++
>  drivers/net/sssnic/base/sssnic_workq.c     |  141 ++
>  drivers/net/sssnic/base/sssnic_workq.h     |  108 ++
>  drivers/net/sssnic/meson.build             |   28 +
>  drivers/net/sssnic/sssnic_ethdev.c         | 1139 ++++++++++++
>  drivers/net/sssnic/sssnic_ethdev.h         |  102 +
>  drivers/net/sssnic/sssnic_ethdev_fdir.c    | 1017 ++++++++++
>  drivers/net/sssnic/sssnic_ethdev_fdir.h    |  332 ++++
>  drivers/net/sssnic/sssnic_ethdev_flow.c    |  981 ++++++++++
>  drivers/net/sssnic/sssnic_ethdev_flow.h    |   11 +
>  drivers/net/sssnic/sssnic_ethdev_link.c    |  209 +++
>  drivers/net/sssnic/sssnic_ethdev_link.h    |   14 +
>  drivers/net/sssnic/sssnic_ethdev_rss.c     |  377 ++++
>  drivers/net/sssnic/sssnic_ethdev_rss.h     |   20 +
>  drivers/net/sssnic/sssnic_ethdev_rx.c      | 1396 ++++++++++++++
>  drivers/net/sssnic/sssnic_ethdev_rx.h      |   50 +
>  drivers/net/sssnic/sssnic_ethdev_stats.c   |  414 +++++
>  drivers/net/sssnic/sssnic_ethdev_stats.h   |   18 +
>  drivers/net/sssnic/sssnic_ethdev_tx.c      | 1123 +++++++++++
>  drivers/net/sssnic/sssnic_ethdev_tx.h      |   45 +
>  drivers/net/sssnic/sssnic_log.h            |   51 +
>  44 files changed, 13934 insertions(+)
>  create mode 100644 doc/guides/nics/features/sssnic.ini
>  create mode 100644 doc/guides/nics/sssnic.rst
>  create mode 100644 drivers/net/sssnic/base/meson.build
>  create mode 100644 drivers/net/sssnic/base/sssnic_api.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_api.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_cmd.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_eventq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_eventq.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_exception.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_exception.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_hw.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_hw.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_mbox.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_mbox.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_misc.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_msg.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_msg.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_reg.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_workq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_workq.h
>  create mode 100644 drivers/net/sssnic/meson.build
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.h
>  create mode 100644 drivers/net/sssnic/sssnic_log.h
> 

There seem to be a leftover stub, after all merged together.


static int
sssnic_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
{
	RTE_SET_USED(pci_drv);     <<< this is wrong, you do use it by passing to generic probe
	PMD_INIT_FUNC_TRACE();

	return rte_eth_dev_pci_generic_probe(pci_dev,
		sizeof(struct sssnic_netdev), sssnic_ethdev_init);
}

It is simpler to used __rte_unused here.

int
sssnic_ethdev_flow_ops_get(struct rte_eth_dev *ethdev,
	const struct rte_flow_ops **ops)
{
	RTE_SET_USED(ethdev);

	*ops = &sssnic_ethdev_flow_ops;

	return 0;
}
  
Stephen Hemminger Sept. 19, 2023, 3:21 a.m. UTC | #4
On Mon, 4 Sep 2023 12:56:26 +0800
<wanry@3snic.com> wrote:

> From: Renyong Wan <wanry@3snic.com>
> 
> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
> for 3SNIC 9x0 serials family of Ethernet adapters.
> 
> Supported NICs are:
> 
> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
> 
> 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
> 
> ---
> v2:
> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
> * Removed error.h from including files.
> * Fixed variable 'cmd_len' is uninitialized when used.
> * Fixed 'EINVAL' undeclared.
> * Fixed wrong format of printing uint64_t.
> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
> 
> v3:
> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
> 
> v4:
> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
> * Fixed coding style issue of COMPLEX_MACRO.
> * Fixed coding style issue of REPEATED_WORD.
> 
> v5:
> * Fixed rebase mistake.
> * Fixed incorrect path in MAINTAINERS file.
> ---
> 
> Renyong Wan (32):
>   net/sssnic: add build and doc infrastructure
>   net/sssnic: add log type and log macros
>   net/sssnic: support probe and remove
>   net/sssnic: initialize hardware base
>   net/sssnic: add event queue
>   net/sssnic/base: add message definition and utility
>   net/sssnic/base: add mailbox support
>   net/sssnic/base: add work queue
>   net/sssnic/base: add control queue
>   net/sssnic: add dev configure and infos get
>   net/sssnic: add dev MAC ops
>   net/sssnic: support dev link status
>   net/sssnic: support link status event
>   net/sssnic: support Rx queue setup and release
>   net/sssnic: support Tx queue setup and release
>   net/sssnic: support Rx queue start and stop
>   net/sssnic: support Tx queue start and stop
>   net/sssnic: add Rx interrupt support
>   net/sssnic: support dev start and stop
>   net/sssnic: support dev close and reset
>   net/sssnic: add allmulticast and promiscuous ops
>   net/sssnic: add basic and extended stats ops
>   net/sssnic: support Rx packet burst
>   net/sssnic: support Tx packet burst
>   net/sssnic: add RSS support
>   net/sssnic: support dev MTU set
>   net/sssnic: support dev queue info get
>   net/sssnic: support dev firmware version get
>   net/sssnic: add dev flow control ops
>   net/sssnic: support VLAN offload and filter
>   net/sssnic: add generic flow ops
>   net/sssnic: add VF dev support
> 
>  .mailmap                                   |    2 +
>  MAINTAINERS                                |    7 +
>  doc/guides/nics/features/sssnic.ini        |   47 +
>  doc/guides/nics/index.rst                  |    1 +
>  doc/guides/nics/sssnic.rst                 |   73 +
>  drivers/net/meson.build                    |    1 +
>  drivers/net/sssnic/base/meson.build        |   20 +
>  drivers/net/sssnic/base/sssnic_api.c       | 1943 ++++++++++++++++++++
>  drivers/net/sssnic/base/sssnic_api.h       |  498 +++++
>  drivers/net/sssnic/base/sssnic_cmd.h       |  514 ++++++
>  drivers/net/sssnic/base/sssnic_ctrlq.c     |  521 ++++++
>  drivers/net/sssnic/base/sssnic_ctrlq.h     |   58 +
>  drivers/net/sssnic/base/sssnic_eventq.c    |  461 +++++
>  drivers/net/sssnic/base/sssnic_eventq.h    |   84 +
>  drivers/net/sssnic/base/sssnic_exception.c |  116 ++
>  drivers/net/sssnic/base/sssnic_exception.h |   10 +
>  drivers/net/sssnic/base/sssnic_hw.c        |  486 +++++
>  drivers/net/sssnic/base/sssnic_hw.h        |  117 ++
>  drivers/net/sssnic/base/sssnic_mbox.c      |  615 +++++++
>  drivers/net/sssnic/base/sssnic_mbox.h      |   45 +
>  drivers/net/sssnic/base/sssnic_misc.h      |   52 +
>  drivers/net/sssnic/base/sssnic_msg.c       |  254 +++
>  drivers/net/sssnic/base/sssnic_msg.h       |  166 ++
>  drivers/net/sssnic/base/sssnic_reg.h       |  267 +++
>  drivers/net/sssnic/base/sssnic_workq.c     |  141 ++
>  drivers/net/sssnic/base/sssnic_workq.h     |  108 ++
>  drivers/net/sssnic/meson.build             |   28 +
>  drivers/net/sssnic/sssnic_ethdev.c         | 1139 ++++++++++++
>  drivers/net/sssnic/sssnic_ethdev.h         |  102 +
>  drivers/net/sssnic/sssnic_ethdev_fdir.c    | 1017 ++++++++++
>  drivers/net/sssnic/sssnic_ethdev_fdir.h    |  332 ++++
>  drivers/net/sssnic/sssnic_ethdev_flow.c    |  981 ++++++++++
>  drivers/net/sssnic/sssnic_ethdev_flow.h    |   11 +
>  drivers/net/sssnic/sssnic_ethdev_link.c    |  209 +++
>  drivers/net/sssnic/sssnic_ethdev_link.h    |   14 +
>  drivers/net/sssnic/sssnic_ethdev_rss.c     |  377 ++++
>  drivers/net/sssnic/sssnic_ethdev_rss.h     |   20 +
>  drivers/net/sssnic/sssnic_ethdev_rx.c      | 1396 ++++++++++++++
>  drivers/net/sssnic/sssnic_ethdev_rx.h      |   50 +
>  drivers/net/sssnic/sssnic_ethdev_stats.c   |  414 +++++
>  drivers/net/sssnic/sssnic_ethdev_stats.h   |   18 +
>  drivers/net/sssnic/sssnic_ethdev_tx.c      | 1123 +++++++++++
>  drivers/net/sssnic/sssnic_ethdev_tx.h      |   45 +
>  drivers/net/sssnic/sssnic_log.h            |   51 +
>  44 files changed, 13934 insertions(+)
>  create mode 100644 doc/guides/nics/features/sssnic.ini
>  create mode 100644 doc/guides/nics/sssnic.rst
>  create mode 100644 drivers/net/sssnic/base/meson.build
>  create mode 100644 drivers/net/sssnic/base/sssnic_api.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_api.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_cmd.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_eventq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_eventq.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_exception.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_exception.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_hw.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_hw.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_mbox.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_mbox.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_misc.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_msg.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_msg.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_reg.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_workq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_workq.h
>  create mode 100644 drivers/net/sssnic/meson.build
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.h
>  create mode 100644 drivers/net/sssnic/sssnic_log.h
> 

Since the PMD_DRV_LOG() macro you defined adds a newline,
a new line should not be needed on format string in this driver.

Doing a search for \n found this one:

int
sssnic_ethdev_rx_intr_init(struct rte_eth_dev *ethdev)
{
	struct rte_intr_handle *intr_handle;
	struct sssnic_ethdev_rxq *rxq;
	uint32_t nb_rxq, i;
	int vec;
	int ret;

	if (!ethdev->data->dev_conf.intr_conf.rxq)
		return 0;

	intr_handle = ethdev->intr_handle;

	if (!rte_intr_cap_multiple(intr_handle)) {
		PMD_DRV_LOG(ERR,
			"Rx interrupts require MSI-X interrupts (vfio-pci driver)\n");
  
Stephen Hemminger Sept. 19, 2023, 3:23 a.m. UTC | #5
On Mon, 4 Sep 2023 12:56:26 +0800
<wanry@3snic.com> wrote:

> From: Renyong Wan <wanry@3snic.com>
> 
> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
> for 3SNIC 9x0 serials family of Ethernet adapters.
> 
> Supported NICs are:
> 
> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
> 
> 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
> 
> ---
> v2:
> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
> * Removed error.h from including files.
> * Fixed variable 'cmd_len' is uninitialized when used.
> * Fixed 'EINVAL' undeclared.
> * Fixed wrong format of printing uint64_t.
> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
> 
> v3:
> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
> 
> v4:
> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
> * Fixed coding style issue of COMPLEX_MACRO.
> * Fixed coding style issue of REPEATED_WORD.
> 
> v5:
> * Fixed rebase mistake.
> * Fixed incorrect path in MAINTAINERS file.
> ---
> 
> Renyong Wan (32):
>   net/sssnic: add build and doc infrastructure
>   net/sssnic: add log type and log macros
>   net/sssnic: support probe and remove
>   net/sssnic: initialize hardware base
>   net/sssnic: add event queue
>   net/sssnic/base: add message definition and utility
>   net/sssnic/base: add mailbox support
>   net/sssnic/base: add work queue
>   net/sssnic/base: add control queue
>   net/sssnic: add dev configure and infos get
>   net/sssnic: add dev MAC ops
>   net/sssnic: support dev link status
>   net/sssnic: support link status event
>   net/sssnic: support Rx queue setup and release
>   net/sssnic: support Tx queue setup and release
>   net/sssnic: support Rx queue start and stop
>   net/sssnic: support Tx queue start and stop
>   net/sssnic: add Rx interrupt support
>   net/sssnic: support dev start and stop
>   net/sssnic: support dev close and reset
>   net/sssnic: add allmulticast and promiscuous ops
>   net/sssnic: add basic and extended stats ops
>   net/sssnic: support Rx packet burst
>   net/sssnic: support Tx packet burst
>   net/sssnic: add RSS support
>   net/sssnic: support dev MTU set
>   net/sssnic: support dev queue info get
>   net/sssnic: support dev firmware version get
>   net/sssnic: add dev flow control ops
>   net/sssnic: support VLAN offload and filter
>   net/sssnic: add generic flow ops
>   net/sssnic: add VF dev support
> 
>  .mailmap                                   |    2 +
>  MAINTAINERS                                |    7 +
>  doc/guides/nics/features/sssnic.ini        |   47 +
>  doc/guides/nics/index.rst                  |    1 +
>  doc/guides/nics/sssnic.rst                 |   73 +
>  drivers/net/meson.build                    |    1 +
>  drivers/net/sssnic/base/meson.build        |   20 +
>  drivers/net/sssnic/base/sssnic_api.c       | 1943 ++++++++++++++++++++
>  drivers/net/sssnic/base/sssnic_api.h       |  498 +++++
>  drivers/net/sssnic/base/sssnic_cmd.h       |  514 ++++++
>  drivers/net/sssnic/base/sssnic_ctrlq.c     |  521 ++++++
>  drivers/net/sssnic/base/sssnic_ctrlq.h     |   58 +
>  drivers/net/sssnic/base/sssnic_eventq.c    |  461 +++++
>  drivers/net/sssnic/base/sssnic_eventq.h    |   84 +
>  drivers/net/sssnic/base/sssnic_exception.c |  116 ++
>  drivers/net/sssnic/base/sssnic_exception.h |   10 +
>  drivers/net/sssnic/base/sssnic_hw.c        |  486 +++++
>  drivers/net/sssnic/base/sssnic_hw.h        |  117 ++
>  drivers/net/sssnic/base/sssnic_mbox.c      |  615 +++++++
>  drivers/net/sssnic/base/sssnic_mbox.h      |   45 +
>  drivers/net/sssnic/base/sssnic_misc.h      |   52 +
>  drivers/net/sssnic/base/sssnic_msg.c       |  254 +++
>  drivers/net/sssnic/base/sssnic_msg.h       |  166 ++
>  drivers/net/sssnic/base/sssnic_reg.h       |  267 +++
>  drivers/net/sssnic/base/sssnic_workq.c     |  141 ++
>  drivers/net/sssnic/base/sssnic_workq.h     |  108 ++
>  drivers/net/sssnic/meson.build             |   28 +
>  drivers/net/sssnic/sssnic_ethdev.c         | 1139 ++++++++++++
>  drivers/net/sssnic/sssnic_ethdev.h         |  102 +
>  drivers/net/sssnic/sssnic_ethdev_fdir.c    | 1017 ++++++++++
>  drivers/net/sssnic/sssnic_ethdev_fdir.h    |  332 ++++
>  drivers/net/sssnic/sssnic_ethdev_flow.c    |  981 ++++++++++
>  drivers/net/sssnic/sssnic_ethdev_flow.h    |   11 +
>  drivers/net/sssnic/sssnic_ethdev_link.c    |  209 +++
>  drivers/net/sssnic/sssnic_ethdev_link.h    |   14 +
>  drivers/net/sssnic/sssnic_ethdev_rss.c     |  377 ++++
>  drivers/net/sssnic/sssnic_ethdev_rss.h     |   20 +
>  drivers/net/sssnic/sssnic_ethdev_rx.c      | 1396 ++++++++++++++
>  drivers/net/sssnic/sssnic_ethdev_rx.h      |   50 +
>  drivers/net/sssnic/sssnic_ethdev_stats.c   |  414 +++++
>  drivers/net/sssnic/sssnic_ethdev_stats.h   |   18 +
>  drivers/net/sssnic/sssnic_ethdev_tx.c      | 1123 +++++++++++
>  drivers/net/sssnic/sssnic_ethdev_tx.h      |   45 +
>  drivers/net/sssnic/sssnic_log.h            |   51 +
>  44 files changed, 13934 insertions(+)
>  create mode 100644 doc/guides/nics/features/sssnic.ini
>  create mode 100644 doc/guides/nics/sssnic.rst
>  create mode 100644 drivers/net/sssnic/base/meson.build
>  create mode 100644 drivers/net/sssnic/base/sssnic_api.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_api.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_cmd.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_eventq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_eventq.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_exception.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_exception.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_hw.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_hw.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_mbox.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_mbox.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_misc.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_msg.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_msg.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_reg.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_workq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_workq.h
>  create mode 100644 drivers/net/sssnic/meson.build
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.h
>  create mode 100644 drivers/net/sssnic/sssnic_log.h

Since secondary process is not supported...

static int
sssnic_ethdev_init(struct rte_eth_dev *ethdev)
{
	int ret;
	struct sssnic_hw *hw;
	struct sssnic_netdev *netdev;
	struct rte_pci_device *pci_dev;

	PMD_INIT_FUNC_TRACE();

	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
		return 0;

Should be something like:
	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
		PMD_DRV_LOG(ERR, "Secondary process not supported");
		return -ENOTSUP;
	}
  
Renyong Wan Sept. 19, 2023, 5:18 a.m. UTC | #6
Hello Stephen,

I'll fix it in next version of patch.

Thanks.

On 2023/9/19 11:19, Stephen Hemminger wrote:
> On Mon, 4 Sep 2023 12:56:26 +0800
> <wanry@3snic.com> wrote:
>
>> From: Renyong Wan <wanry@3snic.com>
>>
>> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
>> for 3SNIC 9x0 serials family of Ethernet adapters.
>>
>> Supported NICs are:
>>
>> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
>>
>> 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
>>
>> ---
>> v2:
>> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
>> * Removed error.h from including files.
>> * Fixed variable 'cmd_len' is uninitialized when used.
>> * Fixed 'EINVAL' undeclared.
>> * Fixed wrong format of printing uint64_t.
>> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
>>
>> v3:
>> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
>>
>> v4:
>> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
>> * Fixed coding style issue of COMPLEX_MACRO.
>> * Fixed coding style issue of REPEATED_WORD.
>>
>> v5:
>> * Fixed rebase mistake.
>> * Fixed incorrect path in MAINTAINERS file.
>> ---
>>
>> Renyong Wan (32):
>>    net/sssnic: add build and doc infrastructure
>>    net/sssnic: add log type and log macros
>>    net/sssnic: support probe and remove
>>    net/sssnic: initialize hardware base
>>    net/sssnic: add event queue
>>    net/sssnic/base: add message definition and utility
>>    net/sssnic/base: add mailbox support
>>    net/sssnic/base: add work queue
>>    net/sssnic/base: add control queue
>>    net/sssnic: add dev configure and infos get
>>    net/sssnic: add dev MAC ops
>>    net/sssnic: support dev link status
>>    net/sssnic: support link status event
>>    net/sssnic: support Rx queue setup and release
>>    net/sssnic: support Tx queue setup and release
>>    net/sssnic: support Rx queue start and stop
>>    net/sssnic: support Tx queue start and stop
>>    net/sssnic: add Rx interrupt support
>>    net/sssnic: support dev start and stop
>>    net/sssnic: support dev close and reset
>>    net/sssnic: add allmulticast and promiscuous ops
>>    net/sssnic: add basic and extended stats ops
>>    net/sssnic: support Rx packet burst
>>    net/sssnic: support Tx packet burst
>>    net/sssnic: add RSS support
>>    net/sssnic: support dev MTU set
>>    net/sssnic: support dev queue info get
>>    net/sssnic: support dev firmware version get
>>    net/sssnic: add dev flow control ops
>>    net/sssnic: support VLAN offload and filter
>>    net/sssnic: add generic flow ops
>>    net/sssnic: add VF dev support
>>
>>   .mailmap                                   |    2 +
>>   MAINTAINERS                                |    7 +
>>   doc/guides/nics/features/sssnic.ini        |   47 +
>>   doc/guides/nics/index.rst                  |    1 +
>>   doc/guides/nics/sssnic.rst                 |   73 +
>>   drivers/net/meson.build                    |    1 +
>>   drivers/net/sssnic/base/meson.build        |   20 +
>>   drivers/net/sssnic/base/sssnic_api.c       | 1943 ++++++++++++++++++++
>>   drivers/net/sssnic/base/sssnic_api.h       |  498 +++++
>>   drivers/net/sssnic/base/sssnic_cmd.h       |  514 ++++++
>>   drivers/net/sssnic/base/sssnic_ctrlq.c     |  521 ++++++
>>   drivers/net/sssnic/base/sssnic_ctrlq.h     |   58 +
>>   drivers/net/sssnic/base/sssnic_eventq.c    |  461 +++++
>>   drivers/net/sssnic/base/sssnic_eventq.h    |   84 +
>>   drivers/net/sssnic/base/sssnic_exception.c |  116 ++
>>   drivers/net/sssnic/base/sssnic_exception.h |   10 +
>>   drivers/net/sssnic/base/sssnic_hw.c        |  486 +++++
>>   drivers/net/sssnic/base/sssnic_hw.h        |  117 ++
>>   drivers/net/sssnic/base/sssnic_mbox.c      |  615 +++++++
>>   drivers/net/sssnic/base/sssnic_mbox.h      |   45 +
>>   drivers/net/sssnic/base/sssnic_misc.h      |   52 +
>>   drivers/net/sssnic/base/sssnic_msg.c       |  254 +++
>>   drivers/net/sssnic/base/sssnic_msg.h       |  166 ++
>>   drivers/net/sssnic/base/sssnic_reg.h       |  267 +++
>>   drivers/net/sssnic/base/sssnic_workq.c     |  141 ++
>>   drivers/net/sssnic/base/sssnic_workq.h     |  108 ++
>>   drivers/net/sssnic/meson.build             |   28 +
>>   drivers/net/sssnic/sssnic_ethdev.c         | 1139 ++++++++++++
>>   drivers/net/sssnic/sssnic_ethdev.h         |  102 +
>>   drivers/net/sssnic/sssnic_ethdev_fdir.c    | 1017 ++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_fdir.h    |  332 ++++
>>   drivers/net/sssnic/sssnic_ethdev_flow.c    |  981 ++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_flow.h    |   11 +
>>   drivers/net/sssnic/sssnic_ethdev_link.c    |  209 +++
>>   drivers/net/sssnic/sssnic_ethdev_link.h    |   14 +
>>   drivers/net/sssnic/sssnic_ethdev_rss.c     |  377 ++++
>>   drivers/net/sssnic/sssnic_ethdev_rss.h     |   20 +
>>   drivers/net/sssnic/sssnic_ethdev_rx.c      | 1396 ++++++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_rx.h      |   50 +
>>   drivers/net/sssnic/sssnic_ethdev_stats.c   |  414 +++++
>>   drivers/net/sssnic/sssnic_ethdev_stats.h   |   18 +
>>   drivers/net/sssnic/sssnic_ethdev_tx.c      | 1123 +++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_tx.h      |   45 +
>>   drivers/net/sssnic/sssnic_log.h            |   51 +
>>   44 files changed, 13934 insertions(+)
>>   create mode 100644 doc/guides/nics/features/sssnic.ini
>>   create mode 100644 doc/guides/nics/sssnic.rst
>>   create mode 100644 drivers/net/sssnic/base/meson.build
>>   create mode 100644 drivers/net/sssnic/base/sssnic_api.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_api.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_cmd.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_eventq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_eventq.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_exception.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_exception.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_hw.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_hw.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_mbox.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_mbox.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_misc.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_msg.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_msg.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_reg.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_workq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_workq.h
>>   create mode 100644 drivers/net/sssnic/meson.build
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.h
>>   create mode 100644 drivers/net/sssnic/sssnic_log.h
>>
> There seem to be a leftover stub, after all merged together.
>
>
> static int
> sssnic_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
> {
> 	RTE_SET_USED(pci_drv);     <<< this is wrong, you do use it by passing to generic probe
> 	PMD_INIT_FUNC_TRACE();
>
> 	return rte_eth_dev_pci_generic_probe(pci_dev,
> 		sizeof(struct sssnic_netdev), sssnic_ethdev_init);
> }
>
> It is simpler to used __rte_unused here.
>
> int
> sssnic_ethdev_flow_ops_get(struct rte_eth_dev *ethdev,
> 	const struct rte_flow_ops **ops)
> {
> 	RTE_SET_USED(ethdev);
>
> 	*ops = &sssnic_ethdev_flow_ops;
>
> 	return 0;
> }
>
  
Renyong Wan Sept. 19, 2023, 5:18 a.m. UTC | #7
Hello Stephen,

I'll fix it in next version of patch.

Thanks.

On 2023/9/19 11:21, Stephen Hemminger wrote:
> On Mon, 4 Sep 2023 12:56:26 +0800
> <wanry@3snic.com> wrote:
>
>> From: Renyong Wan <wanry@3snic.com>
>>
>> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
>> for 3SNIC 9x0 serials family of Ethernet adapters.
>>
>> Supported NICs are:
>>
>> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
>>
>> 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
>>
>> ---
>> v2:
>> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
>> * Removed error.h from including files.
>> * Fixed variable 'cmd_len' is uninitialized when used.
>> * Fixed 'EINVAL' undeclared.
>> * Fixed wrong format of printing uint64_t.
>> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
>>
>> v3:
>> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
>>
>> v4:
>> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
>> * Fixed coding style issue of COMPLEX_MACRO.
>> * Fixed coding style issue of REPEATED_WORD.
>>
>> v5:
>> * Fixed rebase mistake.
>> * Fixed incorrect path in MAINTAINERS file.
>> ---
>>
>> Renyong Wan (32):
>>    net/sssnic: add build and doc infrastructure
>>    net/sssnic: add log type and log macros
>>    net/sssnic: support probe and remove
>>    net/sssnic: initialize hardware base
>>    net/sssnic: add event queue
>>    net/sssnic/base: add message definition and utility
>>    net/sssnic/base: add mailbox support
>>    net/sssnic/base: add work queue
>>    net/sssnic/base: add control queue
>>    net/sssnic: add dev configure and infos get
>>    net/sssnic: add dev MAC ops
>>    net/sssnic: support dev link status
>>    net/sssnic: support link status event
>>    net/sssnic: support Rx queue setup and release
>>    net/sssnic: support Tx queue setup and release
>>    net/sssnic: support Rx queue start and stop
>>    net/sssnic: support Tx queue start and stop
>>    net/sssnic: add Rx interrupt support
>>    net/sssnic: support dev start and stop
>>    net/sssnic: support dev close and reset
>>    net/sssnic: add allmulticast and promiscuous ops
>>    net/sssnic: add basic and extended stats ops
>>    net/sssnic: support Rx packet burst
>>    net/sssnic: support Tx packet burst
>>    net/sssnic: add RSS support
>>    net/sssnic: support dev MTU set
>>    net/sssnic: support dev queue info get
>>    net/sssnic: support dev firmware version get
>>    net/sssnic: add dev flow control ops
>>    net/sssnic: support VLAN offload and filter
>>    net/sssnic: add generic flow ops
>>    net/sssnic: add VF dev support
>>
>>   .mailmap                                   |    2 +
>>   MAINTAINERS                                |    7 +
>>   doc/guides/nics/features/sssnic.ini        |   47 +
>>   doc/guides/nics/index.rst                  |    1 +
>>   doc/guides/nics/sssnic.rst                 |   73 +
>>   drivers/net/meson.build                    |    1 +
>>   drivers/net/sssnic/base/meson.build        |   20 +
>>   drivers/net/sssnic/base/sssnic_api.c       | 1943 ++++++++++++++++++++
>>   drivers/net/sssnic/base/sssnic_api.h       |  498 +++++
>>   drivers/net/sssnic/base/sssnic_cmd.h       |  514 ++++++
>>   drivers/net/sssnic/base/sssnic_ctrlq.c     |  521 ++++++
>>   drivers/net/sssnic/base/sssnic_ctrlq.h     |   58 +
>>   drivers/net/sssnic/base/sssnic_eventq.c    |  461 +++++
>>   drivers/net/sssnic/base/sssnic_eventq.h    |   84 +
>>   drivers/net/sssnic/base/sssnic_exception.c |  116 ++
>>   drivers/net/sssnic/base/sssnic_exception.h |   10 +
>>   drivers/net/sssnic/base/sssnic_hw.c        |  486 +++++
>>   drivers/net/sssnic/base/sssnic_hw.h        |  117 ++
>>   drivers/net/sssnic/base/sssnic_mbox.c      |  615 +++++++
>>   drivers/net/sssnic/base/sssnic_mbox.h      |   45 +
>>   drivers/net/sssnic/base/sssnic_misc.h      |   52 +
>>   drivers/net/sssnic/base/sssnic_msg.c       |  254 +++
>>   drivers/net/sssnic/base/sssnic_msg.h       |  166 ++
>>   drivers/net/sssnic/base/sssnic_reg.h       |  267 +++
>>   drivers/net/sssnic/base/sssnic_workq.c     |  141 ++
>>   drivers/net/sssnic/base/sssnic_workq.h     |  108 ++
>>   drivers/net/sssnic/meson.build             |   28 +
>>   drivers/net/sssnic/sssnic_ethdev.c         | 1139 ++++++++++++
>>   drivers/net/sssnic/sssnic_ethdev.h         |  102 +
>>   drivers/net/sssnic/sssnic_ethdev_fdir.c    | 1017 ++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_fdir.h    |  332 ++++
>>   drivers/net/sssnic/sssnic_ethdev_flow.c    |  981 ++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_flow.h    |   11 +
>>   drivers/net/sssnic/sssnic_ethdev_link.c    |  209 +++
>>   drivers/net/sssnic/sssnic_ethdev_link.h    |   14 +
>>   drivers/net/sssnic/sssnic_ethdev_rss.c     |  377 ++++
>>   drivers/net/sssnic/sssnic_ethdev_rss.h     |   20 +
>>   drivers/net/sssnic/sssnic_ethdev_rx.c      | 1396 ++++++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_rx.h      |   50 +
>>   drivers/net/sssnic/sssnic_ethdev_stats.c   |  414 +++++
>>   drivers/net/sssnic/sssnic_ethdev_stats.h   |   18 +
>>   drivers/net/sssnic/sssnic_ethdev_tx.c      | 1123 +++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_tx.h      |   45 +
>>   drivers/net/sssnic/sssnic_log.h            |   51 +
>>   44 files changed, 13934 insertions(+)
>>   create mode 100644 doc/guides/nics/features/sssnic.ini
>>   create mode 100644 doc/guides/nics/sssnic.rst
>>   create mode 100644 drivers/net/sssnic/base/meson.build
>>   create mode 100644 drivers/net/sssnic/base/sssnic_api.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_api.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_cmd.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_eventq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_eventq.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_exception.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_exception.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_hw.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_hw.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_mbox.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_mbox.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_misc.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_msg.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_msg.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_reg.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_workq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_workq.h
>>   create mode 100644 drivers/net/sssnic/meson.build
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.h
>>   create mode 100644 drivers/net/sssnic/sssnic_log.h
>>
> Since the PMD_DRV_LOG() macro you defined adds a newline,
> a new line should not be needed on format string in this driver.
>
> Doing a search for \n found this one:
>
> int
> sssnic_ethdev_rx_intr_init(struct rte_eth_dev *ethdev)
> {
> 	struct rte_intr_handle *intr_handle;
> 	struct sssnic_ethdev_rxq *rxq;
> 	uint32_t nb_rxq, i;
> 	int vec;
> 	int ret;
>
> 	if (!ethdev->data->dev_conf.intr_conf.rxq)
> 		return 0;
>
> 	intr_handle = ethdev->intr_handle;
>
> 	if (!rte_intr_cap_multiple(intr_handle)) {
> 		PMD_DRV_LOG(ERR,
> 			"Rx interrupts require MSI-X interrupts (vfio-pci driver)\n");
  
Renyong Wan Sept. 19, 2023, 5:19 a.m. UTC | #8
Hello Stephen,

I'll fix it in next version of patch.

Thanks.

On 2023/9/19 11:23, Stephen Hemminger wrote:
> On Mon, 4 Sep 2023 12:56:26 +0800
> <wanry@3snic.com> wrote:
>
>> From: Renyong Wan <wanry@3snic.com>
>>
>> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
>> for 3SNIC 9x0 serials family of Ethernet adapters.
>>
>> Supported NICs are:
>>
>> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
>>
>> 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
>>
>> ---
>> v2:
>> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
>> * Removed error.h from including files.
>> * Fixed variable 'cmd_len' is uninitialized when used.
>> * Fixed 'EINVAL' undeclared.
>> * Fixed wrong format of printing uint64_t.
>> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
>>
>> v3:
>> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
>>
>> v4:
>> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
>> * Fixed coding style issue of COMPLEX_MACRO.
>> * Fixed coding style issue of REPEATED_WORD.
>>
>> v5:
>> * Fixed rebase mistake.
>> * Fixed incorrect path in MAINTAINERS file.
>> ---
>>
>> Renyong Wan (32):
>>    net/sssnic: add build and doc infrastructure
>>    net/sssnic: add log type and log macros
>>    net/sssnic: support probe and remove
>>    net/sssnic: initialize hardware base
>>    net/sssnic: add event queue
>>    net/sssnic/base: add message definition and utility
>>    net/sssnic/base: add mailbox support
>>    net/sssnic/base: add work queue
>>    net/sssnic/base: add control queue
>>    net/sssnic: add dev configure and infos get
>>    net/sssnic: add dev MAC ops
>>    net/sssnic: support dev link status
>>    net/sssnic: support link status event
>>    net/sssnic: support Rx queue setup and release
>>    net/sssnic: support Tx queue setup and release
>>    net/sssnic: support Rx queue start and stop
>>    net/sssnic: support Tx queue start and stop
>>    net/sssnic: add Rx interrupt support
>>    net/sssnic: support dev start and stop
>>    net/sssnic: support dev close and reset
>>    net/sssnic: add allmulticast and promiscuous ops
>>    net/sssnic: add basic and extended stats ops
>>    net/sssnic: support Rx packet burst
>>    net/sssnic: support Tx packet burst
>>    net/sssnic: add RSS support
>>    net/sssnic: support dev MTU set
>>    net/sssnic: support dev queue info get
>>    net/sssnic: support dev firmware version get
>>    net/sssnic: add dev flow control ops
>>    net/sssnic: support VLAN offload and filter
>>    net/sssnic: add generic flow ops
>>    net/sssnic: add VF dev support
>>
>>   .mailmap                                   |    2 +
>>   MAINTAINERS                                |    7 +
>>   doc/guides/nics/features/sssnic.ini        |   47 +
>>   doc/guides/nics/index.rst                  |    1 +
>>   doc/guides/nics/sssnic.rst                 |   73 +
>>   drivers/net/meson.build                    |    1 +
>>   drivers/net/sssnic/base/meson.build        |   20 +
>>   drivers/net/sssnic/base/sssnic_api.c       | 1943 ++++++++++++++++++++
>>   drivers/net/sssnic/base/sssnic_api.h       |  498 +++++
>>   drivers/net/sssnic/base/sssnic_cmd.h       |  514 ++++++
>>   drivers/net/sssnic/base/sssnic_ctrlq.c     |  521 ++++++
>>   drivers/net/sssnic/base/sssnic_ctrlq.h     |   58 +
>>   drivers/net/sssnic/base/sssnic_eventq.c    |  461 +++++
>>   drivers/net/sssnic/base/sssnic_eventq.h    |   84 +
>>   drivers/net/sssnic/base/sssnic_exception.c |  116 ++
>>   drivers/net/sssnic/base/sssnic_exception.h |   10 +
>>   drivers/net/sssnic/base/sssnic_hw.c        |  486 +++++
>>   drivers/net/sssnic/base/sssnic_hw.h        |  117 ++
>>   drivers/net/sssnic/base/sssnic_mbox.c      |  615 +++++++
>>   drivers/net/sssnic/base/sssnic_mbox.h      |   45 +
>>   drivers/net/sssnic/base/sssnic_misc.h      |   52 +
>>   drivers/net/sssnic/base/sssnic_msg.c       |  254 +++
>>   drivers/net/sssnic/base/sssnic_msg.h       |  166 ++
>>   drivers/net/sssnic/base/sssnic_reg.h       |  267 +++
>>   drivers/net/sssnic/base/sssnic_workq.c     |  141 ++
>>   drivers/net/sssnic/base/sssnic_workq.h     |  108 ++
>>   drivers/net/sssnic/meson.build             |   28 +
>>   drivers/net/sssnic/sssnic_ethdev.c         | 1139 ++++++++++++
>>   drivers/net/sssnic/sssnic_ethdev.h         |  102 +
>>   drivers/net/sssnic/sssnic_ethdev_fdir.c    | 1017 ++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_fdir.h    |  332 ++++
>>   drivers/net/sssnic/sssnic_ethdev_flow.c    |  981 ++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_flow.h    |   11 +
>>   drivers/net/sssnic/sssnic_ethdev_link.c    |  209 +++
>>   drivers/net/sssnic/sssnic_ethdev_link.h    |   14 +
>>   drivers/net/sssnic/sssnic_ethdev_rss.c     |  377 ++++
>>   drivers/net/sssnic/sssnic_ethdev_rss.h     |   20 +
>>   drivers/net/sssnic/sssnic_ethdev_rx.c      | 1396 ++++++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_rx.h      |   50 +
>>   drivers/net/sssnic/sssnic_ethdev_stats.c   |  414 +++++
>>   drivers/net/sssnic/sssnic_ethdev_stats.h   |   18 +
>>   drivers/net/sssnic/sssnic_ethdev_tx.c      | 1123 +++++++++++
>>   drivers/net/sssnic/sssnic_ethdev_tx.h      |   45 +
>>   drivers/net/sssnic/sssnic_log.h            |   51 +
>>   44 files changed, 13934 insertions(+)
>>   create mode 100644 doc/guides/nics/features/sssnic.ini
>>   create mode 100644 doc/guides/nics/sssnic.rst
>>   create mode 100644 drivers/net/sssnic/base/meson.build
>>   create mode 100644 drivers/net/sssnic/base/sssnic_api.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_api.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_cmd.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_eventq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_eventq.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_exception.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_exception.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_hw.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_hw.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_mbox.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_mbox.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_misc.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_msg.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_msg.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_reg.h
>>   create mode 100644 drivers/net/sssnic/base/sssnic_workq.c
>>   create mode 100644 drivers/net/sssnic/base/sssnic_workq.h
>>   create mode 100644 drivers/net/sssnic/meson.build
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.h
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.c
>>   create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.h
>>   create mode 100644 drivers/net/sssnic/sssnic_log.h
> Since secondary process is not supported...
>
> static int
> sssnic_ethdev_init(struct rte_eth_dev *ethdev)
> {
> 	int ret;
> 	struct sssnic_hw *hw;
> 	struct sssnic_netdev *netdev;
> 	struct rte_pci_device *pci_dev;
>
> 	PMD_INIT_FUNC_TRACE();
>
> 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> 		return 0;
>
> Should be something like:
> 	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
> 		PMD_DRV_LOG(ERR, "Secondary process not supported");
> 		return -ENOTSUP;
> 	}
  
Stephen Hemminger Sept. 19, 2023, 3:24 p.m. UTC | #9
On Mon, 4 Sep 2023 12:56:26 +0800
<wanry@3snic.com> wrote:

> From: Renyong Wan <wanry@3snic.com>
> 
> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
> for 3SNIC 9x0 serials family of Ethernet adapters.
> 
> Supported NICs are:
> 
> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
> 
> 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
> 
> ---
> v2:
> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
> * Removed error.h from including files.
> * Fixed variable 'cmd_len' is uninitialized when used.
> * Fixed 'EINVAL' undeclared.
> * Fixed wrong format of printing uint64_t.
> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
> 
> v3:
> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
> 
> v4:
> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
> * Fixed coding style issue of COMPLEX_MACRO.
> * Fixed coding style issue of REPEATED_WORD.
> 
> v5:
> * Fixed rebase mistake.
> * Fixed incorrect path in MAINTAINERS file.
> ---
> 
> Renyong Wan (32):
>   net/sssnic: add build and doc infrastructure
>   net/sssnic: add log type and log macros
>   net/sssnic: support probe and remove
>   net/sssnic: initialize hardware base
>   net/sssnic: add event queue
>   net/sssnic/base: add message definition and utility
>   net/sssnic/base: add mailbox support
>   net/sssnic/base: add work queue
>   net/sssnic/base: add control queue
>   net/sssnic: add dev configure and infos get
>   net/sssnic: add dev MAC ops
>   net/sssnic: support dev link status
>   net/sssnic: support link status event
>   net/sssnic: support Rx queue setup and release
>   net/sssnic: support Tx queue setup and release
>   net/sssnic: support Rx queue start and stop
>   net/sssnic: support Tx queue start and stop
>   net/sssnic: add Rx interrupt support
>   net/sssnic: support dev start and stop
>   net/sssnic: support dev close and reset
>   net/sssnic: add allmulticast and promiscuous ops
>   net/sssnic: add basic and extended stats ops
>   net/sssnic: support Rx packet burst
>   net/sssnic: support Tx packet burst
>   net/sssnic: add RSS support
>   net/sssnic: support dev MTU set
>   net/sssnic: support dev queue info get
>   net/sssnic: support dev firmware version get
>   net/sssnic: add dev flow control ops
>   net/sssnic: support VLAN offload and filter
>   net/sssnic: add generic flow ops
>   net/sssnic: add VF dev support
> 
>  .mailmap                                   |    2 +
>  MAINTAINERS                                |    7 +
>  doc/guides/nics/features/sssnic.ini        |   47 +
>  doc/guides/nics/index.rst                  |    1 +
>  doc/guides/nics/sssnic.rst                 |   73 +
>  drivers/net/meson.build                    |    1 +
>  drivers/net/sssnic/base/meson.build        |   20 +
>  drivers/net/sssnic/base/sssnic_api.c       | 1943 ++++++++++++++++++++
>  drivers/net/sssnic/base/sssnic_api.h       |  498 +++++
>  drivers/net/sssnic/base/sssnic_cmd.h       |  514 ++++++
>  drivers/net/sssnic/base/sssnic_ctrlq.c     |  521 ++++++
>  drivers/net/sssnic/base/sssnic_ctrlq.h     |   58 +
>  drivers/net/sssnic/base/sssnic_eventq.c    |  461 +++++
>  drivers/net/sssnic/base/sssnic_eventq.h    |   84 +
>  drivers/net/sssnic/base/sssnic_exception.c |  116 ++
>  drivers/net/sssnic/base/sssnic_exception.h |   10 +
>  drivers/net/sssnic/base/sssnic_hw.c        |  486 +++++
>  drivers/net/sssnic/base/sssnic_hw.h        |  117 ++
>  drivers/net/sssnic/base/sssnic_mbox.c      |  615 +++++++
>  drivers/net/sssnic/base/sssnic_mbox.h      |   45 +
>  drivers/net/sssnic/base/sssnic_misc.h      |   52 +
>  drivers/net/sssnic/base/sssnic_msg.c       |  254 +++
>  drivers/net/sssnic/base/sssnic_msg.h       |  166 ++
>  drivers/net/sssnic/base/sssnic_reg.h       |  267 +++
>  drivers/net/sssnic/base/sssnic_workq.c     |  141 ++
>  drivers/net/sssnic/base/sssnic_workq.h     |  108 ++
>  drivers/net/sssnic/meson.build             |   28 +
>  drivers/net/sssnic/sssnic_ethdev.c         | 1139 ++++++++++++
>  drivers/net/sssnic/sssnic_ethdev.h         |  102 +
>  drivers/net/sssnic/sssnic_ethdev_fdir.c    | 1017 ++++++++++
>  drivers/net/sssnic/sssnic_ethdev_fdir.h    |  332 ++++
>  drivers/net/sssnic/sssnic_ethdev_flow.c    |  981 ++++++++++
>  drivers/net/sssnic/sssnic_ethdev_flow.h    |   11 +
>  drivers/net/sssnic/sssnic_ethdev_link.c    |  209 +++
>  drivers/net/sssnic/sssnic_ethdev_link.h    |   14 +
>  drivers/net/sssnic/sssnic_ethdev_rss.c     |  377 ++++
>  drivers/net/sssnic/sssnic_ethdev_rss.h     |   20 +
>  drivers/net/sssnic/sssnic_ethdev_rx.c      | 1396 ++++++++++++++
>  drivers/net/sssnic/sssnic_ethdev_rx.h      |   50 +
>  drivers/net/sssnic/sssnic_ethdev_stats.c   |  414 +++++
>  drivers/net/sssnic/sssnic_ethdev_stats.h   |   18 +
>  drivers/net/sssnic/sssnic_ethdev_tx.c      | 1123 +++++++++++
>  drivers/net/sssnic/sssnic_ethdev_tx.h      |   45 +
>  drivers/net/sssnic/sssnic_log.h            |   51 +
>  44 files changed, 13934 insertions(+)
>  create mode 100644 doc/guides/nics/features/sssnic.ini
>  create mode 100644 doc/guides/nics/sssnic.rst
>  create mode 100644 drivers/net/sssnic/base/meson.build
>  create mode 100644 drivers/net/sssnic/base/sssnic_api.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_api.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_cmd.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_ctrlq.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_eventq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_eventq.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_exception.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_exception.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_hw.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_hw.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_mbox.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_mbox.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_misc.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_msg.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_msg.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_reg.h
>  create mode 100644 drivers/net/sssnic/base/sssnic_workq.c
>  create mode 100644 drivers/net/sssnic/base/sssnic_workq.h
>  create mode 100644 drivers/net/sssnic/meson.build
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_fdir.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_flow.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_link.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rss.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_rx.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_stats.h
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.c
>  create mode 100644 drivers/net/sssnic/sssnic_ethdev_tx.h
>  create mode 100644 drivers/net/sssnic/sssnic_log.h
> 

Overall this driver looks fine, and could be merged as is.
All my comments are little things that could be modified at anytime no urgency.

Series-Acked-by: Stephen Hemminger <stephen@networkplumber.org>
  
Ferruh Yigit Sept. 26, 2023, 1:13 p.m. UTC | #10
On 9/4/2023 5:56 AM, wanry@3snic.com wrote:
> From: Renyong Wan <wanry@3snic.com>
> 
> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
> for 3SNIC 9x0 serials family of Ethernet adapters.
> 
> Supported NICs are:
> 
> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
> 
> 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
> 
> ---
> v2:
> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
> * Removed error.h from including files.
> * Fixed variable 'cmd_len' is uninitialized when used.
> * Fixed 'EINVAL' undeclared.
> * Fixed wrong format of printing uint64_t.
> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
> 
> v3:
> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
> 
> v4:
> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
> * Fixed coding style issue of COMPLEX_MACRO.
> * Fixed coding style issue of REPEATED_WORD.
> 
> v5:
> * Fixed rebase mistake.
> * Fixed incorrect path in MAINTAINERS file.
> ---
> 
> Renyong Wan (32):
>   net/sssnic: add build and doc infrastructure
>   net/sssnic: add log type and log macros
>   net/sssnic: support probe and remove
>   net/sssnic: initialize hardware base
>   net/sssnic: add event queue
>   net/sssnic/base: add message definition and utility
>   net/sssnic/base: add mailbox support
>   net/sssnic/base: add work queue
>   net/sssnic/base: add control queue
>   net/sssnic: add dev configure and infos get
>   net/sssnic: add dev MAC ops
>   net/sssnic: support dev link status
>   net/sssnic: support link status event
>   net/sssnic: support Rx queue setup and release
>   net/sssnic: support Tx queue setup and release
>   net/sssnic: support Rx queue start and stop
>   net/sssnic: support Tx queue start and stop
>   net/sssnic: add Rx interrupt support
>   net/sssnic: support dev start and stop
>   net/sssnic: support dev close and reset
>   net/sssnic: add allmulticast and promiscuous ops
>   net/sssnic: add basic and extended stats ops
>   net/sssnic: support Rx packet burst
>   net/sssnic: support Tx packet burst
>   net/sssnic: add RSS support
>   net/sssnic: support dev MTU set
>   net/sssnic: support dev queue info get
>   net/sssnic: support dev firmware version get
>   net/sssnic: add dev flow control ops
>   net/sssnic: support VLAN offload and filter
>   net/sssnic: add generic flow ops
>   net/sssnic: add VF dev support
> 

Hi Renyong,

Driver mostly looks good, I did put some minor comments, I guess driver
can be merged soon with those issues addressed.

Also agree on Stephen's comments, if you apply them in next version,
please feel free to keep Stephen's ack in next version.

Thanks,
ferruh
  
Ferruh Yigit March 29, 2024, 11:32 a.m. UTC | #11
On 9/26/2023 2:13 PM, Ferruh Yigit wrote:
> On 9/4/2023 5:56 AM, wanry@3snic.com wrote:
>> From: Renyong Wan <wanry@3snic.com>
>>
>> The sssnic PMD (**librte_pmd_sssnic**) provides poll mode driver support
>> for 3SNIC 9x0 serials family of Ethernet adapters.
>>
>> Supported NICs are:
>>
>> - 3S910 Dual Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port SFP28 10/25GbE Ethernet adapter
>> - 3S920 Quad Port QSFP28 100GbE Ethernet adapter
>>
>> 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
>>
>> ---
>> v2:
>> * Fixed 'Title underline too short' in doc/guides/nics/sssnic.rst.
>> * Removed error.h from including files.
>> * Fixed variable 'cmd_len' is uninitialized when used.
>> * Fixed 'EINVAL' undeclared.
>> * Fixed wrong format of printing uint64_t.
>> * Fixed 'mask->hdr.src_addr' will always evaluate to 'true'.
>>
>> v3:
>> * Fixed dereferencing type-punned pointer in base/sssnic_mbox.c.
>>
>> v4:
>> * Fixed dereferencing type-punned pointer in base/sssnic_eventq.c.
>> * Fixed coding style issue of COMPLEX_MACRO.
>> * Fixed coding style issue of REPEATED_WORD.
>>
>> v5:
>> * Fixed rebase mistake.
>> * Fixed incorrect path in MAINTAINERS file.
>> ---
>>
>> Renyong Wan (32):
>>   net/sssnic: add build and doc infrastructure
>>   net/sssnic: add log type and log macros
>>   net/sssnic: support probe and remove
>>   net/sssnic: initialize hardware base
>>   net/sssnic: add event queue
>>   net/sssnic/base: add message definition and utility
>>   net/sssnic/base: add mailbox support
>>   net/sssnic/base: add work queue
>>   net/sssnic/base: add control queue
>>   net/sssnic: add dev configure and infos get
>>   net/sssnic: add dev MAC ops
>>   net/sssnic: support dev link status
>>   net/sssnic: support link status event
>>   net/sssnic: support Rx queue setup and release
>>   net/sssnic: support Tx queue setup and release
>>   net/sssnic: support Rx queue start and stop
>>   net/sssnic: support Tx queue start and stop
>>   net/sssnic: add Rx interrupt support
>>   net/sssnic: support dev start and stop
>>   net/sssnic: support dev close and reset
>>   net/sssnic: add allmulticast and promiscuous ops
>>   net/sssnic: add basic and extended stats ops
>>   net/sssnic: support Rx packet burst
>>   net/sssnic: support Tx packet burst
>>   net/sssnic: add RSS support
>>   net/sssnic: support dev MTU set
>>   net/sssnic: support dev queue info get
>>   net/sssnic: support dev firmware version get
>>   net/sssnic: add dev flow control ops
>>   net/sssnic: support VLAN offload and filter
>>   net/sssnic: add generic flow ops
>>   net/sssnic: add VF dev support
>>
> 
> Hi Renyong,
> 
> Driver mostly looks good, I did put some minor comments, I guess driver
> can be merged soon with those issues addressed.
> 
> Also agree on Stephen's comments, if you apply them in next version,
> please feel free to keep Stephen's ack in next version.
> 
> 

Hi Renyong,

v5 was almost there, will there be a new version for the v24.07?