[PATCH net-next 00/13] NPC HW block support for cn20k

Ratheesh Kannoth posted 13 patches 1 day, 18 hours ago
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
[PATCH net-next 00/13] NPC HW block support for cn20k
Posted by Ratheesh Kannoth 1 day, 18 hours ago
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

--
2.43.0