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

Reply via email to