DPDK patches and discussions
 help / color / mirror / Atom feed
From: Rakesh Kudurumalla <rkudurumalla@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>
Cc: <jerinj@marvell.com>, <dev@dpdk.org>,
	Rakesh Kudurumalla <rkudurumalla@marvell.com>
Subject: [PATCH v11 3/3] net/cnxk: skip red drop for ingress policer
Date: Thu, 16 Feb 2023 20:21:28 +0530	[thread overview]
Message-ID: <20230216145128.1734257-3-rkudurumalla@marvell.com> (raw)
In-Reply-To: <20230216145128.1734257-1-rkudurumalla@marvell.com>

Dropping of packets is based on action configured
to meter.If both skip_red and drop actions are configured
then tail dropping in invoked else if only drop action is
configured then RED drop is invoked.This action is supported
only when RED is configured using rte_eth_cman_config_set()

Signed-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com>
Acked-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
---
 doc/guides/nics/features/cnxk.ini      |  1 +
 doc/guides/nics/features/cnxk_vf.ini   |  1 +
 doc/guides/rel_notes/release_23_03.rst |  5 +++
 drivers/net/cnxk/cnxk_ethdev.h         |  1 +
 drivers/net/cnxk/cnxk_ethdev_mtr.c     | 50 ++++++++++++++++++++++++++
 5 files changed, 58 insertions(+)

diff --git a/doc/guides/nics/features/cnxk.ini b/doc/guides/nics/features/cnxk.ini
index f81628da77..7947c044bb 100644
--- a/doc/guides/nics/features/cnxk.ini
+++ b/doc/guides/nics/features/cnxk.ini
@@ -94,4 +94,5 @@ queue                = Y
 represented_port     = Y
 rss                  = Y
 security             = Y
+skip_cman            = Y
 vf                   = Y
diff --git a/doc/guides/nics/features/cnxk_vf.ini b/doc/guides/nics/features/cnxk_vf.ini
index c4ee32a9ad..873e1dcc0a 100644
--- a/doc/guides/nics/features/cnxk_vf.ini
+++ b/doc/guides/nics/features/cnxk_vf.ini
@@ -83,4 +83,5 @@ pf                   = Y
 queue                = Y
 rss                  = Y
 security             = Y
+skip_cman            = Y
 vf                   = Y
diff --git a/doc/guides/rel_notes/release_23_03.rst b/doc/guides/rel_notes/release_23_03.rst
index 39085a19a1..53d5b1416c 100644
--- a/doc/guides/rel_notes/release_23_03.rst
+++ b/doc/guides/rel_notes/release_23_03.rst
@@ -117,6 +117,11 @@ New Features
   * Added support for meter options.
   * Added support for rte_flow meter action.
 
+* **Updated Marvell cnxk ethdev PMD.**
+
+  * Added support to skip RED using new action
+    ``RTE_FLOW_ACTION_TYPE_SKIP_CMAN``
+
 * **Updated NVIDIA mlx5 driver.**
 
   * Added support for matching on ICMPv6 ID and sequence fields.
diff --git a/drivers/net/cnxk/cnxk_ethdev.h b/drivers/net/cnxk/cnxk_ethdev.h
index f0eab4244c..ba35873124 100644
--- a/drivers/net/cnxk/cnxk_ethdev.h
+++ b/drivers/net/cnxk/cnxk_ethdev.h
@@ -168,6 +168,7 @@ struct policy_actions {
 		uint16_t queue;
 		uint32_t mtr_id;
 		struct action_rss *rss_desc;
+		bool skip_red;
 	};
 };
 
diff --git a/drivers/net/cnxk/cnxk_ethdev_mtr.c b/drivers/net/cnxk/cnxk_ethdev_mtr.c
index dcfa4223d5..27a6e4ef3d 100644
--- a/drivers/net/cnxk/cnxk_ethdev_mtr.c
+++ b/drivers/net/cnxk/cnxk_ethdev_mtr.c
@@ -358,6 +358,9 @@ cnxk_nix_mtr_policy_validate(struct rte_eth_dev *dev,
 				if (action->type == RTE_FLOW_ACTION_TYPE_VOID)
 					supported[i] = true;
 
+				if (action->type == RTE_FLOW_ACTION_TYPE_SKIP_CMAN)
+					supported[i] = true;
+
 				if (!supported[i])
 					return update_mtr_err(i, error, true);
 			}
@@ -397,6 +400,10 @@ cnxk_fill_policy_actions(struct cnxk_mtr_policy_node *fmp,
 					fmp->actions[i].action_fate =
 						action->type;
 				}
