From: Stephen Hemminger <stephen@networkplumber.org>
To: Feifei Wang <wff_light@vip.163.com>
Cc: dev@dpdk.org
Subject: Re: [RFC 00/18] add hinic3 PMD driver
Date: Fri, 18 Apr 2025 11:20:38 -0700 [thread overview]
Message-ID: <20250418112038.14b33e6b@hermes.local> (raw)
In-Reply-To: <20250418090621.9638-1-wff_light@vip.163.com>
On Fri, 18 Apr 2025 17:05:46 +0800
Feifei Wang <wff_light@vip.163.com> wrote:
> *** BLURB HERE ***
> The hinic3 PMD (**librte_net_hinic3**) provides poll mode driver support
> for 25Gbps/100Gbps/200Gbps Huawei SPx series Network Adapters.
>
> Feifei Wang (3):
> net/hinic3: add intro doc for hinic3
> net/hinic3: add dev ops
> net/hinic3: add Rx/Tx functions
>
> Xin Wang (7):
> net/hinic3: add basic header files
> net/hinic3: add support for cmdq mechanism
> net/hinic3: add NIC event module
> net/hinic3: add context and work queue support
> net/hinic3: add device initailization
> net/hinic3: add MML and EEPROM access feature
> net/hinic3: add RSS promiscuous ops
>
> Yi Chen (8):
> net/hinic3: add hardware interfaces of BAR operation
> net/hinic3: add eq mechanism function code
> net/hinic3: add mgmt module function code
> net/hinic3: add module about hardware operation
> net/hinic3: add a NIC business configuration module
> net/hinic3: add a mailbox communication module
> net/hinic3: add FDIR flow control module
> drivers/net: add hinic3 PMD build and doc files
>
> .mailmap | 4 +-
> MAINTAINERS | 6 +
> doc/guides/nics/features/hinic3.ini | 9 +
> doc/guides/nics/hinic3.rst | 52 +
> doc/guides/nics/index.rst | 1 +
> doc/guides/rel_notes/release_25_07.rst | 32 +-
> drivers/net/hinic3/base/hinic3_cmd.h | 231 ++
> drivers/net/hinic3/base/hinic3_cmdq.c | 975 +++++
> drivers/net/hinic3/base/hinic3_cmdq.h | 230 ++
> drivers/net/hinic3/base/hinic3_compat.h | 266 ++
> drivers/net/hinic3/base/hinic3_csr.h | 108 +
> drivers/net/hinic3/base/hinic3_eqs.c | 719 ++++
> drivers/net/hinic3/base/hinic3_eqs.h | 98 +
> drivers/net/hinic3/base/hinic3_hw_cfg.c | 240 ++
> drivers/net/hinic3/base/hinic3_hw_cfg.h | 121 +
> drivers/net/hinic3/base/hinic3_hw_comm.c | 452 +++
> drivers/net/hinic3/base/hinic3_hw_comm.h | 366 ++
> drivers/net/hinic3/base/hinic3_hwdev.c | 573 +++
> drivers/net/hinic3/base/hinic3_hwdev.h | 177 +
> drivers/net/hinic3/base/hinic3_hwif.c | 779 ++++
> drivers/net/hinic3/base/hinic3_hwif.h | 142 +
> drivers/net/hinic3/base/hinic3_mbox.c | 1392 +++++++
> drivers/net/hinic3/base/hinic3_mbox.h | 199 +
> drivers/net/hinic3/base/hinic3_mgmt.c | 392 ++
> drivers/net/hinic3/base/hinic3_mgmt.h | 121 +
> drivers/net/hinic3/base/hinic3_nic_cfg.c | 1828 +++++++++
> drivers/net/hinic3/base/hinic3_nic_cfg.h | 1527 ++++++++
> drivers/net/hinic3/base/hinic3_nic_event.c | 433 +++
> drivers/net/hinic3/base/hinic3_nic_event.h | 39 +
> drivers/net/hinic3/base/hinic3_wq.c | 148 +
> drivers/net/hinic3/base/hinic3_wq.h | 109 +
> drivers/net/hinic3/base/meson.build | 50 +
> drivers/net/hinic3/hinic3_ethdev.c | 3866 ++++++++++++++++++++
> drivers/net/hinic3/hinic3_ethdev.h | 167 +
> drivers/net/hinic3/hinic3_fdir.c | 1394 +++++++
> drivers/net/hinic3/hinic3_fdir.h | 398 ++
> drivers/net/hinic3/hinic3_flow.c | 1700 +++++++++
> drivers/net/hinic3/hinic3_flow.h | 80 +
> drivers/net/hinic3/hinic3_nic_io.c | 827 +++++
> drivers/net/hinic3/hinic3_nic_io.h | 169 +
> drivers/net/hinic3/hinic3_rx.c | 1096 ++++++
> drivers/net/hinic3/hinic3_rx.h | 356 ++
> drivers/net/hinic3/hinic3_tx.c | 1028 ++++++
> drivers/net/hinic3/hinic3_tx.h | 315 ++
> drivers/net/hinic3/meson.build | 44 +
> drivers/net/hinic3/mml/hinic3_dbg.c | 171 +
> drivers/net/hinic3/mml/hinic3_dbg.h | 160 +
> drivers/net/hinic3/mml/hinic3_mml_cmd.c | 375 ++
> drivers/net/hinic3/mml/hinic3_mml_cmd.h | 131 +
> drivers/net/hinic3/mml/hinic3_mml_ioctl.c | 215 ++
> drivers/net/hinic3/mml/hinic3_mml_lib.c | 136 +
> drivers/net/hinic3/mml/hinic3_mml_lib.h | 275 ++
> drivers/net/hinic3/mml/hinic3_mml_main.c | 167 +
> drivers/net/hinic3/mml/hinic3_mml_queue.c | 749 ++++
> drivers/net/hinic3/mml/hinic3_mml_queue.h | 256 ++
> drivers/net/hinic3/mml/meson.build | 62 +
> drivers/net/meson.build | 1 +
> 57 files changed, 25926 insertions(+), 31 deletions(-)
> create mode 100644 doc/guides/nics/features/hinic3.ini
> create mode 100644 doc/guides/nics/hinic3.rst
> create mode 100644 drivers/net/hinic3/base/hinic3_cmd.h
> create mode 100644 drivers/net/hinic3/base/hinic3_cmdq.c
> create mode 100644 drivers/net/hinic3/base/hinic3_cmdq.h
> create mode 100644 drivers/net/hinic3/base/hinic3_compat.h
> create mode 100644 drivers/net/hinic3/base/hinic3_csr.h
> create mode 100644 drivers/net/hinic3/base/hinic3_eqs.c
> create mode 100644 drivers/net/hinic3/base/hinic3_eqs.h
> create mode 100644 drivers/net/hinic3/base/hinic3_hw_cfg.c
> create mode 100644 drivers/net/hinic3/base/hinic3_hw_cfg.h
> create mode 100644 drivers/net/hinic3/base/hinic3_hw_comm.c
> create mode 100644 drivers/net/hinic3/base/hinic3_hw_comm.h
> create mode 100644 drivers/net/hinic3/base/hinic3_hwdev.c
> create mode 100644 drivers/net/hinic3/base/hinic3_hwdev.h
> create mode 100644 drivers/net/hinic3/base/hinic3_hwif.c
> create mode 100644 drivers/net/hinic3/base/hinic3_hwif.h
> create mode 100644 drivers/net/hinic3/base/hinic3_mbox.c
> create mode 100644 drivers/net/hinic3/base/hinic3_mbox.h
> create mode 100644 drivers/net/hinic3/base/hinic3_mgmt.c
> create mode 100644 drivers/net/hinic3/base/hinic3_mgmt.h
> create mode 100644 drivers/net/hinic3/base/hinic3_nic_cfg.c
> create mode 100644 drivers/net/hinic3/base/hinic3_nic_cfg.h
> create mode 100644 drivers/net/hinic3/base/hinic3_nic_event.c
> create mode 100644 drivers/net/hinic3/base/hinic3_nic_event.h
> create mode 100644 drivers/net/hinic3/base/hinic3_wq.c
> create mode 100644 drivers/net/hinic3/base/hinic3_wq.h
> create mode 100644 drivers/net/hinic3/base/meson.build
> create mode 100644 drivers/net/hinic3/hinic3_ethdev.c
> create mode 100644 drivers/net/hinic3/hinic3_ethdev.h
> create mode 100644 drivers/net/hinic3/hinic3_fdir.c
> create mode 100644 drivers/net/hinic3/hinic3_fdir.h
> create mode 100644 drivers/net/hinic3/hinic3_flow.c
> create mode 100644 drivers/net/hinic3/hinic3_flow.h
> create mode 100644 drivers/net/hinic3/hinic3_nic_io.c
> create mode 100644 drivers/net/hinic3/hinic3_nic_io.h
> create mode 100644 drivers/net/hinic3/hinic3_rx.c
> create mode 100644 drivers/net/hinic3/hinic3_rx.h
> create mode 100644 drivers/net/hinic3/hinic3_tx.c
> create mode 100644 drivers/net/hinic3/hinic3_tx.h
> create mode 100644 drivers/net/hinic3/meson.build
> create mode 100644 drivers/net/hinic3/mml/hinic3_dbg.c
> create mode 100644 drivers/net/hinic3/mml/hinic3_dbg.h
> create mode 100644 drivers/net/hinic3/mml/hinic3_mml_cmd.c
> create mode 100644 drivers/net/hinic3/mml/hinic3_mml_cmd.h
> create mode 100644 drivers/net/hinic3/mml/hinic3_mml_ioctl.c
> create mode 100644 drivers/net/hinic3/mml/hinic3_mml_lib.c
> create mode 100644 drivers/net/hinic3/mml/hinic3_mml_lib.h
> create mode 100644 drivers/net/hinic3/mml/hinic3_mml_main.c
> create mode 100644 drivers/net/hinic3/mml/hinic3_mml_queue.c
> create mode 100644 drivers/net/hinic3/mml/hinic3_mml_queue.h
> create mode 100644 drivers/net/hinic3/mml/meson.build
>
Clang is spotting a possible bug in driver.
FAILED: drivers/net/hinic3/base/libspnic_base.a.p/hinic3_nic_cfg.c.o
clang -Idrivers/net/hinic3/base/libspnic_base.a.p -Idrivers/net/hinic3/base -I../drivers/net/hinic3/base -Idrivers/net/hinic3 -I../drivers/net/hinic3 -Ilib/eal/common -I../lib/eal/common -I. -I.. -Iconfig -I../config -Ilib/eal/include -I../lib/eal/include -Ilib/eal/linux/include -I../lib/eal/linux/include -Ilib/eal/x86/include -I../lib/eal/x86/include -I../kernel/linux -Ilib/eal -I../lib/eal -Ilib/kvargs -I../lib/kvargs -Ilib/log -I../lib/log -Ilib/metrics -I../lib/metrics -Ilib/telemetry -I../lib/telemetry -Ilib/ethdev -I../lib/ethdev -Ilib/net -I../lib/net -Ilib/mbuf -I../lib/mbuf -Ilib/mempool -I../lib/mempool -Ilib/ring -I../lib/ring -Ilib/meter -I../lib/meter -Idrivers/bus/pci -I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/pci -I../lib/pci -Ilib/hash -I../lib/hash -Ilib/rcu -I../lib/rcu -fcolor-diagnostics -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c11 -O3 -include rte_config.h -Wvla -Wcast-qual -Wdeprecated -Wformat -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-missing-field-initializers -D_GNU_SOURCE -fPIC -march=native -mrtm -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API -Wno-address-of-packed-member -DHW_CONVERT_ENDIAN -D__HINIC_HUAWEI_SECUREC__ -fPIC -fstack-protector-strong -MD -MQ drivers/net/hinic3/base/libspnic_base.a.p/hinic3_nic_cfg.c.o -MF drivers/net/hinic3/base/libspnic_base.a.p/hinic3_nic_cfg.c.o.d -o drivers/net/hinic3/base/libspnic_base.a.p/hinic3_nic_cfg.c.o -c ../drivers/net/hinic3/base/hinic3_nic_cfg.c
../drivers/net/hinic3/base/hinic3_nic_cfg.c:1237:34: error: expression does not compute the number of elements in this array; element type is 'u16' (aka 'unsigned short'), not 'u32' (aka 'unsigned int') [-Werror,-Wsizeof-array-div]
1237 | size = sizeof(indir_tbl->entry) / sizeof(u32);
| ~~~~~~~~~~~~~~~~ ^
../drivers/net/hinic3/base/hinic3_nic_cfg.c:1237:34: note: place parentheses around the 'sizeof(u32)' expression to silence this warning
And then lots of other overrun bugs:
*Build Failed #3:
OS: AzureLinux3.0-64
Target: x86_64-native-linuxapp-gcc
FAILED: drivers/net/hinic3/base/libspnic_base.a.p/hinic3_mbox.c.o
gcc -Idrivers/net/hinic3/base/libspnic_base.a.p -Idrivers/net/hinic3/base -I../drivers/net/hinic3/base -Idrivers/net/hinic3 -I../drivers/net/hinic3 -Ilib/eal/common -I../lib/eal/common -I. -I.. -Iconfig -I../config -Ilib/eal/include -I../lib/eal/include -Ilib/eal/linux/include -I../lib/eal/linux/include -Ilib/eal/x86/include -I../lib/eal/x86/include -I../kernel/linux -Ilib/eal -I../lib/eal -Ilib/kvargs -I../lib/kvargs -Ilib/log -I../lib/log -Ilib/metrics -I../lib/metrics -Ilib/telemetry -I../lib/telemetry -Ilib/ethdev -I../lib/ethdev -Ilib/net -I../lib/net -Ilib/mbuf -I../lib/mbuf -Ilib/mempool -I../lib/mempool -Ilib/ring -I../lib/ring -Ilib/meter -I../lib/meter -Idrivers/bus/pci -I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/pci -I../lib/pci -Ilib/hash -I../lib/hash -Ilib/rcu -I../lib/rcu -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c11 -O3 -include rte_config.h -Wvla -Wcast-qual -Wdeprecated -Wformat -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-missing-field-initializers -D_GNU_SOURCE -fPIC -march=native -mrtm -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API -Wno-format-truncation -Wno-address-of-packed-member -DHW_CONVERT_ENDIAN -D__HINIC_HUAWEI_SECUREC__ -fPIC -fstack-protector-strong -MD -MQ drivers/net/hinic3/base/libspnic_base.a.p/hinic3_mbox.c.o -MF drivers/net/hinic3/base/libspnic_base.a.p/hinic3_mbox.c.o.d -o drivers/net/hinic3/base/libspnic_base.a.p/hinic3_mbox.c.o -c ../drivers/net/hinic3/base/hinic3_mbox.c
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include/immintrin.h:43,
from ../lib/eal/x86/include/rte_rtm.h:8,
from ../lib/eal/x86/include/rte_spinlock.h:9,
from ../lib/eal/x86/include/rte_rwlock.h:9,
from ../lib/eal/include/rte_eal_memconfig.h:10,
from ../lib/eal/include/rte_memory.h:21,
from ../lib/eal/include/rte_malloc.h:16,
from ../lib/ethdev/ethdev_pci.h:9,
from ../drivers/net/hinic3/base/hinic3_compat.h:14,
from ../drivers/net/hinic3/base/hinic3_mbox.c:5:
In function ‘_mm256_storeu_si256’,
inlined from ‘rte_mov32’ at ../lib/eal/x86/include/rte_memcpy.h:128:2,
inlined from ‘rte_mov64’ at ../lib/eal/x86/include/rte_memcpy.h:149:2,
inlined from ‘rte_mov128’ at ../lib/eal/x86/include/rte_memcpy.h:160:2,
inlined from ‘rte_memcpy_generic’ at ../lib/eal/x86/include/rte_memcpy.h:422:4,
inlined from ‘rte_memcpy’ at ../lib/eal/x86/include/rte_memcpy.h:757:10,
inlined from ‘mbox_copy_send_data’ at ../drivers/net/hinic3/base/hinic3_mbox.c:508:3,
inlined from ‘send_mbox_seg’ at ../drivers/net/hinic3/base/hinic3_mbox.c:630:2,
inlined from ‘send_mbox_to_func’ at ../drivers/net/hinic3/base/hinic3_mbox.c:777:9:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include/avxintrin.h:935:8: error: array subscript ‘__m256i_u[1]’ is partly outside array bounds of ‘u8[48]’ {aka ‘unsigned char[48]’} [-Werror=array-bounds=]
935 | *__P = __A;
| ~~~~~^~~~~
../drivers/net/hinic3/base/hinic3_mbox.c: In function ‘send_mbox_to_func’:
../drivers/net/hinic3/base/hinic3_mbox.c:504:12: note: at offset 32 into object ‘mbox_max_buf’ of size 48
504 | u8 mbox_max_buf[MBOX_SEG_LEN] = {0};
| ^~~~~~~~~~~~
In function ‘_mm256_storeu_si256’,
inlined from ‘rte_mov32’ at ../lib/eal/x86/include/rte_memcpy.h:128:2,
inlined from ‘rte_mov64’ at ../lib/eal/x86/include/rte_memcpy.h:148:2,
inlined from ‘rte_mov128’ at ../lib/eal/x86/include/rte_memcpy.h:161:2,
inlined from ‘rte_memcpy_generic’ at ../lib/eal/x86/include/rte_memcpy.h:422:4,
inlined from ‘rte_memcpy’ at ../lib/eal/x86/include/rte_memcpy.h:757:10,
inlined from ‘mbox_copy_send_data’ at ../drivers/net/hinic3/base/hinic3_mbox.c:508:3,
inlined from ‘send_mbox_seg’ at ../drivers/net/hinic3/base/hinic3_mbox.c:630:2,
inlined from ‘send_mbox_to_func’ at ../drivers/net/hinic3/base/hinic3_mbox.c:777:9:
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include/avxintrin.h:935:8: error: array subscript 2 is outside array bounds of ‘u8[48]’ {aka ‘unsigned char[48]’} [-Werror=array-bounds=]
935 | *__P = __A;
| ~~~~~^~~~~
../drivers/net/hinic3/base/hinic3_mbox.c: In function ‘send_mbox_to_func’:
../drivers/net/hinic3/base/hinic3_mbox.c:504:12: note
next prev parent reply other threads:[~2025-04-18 18:20 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-18 9:05 Feifei Wang
2025-04-18 9:05 ` [RFC 01/18] net/hinic3: add intro doc for hinic3 Feifei Wang
2025-04-18 9:05 ` [RFC 02/18] net/hinic3: add basic header files Feifei Wang
2025-04-18 9:05 ` [RFC 03/18] net/hinic3: add hardware interfaces of BAR operation Feifei Wang
2025-04-18 9:05 ` [RFC 04/18] net/hinic3: add support for cmdq mechanism Feifei Wang
2025-04-18 9:05 ` [RFC 05/18] net/hinic3: add NIC event module Feifei Wang
2025-04-18 9:05 ` [RFC 06/18] net/hinic3: add eq mechanism function code Feifei Wang
2025-04-18 9:05 ` [RFC 07/18] net/hinic3: add mgmt module " Feifei Wang
2025-04-18 9:05 ` [RFC 08/18] net/hinic3: add module about hardware operation Feifei Wang
2025-04-18 9:05 ` [RFC 09/18] net/hinic3: add a NIC business configuration module Feifei Wang
2025-04-18 9:05 ` [RFC 10/18] net/hinic3: add context and work queue support Feifei Wang
2025-04-18 9:05 ` [RFC 11/18] net/hinic3: add a mailbox communication module Feifei Wang
2025-04-18 9:05 ` [RFC 12/18] net/hinic3: add device initailization Feifei Wang
2025-04-18 9:05 ` [RFC 13/18] net/hinic3: add dev ops Feifei Wang
2025-04-18 9:06 ` [RFC 14/18] net/hinic3: add Rx/Tx functions Feifei Wang
2025-04-18 9:06 ` [RFC 15/18] net/hinic3: add MML and EEPROM access feature Feifei Wang
2025-04-18 9:06 ` [RFC 16/18] net/hinic3: add RSS promiscuous ops Feifei Wang
2025-04-18 9:06 ` [RFC 17/18] net/hinic3: add FDIR flow control module Feifei Wang
2025-04-18 18:25 ` Stephen Hemminger
2025-04-18 18:27 ` Stephen Hemminger
2025-04-18 18:28 ` Stephen Hemminger
2025-04-18 18:30 ` Stephen Hemminger
2025-04-18 9:06 ` [RFC 18/18] drivers/net: add hinic3 PMD build and doc files Feifei Wang
2025-04-18 17:22 ` Stephen Hemminger
2025-04-19 2:52 ` 回复: " wangfeifei (J)
2025-04-18 18:18 ` [RFC 00/18] add hinic3 PMD driver Stephen Hemminger
2025-04-19 2:44 ` 回复: " wangfeifei (J)
2025-04-18 18:20 ` Stephen Hemminger [this message]
2025-04-18 18:32 ` Stephen Hemminger
2025-04-19 3:30 ` 回复: " wangfeifei (J)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250418112038.14b33e6b@hermes.local \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=wff_light@vip.163.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).