This series fixes offload capability advertisement, cmdq/compact CQE configuration, and several defects found during review, and adds NIC type identification, FEC, CIR drop statistics, VF LAG/link state, COS mask/map, mbox recording, RSS hash configuration, compact CQE Rx/Tx paths, TSO segment expansion, Tx burst mode reporting, queue statistics, pseudo-header checksum, per-tile cmdq ops, SP560 NIC support, and device kvargs tunables.
Changes in v6: - Rebase on current main and address the v5 review comments. - 0003/0005: correct the Fixes: tags, drop the Cc: stable request for fixes to code that has never been in a stable release, and remove the dead null check in the vport enable fix. - 0006: clear the stale hardware consumer index on Rx queue reset. - 0009: reject a packet whose first segment is shorter than the pseudo-header, narrow the shared-mbuf check to the L4/TSO flags, compare the tunnel type as a whole enum, and compute the outer and inner pseudo-header checksums. - 0010: arm the SP230 per-queue vectors when Rx interrupts are disabled, so vfio masks them after the first assertion, and keep the coalescing-only fallback for igb_uio/uio_pci_generic. - 0011: advertise OUTER_UDP_CKSUM now that the outer UDP pseudo-header is written in the software prepare step. Drop the stale QinQ features.ini entry and unused QINQ mbuf flag. - 0012: select the CIR drop counters by NIC type in calc_num, get_names and get. - 0013: report the needed capability count for a short array, mask AUTO out of the reported capabilities, keep the GET-side firmware NOT_SET to AUTO mapping, and reject unknown firmware values. - 0014: take the PCI device from the ethdev in priv_dump so a secondary process does not dereference a stale pointer. - 0016: keep a separate admin-down flag so a PF link up event cannot override dev_set_link_down(). - 0018: cache RSS enablement per queue and clear rss_type when RSS is disabled. - 0019: reject outer IPv6 with an inner L3, and stop setting the VLAN flag mask in the TCAM keys. - 0021: document that the coalescing tunables only take effect with HW compact CQE. - 0022: report the combined compact-CQE checksum error as an unknown result instead of blaming the IP or the L4 layer, and keep the ptype table in sync with the advertised ptype set. - 0023: reject a queue depth that differs from the first queue instead of coercing it, reset the expected depth in dev_configure() and dev_stop(), validate it in dev_start(), and mark Tx queues stopped in dev_stop(). - 0024: reject TSO packets that need more SGEs than the ring can hold, reject a tso_segsz that does not fit the 14-bit MSS field, and report nb_seg_max/nb_mtu_seg_max. - 0025: clear queue_info in the scalar burst for compact WQEs like hinic3_master, clear the per-packet offload state, guard the prefetch against an empty burst, and remove the per-packet data path logs. Per-packet unsupported-type messages are lowered to DEBUG. Tunnel packets are accepted by type instead of by feature bit; VXLAN_GPE TSO and IPIP TSO on SP620 stay rejected. SP230 does not get the software pseudo-header writes because its hardware derives the inner checksums and TSO headers itself. - 0027: report the Tx burst mode of the function that is installed. Changes in v5: - Register hinic3_prep_pkts() in the pseudo-header checksum patch instead of the compact CQE Rx patch. - Mention only SP620 in that commit message. - Document the RQ CEQ EN bit and the INTR field for SW compact CQE. - Drop the per-packet ERR log for a zero tso_segsz. - Keep log and error messages on a single line. - Check the non-TSO packet length before the early SGE-count return. - Scale the coalescing parameters by their unit in the log. - Clear the stale Rx hardware CI write-back memory on queue reset. Changes in v4: - Reordered the queue-depth, TSO and pseudo-header patches to keep the series bisectable; sized the copy pool from the Tx queue depth, kept the copy chain consistent and rejected a zero tso_segsz. - Fixed the pseudo-header L4 protocol and dropped the IPv6 extension-header walk; split the SP230 MSI-X handling; validated the VXLAN-GPE mask and the device kvargs. Changes in v3: - Moved the TCAM leak fix into its own patch; set the burst pointers and tx_pkt_prepare for secondary processes; zeroed the RQ/SQ contexts. - Fixed the Tx burst return count and prefetch guard; validated kvargs; reset the queue depths in dev_configure(); reported FEC per speed; routed priv_dump through fprintf(); derived the pseudo-header protocol from the offload flags. Changes in v2: - Added the five bug fixes (SP230 VF ID, ethertype double removal, VXLAN VNI mask, vport NULL deref, secondary ops); split the NIC type identification; added hinic3.rst/features.ini. - Dropped the unused devargs and Tx/Rx spin loops; corrected the GENEVE/VXLAN-GPE/SP620 IP-in-IP rule handling. Changes in v1: - Initial posting. Every commit builds with -Dwerror=true. Jiacheng Ye (28): net/hinic3: fix SP230 VF PCI device ID net/hinic3: fix double removal in ethertype flow destroy net/hinic3: fix TCAM index leak on ethertype flow set net/hinic3: fix VXLAN VNI spec and mask write net/hinic3: fix vport enable null dereference net/hinic3: clear stale Rx hardware CI on queue reset net/hinic3: attach ethdev and set ops in secondary process net/hinic3: add NIC type identification net/hinic3: fix pseudo-header checksum calculation net/hinic3: add SP230 Rx queue interrupt handling net/hinic3: fix offload and cmdq/compact CQE config net/hinic3: add CIR drop statistics and VF LAG support net/hinic3: add FEC mode get/set and capability support net/hinic3: add mbox message recording and debug dump net/hinic3: add COS mask and COS map support net/hinic3: add VF link state and promiscuous support net/hinic3: convert cmdq ops to static global variables net/hinic3: update RSS hash type configuration net/hinic3: refactor flow rule parsing net/hinic3: add SP560 NIC type identification and handling net/hinic3: add device kvargs parameters support net/hinic3: add compact CQE Rx path and ptype table net/hinic3: ensure queue depth and state consistency net/hinic3: expand TSO from 127 to 255 segments net/hinic3: split Tx burst function for compact CQE support net/hinic3: add SP230 VF software statistics net/hinic3: add Tx burst mode get net/hinic3: expose Tx queue copied-mbuf statistics .mailmap | 1 + doc/guides/nics/features/hinic3.ini | 5 +- doc/guides/nics/hinic3.rst | 27 +- doc/guides/rel_notes/release_26_11.rst | 13 + drivers/net/hinic3/base/hinic3_cmd.h | 2 + drivers/net/hinic3/base/hinic3_csr.h | 6 +- drivers/net/hinic3/base/hinic3_eqs.c | 64 +- drivers/net/hinic3/base/hinic3_eqs.h | 9 +- drivers/net/hinic3/base/hinic3_hw_cfg.c | 2 + drivers/net/hinic3/base/hinic3_hw_cfg.h | 8 +- drivers/net/hinic3/base/hinic3_hw_comm.c | 9 +- drivers/net/hinic3/base/hinic3_hwdev.h | 3 +- drivers/net/hinic3/base/hinic3_hwif.c | 4 +- drivers/net/hinic3/base/hinic3_mbox.c | 45 + drivers/net/hinic3/base/hinic3_mbox.h | 19 + drivers/net/hinic3/base/hinic3_nic_cfg.c | 201 ++- drivers/net/hinic3/base/hinic3_nic_cfg.h | 105 +- drivers/net/hinic3/base/hinic3_nic_event.c | 71 +- drivers/net/hinic3/hinic3_ethdev.c | 904 ++++++++++++-- drivers/net/hinic3/hinic3_ethdev.h | 58 +- drivers/net/hinic3/hinic3_fdir.c | 51 +- drivers/net/hinic3/hinic3_fdir.h | 8 +- drivers/net/hinic3/hinic3_flow.c | 590 ++++++--- drivers/net/hinic3/hinic3_flow.h | 196 --- drivers/net/hinic3/hinic3_nic_io.c | 184 +-- drivers/net/hinic3/hinic3_nic_io.h | 98 ++ drivers/net/hinic3/hinic3_rx.c | 633 ++++++++-- drivers/net/hinic3/hinic3_rx.h | 206 ++-- drivers/net/hinic3/hinic3_tx.c | 1098 +++++++++++++---- drivers/net/hinic3/hinic3_tx.h | 53 +- .../net/hinic3/htn_adapt/hinic3_htn_cmdq.c | 65 +- .../net/hinic3/htn_adapt/hinic3_htn_cmdq.h | 6 +- .../net/hinic3/stn_adapt/hinic3_stn_cmdq.c | 76 +- .../net/hinic3/stn_adapt/hinic3_stn_cmdq.h | 6 +- 34 files changed, 3641 insertions(+), 1185 deletions(-) delete mode 100644 drivers/net/hinic3/hinic3_flow.h -- 2.33.0

