[09/20] common/cnxk: allow force use of SSO pffunc for outb inline

Message ID 20220207072932.22409-9-ndabilpuram@marvell.com (mailing list archive)
State Changes Requested, archived
Delegated to: Jerin Jacob
Headers
Series [01/20] common/cnxk: increase resource count for bitmap alloc |

Commit Message

Nithin Dabilpuram Feb. 7, 2022, 7:29 a.m. UTC
  Allow force use of SSO pffunc even when inline dev is available
so that in case driver needs events directly delivered to
event device.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
---
 drivers/common/cnxk/roc_nix.h     | 1 +
 drivers/common/cnxk/roc_nix_inl.c | 7 ++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)
  

Patch

diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h
index 0122b98..57a595f 100644
--- a/drivers/common/cnxk/roc_nix.h
+++ b/drivers/common/cnxk/roc_nix.h
@@ -386,6 +386,7 @@  struct roc_nix {
 	uint16_t outb_nb_crypto_qs;
 	uint16_t ipsec_in_max_spi;
 	uint16_t ipsec_out_max_sa;
+	bool ipsec_out_sso_pffunc;
 	/* End of input parameters */
 	/* LMT line base for "Per Core Tx LMT line" mode*/
 	uintptr_t lmt_base;
diff --git a/drivers/common/cnxk/roc_nix_inl.c b/drivers/common/cnxk/roc_nix_inl.c
index ac17e95..003f972 100644
--- a/drivers/common/cnxk/roc_nix_inl.c
+++ b/drivers/common/cnxk/roc_nix_inl.c
@@ -311,6 +311,10 @@  roc_nix_inl_outb_init(struct roc_nix *roc_nix)
 	/* Retrieve inline device if present */
 	inl_dev = idev->nix_inl_dev;
 	sso_pffunc = inl_dev ? inl_dev->dev.pf_func : idev_sso_pffunc_get();
+	/* Use sso_pffunc if explicitly requested */
+	if (roc_nix->ipsec_out_sso_pffunc)
+		sso_pffunc = idev_sso_pffunc_get();
+
 	if (!sso_pffunc) {
 		plt_err("Failed to setup inline outb, need either "
 			"inline device or sso device");
@@ -328,7 +332,8 @@  roc_nix_inl_outb_init(struct roc_nix *roc_nix)
 	eng_grpmask = (1ULL << ROC_CPT_DFLT_ENG_GRP_SE |
 		       1ULL << ROC_CPT_DFLT_ENG_GRP_SE_IE |
 		       1ULL << ROC_CPT_DFLT_ENG_GRP_AE);
-	rc = cpt_lfs_alloc(dev, eng_grpmask, blkaddr, true);
+	rc = cpt_lfs_alloc(dev, eng_grpmask, blkaddr,
+			   !roc_nix->ipsec_out_sso_pffunc);
 	if (rc) {
 		plt_err("Failed to alloc CPT LF resources, rc=%d", rc);
 		goto lf_detach;