From: David Ahern <dsahern@kernel.org>
To: Ratheesh Kannoth <rkannoth@marvell.com>, pablo@netfilter.org
Cc: stephen@networkplumber.org, kuba@kernel.org,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
pabeni@redhat.com, sgoutham@marvell.com,
Jiri Pirko <jiri@resnulli.us>
Subject: Re: [PATCH iproute2-next] devlink: support u32-array values in devlink param show/set
Date: Mon, 29 Jun 2026 08:19:48 -0600 [thread overview]
Message-ID: <b93b6a29-2ced-4a0e-82ba-1da8225f9308@kernel.org> (raw)
In-Reply-To: <akHW1ZiovKdwUq6s@rkannoth-OptiPlex-7090>
On 6/28/26 8:22 PM, Ratheesh Kannoth wrote:
> On 2026-06-28 at 22:49:48, David Ahern (dsahern@kernel.org) wrote:
>> On 6/14/26 10:10 PM, Ratheesh Kannoth wrote:
>>> @@ -3904,6 +3935,14 @@ static int cmd_dev_param_set(struct dl *dl)
>>> if (!strcmp(dl->opts.param_value, ctx.value.vstr))
>>> return 0;
>>> break;
>>> + case 129:
>>
>> no magic numbers. What does 129 represent? Is there a named macro for
>> it? If not, why not if this is part of a UAPI?
>
> The magic number 129 actually represents DEVLINK_PARAM_TYPE_U64_ARRAY from the kernel UAPI (include/uapi/linux/devlink.h).
The uapi is actually devlink_var_attr_type and in this case
DEVLINK_VAR_ATTR_TYPE_U64_ARRAY.
>
> The other cases in this switch block utilize MNL_TYPE_* constants from libmnl. I previously tried to
> patch libmnl to add a matching MNL_TYPE_UARR = 129 macro, but the netfilter maintainers declined it,
> noting that the enum is internal to libmnl (thread: https://lore.kernel.org/netfilter-devel/20260623043755.2435685-1-rkannoth@marvell.com/).
I agree with them.
Looking at the use of devlink_var_attr_type it is duplicating MNL values
for the early entries, but it is not nla_type as part of the nla_attr
uapi. Seems to me the 'nla_type' reference in the code is misleading.
I think cmd_dev_param_set in iproute2 needs to be changed to reference
devlink_var_attr_type instead of MNL_TYPE_*. With that as a prep patch,
add in the new use of DEVLINK_VAR_ATTR_TYPE_U64_ARRAY for this patch.
@Jiri: agree?
And then your subject line and commit message need to be updated to
reference a u64 array, not u32, correct?
>
> To resolve this without magic numbers, I can use the existing kernel macro directly in
> the case statement with an explanatory comment, like so:
>
> /* DEVLINK_PARAM_TYPE_U64_ARRAY maps to 129 */
> case DEVLINK_PARAM_TYPE_U64_ARRAY:
>
> Please let me know if this approach works for you, or if you prefer a different handling.
>
>>
prev parent reply other threads:[~2026-06-29 14:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-15 4:10 [PATCH iproute2-next] devlink: support u32-array values in devlink param show/set Ratheesh Kannoth
2026-06-28 17:19 ` David Ahern
2026-06-29 2:22 ` Ratheesh Kannoth
2026-06-29 14:19 ` David Ahern [this message]
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=b93b6a29-2ced-4a0e-82ba-1da8225f9308@kernel.org \
--to=dsahern@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pablo@netfilter.org \
--cc=rkannoth@marvell.com \
--cc=sgoutham@marvell.com \
--cc=stephen@networkplumber.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 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.