common/cnxk: add mailbox to configure RXC
authorVidya Sagar Velumuri <vvelumuri@marvell.com>
Fri, 25 Jun 2021 05:36:37 +0000 (11:06 +0530)
committerAkhil Goyal <gakhil@marvell.com>
Wed, 7 Jul 2021 19:15:08 +0000 (21:15 +0200)
Add mailbox to configure timeouts and thresholds in
CPT RXC unit.

Signed-off-by: Aakash Sasidharan <asasidharan@marvell.com>
Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
drivers/common/cnxk/roc_cpt.c
drivers/common/cnxk/roc_cpt.h
drivers/common/cnxk/version.map

index d891a3b..e723ee7 100644 (file)
@@ -5,6 +5,33 @@
 #include "roc_api.h"
 #include "roc_priv.h"
 
+int
+roc_cpt_rxc_time_cfg(struct roc_cpt *roc_cpt, struct roc_cpt_rxc_time_cfg *cfg)
+{
+       struct cpt *cpt = roc_cpt_to_cpt_priv(roc_cpt);
+       struct cpt_rxc_time_cfg_req *req;
+       struct dev *dev = &cpt->dev;
+
+       req = mbox_alloc_msg_cpt_rxc_time_cfg(dev->mbox);
+       if (req == NULL)
+               return -ENOSPC;
+
+       req->blkaddr = 0;
+
+       /* The step value is in microseconds. */
+       req->step = cfg->step;
+
+       /* The timeout will be: limit * step microseconds */
+       req->zombie_limit = cfg->zombie_limit;
+       req->zombie_thres = cfg->zombie_thres;
+
+       /* The timeout will be: limit * step microseconds */
+       req->active_limit = cfg->active_limit;
+       req->active_thres = cfg->active_thres;
+
+       return mbox_process(dev->mbox);
+}
+
 int
 cpt_get_msix_offset(struct dev *dev, struct msix_offset_rsp **msix_rsp)
 {
index 4e1cf84..bae472f 100644 (file)
@@ -28,6 +28,16 @@ struct roc_cpt {
        uint8_t reserved[ROC_CPT_MEM_SZ] __plt_cache_aligned;
 } __plt_cache_aligned;
 
+struct roc_cpt_rxc_time_cfg {
+       uint32_t step;
+       uint16_t active_limit;
+       uint16_t active_thres;
+       uint16_t zombie_limit;
+       uint16_t zombie_thres;
+};
+
+int __roc_api roc_cpt_rxc_time_cfg(struct roc_cpt *roc_cpt,
+                                  struct roc_cpt_rxc_time_cfg *cfg);
 int __roc_api roc_cpt_dev_init(struct roc_cpt *roc_cpt);
 int __roc_api roc_cpt_dev_fini(struct roc_cpt *roc_cpt);
 int __roc_api roc_cpt_eng_grp_add(struct roc_cpt *roc_cpt,
index 133a250..8699ea8 100644 (file)
@@ -38,6 +38,7 @@ INTERNAL {
        roc_cpt_dev_fini;
        roc_cpt_dev_init;
        roc_cpt_eng_grp_add;
+       roc_cpt_rxc_time_cfg;
        roc_error_msg_get;
        roc_idev_cpt_get;
        roc_idev_cpt_set;