[PATCH v10 00/28] [v10]drivers/net Add Support mucse N10 Pmd Driver
Stephen Hemminger
stephen at networkplumber.org
Tue Feb 11 17:24:22 CET 2025
On Tue, 11 Feb 2025 23:06:10 +0800
Wenbo Cao <caowenbo at mucse.com> wrote:
> For This patchset just to support the basic chip init work
> and user can just found the eth_dev, but can't control more.
> For Now just support 2*10g nic,the chip can support
> 2*10g,4*10g,4*1g,8*1g,8*10g.
> The Feature rx side can support rx-cksum-offload,rss,vlan-filter
> flow_clow,uncast_filter,mcast_filter,1588,Jumbo-frame
> The Feature tx side can support tx-cksum-offload,tso,vxlan-tso
> flow director base on ntuple pattern of tcp/udp/ip/ eth_hdr->type
> for sriov is also support.
>
> Because of the chip design defect, for multiple-port mode
> one pci-bdf will have multiple-port (max can have four ports)
> so this code must be care of one bdf init multiple-port.
>
> v10:
> * fixed mingw windows meson issue
> * rnp not support windows for now.
> * change ffs use osdep rte_fls_u32
>
> v9:
> * fixed commit log format check by devtools.
> * fixed code compile issue.
>
> v8:
> * fixed codespell issue.
> * fixed MAINTAINERS file
>
> v7:
> * add support nic basic feature such as rss vlan strip/filter,
> * mtu-change recv/send scater-recv/mutltiple-send.
> * fixed code rationality, advised by Ferruh Yigit.
> v6:
> * fixed the doc(rst) format problem advise by Thomas Monjalon
>
> v5:
> * fixed the symbol name require by the style documentation
>
> v4:
> * one patch has been forgot to upload :(
>
> v3:
> * fixed http://dpdk.org/patch/129830 FreeBSD 13 compile Issue
> * change iobar type to void suggest by Stephen Hemminger
> * add KMOD_DEP support for vfio-pci
> * change run-cmd argument parse check for invalid extra_args
>
> v2:
> * fixed MAINTAIN maillist fullname format
> * fixed driver/net/meson the order issue of new driver to driver list
> * improve virtual point function usage suggest by Stephen Hemminger
>
> Wenbo Cao (28):
> net/rnp: add skeleton
> net/rnp: add ethdev probe and remove
> net/rnp: add log
> net/rnp: support mailbox basic operate
> net/rnp: add device init and uninit
> net/rnp: add get device information operation
> net/rnp: add support MAC promisc mode
> net/rnp: add queue setup and release operations
> net/rnp: add queue stop and start operations
> net/rnp: add support device start stop operations
> net/rnp: add RSS support operations
> net/rnp: add support link update operations
> net/rnp: add support link setup operations
> net/rnp: add Rx burst simple support
> net/rnp: add Tx burst simple support
> net/rnp: add MTU set operation
> net/rnp: add Rx scatter segment version
> net/rnp: add Tx multiple segment version
> net/rnp: add support basic stats operation
> net/rnp: add support xstats operation
> net/rnp: add unicast MAC filter operation
> net/rnp: add supported packet types
> net/rnp: add support Rx checksum offload
> net/rnp: add support Tx TSO offload
> net/rnp: support VLAN offloads
> net/rnp: add support VLAN filters operations
> net/rnp: add queue info operation
> net/rnp: support Rx/Tx burst mode info
>
> .mailmap | 1 +
> MAINTAINERS | 6 +
> doc/guides/nics/features/rnp.ini | 33 +
> doc/guides/nics/index.rst | 1 +
> doc/guides/nics/rnp.rst | 101 ++
> drivers/net/meson.build | 1 +
> drivers/net/rnp/base/meson.build | 28 +
> drivers/net/rnp/base/rnp_bdq_if.c | 398 ++++++
> drivers/net/rnp/base/rnp_bdq_if.h | 154 +++
> drivers/net/rnp/base/rnp_bitrev.h | 64 +
> drivers/net/rnp/base/rnp_common.c | 103 ++
> drivers/net/rnp/base/rnp_common.h | 17 +
> drivers/net/rnp/base/rnp_crc32.c | 37 +
> drivers/net/rnp/base/rnp_crc32.h | 10 +
> drivers/net/rnp/base/rnp_dma_regs.h | 68 +
> drivers/net/rnp/base/rnp_eth_regs.h | 90 ++
> drivers/net/rnp/base/rnp_fw_cmd.c | 162 +++
> drivers/net/rnp/base/rnp_fw_cmd.h | 358 ++++++
> drivers/net/rnp/base/rnp_hw.h | 136 ++
> drivers/net/rnp/base/rnp_mac.c | 366 ++++++
> drivers/net/rnp/base/rnp_mac.h | 34 +
> drivers/net/rnp/base/rnp_mac_regs.h | 207 +++
> drivers/net/rnp/base/rnp_mbx.c | 512 ++++++++
> drivers/net/rnp/base/rnp_mbx.h | 58 +
> drivers/net/rnp/base/rnp_mbx_fw.c | 499 ++++++++
> drivers/net/rnp/base/rnp_mbx_fw.h | 24 +
> drivers/net/rnp/base/rnp_osdep.h | 175 +++
> drivers/net/rnp/meson.build | 27 +
> drivers/net/rnp/rnp.h | 258 ++++
> drivers/net/rnp/rnp_ethdev.c | 1845 +++++++++++++++++++++++++++
> drivers/net/rnp/rnp_link.c | 439 +++++++
> drivers/net/rnp/rnp_link.h | 38 +
> drivers/net/rnp/rnp_logs.h | 36 +
> drivers/net/rnp/rnp_rss.c | 367 ++++++
> drivers/net/rnp/rnp_rss.h | 43 +
> drivers/net/rnp/rnp_rxtx.c | 1820 ++++++++++++++++++++++++++
> drivers/net/rnp/rnp_rxtx.h | 162 +++
> 37 files changed, 8678 insertions(+)
> create mode 100644 doc/guides/nics/features/rnp.ini
> create mode 100644 doc/guides/nics/rnp.rst
> create mode 100644 drivers/net/rnp/base/meson.build
> create mode 100644 drivers/net/rnp/base/rnp_bdq_if.c
> create mode 100644 drivers/net/rnp/base/rnp_bdq_if.h
> create mode 100644 drivers/net/rnp/base/rnp_bitrev.h
> create mode 100644 drivers/net/rnp/base/rnp_common.c
> create mode 100644 drivers/net/rnp/base/rnp_common.h
> create mode 100644 drivers/net/rnp/base/rnp_crc32.c
> create mode 100644 drivers/net/rnp/base/rnp_crc32.h
> create mode 100644 drivers/net/rnp/base/rnp_dma_regs.h
> create mode 100644 drivers/net/rnp/base/rnp_eth_regs.h
> create mode 100644 drivers/net/rnp/base/rnp_fw_cmd.c
> create mode 100644 drivers/net/rnp/base/rnp_fw_cmd.h
> create mode 100644 drivers/net/rnp/base/rnp_hw.h
> create mode 100644 drivers/net/rnp/base/rnp_mac.c
> create mode 100644 drivers/net/rnp/base/rnp_mac.h
> create mode 100644 drivers/net/rnp/base/rnp_mac_regs.h
> create mode 100644 drivers/net/rnp/base/rnp_mbx.c
> create mode 100644 drivers/net/rnp/base/rnp_mbx.h
> create mode 100644 drivers/net/rnp/base/rnp_mbx_fw.c
> create mode 100644 drivers/net/rnp/base/rnp_mbx_fw.h
> create mode 100644 drivers/net/rnp/base/rnp_osdep.h
> create mode 100644 drivers/net/rnp/meson.build
> create mode 100644 drivers/net/rnp/rnp.h
> create mode 100644 drivers/net/rnp/rnp_ethdev.c
> create mode 100644 drivers/net/rnp/rnp_link.c
> create mode 100644 drivers/net/rnp/rnp_link.h
> create mode 100644 drivers/net/rnp/rnp_logs.h
> create mode 100644 drivers/net/rnp/rnp_rss.c
> create mode 100644 drivers/net/rnp/rnp_rss.h
> create mode 100644 drivers/net/rnp/rnp_rxtx.c
> create mode 100644 drivers/net/rnp/rnp_rxtx.h
Review checklist for rnp v9 patches
Mark items with:
✔ passed
✘ Failed
Basic hygiene
✘ Look at CI results in patchwork; notify submitter if any failures
✔ Merge cleanly with git am; look for missing newline at EOF etc
✘ Run checkpatches; warnings are ok, but look more carefully.
Lots of warnings from base code (allowed but not preferred).
The osdep code should be using rte_common.h
WARNING:PREFER_DEFINED_ATTRIBUTE_MACRO: Prefer __packed over __attribute__((packed))
#999: FILE: drivers/net/rnp/base/rnp_osdep.h:49:
+#define _PACKED_ALIGN4 __attribute__((packed, aligned(4)))
Warning in drivers/net/rnp/base/rnp_osdep.h:
Using compiler attribute directly
Warning in drivers/net/rnp/base/rnp_hw.h:
Do not use variadic argument pack in macros
Warning in drivers/net/rnp/rnp_ethdev.c:
Using __builtin helpers, prefer EAL macros
Warning in drivers/net/rnp/rnp_ethdev.c:
Using rte_atomicNN_xxx
WARNING:MULTILINE_DEREFERENCE: Avoid multiple line dereference - prefer 'rte_eth_devices[rxq->attr.port_id].data->rx_mbuf_alloc_failed'
#63: FILE: drivers/net/rnp/rnp_rxtx.c:854:
+ rte_eth_devices[rxq->attr.port_id].data->
+ rx_mbuf_alloc_failed++;
Warning in drivers/net/rnp/base/rnp_mac.c:
Writing to stdout or stderr
✔ Run check-git-log
✔ Run check-symbol-maps.sh
✔ Run check-doc-vs-code
✔ Run check-spdk-tag
Builds
✔ Normal Gcc build
✔ Use latest experimental Gcc 15 to catch new warnings
✔ Clang build using current version (clang-19)
✔ Doc build
✔ Build for 32 bit x86
✔ Debug build
✔ Enable asserts
Test meson builds
Experimental builds:
✔ Enable address sanitizer
✘ Enable extra warnings (edit meson.build) for
-Wvla, -Wformat-truncation, -Waddress-of-packed-member
../drivers/net/rnp/base/rnp_mbx_fw.c: In function ‘rnp_fw_init’:
../drivers/net/rnp/base/rnp_mbx_fw.c:196:40: warning: ‘%s’ directive output may be truncated writing up to 63 bytes into a region of size 18 [-Wformat-truncation=]
196 | "fw_req_cookie_%s",
| ^~
../drivers/net/rnp/base/rnp_mbx_fw.c:195:9: note: ‘snprintf’ output between 15 and 78 bytes into a destination of size 32
195 | snprintf(fw_info->cookie_name, RTE_MEMZONE_NAMESIZE,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
196 | "fw_req_cookie_%s",
| ~~~~~~~~~~~~~~~~~~~
197 | hw->device_name);
Look for anti-patterns:
✘ Driver must not disable warnings with compiler flags or pragma's
✔ Driver must not use thread and signal
✘ Apply coccinelle scripts; look that for example null free checks
✘ Review use of memcpy/rte_memcpy
✔ Review use of malloc
✔ Review use of memset
✔ Review locking
Unnecessary locking in base code??
More information about the dev
mailing list