From: Stephen Hemminger <stephen@networkplumber.org>
To: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: dev@dpdk.org
Subject: Re: [PATCH v1 1/1] ethdev: add flow item structure size query
Date: Fri, 23 Oct 2026 09:04:17 -0700 [thread overview]
Message-ID: <20261023090417.219e1e91@phoenix.local> (raw)
In-Reply-To: <8fa05595f3596e9355dd90df7fc278b104beb20b.1792757739.git.anatoly.burakov@intel.com>
On Fri, 23 Oct 2026 13:15:46 +0100
Anatoly Burakov <anatoly.burakov@intel.com> wrote:
> Add RTE_FLOW_CONV_OP_ITEM_SIZE to retrieve the fixed specification
> structure size for a flow item type using the existing descriptor table.
>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
I am not sure about the details AI is complaining about here,
but it does look like it has a point. Also it should be possible
to get some code coverage for this in a standalone test.
[PATCH v1 1/1] ethdev: add flow item structure size query
Warning
RTE_FLOW_ITEM_TYPE_MACSEC has no entry in rte_flow_desc_item[]. The
table uses designated initializers, so the MACSEC slot is zero filled.
With this patch a size query for MACSEC fails with EINVAL "unknown
item type", although it is a public item with a spec structure
(struct rte_flow_item_macsec). The doc comment says only unknown and
PMD-private types fail.
The hole predates this patch and hurts existing ops too:
- RTE_FLOW_CONV_OP_ITEM_NAME on MACSEC calls strlcpy(dst, NULL, size);
rte_flow_conv_name() has no NULL name check.
- rte_flow_conv_copy() sees desc[type].size == 0, so rte_flow_copy()
and RTE_FLOW_CONV_OP_PATTERN silently drop MACSEC spec/last/mask.
Please send a separate fix ahead of this patch, in rte_flow_desc_item[]:
MK_FLOW_ITEM(MACSEC, sizeof(struct rte_flow_item_macsec)),
Fixes: 0aaf097585a6 ("ethdev: add MACsec flow item")
Cc: stable@dpdk.org
Missing release note. RTE_FLOW_CONV_OP_ITEM_DEFAULT_MASK_PTR, also new
in 26.11, has one. Extend that entry in release_26_11.rst:
* **Added flow item default mask and size lookup.**
Added ``RTE_FLOW_CONV_OP_ITEM_DEFAULT_MASK_PTR`` and
``RTE_FLOW_CONV_OP_ITEM_SIZE`` conversion operations
to ``rte_flow_conv()`` to retrieve the default mask
and the spec structure size of a flow item type.
No user and no test. The commit message does not say what needs this.
If the consumer is flow_graph or a driver parser, send it as part of
that series. app/test has no rte_flow_conv() coverage at all; a short
test checking END -> 0, ETH -> sizeof(struct rte_flow_item_eth),
MACSEC -> sizeof(struct rte_flow_item_macsec), a negative type ->
EINVAL, and size < sizeof(size_t) -> dst untouched would have caught
the MACSEC hole.
Info
The doc text "Writes the size of rte_flow_item_{name}" is wrong for
GRE_KEY (rte_be32_t), GTPC/GTPU (struct rte_flow_item_gtp) and
ICMP6_ECHO_REQUEST/REPLY (struct rte_flow_item_icmp6_echo). Suggest:
* Writes the size of the item specification structure to
* @p dst, or zero for known item types without one.
Every other op dispatches to a static helper. Move the braced case
block next to rte_flow_conv_item_default_mask():
/** Retrieve the spec structure size of a flow item type. */
static int
rte_flow_conv_item_size(void *dst, const size_t size,
const void *src,
struct rte_flow_error *error)
{
unsigned int type = (uintptr_t)src;
if (type >= RTE_DIM(rte_flow_desc_item) ||
rte_flow_desc_item[type].name == NULL)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
"unknown item type to retrieve the size of");
if (size >= sizeof(size_t))
*(size_t *)dst = rte_flow_desc_item[type].size;
return sizeof(size_t);
}
case RTE_FLOW_CONV_OP_ITEM_SIZE:
ret = rte_flow_conv_item_size(dst, size, src, error);
break;
The name == NULL check here is good; the same check belongs in
rte_flow_conv_name() and rte_flow_conv_item_default_mask().
next prev parent reply other threads:[~2026-10-23 16:04 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-23 12:15 [PATCH v1 1/1] ethdev: add flow item structure size query Anatoly Burakov
2026-10-23 16:04 ` Stephen Hemminger [this message]
2026-10-24 12:04 ` [PATCH v2 1/4] ethdev: fix missing MACsec flow item descriptor Anatoly Burakov
2026-10-24 12:04 ` [PATCH v2 2/4] ethdev: fix missing flow action descriptors Anatoly Burakov
2026-10-24 12:04 ` [PATCH v2 3/4] test/ethdev: add flow conversion tests Anatoly Burakov
2026-10-24 12:04 ` [PATCH v2 4/4] ethdev: add flow item structure size query Anatoly Burakov
2026-10-24 13:50 ` [PATCH v3 1/5] ethdev: fix flow conversion with null buffer Anatoly Burakov
2026-10-24 13:50 ` [PATCH v3 2/5] ethdev: fix missing MACsec flow item descriptor Anatoly Burakov
2026-10-24 13:50 ` [PATCH v3 3/5] ethdev: fix missing flow action descriptors Anatoly Burakov
2026-10-24 13:50 ` [PATCH v3 4/5] test/ethdev: add flow conversion tests Anatoly Burakov
2026-10-24 13:50 ` [PATCH v3 5/5] ethdev: add flow item structure size query Anatoly Burakov
2026-10-26 16:51 ` [PATCH v3 1/5] ethdev: fix flow conversion with null buffer Stephen Hemminger
2026-10-27 10:56 ` Burakov, Anatoly
2026-10-27 9:50 ` [PATCH v4 1/6] " Anatoly Burakov
2026-10-27 9:50 ` [PATCH v4 2/6] ethdev: fix missing MACsec flow item descriptor Anatoly Burakov
2026-10-27 9:50 ` [PATCH v4 3/6] ethdev: fix missing flow action descriptors Anatoly Burakov
2026-10-27 13:59 ` Stephen Hemminger
2026-10-27 9:50 ` [PATCH v4 4/6] ethdev: fix indirect action conversion with short buffer Anatoly Burakov
2026-10-27 9:50 ` [PATCH v4 5/6] test/ethdev: add flow conversion tests Anatoly Burakov
2026-10-27 9:50 ` [PATCH v4 6/6] ethdev: add flow item structure size query Anatoly Burakov
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=20261023090417.219e1e91@phoenix.local \
--to=stephen@networkplumber.org \
--cc=anatoly.burakov@intel.com \
--cc=dev@dpdk.org \
/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