+
+				if (action->type ==
+					RTE_FLOW_ACTION_TYPE_SKIP_CMAN)
+					fmp->actions[i].skip_red = true;
 			}
 		}
 	}
@@ -1306,6 +1313,45 @@ nix_mtr_config_map(struct cnxk_meter_node *mtr, struct roc_nix_bpf_cfg *cfg)
 		cfg->action[ROC_NIX_BPF_COLOR_RED] = ROC_NIX_BPF_ACTION_DROP;
 }
 
+static void
+nix_mtr_config_red(struct cnxk_meter_node *mtr, struct roc_nix_rq *rq,
+		   struct roc_nix_bpf_cfg *cfg)
+{
+	struct cnxk_mtr_policy_node *policy = mtr->policy;
+
+	if ((rq->red_pass && rq->red_pass >= rq->red_drop) ||
+	   (rq->spb_red_pass && rq->spb_red_pass >= rq->spb_red_drop)	||
+	   (rq->xqe_red_pass && rq->xqe_red_pass >= rq->xqe_red_drop)) {
+		if (policy->actions[RTE_COLOR_GREEN].action_fate ==
+			RTE_FLOW_ACTION_TYPE_DROP) {
+			if (policy->actions[RTE_COLOR_GREEN].skip_red)
+				cfg->action[ROC_NIX_BPF_COLOR_GREEN] =
+						ROC_NIX_BPF_ACTION_DROP;
+			else
+				cfg->action[ROC_NIX_BPF_COLOR_GREEN] =
+						ROC_NIX_BPF_ACTION_RED;
+		}
+		if (policy->actions[RTE_COLOR_YELLOW].action_fate ==
+			RTE_FLOW_ACTION_TYPE_DROP) {
+			if (policy->actions[RTE_COLOR_YELLOW].skip_red)
+				cfg->action[ROC_NIX_BPF_COLOR_YELLOW] =
+						ROC_NIX_BPF_ACTION_DROP;
+			else
+				cfg->action[ROC_NIX_BPF_COLOR_YELLOW] =
+						ROC_NIX_BPF_ACTION_RED;
+		}
+		if (policy->actions[RTE_COLOR_RED].action_fate ==
+			RTE_FLOW_ACTION_TYPE_DROP) {
+			if (policy->actions[RTE_COLOR_RED].skip_red)
+				cfg->action[ROC_NIX_BPF_COLOR_RED] =
+						ROC_NIX_BPF_ACTION_DROP;
+			else
+				cfg->action[ROC_NIX_BPF_COLOR_RED] =
+						ROC_NIX_BPF_ACTION_RED;
+		}
+	}
+}
+
 static void
 nix_precolor_table_map(struct cnxk_meter_node *mtr,
 		       struct roc_nix_bpf_precolor *tbl,
@@ -1483,6 +1529,10 @@ nix_mtr_configure(struct rte_eth_dev *eth_dev, uint32_t id)
 			if (!mtr[i]->is_used) {
 				memset(&cfg, 0, sizeof(struct roc_nix_bpf_cfg));
 				nix_mtr_config_map(mtr[i], &cfg);
+				for (j = 0; j < mtr[i]->rq_num; j++) {
+					rq = &dev->rqs[mtr[i]->rq_id[j]];
+					nix_mtr_config_red(mtr[i], rq, &cfg);
+				}
 				rc = roc_nix_bpf_config(nix, mtr[i]->bpf_id,
 							lvl_map[mtr[i]->level],
 							&cfg);
-- 
2.25.1


  parent reply	other threads:[~2023-02-16 14:51 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-22  1:39 [PATCH 1/3] lib: dpdk spec to skip red " Rakesh Kudurumalla
2022-12-22  1:39 ` [PATCH 2/3] app/testpmd: add skip red for testpmd Rakesh Kudurumalla
2022-12-22  1:39 ` [PATCH 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2022-12-22  3:01 ` [PATCH 1/3] lib: dpdk spec to skip red " Stephen Hemminger
2022-12-22  5:27   ` Jerin Jacob
2022-12-26 17:00     ` Ori Kam
2023-01-10  6:42       ` Rakesh Kudurumalla
2023-01-18  8:09         ` Rakesh Kudurumalla
2023-01-23 13:13           ` Jerin Jacob
2023-01-26 15:13           ` Ori Kam
2023-01-27  6:23             ` Jerin Jacob
2023-02-01 17:49               ` Ori Kam
2023-02-01 18:37                 ` Jerin Jacob
2023-02-02  7:31                   ` Ori Kam
2023-02-06  3:31                     ` Jerin Jacob
2023-01-25  7:32 ` [PATCH v2 1/3] lib: skip congestion management configuration Rakesh Kudurumalla
2023-01-25  7:32   ` [PATCH v2 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-01-25  7:32   ` [PATCH v2 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-01-25  9:26   ` [PATCH v2 1/3] lib: skip congestion management configuration Jerin Jacob
2023-02-09  7:24   ` [PATCH v3 " Rakesh Kudurumalla
2023-02-09  7:24     ` [PATCH v3 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-09  7:24     ` [PATCH v3 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-02-09  7:31     ` [PATCH v3 1/3] lib: skip congestion management configuration Jerin Jacob
2023-02-09  8:35     ` [PATCH v4 1/3] ethdev: " Rakesh Kudurumalla
2023-02-09  8:35       ` [PATCH v4 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-09  8:35       ` [PATCH v4 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-02-09 17:14         ` Jerin Jacob
2023-02-09 14:51       ` [PATCH v4 1/3] ethdev: skip congestion management configuration Ori Kam
2023-02-10  8:14       ` [PATCH v5 " Rakesh Kudurumalla
2023-02-10  8:14         ` [PATCH v5 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-10  8:14         ` [PATCH v5 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-02-10  8:16         ` [PATCH v5 1/3] ethdev: skip congestion management configuration Jerin Jacob
2023-02-10  8:26         ` [PATCH v6 " Rakesh Kudurumalla
2023-02-10  8:26           ` [PATCH v6 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-10 23:08             ` Ferruh Yigit
2023-02-14 13:12               ` Ferruh Yigit
2023-02-10  8:26           ` [PATCH v6 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-02-10 23:18             ` Ferruh Yigit
2023-02-10  9:27           ` [PATCH v6 1/3] ethdev: skip congestion management configuration Jerin Jacob
2023-02-10 23:10           ` Ferruh Yigit
2023-02-13 12:34             ` Ori Kam
2023-02-13 13:54               ` Ferruh Yigit
2023-02-13 15:44                 ` Jerin Jacob
2023-02-13 15:53                   ` Ferruh Yigit
2023-02-11  0:35           ` Ferruh Yigit
2023-02-11  5:16             ` Jerin Jacob
2023-02-12  9:00           ` [PATCH v7 " Rakesh Kudurumalla
2023-02-12  9:00             ` [PATCH v7 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-12  9:00             ` [PATCH v7 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-02-14 13:04             ` [PATCH v8 1/4] ethdev: skip congestion management configuration Rakesh Kudurumalla
2023-02-14 13:04               ` [PATCH v8 2/4] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-14 13:21                 ` Ferruh Yigit
2023-02-14 13:04               ` [PATCH v8 3/4] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-02-14 13:04               ` [PATCH v8 4/4] doc: update release notes for 23_03.rst Rakesh Kudurumalla
2023-02-14 13:19                 ` Ferruh Yigit
2023-02-14 13:13               ` [PATCH v8 1/4] ethdev: skip congestion management configuration Ferruh Yigit
2023-02-15  6:25               ` [PATCH v9 1/3] " Rakesh Kudurumalla
2023-02-15  6:25                 ` [PATCH v9 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-15  6:25                 ` [PATCH v9 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-02-15  9:45                   ` Ferruh Yigit
2023-02-15 10:00                   ` Nithin Kumar Dabilpuram
2023-02-15  9:43                 ` [PATCH v9 1/3] ethdev: skip congestion management configuration Ferruh Yigit
2023-02-15 17:42                 ` [PATCH v10 " Rakesh Kudurumalla
2023-02-15 17:42                   ` [PATCH v10 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-16 12:19                     ` Ferruh Yigit
2023-02-15 17:42                   ` [PATCH v10 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
2023-02-16 14:51                   ` [PATCH v11 1/3] ethdev: skip congestion management configuration Rakesh Kudurumalla
2023-02-16 14:51                     ` [PATCH v11 2/3] app/testpmd: add skip cman support for testpmd Rakesh Kudurumalla
2023-02-16 14:51                     ` Rakesh Kudurumalla [this message]
2023-02-16 16:18                     ` [PATCH v11 1/3] ethdev: skip congestion management configuration Ferruh Yigit

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=20230216145128.1734257-3-rkudurumalla@marvell.com \
    --to=rkudurumalla@marvell.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    --cc=kirankumark@marvell.com \
    --cc=ndabilpuram@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).