DPDK patches and discussions
 help / color / mirror / Atom feed
From: Nithin Dabilpuram <ndabilpuram@marvell.com>
To: Nithin Dabilpuram <ndabilpuram@marvell.com>,
	Kiran Kumar K <kirankumark@marvell.com>,
	Sunil Kumar Kori <skori@marvell.com>,
	Satha Rao <skoteshwar@marvell.com>,
	Harman Kalra <hkalra@marvell.com>
Cc: <jerinj@marvell.com>, <dev@dpdk.org>
Subject: [PATCH 06/10] net/cnxk: add option to disable custom meta aura
Date: Fri, 17 May 2024 13:14:44 +0530	[thread overview]
Message-ID: <20240517074448.3146611-6-ndabilpuram@marvell.com> (raw)
In-Reply-To: <20240517074448.3146611-1-ndabilpuram@marvell.com>

Add option to explicitly disable custom meta aura. Currently
custom meta aura is enabled automatically when inl_cpt_channel
is set i.e inline dev is masking CHAN field in IPsec rules.

Also decouple the custom meta aura feature from custom sa action
so that the custom sa action can independently be used.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
---
 doc/guides/nics/cnxk.rst               | 13 +++++++++++++
 drivers/common/cnxk/roc_nix_inl.c      | 19 +++++++++++++------
 drivers/common/cnxk/roc_nix_inl.h      |  1 +
 drivers/common/cnxk/version.map        |  1 +
 drivers/net/cnxk/cnxk_ethdev.c         |  5 +++++
 drivers/net/cnxk/cnxk_ethdev.h         |  3 +++
 drivers/net/cnxk/cnxk_ethdev_devargs.c |  8 +++++++-
 7 files changed, 43 insertions(+), 7 deletions(-)

diff --git a/doc/guides/nics/cnxk.rst b/doc/guides/nics/cnxk.rst
index f5f296ee36..99ad224efd 100644
--- a/doc/guides/nics/cnxk.rst
+++ b/doc/guides/nics/cnxk.rst
@@ -444,6 +444,19 @@ Runtime Config Options
    With the above configuration, driver would enable packet inject from ARM cores
    to crypto to process and send back in Rx path.
 
+- ``Disable custom meta aura feature`` (default ``0``)
+
+   Custom meta aura i.e 1:N meta aura is enabled for second pass traffic by default when
+   ``inl_cpt_channel`` devarg is provided. Provide an option to disable the custom
+   meta aura feature by setting devarg ``custom_meta_aura_dis`` to ``1``.
+
+   For example::
+
+     -a 0002:02:00.0,custom_meta_aura_dis=1
+
+   With the above configuration, driver would disable custom meta aura feature for
+   ``0002:02:00.0`` ethdev.
+
 .. note::
 
    Above devarg parameters are configurable per device, user needs to pass the
diff --git a/drivers/common/cnxk/roc_nix_inl.c b/drivers/common/cnxk/roc_nix_inl.c
index 7dbeae5017..74a688abbd 100644
--- a/drivers/common/cnxk/roc_nix_inl.c
+++ b/drivers/common/cnxk/roc_nix_inl.c
@@ -872,7 +872,6 @@ roc_nix_inl_inb_init(struct roc_nix *roc_nix)
 	struct nix *nix = roc_nix_to_nix_priv(roc_nix);
 	struct roc_cpt_inline_ipsec_inb_cfg cfg;
 	struct idev_cfg *idev = idev_get_cfg();
-	struct nix_inl_dev *inl_dev;
 	uint16_t bpids[ROC_NIX_MAX_BPID_CNT];
 	struct roc_cpt *roc_cpt;
 	int rc;
@@ -929,11 +928,6 @@ roc_nix_inl_inb_init(struct roc_nix *roc_nix)
 	if (rc)
 		return rc;
 
-	inl_dev = idev->nix_inl_dev;
-
-	roc_nix->custom_meta_aura_ena = (roc_nix->local_meta_aura_ena &&
-					 ((inl_dev && inl_dev->is_multi_channel) ||
-					  roc_nix->custom_sa_action));
 	if (!roc_model_is_cn9k() && !roc_errata_nix_no_meta_aura()) {
 		nix->need_meta_aura = true;
 		if (!roc_nix->local_meta_aura_ena || roc_nix->custom_meta_aura_ena)
@@ -1245,6 +1239,19 @@ roc_nix_inl_dev_is_probed(void)
 	return !!idev->nix_inl_dev;
 }
 
