From patchwork Fri Mar 21 09:48:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Satheesh Paul Antonysamy X-Patchwork-Id: 152516 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4F10246439; Fri, 21 Mar 2025 10:48:30 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A67CD4066F; Fri, 21 Mar 2025 10:48:29 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id D751340276 for ; Fri, 21 Mar 2025 10:48:27 +0100 (CET) Received: from pps.filterd (m0431383.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52L7kD9w017847 for ; Fri, 21 Mar 2025 02:48:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pfpt0220; bh=iBQqwVyY98FEXcjDQSvxhCd ixVkA3Hm5BjkczIhQj2o=; b=Cq5ugJQdkwnt5llbd/9gbe6ekszPPfQWMCLd4V4 fUoeSGiJ7E82o6tKtdl1FoSJ7wGqxG+BvtWJKQH7kpknxfIOtiwluU4BWS05Nizd F8Ch3mwhP699DxqKmyAv+JKHVxVapYhVAmoQ1aOl+35/CgmmWi3pIxZwasWNBsMm ZQAifoFV14c0r/4kfKgoGLg6Q3BmJf+NgM45jusvaa3UUkJ93e7K2n1XgOXfLMCa 48qjzsjM1DRqGjpXl4ulj4O6AyEU45l+zIXiSjTR6BFKlG0lMWPTivja/m/2qzZG cg7PWl6H/QO24opa+sEfmS6pnY+ilvMAwNvcAWo6P3ulxXg== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 45h40xr6hv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 21 Mar 2025 02:48:26 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Fri, 21 Mar 2025 02:48:26 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Fri, 21 Mar 2025 02:48:26 -0700 Received: from cavium-OptiPlex-3070-BM17.. (unknown [10.28.34.33]) by maili.marvell.com (Postfix) with ESMTP id 830AC5E6871; Fri, 21 Mar 2025 02:48:23 -0700 (PDT) From: To: Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao , Harman Kalra CC: , Satheesh Paul , Jerin Jacob Subject: [dpdk-dev] [PATCH 1/2] common/cnxk: support fragmented flags in KPU profile Date: Fri, 21 Mar 2025 15:18:19 +0530 Message-ID: <20250321094820.3311252-1-psatheesh@marvell.com> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=I+9lRMgg c=1 sm=1 tr=0 ts=67dd35ea cx=c_pps a=gIfcoYsirJbf48DBMSPrZA==:117 a=gIfcoYsirJbf48DBMSPrZA==:17 a=Vs1iUdzkB0EA:10 a=M5GUcnROAAAA:8 a=EHSVFVtSShkB71JC5PgA:9 a=OBjm3rFKGHvpk9ecZwUJ:22 X-Proofpoint-GUID: _MFn7IokZNwp4f9lekMKXzi4zznmbeZx X-Proofpoint-ORIG-GUID: _MFn7IokZNwp4f9lekMKXzi4zznmbeZx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-21_04,2025-03-20_01,2024-11-22_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Satheesh Paul In the CN20K device, only 4 bits are available for flags. Adjust the fragmented flags to fit into the lower 4 bits. Signed-off-by: Kiran Kumar K Signed-off-by: Satheesh Paul Reviewed-by: Jerin Jacob --- drivers/common/cnxk/hw/npc.h | 12 ++++++++++++ drivers/common/cnxk/roc_npc_parse.c | 12 ++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/common/cnxk/hw/npc.h b/drivers/common/cnxk/hw/npc.h index 4164c6ac2e..52b41a1a54 100644 --- a/drivers/common/cnxk/hw/npc.h +++ b/drivers/common/cnxk/hw/npc.h @@ -314,6 +314,18 @@ enum npc_kpu_lb_lflag { NPC_F_LB_L_FDSA, }; +enum npc_cn20k_kpu_lc_uflag { + NPC_CN20K_F_LC_U_MPLS_IN_IP = 0x20, + NPC_CN20K_F_LC_U_IP6_TUN_IP6 = 0x40, + NPC_CN20K_F_LC_U_IP6_MPLS_IN_IP = 0x80, +}; + +enum npc_cn20k_kpu_lc_lflag { + NPC_CN20K_F_LC_L_IP_FRAG = 2, + NPC_CN20K_F_LC_L_IP6_FRAG, + NPC_CN20K_F_LC_L_6TO4, +}; + enum npc_kpu_lc_uflag { NPC_F_LC_U_UNK_PROTO = 0x10, NPC_F_LC_U_IP_FRAG = 0x20, diff --git a/drivers/common/cnxk/roc_npc_parse.c b/drivers/common/cnxk/roc_npc_parse.c index 0aaf86c768..b52024f434 100644 --- a/drivers/common/cnxk/roc_npc_parse.c +++ b/drivers/common/cnxk/roc_npc_parse.c @@ -1,7 +1,9 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright(C) 2021 Marvell. */ + #include "roc_api.h" +#include "roc_model.h" #include "roc_priv.h" const struct roc_npc_item_info * @@ -708,7 +710,10 @@ npc_handle_ipv6ext_attr(const struct roc_npc_flow_item_ipv6 *ipv6_spec, flags_count++; } if (ipv6_spec->has_frag_ext) { - *flags = NPC_F_LC_U_IP6_FRAG; + if (roc_model_is_cn20k()) + *flags = NPC_CN20K_F_LC_L_IP6_FRAG; + else + *flags = NPC_F_LC_U_IP6_FRAG; flags_count++; } if (ipv6_spec->has_dest_ext) { @@ -822,7 +827,10 @@ npc_process_ipv6_item(struct npc_parse_state *pst) } else if (pattern->type == ROC_NPC_ITEM_TYPE_IPV6_FRAG_EXT) { item_count++; ltype = NPC_LT_LC_IP6_EXT; - flags = NPC_F_LC_U_IP6_FRAG; + if (roc_model_is_cn20k()) + flags = NPC_CN20K_F_LC_L_IP6_FRAG; + else + flags = NPC_F_LC_U_IP6_FRAG; parse_info.len = sizeof(struct roc_ipv6_hdr) + sizeof(struct roc_ipv6_fragment_ext); if (pattern->spec) From patchwork Fri Mar 21 09:48:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Satheesh Paul Antonysamy X-Patchwork-Id: 152517 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C44E346439; Fri, 21 Mar 2025 10:48:34 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B260B40A6B; Fri, 21 Mar 2025 10:48:34 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id B3A5040276 for ; Fri, 21 Mar 2025 10:48:32 +0100 (CET) Received: from pps.filterd (m0431383.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52L7kEnc017897 for ; Fri, 21 Mar 2025 02:48:32 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=V moVXGTL8k6otVn67UrhsY/EokoPOV8c2h9X/8od0l8=; b=SnuxB7bKKHdbxoPc9 nUFH4RIoXsx9RTTJmHWo+Wyhz63P0LJFXoaU1CNZ/Z4k2AawFOZmpUhE70cqdpFT r9ajZIL9cObApTuY1knyEcAt3acAoEUXLF1o6bu8SI0TYpbP2A87xdv4JWo/RxvV SpHivY4j+wjVhHhqb/5/u8DKZE0DOnoZWwtCWAQWWWFeiY7Nj8fmXnSgGpDhUIse vBNAE6j03RJmL9h7FdUeLWKzy44BkLX1tFQa0rbHJV822NhDHZ/OzJebWjh11DLl kqwh6O0nRwcSckLk0eg4GkDz0xj63Uz7U4jxYE+3rbFYFhXXo3X5POIy8kG7Rqsr jEXNw== Received: from dc5-exch05.marvell.com ([199.233.59.128]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 45h40xr6hx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 21 Mar 2025 02:48:31 -0700 (PDT) Received: from DC5-EXCH05.marvell.com (10.69.176.209) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Fri, 21 Mar 2025 02:48:30 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Fri, 21 Mar 2025 02:48:30 -0700 Received: from cavium-OptiPlex-3070-BM17.. (unknown [10.28.34.33]) by maili.marvell.com (Postfix) with ESMTP id 6D8455E6871; Fri, 21 Mar 2025 02:48:28 -0700 (PDT) From: To: Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao , Harman Kalra CC: , Satheesh Paul Subject: [dpdk-dev] [PATCH 2/2] common/cnxk: defragment MCAM bank during allocation Date: Fri, 21 Mar 2025 15:18:20 +0530 Message-ID: <20250321094820.3311252-2-psatheesh@marvell.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20250321094820.3311252-1-psatheesh@marvell.com> References: <20250321094820.3311252-1-psatheesh@marvell.com> MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=I+9lRMgg c=1 sm=1 tr=0 ts=67dd35ef cx=c_pps a=rEv8fa4AjpPjGxpoe8rlIQ==:117 a=rEv8fa4AjpPjGxpoe8rlIQ==:17 a=Vs1iUdzkB0EA:10 a=M5GUcnROAAAA:8 a=zXlsiKfBimB7fwkUvC0A:9 a=OBjm3rFKGHvpk9ecZwUJ:22 X-Proofpoint-GUID: oRp6ySzym8WSi30TLEELEUpDg0tlX8I1 X-Proofpoint-ORIG-GUID: oRp6ySzym8WSi30TLEELEUpDg0tlX8I1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-21_04,2025-03-20_01,2024-11-22_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Satheesh Paul If MCAM allocation fails, invoke MCAM bank defragmentation and retry MCAM allocation for CN20K. Signed-off-by: Satheesh Paul Reviewed-by: Kiran Kumar K --- drivers/common/cnxk/roc_npc.c | 40 +++++++++++++++++++++++-- drivers/common/cnxk/roc_npc.h | 3 ++ drivers/common/cnxk/roc_npc_mcam.c | 24 +++++++++++++-- drivers/common/cnxk/roc_npc_mcam_dump.c | 6 +++- drivers/common/cnxk/roc_npc_priv.h | 16 +++++++--- drivers/common/cnxk/roc_npc_utils.c | 8 ----- drivers/common/cnxk/version.map | 3 ++ 7 files changed, 83 insertions(+), 17 deletions(-) diff --git a/drivers/common/cnxk/roc_npc.c b/drivers/common/cnxk/roc_npc.c index 94d5cc84f8..3fd59667d8 100644 --- a/drivers/common/cnxk/roc_npc.c +++ b/drivers/common/cnxk/roc_npc.c @@ -5,6 +5,22 @@ #include "roc_api.h" #include "roc_priv.h" +uint8_t +roc_npc_get_key_type(struct roc_npc *roc_npc, struct roc_npc_flow *flow) +{ + struct npc *npc = roc_npc_to_npc_priv(roc_npc); + + return npc_get_key_type(npc, flow); +} + +uint8_t +roc_npc_kex_key_type_config_get(struct roc_npc *roc_npc) +{ + struct npc *npc = roc_npc_to_npc_priv(roc_npc); + + return npc_kex_key_type_config_get(npc); +} + int roc_npc_mark_actions_get(struct roc_npc *roc_npc) { @@ -197,10 +213,30 @@ roc_npc_mcam_enable_all_entries(struct roc_npc *roc_npc, bool enable) return npc_flow_enable_all_entries(npc, enable); } +void +roc_npc_defrag_mcam_banks(struct roc_npc *roc_npc) +{ + struct npc *npc = roc_npc_to_npc_priv(roc_npc); + struct mbox *mbox = mbox_get(npc->mbox); + struct npc_mcam_defrag_req *req; + struct npc_mcam_defrag_rsp *rsp; + int rc = 0; + + req = (struct npc_mcam_defrag_req *)mbox_alloc_msg_npc_defrag(mbox); + if (req == NULL) + goto exit; + + rc = mbox_process_msg(mbox, (void *)&rsp); + if (rc) + plt_err("Error when defragmenting MCAM banks."); + +exit: + mbox_put(mbox); +} + int roc_npc_mcam_alloc_entry(struct roc_npc *roc_npc, struct roc_npc_flow *mcam, - struct roc_npc_flow *ref_mcam, int prio, - int *resp_count) + struct roc_npc_flow *ref_mcam, int prio, int *resp_count) { struct npc *npc = roc_npc_to_npc_priv(roc_npc); diff --git a/drivers/common/cnxk/roc_npc.h b/drivers/common/cnxk/roc_npc.h index 2a409cce99..91c84d7d97 100644 --- a/drivers/common/cnxk/roc_npc.h +++ b/drivers/common/cnxk/roc_npc.h @@ -462,6 +462,9 @@ int __roc_api roc_npc_mcam_alloc_entries(struct roc_npc *roc_npc, int ref_entry, int __roc_api roc_npc_mcam_ena_dis_entry(struct roc_npc *roc_npc, struct roc_npc_flow *mcam, bool enable); int __roc_api roc_npc_mcam_write_entry(struct roc_npc *roc_npc, struct roc_npc_flow *mcam); +void __roc_api roc_npc_defrag_mcam_banks(struct roc_npc *roc_npc); +uint8_t __roc_api roc_npc_get_key_type(struct roc_npc *roc_npc, struct roc_npc_flow *flow); +uint8_t __roc_api roc_npc_kex_key_type_config_get(struct roc_npc *roc_npc); int __roc_api roc_npc_flow_parse(struct roc_npc *roc_npc, const struct roc_npc_attr *attr, const struct roc_npc_item_info pattern[], const struct roc_npc_action actions[], struct roc_npc_flow *flow); diff --git a/drivers/common/cnxk/roc_npc_mcam.c b/drivers/common/cnxk/roc_npc_mcam.c index 3aa7ff56a9..a9b923d31c 100644 --- a/drivers/common/cnxk/roc_npc_mcam.c +++ b/drivers/common/cnxk/roc_npc_mcam.c @@ -425,6 +425,21 @@ npc_mcam_alloc_entries(struct mbox *mbox, int ref_mcam, int *alloc_entry, int re return rc; } +uint8_t +npc_kex_key_type_config_get(struct npc *npc) +{ + /* KEX is configured just for X2 */ + if (npc->keyw[ROC_NPC_INTF_RX] == 1) + return NPC_CN20K_MCAM_KEY_X2; + + /* KEX is configured just for X4 */ + if (npc->keyw[ROC_NPC_INTF_RX] == 2) + return NPC_CN20K_MCAM_KEY_X4; + + /* KEX is configured for both X2 and X4 */ + return NPC_CN20K_MCAM_KEY_DYN; +} + int npc_mcam_alloc_entry(struct npc *npc, struct roc_npc_flow *mcam, struct roc_npc_flow *ref_mcam, uint8_t prio, int *resp_count) @@ -437,15 +452,20 @@ npc_mcam_alloc_entry(struct npc *npc, struct roc_npc_flow *mcam, struct roc_npc_ req = mbox_alloc_msg_npc_mcam_alloc_entry(mbox); if (req == NULL) goto exit; - req->contig = 1; + req->count = 1; req->ref_priority = prio; req->ref_entry = ref_mcam ? ref_mcam->mcam_id : 0; req->kw_type = mcam->key_type; + + if (npc_kex_key_type_config_get(npc) == NPC_CN20K_MCAM_KEY_DYN) + req->virt = 1; + rc = mbox_process_msg(mbox, (void *)&rsp); if (rc) goto exit; - mcam->mcam_id = rsp->entry; + + mcam->mcam_id = rsp->entry_list[0]; mcam->nix_intf = ref_mcam ? ref_mcam->nix_intf : 0; *resp_count = rsp->count; diff --git a/drivers/common/cnxk/roc_npc_mcam_dump.c b/drivers/common/cnxk/roc_npc_mcam_dump.c index 29221a2169..d6ee0b982a 100644 --- a/drivers/common/cnxk/roc_npc_mcam_dump.c +++ b/drivers/common/cnxk/roc_npc_mcam_dump.c @@ -830,7 +830,11 @@ npc_flow_hw_mcam_entry_dump(FILE *file, struct npc *npc, struct roc_npc_flow *fl else mbox = npc->mbox; - mcam_read_req = mbox_alloc_msg_npc_mcam_read_entry(mbox_get(mbox)); + if (roc_model_is_cn20k()) + mcam_read_req = mbox_alloc_msg_npc_cn20k_mcam_read_entry(mbox_get(mbox)); + else + mcam_read_req = mbox_alloc_msg_npc_mcam_read_entry(mbox_get(mbox)); + if (mcam_read_req == NULL) { plt_err("Failed to alloc msg"); mbox_put(mbox); diff --git a/drivers/common/cnxk/roc_npc_priv.h b/drivers/common/cnxk/roc_npc_priv.h index 56471a6ca9..5812cf0f8d 100644 --- a/drivers/common/cnxk/roc_npc_priv.h +++ b/drivers/common/cnxk/roc_npc_priv.h @@ -332,10 +332,17 @@ enum npc_kpu_parser_flag { NPC_F_LAST /* has to be the last item */ }; -#define NPC_ACTION_TERM \ - (ROC_NPC_ACTION_TYPE_DROP | ROC_NPC_ACTION_TYPE_QUEUE | \ - ROC_NPC_ACTION_TYPE_RSS | ROC_NPC_ACTION_TYPE_DUP | \ - ROC_NPC_ACTION_TYPE_SEC) +enum npc_mcam_cn20k_key_width { + NPC_CN20K_MCAM_KEY_X1 = 0, + NPC_CN20K_MCAM_KEY_DYN = NPC_CN20K_MCAM_KEY_X1, + NPC_CN20K_MCAM_KEY_X2, + NPC_CN20K_MCAM_KEY_X4, + NPC_CN20K_MCAM_KEY_MAX, +}; + +#define NPC_ACTION_TERM \ + (ROC_NPC_ACTION_TYPE_DROP | ROC_NPC_ACTION_TYPE_QUEUE | ROC_NPC_ACTION_TYPE_RSS | \ + ROC_NPC_ACTION_TYPE_DUP | ROC_NPC_ACTION_TYPE_SEC) struct npc_xtract_info { /* Length in bytes of pkt data extracted. len = 0 @@ -498,6 +505,7 @@ int npc_update_parse_state(struct npc_parse_state *pst, struct npc_parse_item_in void npc_get_hw_supp_mask(struct npc_parse_state *pst, struct npc_parse_item_info *info, int lid, int lt); uint8_t npc_get_key_type(struct npc *npc, struct roc_npc_flow *flow); +uint8_t npc_kex_key_type_config_get(struct npc *npc); int npc_mask_is_supported(const char *mask, const char *hw_mask, int len); int npc_parse_item_basic(const struct roc_npc_item_info *item, struct npc_parse_item_info *info); int npc_parse_meta_items(struct npc_parse_state *pst); diff --git a/drivers/common/cnxk/roc_npc_utils.c b/drivers/common/cnxk/roc_npc_utils.c index 75d3b0702c..d95dc0996c 100644 --- a/drivers/common/cnxk/roc_npc_utils.c +++ b/drivers/common/cnxk/roc_npc_utils.c @@ -4,14 +4,6 @@ #include "roc_api.h" #include "roc_priv.h" -enum npc_mcam_cn20k_key_width { - NPC_CN20K_MCAM_KEY_X1 = 0, - NPC_CN20K_MCAM_KEY_DYN = NPC_CN20K_MCAM_KEY_X1, - NPC_CN20K_MCAM_KEY_X2, - NPC_CN20K_MCAM_KEY_X4, - NPC_CN20K_MCAM_KEY_MAX, -}; - uint8_t npc_get_key_type(struct npc *npc, struct roc_npc_flow *flow) { diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map index cdbfc1d39a..bc2d7c2336 100644 --- a/drivers/common/cnxk/version.map +++ b/drivers/common/cnxk/version.map @@ -465,6 +465,8 @@ INTERNAL { roc_npa_pool_range_update_check; roc_npa_zero_aura_handle; roc_npc_aged_flow_ctx_get; + roc_npc_defrag_mcam_banks; + roc_npc_get_key_type; roc_npc_fini; roc_npc_flow_create; roc_npc_flow_destroy; @@ -475,6 +477,7 @@ INTERNAL { roc_npc_get_low_priority_mcam; roc_npc_init; roc_npc_kex_capa_get; + roc_npc_kex_key_type_config_get; roc_npc_mark_actions_get; roc_npc_mark_actions_sub_return; roc_npc_vtag_actions_get;