* [PATCH 1/2] ethdev: remove deprecated flow copy API
@ 2026-09-01 23:10 Stephen Hemminger
2026-09-01 23:10 ` [PATCH 2/2] ethdev: remove deprecated shared flow action Stephen Hemminger
0 siblings, 1 reply; 2+ messages in thread
From: Stephen Hemminger @ 2026-09-01 23:10 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, Thomas Monjalon, Andrew Rybchenko, Ori Kam
The rte_flow_copy() function and struct rte_flow_desc have been
deprecated since 18.05. The function was only a wrapper around
rte_flow_conv(), and struct rte_flow_desc uses a flexible array
member which makes it unusable from C++.
Remove the function, the structure and the associated trace point.
Users should call rte_flow_conv() with RTE_FLOW_CONV_OP_RULE instead.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
doc/guides/rel_notes/release_26_11.rst | 1 +
lib/ethdev/ethdev_trace.h | 15 -------
lib/ethdev/ethdev_trace_points.c | 3 --
lib/ethdev/rte_flow.c | 56 --------------------------
lib/ethdev/rte_flow.h | 45 ---------------------
5 files changed, 1 insertion(+), 119 deletions(-)
diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst
index 760f49c496..591718253d 100644
--- a/doc/guides/rel_notes/release_26_11.rst
+++ b/doc/guides/rel_notes/release_26_11.rst
@@ -71,6 +71,7 @@ Removed Items
* Removed deprecated symbols:
* eal: ``__rte_packed``
+ * ethdev: ``rte_flow_copy``, ``struct rte_flow_desc``
* fib: ``RTE_FIB6_IPV6_ADDR_SIZE``, ``RTE_FIB6_MAXDEPTH``
* lpm: ``RTE_LPM6_IPV6_ADDR_SIZE``, ``RTE_LPM6_MAX_DEPTH``
* net: ``RTE_IP_ICMP_ECHO_REPLY``, ``RTE_IP_ICMP_ECHO_REQUEST``
diff --git a/lib/ethdev/ethdev_trace.h b/lib/ethdev/ethdev_trace.h
index 6554cc1a21..8cd95a2851 100644
--- a/lib/ethdev/ethdev_trace.h
+++ b/lib/ethdev/ethdev_trace.h
@@ -1402,21 +1402,6 @@ RTE_TRACE_POINT(
rte_trace_point_emit_int(ret);
)
-RTE_TRACE_POINT(
- rte_flow_trace_copy,
- RTE_TRACE_POINT_ARGS(struct rte_flow_desc *fd, size_t len,
- const struct rte_flow_attr *attr,
- const struct rte_flow_item *items,
- const struct rte_flow_action *actions, int ret),
- rte_trace_point_emit_ptr(fd);
- rte_trace_point_emit_size_t(len);
- rte_trace_point_emit_u32(attr->group);
- rte_trace_point_emit_u32(attr->priority);
- rte_trace_point_emit_ptr(items);
- rte_trace_point_emit_ptr(actions);
- rte_trace_point_emit_int(ret);
-)
-
RTE_TRACE_POINT(
rte_flow_trace_tunnel_decap_set,
RTE_TRACE_POINT_ARGS(uint16_t port_id,
diff --git a/lib/ethdev/ethdev_trace_points.c b/lib/ethdev/ethdev_trace_points.c
index 0a28378a56..a81398893f 100644
--- a/lib/ethdev/ethdev_trace_points.c
+++ b/lib/ethdev/ethdev_trace_points.c
@@ -503,9 +503,6 @@ RTE_TRACE_POINT_REGISTER(rte_eth_trace_count_aggr_ports,
RTE_TRACE_POINT_REGISTER(rte_eth_trace_map_aggr_tx_affinity,
lib.ethdev.map_aggr_tx_affinity)
-RTE_TRACE_POINT_REGISTER(rte_flow_trace_copy,
- lib.ethdev.flow.copy)
-
RTE_TRACE_POINT_REGISTER(rte_flow_trace_create,
lib.ethdev.flow.create)
diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c
index 1056cfd2c5..cc96190a71 100644
--- a/lib/ethdev/rte_flow.c
+++ b/lib/ethdev/rte_flow.c
@@ -1190,62 +1190,6 @@ rte_flow_conv(enum rte_flow_conv_op op,
return ret;
}
-/** Store a full rte_flow description. */
-RTE_EXPORT_SYMBOL(rte_flow_copy)
-size_t
-rte_flow_copy(struct rte_flow_desc *desc, size_t len,
- const struct rte_flow_attr *attr,
- const struct rte_flow_item *items,
- const struct rte_flow_action *actions)
-{
- /*
- * Overlap struct rte_flow_conv with struct rte_flow_desc in order
- * to convert the former to the latter without wasting space.
- */
- struct rte_flow_conv_rule *dst =
- len ?
- (void *)((uintptr_t)desc +
- (offsetof(struct rte_flow_desc, actions) -
- offsetof(struct rte_flow_conv_rule, actions))) :
- NULL;
- size_t dst_size =
- len > sizeof(*desc) - sizeof(*dst) ?
- len - (sizeof(*desc) - sizeof(*dst)) :
- 0;
- struct rte_flow_conv_rule src = {
- .attr_ro = NULL,
- .pattern_ro = items,
- .actions_ro = actions,
- };
- int ret;
-
- RTE_BUILD_BUG_ON(sizeof(struct rte_flow_desc) <
- sizeof(struct rte_flow_conv_rule));
- if (dst_size &&
- (&dst->pattern != &desc->items ||
- &dst->actions != &desc->actions ||
- (uintptr_t)(dst + 1) != (uintptr_t)(desc + 1))) {
- rte_errno = EINVAL;
- return 0;
- }
- ret = rte_flow_conv(RTE_FLOW_CONV_OP_RULE, dst, dst_size, &src, NULL);
- if (ret < 0)
- return 0;
- ret += sizeof(*desc) - sizeof(*dst);
- rte_memcpy(desc,
- (&(struct rte_flow_desc){
- .size = ret,
- .attr = *attr,
- .items = dst_size ? dst->pattern : NULL,
- .actions = dst_size ? dst->actions : NULL,
- }),
- len > sizeof(*desc) ? sizeof(*desc) : len);
-
- rte_flow_trace_copy(desc, len, attr, items, actions, ret);
-
- return ret;
-}
-
RTE_EXPORT_SYMBOL(rte_flow_dev_dump)
int
rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h
index 1bfe1b3f61..dcd1dbf03e 100644
--- a/lib/ethdev/rte_flow.h
+++ b/lib/ethdev/rte_flow.h
@@ -4714,51 +4714,6 @@ rte_flow_error_set(struct rte_flow_error *error,
const void *cause,
const char *message);
-/**
- * @deprecated
- * @see rte_flow_copy()
- */
-struct rte_flow_desc {
- size_t size; /**< Allocated space including data[]. */
- struct rte_flow_attr attr; /**< Attributes. */
- struct rte_flow_item *items; /**< Items. */
- struct rte_flow_action *actions; /**< Actions. */
- uint8_t data[]; /**< Storage for items/actions. */
-};
-
-/**
- * @deprecated
- * Copy an rte_flow rule description.
- *
- * This interface is kept for compatibility with older applications but is
- * implemented as a wrapper to rte_flow_conv(). It is deprecated due to its
- * lack of flexibility and reliance on a type unusable with C++ programs
- * (struct rte_flow_desc).
- *
- * @param[in] fd
- * Flow rule description.
- * @param[in] len
- * Total size of allocated data for the flow description.
- * @param[in] attr
- * Flow rule attributes.
- * @param[in] items
- * Pattern specification (list terminated by the END pattern item).
- * @param[in] actions
- * Associated actions (list terminated by the END action).
- *
- * @return
- * If len is greater or equal to the size of the flow, the total size of the
- * flow description and its data.
- * If len is lower than the size of the flow, the number of bytes that would
- * have been written to desc had it been sufficient. Nothing is written.
- */
-__rte_deprecated
-size_t
-rte_flow_copy(struct rte_flow_desc *fd, size_t len,
- const struct rte_flow_attr *attr,
- const struct rte_flow_item *items,
- const struct rte_flow_action *actions);
-
/**
* Flow object conversion helper.
*
--
2.53.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [PATCH 2/2] ethdev: remove deprecated shared flow action
2026-09-01 23:10 [PATCH 1/2] ethdev: remove deprecated flow copy API Stephen Hemminger
@ 2026-09-01 23:10 ` Stephen Hemminger
0 siblings, 0 replies; 2+ messages in thread
From: Stephen Hemminger @ 2026-09-01 23:10 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, Ori Kam, Thomas Monjalon, Andrew Rybchenko
RTE_FLOW_ACTION_TYPE_SHARED has been deprecated since 21.05 when it
was replaced by RTE_FLOW_ACTION_TYPE_INDIRECT. It has no remaining
users in the tree.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
cover-letter.txt | 12 ++++++++++++
doc/guides/rel_notes/release_26_11.rst | 3 ++-
lib/ethdev/rte_flow.h | 11 -----------
3 files changed, 14 insertions(+), 12 deletions(-)
create mode 100644 cover-letter.txt
diff --git a/cover-letter.txt b/cover-letter.txt
new file mode 100644
index 0000000000..ecbd3239e2
--- /dev/null
+++ b/cover-letter.txt
@@ -0,0 +1,12 @@
+The DPDK policy is that an experimental API should be promoted to
+stable after one or more releases. A large part of the ethdev API had
+been left marked experimental long past that point; the meter API, for
+example, has been experimental since 17.11 and is implemented by many
+drivers and used by applications as if it were already stable. This
+series promotes 119 ethdev symbols introduced in 24.11 or earlier whose
+prototypes have not changed since, along with the stale doxygen
+EXPERIMENTAL warnings on structures and inline functions. The patches
+are split by feature so that each can be dropped on its own.
+
+The trace point symbols are left experimental on purpose; trace
+infrastructure is intended to stay unstable.
diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst
index 591718253d..7f278d4645 100644
--- a/doc/guides/rel_notes/release_26_11.rst
+++ b/doc/guides/rel_notes/release_26_11.rst
@@ -71,7 +71,8 @@ Removed Items
* Removed deprecated symbols:
* eal: ``__rte_packed``
- * ethdev: ``rte_flow_copy``, ``struct rte_flow_desc``
+ * ethdev: ``rte_flow_copy``, ``struct rte_flow_desc``,
+ ``RTE_FLOW_ACTION_TYPE_SHARED``
* fib: ``RTE_FIB6_IPV6_ADDR_SIZE``, ``RTE_FIB6_MAXDEPTH``
* lpm: ``RTE_LPM6_IPV6_ADDR_SIZE``, ``RTE_LPM6_MAX_DEPTH``
* net: ``RTE_IP_ICMP_ECHO_REPLY``, ``RTE_IP_ICMP_ECHO_REQUEST``
diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h
index dcd1dbf03e..869cc9a26d 100644
--- a/lib/ethdev/rte_flow.h
+++ b/lib/ethdev/rte_flow.h
@@ -3059,17 +3059,6 @@ enum rte_flow_action_type {
*/
RTE_FLOW_ACTION_TYPE_SAMPLE,
- /**
- * @deprecated
- * @see RTE_FLOW_ACTION_TYPE_INDIRECT
- *
- * Describe action shared across multiple flow rules.
- *
- * Allow multiple rules reference the same action by handle (see
- * struct rte_flow_shared_action).
- */
- RTE_FLOW_ACTION_TYPE_SHARED,
-
/**
* Modify a packet header field, tag, mark or metadata.
*
--
2.53.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-01 23:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-01 23:10 [PATCH 1/2] ethdev: remove deprecated flow copy API Stephen Hemminger
2026-09-01 23:10 ` [PATCH 2/2] ethdev: remove deprecated shared flow action Stephen Hemminger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox