From: Suanming Mou <suanmingm@mellanox.com>
To: viacheslavo@mellanox.com, matan@mellanox.com
Cc: orika@mellanox.com, rasland@mellanox.com, dev@dpdk.org
Subject: [dpdk-dev] [PATCH v2 00/19] net/mlx5: support meter
Date: Fri, 8 Nov 2019 05:49:06 +0200 [thread overview]
Message-ID: <1573184965-49691-1-git-send-email-suanmingm@mellanox.com> (raw)
In-Reply-To: <1573053090-179521-1-git-send-email-suanmingm@mellanox.com>
The patches introduce the meter action support for mlx5.
The design of the implementation was introduced in RFC as below:
http://inbox.dpdk.org/dev/b994cd03-02f6-cd50-120f-dcf0941e4485@mellanox.com
The implementation is followed RFC to split flow with meter to three
sub flows.
Prefix flow -> Meter flow -> Suffix flow
The srTCM color blind mode is supported only, color aware mode and
multiple meter chaining are not supported.
The patch set add the operations to get the capabilities of the meter
action, create/destroy the action, validate the action, attach/detach
the action, update the action, query the action statistics and flush
the actions resources.
Besides these, as the flow with meter action is split to three sub
flows for coloring(in prefix flow), color checking(in meter flow),
left actions applying (in suffix flow), two registers are used for the
color match and prefix-suffix flow match. That's what the "allocate
flow meter registers" patch does.
As with the three sub flows, two more flow tables are created for the
meter flow and suffix flow in patch "prepare meter flow tables". As
wrote in the RFC, meter flow and suffix flow are separated since meter
maybe shared with multiple flows.
For the meter action statistics's query, the DevX flow counter is
exposed to meter action in patch "expose flow counters management".
In the "split meter flow" patch, flow with meter is split to three
sub flow. The *_DECAP and meter action will be in the prefix flow.
And an extra tag action with unique flow id to match with the suffix
flow is also added to the prefix flow. The suffix flow will apply
all the left actions while the flow id in tag item matches.
Since the metadata copy mark action is in the meter suffix flow,
the REG_C for cpoy mark and prefix-suffix flow match is shared.
Once the meter suffix flow add the tag, metadata suffix sub flow
won't add the tag anymore but share the tag is enough. It's done
in the "share tag between meter and metadata" patch.
---
v2: rebased on top of the latest code with metadata feature
Suanming Mou (19):
net/mlx5: add meter operation callback
net/mlx5: fill meter capabilities using DevX
net/mlx5: allocate flow meter registers
net/mlx5: support meter profile operations
net/mlx5: validate meter profile
net/mlx5: prepare meter flow tables
net/mlx5: add policer rules operations
net/mlx5: support basic meter operations
net/mlx5: add meter action creation to the glue
net/mlx5: support meter modification operations
net/mlx5: support meter profile update
net/mlx5: expose flow counters management
net/mlx5: add count action to meter
net/mlx5: add meter statistics read and update
net/mlx5: add meter attach and detach
net/mlx5: support meter flow action
net/mlx5: split meter flow
net/mlx5: share tag between meter and metadata
net/mlx5: clean meter resources
drivers/net/mlx5/Makefile | 7 +
drivers/net/mlx5/meson.build | 3 +
drivers/net/mlx5/mlx5.c | 29 +
drivers/net/mlx5/mlx5.h | 46 ++
drivers/net/mlx5/mlx5_devx_cmds.c | 23 +
drivers/net/mlx5/mlx5_flow.c | 632 ++++++++++++++++--
drivers/net/mlx5/mlx5_flow.h | 153 ++++-
drivers/net/mlx5/mlx5_flow_dv.c | 612 +++++++++++++++++
drivers/net/mlx5/mlx5_flow_meter.c | 1285 ++++++++++++++++++++++++++++++++++++
drivers/net/mlx5/mlx5_glue.c | 30 +
drivers/net/mlx5/mlx5_glue.h | 9 +
drivers/net/mlx5/mlx5_prm.h | 45 ++
12 files changed, 2812 insertions(+), 62 deletions(-)
create mode 100644 drivers/net/mlx5/mlx5_flow_meter.c
--
1.8.3.1
next prev parent reply other threads:[~2019-11-08 3:49 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-06 15:11 [dpdk-dev] [PATCH " Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 01/19] net/mlx5: add meter operation callback Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 02/19] net/mlx5: fill meter capabilities using DevX Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 03/19] net/mlx5: allocate flow meter registers Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 04/19] net/mlx5: support meter profile operations Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 05/19] net/mlx5: validate meter profile Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 06/19] net/mlx5: prepare meter flow tables Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 07/19] net/mlx5: add policer rules operations Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 08/19] net/mlx5: support basic meter operations Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 09/19] net/mlx5: add meter action creation to the glue Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 10/19] net/mlx5: support meter modification operations Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 11/19] net/mlx5: support meter profile update Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 12/19] net/mlx5: expose flow counters management Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 13/19] net/mlx5: add count action to meter Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 14/19] net/mlx5: add meter statistics read and update Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 15/19] net/mlx5: add meter attach and detach Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 16/19] net/mlx5: support meter flow action Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 17/19] net/mlx5: split meter flow Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 18/19] net/mlx5: share tag between meter and metadata Suanming Mou
2019-11-06 15:11 ` [dpdk-dev] [PATCH 19/19] net/mlx5: clean meter resources Suanming Mou
2019-11-08 3:49 ` Suanming Mou [this message]
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 01/19] net/mlx5: add meter operation callback Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 02/19] net/mlx5: fill meter capabilities using DevX Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 03/19] net/mlx5: allocate flow meter registers Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 04/19] net/mlx5: support meter profile operations Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 05/19] net/mlx5: validate meter profile Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 06/19] net/mlx5: prepare meter flow tables Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 07/19] net/mlx5: add policer rules operations Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 08/19] net/mlx5: support basic meter operations Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 09/19] net/mlx5: add meter action creation to the glue Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 10/19] net/mlx5: support meter modification operations Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 11/19] net/mlx5: support meter profile update Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 12/19] net/mlx5: expose flow counters management Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 13/19] net/mlx5: add count action to meter Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 14/19] net/mlx5: add meter statistics read and update Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 15/19] net/mlx5: add meter attach and detach Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 16/19] net/mlx5: support meter flow action Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 17/19] net/mlx5: split meter flow Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 18/19] net/mlx5: share tag between meter and metadata Suanming Mou
2019-11-08 3:49 ` [dpdk-dev] [PATCH v2 19/19] net/mlx5: clean meter resources Suanming Mou
2019-11-08 6:20 ` [dpdk-dev] [PATCH v2 00/19] net/mlx5: support meter Matan Azrad
2019-11-08 14:22 ` Raslan Darawsheh
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=1573184965-49691-1-git-send-email-suanmingm@mellanox.com \
--to=suanmingm@mellanox.com \
--cc=dev@dpdk.org \
--cc=matan@mellanox.com \
--cc=orika@mellanox.com \
--cc=rasland@mellanox.com \
--cc=viacheslavo@mellanox.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).