netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
	andrew+netdev@lunn.ch, horms@kernel.org, donald.hunter@gmail.com,
	shuah@kernel.org, kory.maincent@bootlin.com,
	maxime.chevallier@bootlin.com, sdf@fomichev.me,
	ecree.xilinx@gmail.com, gal@nvidia.com,
	Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net-next v2 03/11] tools: ynl: support packing binary arrays of scalars
Date: Mon, 14 Jul 2025 15:27:21 -0700	[thread overview]
Message-ID: <20250714222729.743282-4-kuba@kernel.org> (raw)
In-Reply-To: <20250714222729.743282-1-kuba@kernel.org>

We support decoding a binary type with a scalar subtype already,
add support for sending such arrays to the kernel. While at it
also support using "None" to indicate that the binary attribute
should be empty. I couldn't decide whether empty binary should
be [] or None, but there should be no harm in supporting both.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: donald.hunter@gmail.com
---
 tools/net/ynl/pyynl/lib/ynl.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/net/ynl/pyynl/lib/ynl.py b/tools/net/ynl/pyynl/lib/ynl.py
index 006b359294a4..8244a5f440b2 100644
--- a/tools/net/ynl/pyynl/lib/ynl.py
+++ b/tools/net/ynl/pyynl/lib/ynl.py
@@ -575,7 +575,9 @@ genl_family_name_to_id = None
         elif attr["type"] == 'string':
             attr_payload = str(value).encode('ascii') + b'\x00'
         elif attr["type"] == 'binary':
-            if isinstance(value, bytes):
+            if value is None:
+                attr_payload = b''
+            elif isinstance(value, bytes):
                 attr_payload = value
             elif isinstance(value, str):
                 if attr.display_hint:
@@ -584,6 +586,9 @@ genl_family_name_to_id = None
                     attr_payload = bytes.fromhex(value)
             elif isinstance(value, dict) and attr.struct_name:
                 attr_payload = self._encode_struct(attr.struct_name, value)
+            elif isinstance(value, list) and attr.sub_type in NlAttr.type_formats:
+                format = NlAttr.get_format(attr.sub_type)
+                attr_payload = b''.join([format.pack(x) for x in value])
             else:
                 raise Exception(f'Unknown type for binary attribute, value: {value}')
         elif attr['type'] in NlAttr.type_formats or attr.is_auto_scalar:
-- 
2.50.1


  parent reply	other threads:[~2025-07-14 22:27 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-14 22:27 [PATCH net-next v2 00/11] ethtool: rss: support RSS_SET via Netlink Jakub Kicinski
2025-07-14 22:27 ` [PATCH net-next v2 01/11] ethtool: rss: initial RSS_SET (indirection table handling) Jakub Kicinski
2025-07-15  7:20   ` Gal Pressman
2025-07-15 14:39     ` Jakub Kicinski
2025-07-14 22:27 ` [PATCH net-next v2 02/11] selftests: drv-net: rss_api: factor out checking min queue count Jakub Kicinski
2025-07-14 22:27 ` Jakub Kicinski [this message]
2025-07-14 22:27 ` [PATCH net-next v2 04/11] selftests: drv-net: rss_api: test setting indirection table via Netlink Jakub Kicinski
2025-07-14 22:27 ` [PATCH net-next v2 05/11] ethtool: rss: support setting hfunc " Jakub Kicinski
2025-07-15  7:24   ` Gal Pressman
2025-07-14 22:27 ` [PATCH net-next v2 06/11] ethtool: rss: support setting hkey " Jakub Kicinski
2025-07-15  7:30   ` Gal Pressman
2025-07-14 22:27 ` [PATCH net-next v2 07/11] selftests: drv-net: rss_api: test setting hashing key " Jakub Kicinski
2025-07-14 22:27 ` [PATCH net-next v2 08/11] netlink: specs: define input-xfrm enum in the spec Jakub Kicinski
2025-07-15  8:35   ` Gal Pressman
2025-07-15 14:45     ` Jakub Kicinski
2025-07-14 22:27 ` [PATCH net-next v2 09/11] ethtool: rss: support setting input-xfrm via Netlink Jakub Kicinski
2025-07-15  8:40   ` Gal Pressman
2025-07-14 22:27 ` [PATCH net-next v2 10/11] ethtool: rss: support setting flow hashing fields Jakub Kicinski
2025-07-14 22:27 ` [PATCH net-next v2 11/11] selftests: drv-net: rss_api: test input-xfrm and hash fields Jakub Kicinski

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=20250714222729.743282-4-kuba@kernel.org \
    --to=kuba@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=donald.hunter@gmail.com \
    --cc=ecree.xilinx@gmail.com \
    --cc=edumazet@google.com \
    --cc=gal@nvidia.com \
    --cc=horms@kernel.org \
    --cc=kory.maincent@bootlin.com \
    --cc=maxime.chevallier@bootlin.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sdf@fomichev.me \
    --cc=shuah@kernel.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;
as well as URLs for NNTP newsgroup(s).