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 v2 3/3] net/cnxk: skip red drop for ingress policer
Date: Wed, 25 Jan 2023 13:02:31 +0530 [thread overview]
Message-ID: <20230125073231.4007078-3-rkudurumalla@marvell.com> (raw)
In-Reply-To: <20230125073231.4007078-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>
---
drivers/net/cnxk/cnxk_ethdev.h | 1 +
drivers/net/cnxk/cnxk_ethdev_mtr.c | 50 ++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+)
diff --git a/drivers/net/cnxk/cnxk_ethdev.h b/drivers/net/cnxk/cnxk_ethdev.h
index ea8c70b8b7..7c53122b9f 100644
--- a/drivers/net/cnxk/cnxk_ethdev.h
+++ b/drivers/net/cnxk/cnxk_ethdev.h
@@ -238,6 +238,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
next prev parent reply other threads:[~2023-01-25 7:33 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 ` Rakesh Kudurumalla [this message]
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 ` [PATCH v11 3/3] net/cnxk: skip red drop for ingress policer Rakesh Kudurumalla
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=20230125073231.4007078-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).