From: Tejasree Kondoj <ktejasree@marvell.com>
To: Akhil Goyal <gakhil@marvell.com>
Cc: Vidya Sagar Velumuri <vvelumuri@marvell.com>,
Anoob Joseph <anoobj@marvell.com>, <dev@dpdk.org>
Subject: [PATCH v2 05/25] crypto/cnxk: add cn20k lmtst routines
Date: Tue, 3 Jun 2025 17:20:06 +0530 [thread overview]
Message-ID: <20250603115026.2664706-6-ktejasree@marvell.com> (raw)
In-Reply-To: <20250603115026.2664706-1-ktejasree@marvell.com>
From: Vidya Sagar Velumuri <vvelumuri@marvell.com>
Add lmtst routines for cn20k
Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>
---
drivers/common/cnxk/roc_cpt.h | 7 +--
drivers/crypto/cnxk/cn20k_cryptodev_ops.h | 53 +++++++++++++++++++++++
2 files changed, 57 insertions(+), 3 deletions(-)
diff --git a/drivers/common/cnxk/roc_cpt.h b/drivers/common/cnxk/roc_cpt.h
index 37634793d4..02f49c06b7 100644
--- a/drivers/common/cnxk/roc_cpt.h
+++ b/drivers/common/cnxk/roc_cpt.h
@@ -64,9 +64,10 @@
ROC_CN10K_TWO_CPT_INST_DW_M1 << (19 + 3 * 13) | \
ROC_CN10K_TWO_CPT_INST_DW_M1 << (19 + 3 * 14))
-#define ROC_CN20K_CPT_LMT_ARG ROC_CN10K_CPT_LMT_ARG
-#define ROC_CN20K_DUAL_CPT_LMT_ARG ROC_CN10K_DUAL_CPT_LMT_ARG
-#define ROC_CN20K_CPT_INST_DW_M1 ROC_CN10K_CPT_INST_DW_M1
+#define ROC_CN20K_CPT_LMT_ARG ROC_CN10K_CPT_LMT_ARG
+#define ROC_CN20K_DUAL_CPT_LMT_ARG ROC_CN10K_DUAL_CPT_LMT_ARG
+#define ROC_CN20K_CPT_INST_DW_M1 ROC_CN10K_CPT_INST_DW_M1
+#define ROC_CN20K_TWO_CPT_INST_DW_M1 ROC_CN10K_TWO_CPT_INST_DW_M1
/* CPT helper macros */
#define ROC_CPT_AH_HDR_LEN 12
diff --git a/drivers/crypto/cnxk/cn20k_cryptodev_ops.h b/drivers/crypto/cnxk/cn20k_cryptodev_ops.h
index d9594513d1..bdd6f71022 100644
--- a/drivers/crypto/cnxk/cn20k_cryptodev_ops.h
+++ b/drivers/crypto/cnxk/cn20k_cryptodev_ops.h
@@ -18,7 +18,60 @@
#include "cnxk_cryptodev.h"
+#define CN20K_PKTS_PER_STEORL 32
+#define CN20K_LMTLINES_PER_STEORL 16
+
extern struct rte_cryptodev_ops cn20k_cpt_ops;
void cn20k_cpt_set_enqdeq_fns(struct rte_cryptodev *dev);
+
+static __rte_always_inline void __rte_hot
+cn20k_cpt_lmtst_dual_submit(uint64_t *io_addr, const uint16_t lmt_id, int *i)
+{
+ uint64_t lmt_arg;
+
+ /* Check if the total number of instructions is odd or even. */
+ const int flag_odd = *i & 0x1;
+
+ /* Reduce i by 1 when odd number of instructions.*/
+ *i -= flag_odd;
+
+ if (*i > CN20K_PKTS_PER_STEORL) {
+ lmt_arg = ROC_CN20K_DUAL_CPT_LMT_ARG | (CN20K_LMTLINES_PER_STEORL - 1) << 12 |
+ (uint64_t)lmt_id;
+ roc_lmt_submit_steorl(lmt_arg, *io_addr);
+ lmt_arg = ROC_CN20K_DUAL_CPT_LMT_ARG |
+ (*i / 2 - CN20K_LMTLINES_PER_STEORL - 1) << 12 |
+ (uint64_t)(lmt_id + CN20K_LMTLINES_PER_STEORL);
+ roc_lmt_submit_steorl(lmt_arg, *io_addr);
+ if (flag_odd) {
+ *io_addr = (*io_addr & ~(uint64_t)(0x7 << 4)) |
+ (ROC_CN20K_CPT_INST_DW_M1 << 4);
+ lmt_arg = (uint64_t)(lmt_id + *i / 2);
+ roc_lmt_submit_steorl(lmt_arg, *io_addr);
+ *io_addr = (*io_addr & ~(uint64_t)(0x7 << 4)) |
+ (ROC_CN20K_TWO_CPT_INST_DW_M1 << 4);
+ *i += 1;
+ }
+ } else {
+ if (*i != 0) {
+ lmt_arg =
+ ROC_CN20K_DUAL_CPT_LMT_ARG | (*i / 2 - 1) << 12 | (uint64_t)lmt_id;
+ roc_lmt_submit_steorl(lmt_arg, *io_addr);
+ }
+
+ if (flag_odd) {
+ *io_addr = (*io_addr & ~(uint64_t)(0x7 << 4)) |
+ (ROC_CN20K_CPT_INST_DW_M1 << 4);
+ lmt_arg = (uint64_t)(lmt_id + *i / 2);
+ roc_lmt_submit_steorl(lmt_arg, *io_addr);
+ *io_addr = (*io_addr & ~(uint64_t)(0x7 << 4)) |
+ (ROC_CN20K_TWO_CPT_INST_DW_M1 << 4);
+ *i += 1;
+ }
+ }
+
+ rte_io_wmb();
+}
+
#endif /* _CN20K_CRYPTODEV_OPS_H_ */
--
2.25.1
next prev parent reply other threads:[~2025-06-03 11:51 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-03 11:50 [PATCH v2 00/25] add CN20K support to cnxk crypto PMD Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 01/25] crypto/cnxk: probe cn20k device Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 02/25] crypto/cnxk: add cn20k ops skeleton Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 03/25] crypto/cnxk: add dev info get Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 04/25] crypto/cnxk: add cn20k datapath skeleton Tejasree Kondoj
2025-06-03 11:50 ` Tejasree Kondoj [this message]
2025-06-03 11:50 ` [PATCH v2 06/25] crypto/cnxk: add cn20k enqueue path Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 07/25] crypto/cnxk: add cn20k dequeue path Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 08/25] crypto/cnxk: move debug dumps to common Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 09/25] crypto/cnxk: add cn20k security skeletion Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 10/25] crypto/cnxk: add security session creation Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 11/25] crypto/cnxk: add security session destroy Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 12/25] crypto/cnxk: move code to common Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 13/25] crypto/cnxk: add IPsec session update Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 14/25] crypto/cnxk: add security datapath Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 15/25] crypto/cnxk: add Rx inject in security lookaside Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 16/25] crypto/cnxk: add TLS skeleton Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 17/25] crypto/cnxk: add TLS read session Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 18/25] crypto/cnxk: add TLS write session Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 19/25] crypto/cnxk: add TLS session destroy Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 20/25] crypto/cnxk: add TLS datapath Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 21/25] crypto/cnxk: add TLS post process Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 22/25] crypto/cnxk: add TLS session update Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 23/25] crypto/cnxk: support raw API for cn20k Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 24/25] crypto/cnxk: add model check " Tejasree Kondoj
2025-06-03 11:50 ` [PATCH v2 25/25] doc: update cn20k CPT documentation Tejasree Kondoj
2025-06-03 14:25 ` [PATCH v2 00/25] add CN20K support to cnxk crypto PMD Akhil Goyal
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=20250603115026.2664706-6-ktejasree@marvell.com \
--to=ktejasree@marvell.com \
--cc=anoobj@marvell.com \
--cc=dev@dpdk.org \
--cc=gakhil@marvell.com \
--cc=vvelumuri@marvell.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).