DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [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