[PATCH net-next v05 00/14] net: hinic3: Add a driver for Huawei 3rd gen NIC - sw and hw initialization

Fan Gong
2025-09-09T07:33:49Z

This is [3/3] part of hinic3 Ethernet driver initial submission.
With this patch hinic3 becomes a functional Ethernet driver.

The driver parts contained in this patch:
Memory allocation and initialization of the driver structures.
Management interfaces initialization.
HW capabilities probing, initialization and setup using management
interfaces.
Net device open/stop implementation and data queues initialization.
Register VID:DID in PCI id_table.
Fix netif_queue_set_napi usage.

Changes:

PATCH 03 V01: https://lore.kernel.org/netdev/cover.1756195078.git.zhuyikai1@h-partners.com

PATCH 03 V02: https://lore.kernel.org/netdev/cover.1756378721.git.zhuyikai1@h-partners.com
* Remove extra memset 0 after kzalloc (Vadim Fedorenko)
* Remove another init function in hinic3_init_hwdev/hwif/nic_io (Vadim Fedorenko)
* Create a new separate patch of fixing code style (Vadim Fedorenko)
* Use bitmap_free instead of kfree (ALOK TIWARI)
* Add prefix "hinic3" to non-static functions and parse_* functions (Vadim Fedorenko)
* Init func_tbl_cfg to {} (Vadim Fedorenko)
* Extract endianess improvement from queue pair resource initialization (Vadim Fedorenko)
* Use kmalloc_array before overwrite rss_hkey on the very next line (Vadim Fedorenko)
* Remove extra key copy about hinic3_rss_set_hash_key (Vadim Fedorenko)
* Use netdev_rss_key_fill instead of static rss hash key for safety (Eric Dumazet)

PATCH 03 V03: https://lore.kernel.org/netdev/cover.1756524443.git.zhuyikai1@h-partners.com
* Modify get_hwif_attr function for improving readability (Vadim Fedorenko)
* Add HINIC3_PCIE_LINK_DOWN errorcode to init_hwif_attr error handling (Vadim Fedorenko)

PATCH 03 V04: https://lore.kernel.org/netdev/cover.1757057860.git.zhuyikai1@h-partners.com
* Use pci_enable_msix_range instead of pci_alloc_irq_vectors (Jakub Kicinski)
* Move defensive codes to place that they are set/loaded (Jakub Kicinski)
* Code format fixes: remove empty lines between error handling path (Jakub Kicinski)
* Remove redundant waiting sleep in hinic3_rx_tx_flush (Jakub Kicinski)
* Use ethtool_rxfh_indir_default for standalizing codes (Jakub Kicinski)
* Use netif_get_num_default_rss_queues instead of driver-local logic (Jakub Kicinski)
* Use netif_set_real_num_queues to set both TX and RX queues (Jakub Kicinski)

PATCH 03 V05:
* Merge comm_cmd_clear_doorbell & comm_cmd_clear_resource (Vadim Fedorenko)
* Merge hinic3_enable/disable_doorbell to hinic3_toggle_doorbel (Vadim Fedorenko)
* Update hinic3_Nic_io initialization commit message (Vadim Fedorenko)

Fan Gong (14):
hinic3: HW initialization
hinic3: HW management interfaces
hinic3: HW common function initialization
hinic3: HW capability initialization
hinic3: Command Queue flush interfaces
hinic3: Nic_io initialization
hinic3: Queue pair endianness improvements
hinic3: Queue pair resource initialization
hinic3: Queue pair context initialization
hinic3: Tx & Rx configuration
hinic3: Add Rss function
hinic3: Add port management
hinic3: Fix missing napi->dev in netif_queue_set_napi
hinic3: Fix code style (Missing a blank line before return)

drivers/net/ethernet/huawei/hinic3/Makefile | 2 +
.../ethernet/huawei/hinic3/hinic3_hw_cfg.c | 168 ++++
.../ethernet/huawei/hinic3/hinic3_hw_cfg.h | 4 +
.../ethernet/huawei/hinic3/hinic3_hw_comm.c | 361 ++++++++
.../ethernet/huawei/hinic3/hinic3_hw_comm.h | 21 +
.../ethernet/huawei/hinic3/hinic3_hw_intf.h | 115 +++
.../net/ethernet/huawei/hinic3/hinic3_hwdev.c | 541 ++++++++++-
.../net/ethernet/huawei/hinic3/hinic3_hwif.c | 269 ++++++
.../net/ethernet/huawei/hinic3/hinic3_hwif.h | 16 +
.../net/ethernet/huawei/hinic3/hinic3_irq.c | 2 +-
.../net/ethernet/huawei/hinic3/hinic3_lld.c | 9 +-
.../net/ethernet/huawei/hinic3/hinic3_main.c | 8 +-
.../net/ethernet/huawei/hinic3/hinic3_mgmt.c | 21 +
.../net/ethernet/huawei/hinic3/hinic3_mgmt.h | 2 +
.../huawei/hinic3/hinic3_mgmt_interface.h | 119 +++
.../huawei/hinic3/hinic3_netdev_ops.c | 425 ++++++++-
.../ethernet/huawei/hinic3/hinic3_nic_cfg.c | 152 +++
.../ethernet/huawei/hinic3/hinic3_nic_cfg.h | 20 +
.../ethernet/huawei/hinic3/hinic3_nic_dev.h | 5 +
.../ethernet/huawei/hinic3/hinic3_nic_io.c | 870 +++++++++++++++++-
.../ethernet/huawei/hinic3/hinic3_nic_io.h | 39 +-
.../huawei/hinic3/hinic3_pci_id_tbl.h | 9 +
.../net/ethernet/huawei/hinic3/hinic3_rss.c | 336 +++++++
.../net/ethernet/huawei/hinic3/hinic3_rss.h | 14 +
.../net/ethernet/huawei/hinic3/hinic3_rx.c | 226 ++++-
.../net/ethernet/huawei/hinic3/hinic3_rx.h | 38 +-
.../net/ethernet/huawei/hinic3/hinic3_tx.c | 184 +++-
.../net/ethernet/huawei/hinic3/hinic3_tx.h | 30 +-
28 files changed, 3920 insertions(+), 86 deletions(-)
create mode 100644 drivers/net/ethernet/huawei/hinic3/hinic3_mgmt.c
create mode 100644 drivers/net/ethernet/huawei/hinic3/hinic3_pci_id_tbl.h
create mode 100644 drivers/net/ethernet/huawei/hinic3/hinic3_rss.c
create mode 100644 drivers/net/ethernet/huawei/hinic3/hinic3_rss.h

base-commit: b1c92cdf5af3198e8fbc1345a80e2a1dff386c02
--
2.43.0