[PATCH net-next v3 00/13] NPC HW block support for cn20k
From: Ratheesh Kannoth <hidden>
Date: 2026-01-09 05:49:02
Also in:
lkml
This patchset adds comprehensive support for the CN20K NPC architecture. CN20K introduces significant changes in MCAM layout, parser design, KPM/KPU mapping, index management, virtual index handling, and dynamic rule installation. The patches update the AF, PF/VF, and common layers to correctly support these new capabilities while preserving compatibility with previous silicon variants. MCAM on CN20K differs from older designs: the hardware now contains two vertical banks of depth 8192, and thirty-two horizontal subbanks of depth 256. Each subbank can be configured as x2 or x4, enabling 256-bit or 512-bit key storage. Several allocation models are added to support this layout, including contiguous and non-contiguous allocation with or without reference ranges and priorities. Parser and extraction logic are also enhanced. CN20K introduces a new profile model where up to twenty-four extractors may be configured for each parsing profile. A new KPM profile scheme is added, grouping sixteen KPUs into eight KPM profiles, each formed by two KPUs. Support is added for default index allocation for CN20K-specific MCAM entry structures, virtual index allocation, improved defragmentation, and TC rule installation by allowing the AF driver to determine required x2/x4 rule width during flow install. Ratheesh Kannoth (7): octeontx2-af: npc: cn20k: Index management Add CN20K MCAM allocation support. Implements contiguous and non-contiguous allocation models with ref, limit, contig, priority, and count support. octeontx2-af: npc: cn20k: Allocate default MCAM indexes Allocate default MCAM entries dynamically in descending index order during NIX LF attach, reducing MCAM wastage octeontx2-af: npc: cn20k: Prepare for new SoC Introduce MCAM metadata structure so low-level functions no longer receive SoC-specific structures directly. octeontx2-af: npc: cn20k: virtual index support Add virtual MCAM index allocation and improve CN20K MCAM defragmentation handling. Track virtual indexes and restore statistics correctly. octeontx2-af: npc: cn20k: Allocate MCAM entry for flow installation Extend install_flow mailbox so AF can determine rule width and complete allocation and installation in a single exchange. octeontx2-af: npc: cn20k: add debugfs support Debugfs entries to show mcam layout and default mcam entry allocations Legacy debugfs entries are modified to show hardware priority on cn20k SoC. octeontx-af: npc: Use common structures Low level functions should use maximum mcam size array and modify cam0 and cam1. This is a cleanup patch. Subbaraya Sundeep (1): octeontx2-pf: cn20k: Add TC rules support Add full TC dynamic rule support for CN20K. Handle x2/x4 rule widths, dynamic allocation, and shifting restrictions when mixed rule sizes exist. Suman Ghosh (5): octeontx2-af: npc: cn20k: KPM profile changes Add support for CN20K KPM profiles. Sixteen KPUs are grouped into eight KPM configurations to improve resource usage octeontx2-af: npc: cn20k: Add default profile Update mkex profile for CN20K and mark unused objects with may_be_unused to silence compiler warnings. ocetontx2-af: npc: cn20k: MKEX profile support Add support for the new CN20K parser profile. Introduces the extractor-based model with up to twenty-four extractors per profile. octeontx2-af: npc: cn20k: Use common APIs Update common MCAM APIs for CN20K. Add new register handling, new access algorithms, and CN20K-specific index management. octeontx2-af: npc: cn20k: Add new mailboxes for CN20K silicon Add CN20K-specific MCAM mailbox messages for updated mcam_entry layout and avoid breaking backward compatibility. MAINTAINERS | 2 +- .../ethernet/marvell/octeontx2/af/Makefile | 2 +- .../marvell/octeontx2/af/cn20k/debugfs.c | 437 ++ .../marvell/octeontx2/af/cn20k/debugfs.h | 3 + .../ethernet/marvell/octeontx2/af/cn20k/npc.c | 4368 +++++++++++++++++ .../ethernet/marvell/octeontx2/af/cn20k/npc.h | 262 + .../ethernet/marvell/octeontx2/af/cn20k/reg.h | 58 + .../ethernet/marvell/octeontx2/af/common.h | 4 - .../net/ethernet/marvell/octeontx2/af/mbox.h | 173 +- .../net/ethernet/marvell/octeontx2/af/npc.h | 2 + .../marvell/octeontx2/af/npc_profile.h | 84 +- .../net/ethernet/marvell/octeontx2/af/rvu.c | 17 +- .../net/ethernet/marvell/octeontx2/af/rvu.h | 18 +- .../marvell/octeontx2/af/rvu_debugfs.c | 68 +- .../marvell/octeontx2/af/rvu_devlink.c | 81 +- .../ethernet/marvell/octeontx2/af/rvu_nix.c | 1 - .../ethernet/marvell/octeontx2/af/rvu_npc.c | 513 +- .../ethernet/marvell/octeontx2/af/rvu_npc.h | 21 + .../marvell/octeontx2/af/rvu_npc_fs.c | 664 ++- .../marvell/octeontx2/af/rvu_npc_fs.h | 14 +- .../marvell/octeontx2/af/rvu_npc_hash.c | 21 +- .../marvell/octeontx2/af/rvu_npc_hash.h | 2 +- .../ethernet/marvell/octeontx2/nic/cn20k.c | 265 + .../ethernet/marvell/octeontx2/nic/cn20k.h | 13 + .../marvell/octeontx2/nic/otx2_common.h | 35 + .../marvell/octeontx2/nic/otx2_flows.c | 263 +- .../ethernet/marvell/octeontx2/nic/otx2_tc.c | 77 +- 27 files changed, 7086 insertions(+), 382 deletions(-) create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.h create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.h -- ChangeLog: v1 -> v2: Addressed comments v2 -> v3: Resolved build errors, addressed comments 2.43.0