From d382a8d322776400ed17435b44532f4a7ff6d3df Mon Sep 17 00:00:00 2001 From: Satheesh Paul Date: Tue, 17 May 2022 09:34:08 +0530 Subject: [PATCH] common/cnxk: support dumping flow MCAM entry data When dumping flow data, read hardware MCAM entry corresponding to the flow and print that data also. Signed-off-by: Satheesh Paul Reviewed-by: Kiran Kumar K --- drivers/common/cnxk/roc_npc_mcam_dump.c | 26 ++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/common/cnxk/roc_npc_mcam_dump.c b/drivers/common/cnxk/roc_npc_mcam_dump.c index 679e3d7657..2aaf3ccd0b 100644 --- a/drivers/common/cnxk/roc_npc_mcam_dump.c +++ b/drivers/common/cnxk/roc_npc_mcam_dump.c @@ -586,8 +586,10 @@ roc_npc_flow_mcam_dump(FILE *file, struct roc_npc *roc_npc, struct roc_npc_flow *flow) { struct npc *npc = roc_npc_to_npc_priv(roc_npc); + struct npc_mcam_read_entry_req *mcam_read_req; + struct npc_mcam_read_entry_rsp *mcam_read_rsp; bool is_rx = 0; - int i; + int i, rc = 0; fprintf(file, "MCAM Index:%d\n", flow->mcam_id); fprintf(file, "Interface :%s (%d)\n", intf_str[flow->nix_intf], @@ -609,5 +611,27 @@ roc_npc_flow_mcam_dump(FILE *file, struct roc_npc *roc_npc, fprintf(file, "\tDW%d_Mask:%016lX\n", i, flow->mcam_mask[i]); } + mcam_read_req = mbox_alloc_msg_npc_mcam_read_entry(npc->mbox); + if (mcam_read_req == NULL) { + plt_err("Failed to alloc msg"); + return; + } + + mcam_read_req->entry = flow->mcam_id; + rc = mbox_process_msg(npc->mbox, (void *)&mcam_read_rsp); + if (rc) { + plt_err("Failed to fetch MCAM entry"); + return; + } + + fprintf(file, "HW MCAM Data :\n"); + + for (i = 0; i < ROC_NPC_MAX_MCAM_WIDTH_DWORDS; i++) { + fprintf(file, "\tDW%d :%016lX\n", i, + mcam_read_rsp->entry_data.kw[i]); + fprintf(file, "\tDW%d_Mask:%016lX\n", i, + mcam_read_rsp->entry_data.kw_mask[i]); + } + fprintf(file, "\n"); } -- 2.20.1