From: Michael Baum <michaelba@nvidia.com>
To: <dev@dpdk.org>
Cc: Ori Kam <orika@nvidia.com>,
Aman Singh <aman.deep.singh@intel.com>,
"Yuying Zhang" <yuying.zhang@intel.com>,
Ferruh Yigit <ferruh.yigit@amd.com>,
"Thomas Monjalon" <thomas@monjalon.net>
Subject: [PATCH v3 1/2] ethdev: add random item support
Date: Thu, 30 Nov 2023 18:32:14 +0200 [thread overview]
Message-ID: <20231130163215.666239-2-michaelba@nvidia.com> (raw)
In-Reply-To: <20231130163215.666239-1-michaelba@nvidia.com>
Add support for a new item type "RTE_FLOW_ITEM_TYPE_RANDOM".
This item enables to match on some random value as a part of flow rule.
Signed-off-by: Michael Baum <michaelba@nvidia.com>
---
doc/guides/nics/features/default.ini | 1 +
doc/guides/prog_guide/rte_flow.rst | 13 ++++++++++
doc/guides/rel_notes/release_24_03.rst | 4 +++
lib/ethdev/rte_flow.c | 1 +
lib/ethdev/rte_flow.h | 35 +++++++++++++++++++++++++-
5 files changed, 53 insertions(+), 1 deletion(-)
diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini
index 806cb033ff..6d50236292 100644
--- a/doc/guides/nics/features/default.ini
+++ b/doc/guides/nics/features/default.ini
@@ -140,6 +140,7 @@ pppoe_proto_id =
ptype =
quota =
raw =
+random =
represented_port =
sctp =
tag =
diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst
index 627b845bfb..fd7fddb6cd 100644
--- a/doc/guides/prog_guide/rte_flow.rst
+++ b/doc/guides/prog_guide/rte_flow.rst
@@ -1573,6 +1573,19 @@ Matches the packet type as defined in rte_mbuf_ptype.
- ``packet_type``: L2/L3/L4 and tunnel information.
+Item: ``RANDOM``
+^^^^^^^^^^^^^^^^
+
+Matches a random value.
+
+The rundom number is generated by PMD,
+application can match on either exact value or range of values.
+This value is not based on the packet data/headers.
+Application shouldn't assume that this value is kept during the life time of
+the packet.
+
+- ``value``: Specific value to match.
+
Actions
~~~~~~~
diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst
index e9c9717706..ab91ce2b21 100644
--- a/doc/guides/rel_notes/release_24_03.rst
+++ b/doc/guides/rel_notes/release_24_03.rst
@@ -55,6 +55,10 @@ New Features
Also, make sure to start the actual text at the margin.
=======================================================
+* **Added flow matching of random value.**
+
+ Added ``RTE_FLOW_ITEM_RANDOM`` to match random value.
+
Removed Items
-------------
diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c
index 549e329558..090b936ca9 100644
--- a/lib/ethdev/rte_flow.c
+++ b/lib/ethdev/rte_flow.c
@@ -136,6 +136,7 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = {
sizeof(struct rte_flow_item_icmp6_nd_opt_tla_eth)),
MK_FLOW_ITEM(MARK, sizeof(struct rte_flow_item_mark)),
MK_FLOW_ITEM(META, sizeof(struct rte_flow_item_meta)),
+ MK_FLOW_ITEM(RANDOM, sizeof(struct rte_flow_item_random)),
MK_FLOW_ITEM(TAG, sizeof(struct rte_flow_item_tag)),
MK_FLOW_ITEM(GRE_KEY, sizeof(rte_be32_t)),
MK_FLOW_ITEM(GRE_OPTION, sizeof(struct rte_flow_item_gre_opt)),
diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h
index affdc8121b..887401bb86 100644
--- a/lib/ethdev/rte_flow.h
+++ b/lib/ethdev/rte_flow.h
@@ -704,6 +704,19 @@ enum rte_flow_item_type {
*
*/
RTE_FLOW_ITEM_TYPE_PTYPE,
+
+ /**
+ * [META]
+ *
+ * Matches a random value.
+ *
+ * This value is not based on the packet data/headers.
+ * Application shouldn't assume that this value is kept during the life
+ * time of the packet.
+ *
+ * @see struct rte_flow_item_random.
+ */
+ RTE_FLOW_ITEM_TYPE_RANDOM,
};
/**
@@ -2047,6 +2060,25 @@ static const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask = {
};
#endif
+/**
+ * @warning
+ * @b EXPERIMENTAL: this structure may change without prior notice
+ *
+ * RTE_FLOW_ITEM_TYPE_RANDOM
+ *
+ * Matches a random value.
+ */
+struct rte_flow_item_random {
+ uint32_t value;
+};
+
+/** Default mask for RTE_FLOW_ITEM_TYPE_RANDOM. */
+#ifndef __cplusplus
+static const struct rte_flow_item_random rte_flow_item_random_mask = {
+ .value = UINT32_MAX,
+};
+#endif
+
/**
* Matching pattern item definition.
*
@@ -3903,7 +3935,8 @@ enum rte_flow_field_id {
RTE_FLOW_FIELD_TCP_DATA_OFFSET, /**< TCP data offset. */
RTE_FLOW_FIELD_IPV4_IHL, /**< IPv4 IHL. */
RTE_FLOW_FIELD_IPV4_TOTAL_LEN, /**< IPv4 total length. */
- RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN /**< IPv6 payload length. */
+ RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN,/**< IPv6 payload length. */
+ RTE_FLOW_FIELD_RANDOM /**< Random value. */
};
/**
--
2.25.1
next prev parent reply other threads:[~2023-11-30 16:32 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-22 9:05 [PATCH v1 0/2] ethdev: add random item support Michael Baum
2023-08-22 9:05 ` [PATCH v1 1/2] " Michael Baum
2023-08-22 9:05 ` [PATCH v1 2/2] app/testpmd: " Michael Baum
2023-08-22 12:41 ` [PATCH v1 0/2] ethdev: " Ivan Malov
2023-08-22 14:09 ` Michael Baum
2023-08-22 14:09 ` Stephen Hemminger
2023-09-11 7:41 ` [PATCH v2 " Michael Baum
2023-09-11 7:41 ` [PATCH v2 1/2] " Michael Baum
2023-09-11 15:59 ` Thomas Monjalon
2023-10-12 10:14 ` Michael Baum
2023-09-11 7:41 ` [PATCH v2 2/2] app/testpmd: " Michael Baum
2023-09-18 11:44 ` Ori Kam
2023-09-11 16:55 ` [PATCH v2 0/2] ethdev: " Morten Brørup
2023-09-11 17:53 ` Stephen Hemminger
2023-10-12 9:48 ` Michael Baum
2023-09-12 8:40 ` Michael Baum
2023-11-30 16:32 ` [PATCH v3 " Michael Baum
2023-11-30 16:32 ` Michael Baum [this message]
2023-12-08 18:54 ` [PATCH v3 1/2] " Dariusz Sosnowski
2023-12-14 10:32 ` Michael Baum
2023-12-14 10:54 ` Dariusz Sosnowski
2023-12-08 19:03 ` Dariusz Sosnowski
2023-11-30 16:32 ` [PATCH v3 2/2] app/testpmd: " Michael Baum
2023-12-08 18:52 ` Dariusz Sosnowski
2023-12-14 10:58 ` [PATCH v4 0/2] ethdev: " Michael Baum
2023-12-14 10:58 ` [PATCH v4 1/2] " Michael Baum
2023-12-14 11:12 ` Dariusz Sosnowski
2023-12-14 11:32 ` Ori Kam
2023-12-14 12:18 ` Ferruh Yigit
2023-12-14 13:43 ` Michael Baum
2023-12-14 15:55 ` Ferruh Yigit
2023-12-15 7:47 ` Michael Baum
2023-12-14 10:58 ` [PATCH v4 2/2] app/testpmd: " Michael Baum
2023-12-15 12:07 ` [PATCH v4 0/2] ethdev: " 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=20231130163215.666239-2-michaelba@nvidia.com \
--to=michaelba@nvidia.com \
--cc=aman.deep.singh@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=orika@nvidia.com \
--cc=thomas@monjalon.net \
--cc=yuying.zhang@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.