On Tue, 11 Feb 2025 23:06:10 +0800 Wenbo Cao <caowe...@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??