[PATCH 18/31] common/cnxk: enable CQ stashing

Nithin Dabilpuram ndabilpuram at marvell.com
Fri Aug 11 10:57:52 CEST 2023


From: Kommula Shiva Shankar <kshankar at marvell.com>

This patch enables CQ stashing for better CQE
processing performance

Signed-off-by: Kommula Shiva Shankar <kshankar at marvell.com>
---
 drivers/common/cnxk/roc_features.h  | 6 ++++++
 drivers/common/cnxk/roc_nix.h       | 1 +
 drivers/common/cnxk/roc_nix_queue.c | 7 +++++++
 3 files changed, 14 insertions(+)

diff --git a/drivers/common/cnxk/roc_features.h b/drivers/common/cnxk/roc_features.h
index 815f800e7a..a461ca46c5 100644
--- a/drivers/common/cnxk/roc_features.h
+++ b/drivers/common/cnxk/roc_features.h
@@ -46,6 +46,12 @@ roc_feature_nix_has_reass(void)
 	return roc_model_is_cn10ka();
 }
 
+static inline bool
+roc_feature_nix_has_cqe_stash(void)
+{
+	return roc_model_is_cn10ka_b0();
+}
+
 static inline bool
 roc_feature_nix_has_rxchan_multi_bpid(void)
 {
diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h
index bb55fbe971..5892de6b24 100644
--- a/drivers/common/cnxk/roc_nix.h
+++ b/drivers/common/cnxk/roc_nix.h
@@ -368,6 +368,7 @@ struct roc_nix_cq {
 	/* Input parameters */
 	uint16_t qid;
 	uint32_t nb_desc;
+	uint8_t stash_thresh;
 	/* End of Input parameters */
 	uint16_t drop_thresh;
 	struct roc_nix *roc_nix;
diff --git a/drivers/common/cnxk/roc_nix_queue.c b/drivers/common/cnxk/roc_nix_queue.c
index 5e689d08be..f96d5c3a96 100644
--- a/drivers/common/cnxk/roc_nix_queue.c
+++ b/drivers/common/cnxk/roc_nix_queue.c
@@ -908,6 +908,13 @@ roc_nix_cq_init(struct roc_nix *roc_nix, struct roc_nix_cq *cq)
 	}
 	cq_ctx->bp = cq->drop_thresh;
 
+	if (roc_feature_nix_has_cqe_stash()) {
+		if (cq_ctx->caching) {
+			cq_ctx->stashing = 1;
+			cq_ctx->stash_thresh = cq->stash_thresh;
+		}
+	}
+
 	rc = mbox_process(mbox);
 	mbox_put(mbox);
 	if (rc)
-- 
2.25.1



More information about the dev mailing list