+bool
+roc_nix_inl_dev_is_multi_channel(void)
+{
+	struct idev_cfg *idev = idev_get_cfg();
+	struct nix_inl_dev *inl_dev;
+
+	if (idev == NULL || !idev->nix_inl_dev)
+		return false;
+
+	inl_dev = idev->nix_inl_dev;
+	return inl_dev->is_multi_channel;
+}
+
 bool
 roc_nix_inl_inb_is_enabled(struct roc_nix *roc_nix)
 {
diff --git a/drivers/common/cnxk/roc_nix_inl.h b/drivers/common/cnxk/roc_nix_inl.h
index 8acd7e0545..ab0965e512 100644
--- a/drivers/common/cnxk/roc_nix_inl.h
+++ b/drivers/common/cnxk/roc_nix_inl.h
@@ -115,6 +115,7 @@ int __roc_api roc_nix_inl_dev_stats_get(struct roc_nix_stats *stats);
 uint16_t __roc_api roc_nix_inl_dev_pffunc_get(void);
 int __roc_api roc_nix_inl_dev_cpt_setup(bool use_inl_dev_sso);
 int __roc_api roc_nix_inl_dev_cpt_release(void);
+bool __roc_api roc_nix_inl_dev_is_multi_channel(void);
 
 /* NIX Inline Inbound API */
 int __roc_api roc_nix_inl_inb_init(struct roc_nix *roc_nix);
diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map
index 424ad7f484..e8d32b331e 100644
--- a/drivers/common/cnxk/version.map
+++ b/drivers/common/cnxk/version.map
@@ -238,6 +238,7 @@ INTERNAL {
 	roc_nix_inl_dev_dump;
 	roc_nix_inl_dev_fini;
 	roc_nix_inl_dev_init;
+	roc_nix_inl_dev_is_multi_channel;
 	roc_nix_inl_dev_is_probed;
 	roc_nix_inl_dev_stats_get;
 	roc_nix_inl_dev_lock;
diff --git a/drivers/net/cnxk/cnxk_ethdev.c b/drivers/net/cnxk/cnxk_ethdev.c
index 1bccebad9f..db8feca620 100644
--- a/drivers/net/cnxk/cnxk_ethdev.c
+++ b/drivers/net/cnxk/cnxk_ethdev.c
@@ -107,6 +107,11 @@ nix_security_setup(struct cnxk_eth_dev *dev)
 		nix->ipsec_in_min_spi = dev->inb.no_inl_dev ? dev->inb.min_spi : 0;
 		nix->ipsec_in_max_spi = dev->inb.no_inl_dev ? dev->inb.max_spi : 1;
 
+		/* Enable custom meta aura when multi-chan is used */
+		if (nix->local_meta_aura_ena && roc_nix_inl_dev_is_multi_channel() &&
+		    !dev->inb.custom_meta_aura_dis)
+			nix->custom_meta_aura_ena = true;
+
 		/* Setup Inline Inbound */
 		rc = roc_nix_inl_inb_init(nix);
 		if (rc) {
diff --git a/drivers/net/cnxk/cnxk_ethdev.h b/drivers/net/cnxk/cnxk_ethdev.h
index 5e040643ab..687c60c27d 100644
--- a/drivers/net/cnxk/cnxk_ethdev.h
+++ b/drivers/net/cnxk/cnxk_ethdev.h
@@ -257,6 +257,9 @@ struct cnxk_eth_dev_sec_inb {
 
 	/* Lock to synchronize sa setup/release */
 	rte_spinlock_t lock;
+
+	/* Disable custom meta aura */
+	bool custom_meta_aura_dis;
 };
 
 /* Outbound security data */
diff --git a/drivers/net/cnxk/cnxk_ethdev_devargs.c b/drivers/net/cnxk/cnxk_ethdev_devargs.c
index 1bab19fc23..3454295d7d 100644
--- a/drivers/net/cnxk/cnxk_ethdev_devargs.c
+++ b/drivers/net/cnxk/cnxk_ethdev_devargs.c
@@ -280,6 +280,7 @@ parse_val_u16(const char *key, const char *value, void *extra_args)
 #define CNXK_NIX_META_BUF_SZ	"meta_buf_sz"
 #define CNXK_FLOW_AGING_POLL_FREQ	"aging_poll_freq"
 #define CNXK_NIX_RX_INJ_ENABLE	"rx_inj_ena"
+#define CNXK_CUSTOM_META_AURA_DIS "custom_meta_aura_dis"
 
 int
 cnxk_ethdev_parse_devargs(struct rte_devargs *devargs, struct cnxk_eth_dev *dev)
@@ -291,6 +292,7 @@ cnxk_ethdev_parse_devargs(struct rte_devargs *devargs, struct cnxk_eth_dev *dev)
 	uint32_t ipsec_in_max_spi = BIT(8) - 1;
 	uint16_t sqb_slack = ROC_NIX_SQB_SLACK;
 	uint32_t ipsec_out_max_sa = BIT(12);
+	uint16_t custom_meta_aura_dis = 0;
 	uint16_t flow_prealloc_size = 1;
 	uint16_t switch_header_type = 0;
 	uint16_t flow_max_priority = 3;
@@ -358,6 +360,8 @@ cnxk_ethdev_parse_devargs(struct rte_devargs *devargs, struct cnxk_eth_dev *dev)
 	rte_kvargs_process(kvlist, CNXK_FLOW_AGING_POLL_FREQ, &parse_val_u16,
 			   &aging_thread_poll_freq);
 	rte_kvargs_process(kvlist, CNXK_NIX_RX_INJ_ENABLE, &parse_flag, &rx_inj_ena);
+	rte_kvargs_process(kvlist, CNXK_CUSTOM_META_AURA_DIS, &parse_flag,
+			   &custom_meta_aura_dis);
 	rte_kvargs_free(kvlist);
 
 null_devargs:
@@ -366,6 +370,7 @@ cnxk_ethdev_parse_devargs(struct rte_devargs *devargs, struct cnxk_eth_dev *dev)
 	dev->inb.no_inl_dev = !!no_inl_dev;
 	dev->inb.min_spi = ipsec_in_min_spi;
 	dev->inb.max_spi = ipsec_in_max_spi;
+	dev->inb.custom_meta_aura_dis = custom_meta_aura_dis;
 	dev->outb.max_sa = ipsec_out_max_sa;
 	dev->outb.nb_desc = outb_nb_desc;
 	dev->outb.nb_crypto_qs = outb_nb_crypto_qs;
@@ -415,4 +420,5 @@ RTE_PMD_REGISTER_PARAM_STRING(net_cnxk,
 			      CNXK_CUSTOM_SA_ACT "=1"
 			      CNXK_SQB_SLACK "=<12-512>"
 			      CNXK_FLOW_AGING_POLL_FREQ "=<10-65535>"
-			      CNXK_NIX_RX_INJ_ENABLE "=1");
+			      CNXK_NIX_RX_INJ_ENABLE "=1"
+			      CNXK_CUSTOM_META_AURA_DIS "=1");
-- 
2.25.1


  parent reply	other threads:[~2024-05-17  7:45 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-17  7:44 [PATCH 01/10] common/cnxk: sync VF root weight with kernel Nithin Dabilpuram
2024-05-17  7:44 ` [PATCH 02/10] net/cnxk: set VF default root schedule weight Nithin Dabilpuram
2024-05-17  7:44 ` [PATCH 03/10] net/cnxk: fix extbuf handling for multisegment packet Nithin Dabilpuram
2024-05-17  7:44 ` [PATCH 04/10] common/cnxk: override UDP encap ports with session data Nithin Dabilpuram
2024-05-17  7:44 ` [PATCH 05/10] net/cnxk: update SA userdata and keep original cookie Nithin Dabilpuram
2024-05-17  7:44 ` Nithin Dabilpuram [this message]
2024-05-27 17:29   ` [PATCH 06/10] net/cnxk: add option to disable custom meta aura Jerin Jacob
2024-05-17  7:44 ` [PATCH 07/10] net/cnxk: fix issue with outbound security higher pkt burst Nithin Dabilpuram
2024-05-17  7:44 ` [PATCH 08/10] common/cnxk: add API to reset CGX stats Nithin Dabilpuram
2024-05-17  7:44 ` [PATCH 09/10] net/cnxk: clear CGX stats during xstats reset Nithin Dabilpuram
2024-05-27 17:28   ` Jerin Jacob
2024-05-17  7:44 ` [PATCH 10/10] net/cnxk: define CPT HW result format for PMD API Nithin Dabilpuram
2024-05-27 17:27   ` Jerin Jacob
2024-05-28  7:05 ` [PATCH v2 01/10] common/cnxk: sync VF root weight with kernel Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 02/10] net/cnxk: set VF default root schedule weight Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 03/10] net/cnxk: fix extbuf handling for multisegment packet Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 04/10] common/cnxk: override UDP encap ports with session data Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 05/10] net/cnxk: update SA userdata and keep original cookie Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 06/10] net/cnxk: add option to disable custom meta aura Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 07/10] net/cnxk: fix issue with outbound security higher pkt burst Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 08/10] common/cnxk: add API to reset CGX stats Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 09/10] net/cnxk: fix xstats reset Nithin Dabilpuram
2024-05-28  7:05   ` [PATCH v2 10/10] net/cnxk: define CPT HW result format for PMD API Nithin Dabilpuram
2024-05-28 16:03     ` Jerin Jacob

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=20240517074448.3146611-6-ndabilpuram@marvell.com \
    --to=ndabilpuram@marvell.com \
    --cc=dev@dpdk.org \
    --cc=hkalra@marvell.com \
    --cc=jerinj@marvell.com \
    --cc=kirankumark@marvell.com \
    --cc=skori@marvell.com \
    --cc=skoteshwar@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).