From: Anoob Joseph <anoobj@marvell.com>
To: Akhil Goyal <gakhil@marvell.com>, Thomas Monjalon <thomas@monjalon.net>
Cc: Aakash Sasidharan <asasidharan@marvell.com>,
Jerin Jacob <jerinj@marvell.com>,
Ankur Dwivedi <adwivedi@marvell.com>,
Tejasree Kondoj <ktejasree@marvell.com>, <dev@dpdk.org>,
Srujana Challa <schalla@marvell.com>
Subject: [dpdk-dev] [PATCH 05/11] common/cnxk: add CPT diagnostics
Date: Wed, 2 Jun 2021 21:26:19 +0530 [thread overview]
Message-ID: <1622649385-22652-6-git-send-email-anoobj@marvell.com> (raw)
In-Reply-To: <1622649385-22652-1-git-send-email-anoobj@marvell.com>
From: Aakash Sasidharan <asasidharan@marvell.com>
Add routines to fetch and dump CPT statistics and states.
Signed-off-by: Aakash Sasidharan <asasidharan@marvell.com>
Signed-off-by: Srujana Challa <schalla@marvell.com>
---
drivers/common/cnxk/roc_cpt.c | 182 ++++++++++++++++++++++++++++++++++++++++
drivers/common/cnxk/roc_cpt.h | 2 +
drivers/common/cnxk/version.map | 2 +
3 files changed, 186 insertions(+)
diff --git a/drivers/common/cnxk/roc_cpt.c b/drivers/common/cnxk/roc_cpt.c
index 0ee3c02..a23e4bb 100644
--- a/drivers/common/cnxk/roc_cpt.c
+++ b/drivers/common/cnxk/roc_cpt.c
@@ -118,6 +118,34 @@ cpt_lf_unregister_irqs(struct roc_cpt_lf *lf)
cpt_lf_unregister_misc_irq(lf);
}
+static void
+cpt_lf_dump(struct roc_cpt_lf *lf)
+{
+ plt_cpt_dbg("CPT LF");
+ plt_cpt_dbg("RBASE: 0x%016lx", lf->rbase);
+ plt_cpt_dbg("LMT_BASE: 0x%016lx", lf->lmt_base);
+ plt_cpt_dbg("MSIXOFF: 0x%x", lf->msixoff);
+ plt_cpt_dbg("LF_ID: 0x%x", lf->lf_id);
+ plt_cpt_dbg("NB DESC: %d", lf->nb_desc);
+ plt_cpt_dbg("FC_ADDR: 0x%016lx", (uintptr_t)lf->fc_addr);
+ plt_cpt_dbg("CQ.VADDR: 0x%016lx", (uintptr_t)lf->iq_vaddr);
+
+ plt_cpt_dbg("CPT LF REG:");
+ plt_cpt_dbg("LF_CTL[0x%016llx]: 0x%016lx", CPT_LF_CTL,
+ plt_read64(lf->rbase + CPT_LF_CTL));
+ plt_cpt_dbg("Q_SIZE[0x%016llx]: 0x%016lx", CPT_LF_INPROG,
+ plt_read64(lf->rbase + CPT_LF_INPROG));
+
+ plt_cpt_dbg("Q_BASE[0x%016llx]: 0x%016lx", CPT_LF_Q_BASE,
+ plt_read64(lf->rbase + CPT_LF_Q_BASE));
+ plt_cpt_dbg("Q_SIZE[0x%016llx]: 0x%016lx", CPT_LF_Q_SIZE,
+ plt_read64(lf->rbase + CPT_LF_Q_SIZE));
+ plt_cpt_dbg("Q_INST_PTR[0x%016llx]: 0x%016lx", CPT_LF_Q_INST_PTR,
+ plt_read64(lf->rbase + CPT_LF_Q_INST_PTR));
+ plt_cpt_dbg("Q_GRP_PTR[0x%016llx]: 0x%016lx", CPT_LF_Q_GRP_PTR,
+ plt_read64(lf->rbase + CPT_LF_Q_GRP_PTR));
+}
+
int
roc_cpt_rxc_time_cfg(struct roc_cpt *roc_cpt, struct roc_cpt_rxc_time_cfg *cfg)
{
@@ -387,6 +415,8 @@ roc_cpt_lf_init(struct roc_cpt *roc_cpt, struct roc_cpt_lf *lf)
lf->pf_func = cpt->dev.pf_func;
+ cpt_lf_dump(lf);
+
return 0;
lf_destroy:
@@ -530,6 +560,158 @@ roc_cpt_eng_grp_add(struct roc_cpt *roc_cpt, enum cpt_eng_type eng_type)
return rsp->eng_grp_num;
}
+static int
+cpt_af_reg_read(struct roc_cpt *roc_cpt, uint64_t reg, uint64_t *val)
+{
+ struct cpt *cpt = roc_cpt_to_cpt_priv(roc_cpt);
+ struct cpt_rd_wr_reg_msg *msg;
+ struct dev *dev = &cpt->dev;
+ int ret;
+
+ msg = mbox_alloc_msg_cpt_rd_wr_register(dev->mbox);
+ if (msg == NULL)
+ return -EIO;
+
+ msg->hdr.pcifunc = dev->pf_func;
+
+ msg->is_write = 0;
+ msg->reg_offset = reg;
+ msg->ret_val = val;
+
+ ret = mbox_process_msg(dev->mbox, (void *)&msg);
+ if (ret)
+ return -EIO;
+
+ *val = msg->val;
+
+ return 0;
+}
+
+static int
+cpt_sts_print(struct roc_cpt *roc_cpt)
+{
+ struct cpt *cpt = roc_cpt_to_cpt_priv(roc_cpt);
+ struct dev *dev = &cpt->dev;
+ struct cpt_sts_req *req;
+ struct cpt_sts_rsp *rsp;
+ int ret;
+
+ req = mbox_alloc_msg_cpt_sts_get(dev->mbox);
+ if (req == NULL)
+ return -EIO;
+
+ req->blkaddr = 0;
+ ret = mbox_process_msg(dev->mbox, (void *)&rsp);
+ if (ret)
+ return -EIO;
+
+ plt_print(" %s:\t0x%016lx", "inst_req_pc", rsp->inst_req_pc);
+ plt_print(" %s:\t0x%016lx", "inst_lat_pc", rsp->inst_lat_pc);
+ plt_print(" %s:\t\t0x%016lx", "rd_req_pc", rsp->rd_req_pc);
+ plt_print(" %s:\t\t0x%016lx", "rd_lat_pc", rsp->rd_lat_pc);
+ plt_print(" %s:\t\t0x%016lx", "rd_uc_pc", rsp->rd_uc_pc);
+ plt_print(" %s:\t0x%016lx", "active_cycles_pc",
+ rsp->active_cycles_pc);
+ plt_print(" %s:\t\t0x%016lx", "ctx_mis_pc", rsp->ctx_mis_pc);
+ plt_print(" %s:\t\t0x%016lx", "ctx_hit_pc", rsp->ctx_hit_pc);
+ plt_print(" %s:\t\t0x%016lx", "ctx_aop_pc", rsp->ctx_aop_pc);
+ plt_print(" %s:\t0x%016lx", "ctx_aop_lat_pc", rsp->ctx_aop_lat_pc);
+ plt_print(" %s:\t0x%016lx", "ctx_ifetch_pc", rsp->ctx_ifetch_pc);
+ plt_print(" %s:\t0x%016lx", "ctx_ifetch_lat_pc",
+ rsp->ctx_ifetch_lat_pc);
+ plt_print(" %s:\t0x%016lx", "ctx_ffetch_pc", rsp->ctx_ffetch_pc);
+ plt_print(" %s:\t0x%016lx", "ctx_ffetch_lat_pc",
+ rsp->ctx_ffetch_lat_pc);
+ plt_print(" %s:\t0x%016lx", "ctx_wback_pc", rsp->ctx_wback_pc);
+ plt_print(" %s:\t0x%016lx", "ctx_wback_lat_pc",
+ rsp->ctx_wback_lat_pc);
+ plt_print(" %s:\t\t0x%016lx", "ctx_psh_pc", rsp->ctx_psh_pc);
+ plt_print(" %s:\t0x%016lx", "ctx_psh_lat_pc", rsp->ctx_psh_lat_pc);
+ plt_print(" %s:\t\t0x%016lx", "ctx_err", rsp->ctx_err);
+ plt_print(" %s:\t\t0x%016lx", "ctx_enc_id", rsp->ctx_enc_id);
+ plt_print(" %s:\t0x%016lx", "ctx_flush_timer", rsp->ctx_flush_timer);
+ plt_print(" %s:\t\t0x%016lx", "rxc_time", rsp->rxc_time);
+ plt_print(" %s:\t0x%016lx", "rxc_time_cfg", rsp->rxc_time_cfg);
+ plt_print(" %s:\t0x%016lx", "rxc_active_sts", rsp->rxc_active_sts);
+ plt_print(" %s:\t0x%016lx", "rxc_zombie_sts", rsp->rxc_zombie_sts);
+ plt_print(" %s:\t0x%016lx", "rxc_dfrg", rsp->rxc_dfrg);
+ plt_print(" %s:\t0x%016lx", "x2p_link_cfg0", rsp->x2p_link_cfg0);
+ plt_print(" %s:\t0x%016lx", "x2p_link_cfg1", rsp->x2p_link_cfg1);
+ plt_print(" %s:\t0x%016lx", "busy_sts_ae", rsp->busy_sts_ae);
+ plt_print(" %s:\t0x%016lx", "free_sts_ae", rsp->free_sts_ae);
+ plt_print(" %s:\t0x%016lx", "busy_sts_se", rsp->busy_sts_se);
+ plt_print(" %s:\t0x%016lx", "free_sts_se", rsp->free_sts_se);
+ plt_print(" %s:\t0x%016lx", "busy_sts_ie", rsp->busy_sts_ie);
+ plt_print(" %s:\t0x%016lx", "free_sts_ie", rsp->free_sts_ie);
+ plt_print(" %s:\t0x%016lx", "exe_err_info", rsp->exe_err_info);
+ plt_print(" %s:\t\t0x%016lx", "cptclk_cnt", rsp->cptclk_cnt);
+ plt_print(" %s:\t\t0x%016lx", "diag", rsp->diag);
+
+ return 0;
+}
+
+int
+roc_cpt_afs_print(struct roc_cpt *roc_cpt)
+{
+ uint64_t reg_val;
+
+ plt_print("CPT AF registers:");
+
+ if (cpt_af_reg_read(roc_cpt, CPT_AF_LFX_CTL(0), ®_val))
+ return -EIO;
+
+ plt_print(" CPT_AF_LF0_CTL:\t0x%016lx", reg_val);
+
+ if (cpt_af_reg_read(roc_cpt, CPT_AF_LFX_CTL2(0), ®_val))
+ return -EIO;
+
+ plt_print(" CPT_AF_LF0_CTL2:\t0x%016lx", reg_val);
+
+ cpt_sts_print(roc_cpt);
+
+ return 0;
+}
+
+static void
+cpt_lf_print(struct roc_cpt_lf *lf)
+{
+ uint64_t reg_val;
+
+ reg_val = plt_read64(lf->rbase + CPT_LF_CTX_ENC_BYTE_CNT);
+ plt_print(" Encrypted byte count:\t%ld", reg_val);
+
+ reg_val = plt_read64(lf->rbase + CPT_LF_CTX_ENC_PKT_CNT);
+ plt_print(" Encrypted packet count:\t%ld", reg_val);
+
+ reg_val = plt_read64(lf->rbase + CPT_LF_CTX_DEC_BYTE_CNT);
+ plt_print(" Decrypted byte count:\t%ld", reg_val);
+
+ reg_val = plt_read64(lf->rbase + CPT_LF_CTX_ENC_PKT_CNT);
+ plt_print(" Decrypted packet count:\t%ld", reg_val);
+}
+
+int
+roc_cpt_lfs_print(struct roc_cpt *roc_cpt)
+{
+ struct cpt *cpt = roc_cpt_to_cpt_priv(roc_cpt);
+ struct roc_cpt_lf *lf;
+ int lf_id;
+
+ if (cpt == NULL)
+ return -EINVAL;
+
+ for (lf_id = 0; lf_id < roc_cpt->nb_lf; lf_id++) {
+ lf = roc_cpt->lf[lf_id];
+ if (lf == NULL)
+ continue;
+
+ plt_print("Count registers for CPT LF%d:", lf_id);
+ cpt_lf_print(lf);
+ }
+
+ return 0;
+}
+
void
roc_cpt_iq_disable(struct roc_cpt_lf *lf)
{
diff --git a/drivers/common/cnxk/roc_cpt.h b/drivers/common/cnxk/roc_cpt.h
index abe492e..692fa79 100644
--- a/drivers/common/cnxk/roc_cpt.h
+++ b/drivers/common/cnxk/roc_cpt.h
@@ -58,5 +58,7 @@ int __roc_api roc_cpt_dev_configure(struct roc_cpt *roc_cpt, int nb_lf);
void __roc_api roc_cpt_dev_clear(struct roc_cpt *roc_cpt);
int __roc_api roc_cpt_lf_init(struct roc_cpt *roc_cpt, struct roc_cpt_lf *lf);
void __roc_api roc_cpt_lf_fini(struct roc_cpt_lf *lf);
+int __roc_api roc_cpt_afs_print(struct roc_cpt *roc_cpt);
+int __roc_api roc_cpt_lfs_print(struct roc_cpt *roc_cpt);
void __roc_api roc_cpt_iq_disable(struct roc_cpt_lf *lf);
#endif /* _ROC_CPT_H_ */
diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map
index 63f5fda..4f28f64 100644
--- a/drivers/common/cnxk/version.map
+++ b/drivers/common/cnxk/version.map
@@ -11,6 +11,7 @@ INTERNAL {
cnxk_logtype_tim;
cnxk_logtype_tm;
roc_clk_freq_get;
+ roc_cpt_afs_print;
roc_cpt_dev_clear;
roc_cpt_dev_configure;
roc_cpt_dev_fini;
@@ -19,6 +20,7 @@ INTERNAL {
roc_cpt_iq_disable;
roc_cpt_lf_init;
roc_cpt_lf_fini;
+ roc_cpt_lfs_print;
roc_cpt_rxc_time_cfg;
roc_error_msg_get;
roc_idev_lmt_base_addr_get;
--
2.7.4
next prev parent reply other threads:[~2021-06-02 15:57 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-02 15:56 [dpdk-dev] [PATCH 00/11] Add CPT in Marvell CNXK common driver Anoob Joseph
2021-06-02 15:56 ` [dpdk-dev] [PATCH 01/11] common/cnxk: add CPT HW defines Anoob Joseph
2021-06-14 6:35 ` Akhil Goyal
2021-06-02 15:56 ` [dpdk-dev] [PATCH 02/11] common/cnxk: add CPT dev config routines Anoob Joseph
2021-06-14 6:34 ` Akhil Goyal
2021-06-02 15:56 ` [dpdk-dev] [PATCH 03/11] common/cnxk: add mbox to configure RXC Anoob Joseph
2021-06-02 15:56 ` [dpdk-dev] [PATCH 04/11] common/cnxk: add CPT LF config Anoob Joseph
2021-06-02 15:56 ` Anoob Joseph [this message]
2021-06-02 15:56 ` [dpdk-dev] [PATCH 06/11] common/cnxk: add CPT LF flush Anoob Joseph
2021-06-02 15:56 ` [dpdk-dev] [PATCH 07/11] common/cnxk: add SE microcode defines Anoob Joseph
2021-06-02 15:56 ` [dpdk-dev] [PATCH 08/11] common/cnxk: add IE " Anoob Joseph
2021-06-02 15:56 ` [dpdk-dev] [PATCH 09/11] common/cnxk: add AE " Anoob Joseph
2021-06-02 15:56 ` [dpdk-dev] [PATCH 10/11] common/cnxk: add lmtline init Anoob Joseph
2021-06-02 15:56 ` [dpdk-dev] [PATCH 11/11] common/cnxk: add fpm tables Anoob Joseph
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1622649385-22652-6-git-send-email-anoobj@marvell.com \
--to=anoobj@marvell.com \
--cc=adwivedi@marvell.com \
--cc=asasidharan@marvell.com \
--cc=dev@dpdk.org \
--cc=gakhil@marvell.com \
--cc=jerinj@marvell.com \
--cc=ktejasree@marvell.com \
--cc=schalla@marvell.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.