On Fri, 18 Apr 2025 17:05:46 +0800 Feifei Wang <wff_li...@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