]> git.droids-corp.org - dpdk.git/commitdiff
common/cnxk: support dumping flow MCAM entry data
authorSatheesh Paul <psatheesh@marvell.com>
Tue, 17 May 2022 04:04:08 +0000 (09:34 +0530)
committerJerin Jacob <jerinj@marvell.com>
Tue, 14 Jun 2022 12:23:26 +0000 (14:23 +0200)
When dumping flow data, read hardware MCAM entry corresponding
to the flow and print that data also.

Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Reviewed-by: Kiran Kumar K <kirankumark@marvell.com>
drivers/common/cnxk/roc_npc_mcam_dump.c

index 679e3d7657a68e6de0d43284e73f7ecd0b246ea1..2aaf3ccd0bce7f317e3f6609456b4bda8c726df2 100644 (file)
@@ -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");
 }