From nobody Fri Dec 19 15:36:04 2025 Received: from mail1.fiberby.net (mail1.fiberby.net [193.104.135.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D187298CA7; Mon, 13 Oct 2025 16:51:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.104.135.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374309; cv=none; b=OUNsj85glo1x8YzHpWcMZQuytuVxxPPbxd3Warf8E+xMU5sB1Ql8LpRqoptxknpdqS/71RaTZsFNNUDGE7DM8Burn/3QsfBepyJOjsvAkjRDg/Wb1SdariL3ZJqOYPHg2HlbAK9uRL+W2MZZzu5O4F8FGlqQuxsZLXiLEIxatSw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374309; c=relaxed/simple; bh=7yvJVotM6dgiP4LTJZR5k6jV6UGL5cKkSeGextoxd8I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ViMKEvoJEza0e3MNJWKJXniqorHW6Bkz/HUEK3BJVkw0abA5dzj+L4evHrwTlh1xN4ixGSvUZj9u2aIDlVrsnsMG05b56K+Cg2XIrxLF3YR7Hu3+GaSbPZlHu46xK7TVcenOIInYQo/2v6aDq5+B3DK76buRhMOTBpplUolFJG4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net; spf=pass smtp.mailfrom=fiberby.net; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b=Luaek1lw; arc=none smtp.client-ip=193.104.135.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fiberby.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b="Luaek1lw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fiberby.net; s=202008; t=1760374303; bh=7yvJVotM6dgiP4LTJZR5k6jV6UGL5cKkSeGextoxd8I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Luaek1lwsdlDAUxEyLxMaysSLgu8ouvjzcX2ZRUUhlFZYVPHlREshaSJV7BppNPex RHZcWbvGTH+raIS5HJQq9ohWL6Drzj9Eh2igDkdJAiiiRlU0BtU4BOJcCm/rY/6FNQ 0oqc2Ofwy9Qy03RKF/VoXGyMbodDemO78MBpwAo4gu8Lo7ICQggdrJAgacducMq0F2 mRQewxa8luKt/yuVhI5M15lSkzyxbivO1GyR/EWoHNeMX/c5vntlyePE9GymbxzPvg 6Vy8szfwn+tgR1Ye+CTgSdUoW3aTeXXB/sjJhh3yjv+n3QoL9oPParUMJ3/wNF9tSr 0d0Obhx0STq5A== Received: from x201s (193-104-135-243.ip4.fiberby.net [193.104.135.243]) by mail1.fiberby.net (Postfix) with ESMTPSA id 9ECA9600BF; Mon, 13 Oct 2025 16:50:35 +0000 (UTC) Received: by x201s (Postfix, from userid 1000) id 1A97920129B; Mon, 13 Oct 2025 16:50:23 +0000 (UTC) From: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= , Alexei Starovoitov , Andrew Lunn , Arkadiusz Kubalewski , Daniel Borkmann , Daniel Zahka , Donald Hunter , Jacob Keller , Jesper Dangaard Brouer , Jiri Pirko , Joe Damato , John Fastabend , Jonathan Corbet , Simon Horman , Stanislav Fomichev , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Vadim Fedorenko , Willem de Bruijn , bpf@vger.kernel.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 1/6] tools: ynl-gen: bitshift the flag values in the generated code Date: Mon, 13 Oct 2025 16:49:58 +0000 Message-ID: <20251013165005.83659-2-ast@fiberby.net> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251013165005.83659-1-ast@fiberby.net> References: <20251013165005.83659-1-ast@fiberby.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Instead of pre-computing the flag values within the code generator, then move the bitshift operation into the generated code. This IMHO makes the generated code read more like handwritten code. No functional changes. Signed-off-by: Asbj=C3=B8rn Sloth T=C3=B8nnesen Reviewed-by: Jacob Keller --- include/uapi/linux/dpll.h | 6 ++-- .../uapi/linux/ethtool_netlink_generated.h | 20 ++++++------- include/uapi/linux/netdev.h | 28 +++++++++---------- tools/include/uapi/linux/netdev.h | 28 +++++++++---------- tools/net/ynl/pyynl/lib/nlspec.py | 7 +++-- tools/net/ynl/pyynl/ynl_gen_c.py | 2 +- 6 files changed, 47 insertions(+), 44 deletions(-) diff --git a/include/uapi/linux/dpll.h b/include/uapi/linux/dpll.h index ab1725a954d74..28c9c8e5761b4 100644 --- a/include/uapi/linux/dpll.h +++ b/include/uapi/linux/dpll.h @@ -185,9 +185,9 @@ enum dpll_pin_state { * @DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE: pin state can be changed */ enum dpll_pin_capabilities { - DPLL_PIN_CAPABILITIES_DIRECTION_CAN_CHANGE =3D 1, - DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE =3D 2, - DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE =3D 4, + DPLL_PIN_CAPABILITIES_DIRECTION_CAN_CHANGE =3D 1U << 0, + DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE =3D 1U << 1, + DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE =3D 1U << 2, }; =20 #define DPLL_PHASE_OFFSET_DIVIDER 1000 diff --git a/include/uapi/linux/ethtool_netlink_generated.h b/include/uapi/= linux/ethtool_netlink_generated.h index 0e8ac0d974e20..14c9baacde0e8 100644 --- a/include/uapi/linux/ethtool_netlink_generated.h +++ b/include/uapi/linux/ethtool_netlink_generated.h @@ -26,9 +26,9 @@ enum { * @ETHTOOL_FLAG_STATS: request statistics, if supported by the driver */ enum ethtool_header_flags { - ETHTOOL_FLAG_COMPACT_BITSETS =3D 1, - ETHTOOL_FLAG_OMIT_REPLY =3D 2, - ETHTOOL_FLAG_STATS =3D 4, + ETHTOOL_FLAG_COMPACT_BITSETS =3D 1U << 0, + ETHTOOL_FLAG_OMIT_REPLY =3D 1U << 1, + ETHTOOL_FLAG_STATS =3D 1U << 2, }; =20 enum ethtool_tcp_data_split { @@ -68,13 +68,13 @@ enum hwtstamp_source { * power control from software */ enum ethtool_pse_event { - ETHTOOL_PSE_EVENT_OVER_CURRENT =3D 1, - ETHTOOL_PSE_EVENT_OVER_TEMP =3D 2, - ETHTOOL_C33_PSE_EVENT_DETECTION =3D 4, - ETHTOOL_C33_PSE_EVENT_CLASSIFICATION =3D 8, - ETHTOOL_C33_PSE_EVENT_DISCONNECTION =3D 16, - ETHTOOL_PSE_EVENT_OVER_BUDGET =3D 32, - ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR =3D 64, + ETHTOOL_PSE_EVENT_OVER_CURRENT =3D 1U << 0, + ETHTOOL_PSE_EVENT_OVER_TEMP =3D 1U << 1, + ETHTOOL_C33_PSE_EVENT_DETECTION =3D 1U << 2, + ETHTOOL_C33_PSE_EVENT_CLASSIFICATION =3D 1U << 3, + ETHTOOL_C33_PSE_EVENT_DISCONNECTION =3D 1U << 4, + ETHTOOL_PSE_EVENT_OVER_BUDGET =3D 1U << 5, + ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR =3D 1U << 6, }; =20 enum { diff --git a/include/uapi/linux/netdev.h b/include/uapi/linux/netdev.h index 48eb49aa03d41..db0526cb6672d 100644 --- a/include/uapi/linux/netdev.h +++ b/include/uapi/linux/netdev.h @@ -26,13 +26,13 @@ * non-linear XDP buffer support in ndo_xdp_xmit callback. */ enum netdev_xdp_act { - NETDEV_XDP_ACT_BASIC =3D 1, - NETDEV_XDP_ACT_REDIRECT =3D 2, - NETDEV_XDP_ACT_NDO_XMIT =3D 4, - NETDEV_XDP_ACT_XSK_ZEROCOPY =3D 8, - NETDEV_XDP_ACT_HW_OFFLOAD =3D 16, - NETDEV_XDP_ACT_RX_SG =3D 32, - NETDEV_XDP_ACT_NDO_XMIT_SG =3D 64, + NETDEV_XDP_ACT_BASIC =3D 1U << 0, + NETDEV_XDP_ACT_REDIRECT =3D 1U << 1, + NETDEV_XDP_ACT_NDO_XMIT =3D 1U << 2, + NETDEV_XDP_ACT_XSK_ZEROCOPY =3D 1U << 3, + NETDEV_XDP_ACT_HW_OFFLOAD =3D 1U << 4, + NETDEV_XDP_ACT_RX_SG =3D 1U << 5, + NETDEV_XDP_ACT_NDO_XMIT_SG =3D 1U << 6, =20 /* private: */ NETDEV_XDP_ACT_MASK =3D 127, @@ -48,9 +48,9 @@ enum netdev_xdp_act { * packet VLAN tag via bpf_xdp_metadata_rx_vlan_tag(). */ enum netdev_xdp_rx_metadata { - NETDEV_XDP_RX_METADATA_TIMESTAMP =3D 1, - NETDEV_XDP_RX_METADATA_HASH =3D 2, - NETDEV_XDP_RX_METADATA_VLAN_TAG =3D 4, + NETDEV_XDP_RX_METADATA_TIMESTAMP =3D 1U << 0, + NETDEV_XDP_RX_METADATA_HASH =3D 1U << 1, + NETDEV_XDP_RX_METADATA_VLAN_TAG =3D 1U << 2, }; =20 /** @@ -63,9 +63,9 @@ enum netdev_xdp_rx_metadata { * by the driver. */ enum netdev_xsk_flags { - NETDEV_XSK_FLAGS_TX_TIMESTAMP =3D 1, - NETDEV_XSK_FLAGS_TX_CHECKSUM =3D 2, - NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO =3D 4, + NETDEV_XSK_FLAGS_TX_TIMESTAMP =3D 1U << 0, + NETDEV_XSK_FLAGS_TX_CHECKSUM =3D 1U << 1, + NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO =3D 1U << 2, }; =20 enum netdev_queue_type { @@ -74,7 +74,7 @@ enum netdev_queue_type { }; =20 enum netdev_qstats_scope { - NETDEV_QSTATS_SCOPE_QUEUE =3D 1, + NETDEV_QSTATS_SCOPE_QUEUE =3D 1U << 0, }; =20 enum netdev_napi_threaded { diff --git a/tools/include/uapi/linux/netdev.h b/tools/include/uapi/linux/n= etdev.h index 48eb49aa03d41..db0526cb6672d 100644 --- a/tools/include/uapi/linux/netdev.h +++ b/tools/include/uapi/linux/netdev.h @@ -26,13 +26,13 @@ * non-linear XDP buffer support in ndo_xdp_xmit callback. */ enum netdev_xdp_act { - NETDEV_XDP_ACT_BASIC =3D 1, - NETDEV_XDP_ACT_REDIRECT =3D 2, - NETDEV_XDP_ACT_NDO_XMIT =3D 4, - NETDEV_XDP_ACT_XSK_ZEROCOPY =3D 8, - NETDEV_XDP_ACT_HW_OFFLOAD =3D 16, - NETDEV_XDP_ACT_RX_SG =3D 32, - NETDEV_XDP_ACT_NDO_XMIT_SG =3D 64, + NETDEV_XDP_ACT_BASIC =3D 1U << 0, + NETDEV_XDP_ACT_REDIRECT =3D 1U << 1, + NETDEV_XDP_ACT_NDO_XMIT =3D 1U << 2, + NETDEV_XDP_ACT_XSK_ZEROCOPY =3D 1U << 3, + NETDEV_XDP_ACT_HW_OFFLOAD =3D 1U << 4, + NETDEV_XDP_ACT_RX_SG =3D 1U << 5, + NETDEV_XDP_ACT_NDO_XMIT_SG =3D 1U << 6, =20 /* private: */ NETDEV_XDP_ACT_MASK =3D 127, @@ -48,9 +48,9 @@ enum netdev_xdp_act { * packet VLAN tag via bpf_xdp_metadata_rx_vlan_tag(). */ enum netdev_xdp_rx_metadata { - NETDEV_XDP_RX_METADATA_TIMESTAMP =3D 1, - NETDEV_XDP_RX_METADATA_HASH =3D 2, - NETDEV_XDP_RX_METADATA_VLAN_TAG =3D 4, + NETDEV_XDP_RX_METADATA_TIMESTAMP =3D 1U << 0, + NETDEV_XDP_RX_METADATA_HASH =3D 1U << 1, + NETDEV_XDP_RX_METADATA_VLAN_TAG =3D 1U << 2, }; =20 /** @@ -63,9 +63,9 @@ enum netdev_xdp_rx_metadata { * by the driver. */ enum netdev_xsk_flags { - NETDEV_XSK_FLAGS_TX_TIMESTAMP =3D 1, - NETDEV_XSK_FLAGS_TX_CHECKSUM =3D 2, - NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO =3D 4, + NETDEV_XSK_FLAGS_TX_TIMESTAMP =3D 1U << 0, + NETDEV_XSK_FLAGS_TX_CHECKSUM =3D 1U << 1, + NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO =3D 1U << 2, }; =20 enum netdev_queue_type { @@ -74,7 +74,7 @@ enum netdev_queue_type { }; =20 enum netdev_qstats_scope { - NETDEV_QSTATS_SCOPE_QUEUE =3D 1, + NETDEV_QSTATS_SCOPE_QUEUE =3D 1U << 0, }; =20 enum netdev_napi_threaded { diff --git a/tools/net/ynl/pyynl/lib/nlspec.py b/tools/net/ynl/pyynl/lib/nl= spec.py index 85c17fe01e35a..465d8fd909a04 100644 --- a/tools/net/ynl/pyynl/lib/nlspec.py +++ b/tools/net/ynl/pyynl/lib/nlspec.py @@ -90,9 +90,12 @@ class SpecEnumEntry(SpecElement): def raw_value(self): return self.value =20 - def user_value(self, as_flags=3DNone): + def user_value(self, as_flags=3DNone, as_c=3DNone): if self.enum_set['type'] =3D=3D 'flags' or as_flags: - return 1 << self.value + if as_c: + return f'1U << {self.value}' + else: + return 1 << self.value else: return self.value =20 diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen= _c.py index 58086b1010573..e6df0e2b63a8c 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -3209,7 +3209,7 @@ def render_uapi(family, cw): for entry in enum.entries.values(): suffix =3D ',' if entry.value_change: - suffix =3D f" =3D {entry.user_value()}" + suffix + suffix =3D f" =3D {entry.user_value(as_c=3DTrue)}" + s= uffix cw.p(entry.c_name + suffix) =20 if const.get('render-max', False): --=20 2.51.0 From nobody Fri Dec 19 15:36:04 2025 Received: from mail1.fiberby.net (mail1.fiberby.net [193.104.135.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 35052298CC4; Mon, 13 Oct 2025 16:51:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.104.135.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374310; cv=none; b=lKB7aof4dmbPnWP8HqrfWwRPDGBdcMyBQ4kpyWE48vIm8jTHhJvlhmXENTiMWgLclgGKIeVRjHdnZUGDK9Niguh/PXQhUnentY38r7TDak59T2vRJlufRb8Nq9mpTYB9pzPsclcwhrq3m6ioijeGwcenWmBnIcl2Y6941fv/NTI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374310; c=relaxed/simple; bh=3LWAW2XwKFRP8Oeuhh8xoOoHiwBJYBgYAYJw8UV+2mY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YjsmOZR3ZJcm3qdkLPZRkLiNeVYeS1Vn8ILLmpgQZAqGMoabzlV7IB+IMbPtSpBWS1/MWdh1g6kWkexDkllJnBJ1LZB7GK5rv2fwvv1Th3S3Vd9P3QplPuz9xV8engMuyNnLUpGMRRdZAlP7NkWZ+RZpbA6OFsqgTcj+IPjSRCY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net; spf=pass smtp.mailfrom=fiberby.net; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b=XdRfc3ch; arc=none smtp.client-ip=193.104.135.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fiberby.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b="XdRfc3ch" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fiberby.net; s=202008; t=1760374306; bh=3LWAW2XwKFRP8Oeuhh8xoOoHiwBJYBgYAYJw8UV+2mY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XdRfc3chi3xMDJ+gqELGqztdKoTXSd4IcD5LtHULkDk5ABFs16ftxSCnlCZVp/WTv nQu5MwFImVTQNes6aQAf+2F5cMcgxm+YC4jrF3rXn6T4LCcf3UQW9WVG6jhMqg/8AN Ua8LnPSH6032G76IaT/fcYIagXXI4gRc5rn8uOS7hpukihOVfENhdI4bjO5XO6na6e hbfrThy+lwGqNm83DtNYTTgpq3NIEfJeD72QTan6WKfb9kjOr0J/0qaJ2SjCGRoYJ3 tKMtEKR7YEibfpw81f8GDeHPLeZGr6/Ebdr7EdEC9e36jIXR2wu8J+D+m6+W88IHHH 0e7fU2GMH/MzA== Received: from x201s (193-104-135-243.ip4.fiberby.net [193.104.135.243]) by mail1.fiberby.net (Postfix) with ESMTPSA id 685DC60109; Mon, 13 Oct 2025 16:51:43 +0000 (UTC) Received: by x201s (Postfix, from userid 1000) id C155420199A; Mon, 13 Oct 2025 16:50:24 +0000 (UTC) From: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= , Alexei Starovoitov , Andrew Lunn , Arkadiusz Kubalewski , Daniel Borkmann , Daniel Zahka , Donald Hunter , Jacob Keller , Jesper Dangaard Brouer , Jiri Pirko , Joe Damato , John Fastabend , Jonathan Corbet , Simon Horman , Stanislav Fomichev , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Vadim Fedorenko , Willem de Bruijn , bpf@vger.kernel.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/6] tools: ynl-gen: refactor render-max enum generation Date: Mon, 13 Oct 2025 16:49:59 +0000 Message-ID: <20251013165005.83659-3-ast@fiberby.net> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251013165005.83659-1-ast@fiberby.net> References: <20251013165005.83659-1-ast@fiberby.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable This patch refactors the generation of the three render-max private enum members: (__$pfx-MAX and $pfx-MAX) or $pfx-MASK. The names, default or not, are now resolved in the EnumSet class. This makes enum.enum_max_name re-usable for NLA_POLICY_MASK() in the next patch in this series, so we don't have to re-define it. This doesn't change the generated output. Signed-off-by: Asbj=C3=B8rn Sloth T=C3=B8nnesen Reviewed-by: Jacob Keller --- tools/net/ynl/pyynl/ynl_gen_c.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen= _c.py index e6df0e2b63a8c..2666cc54d09c0 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -1060,7 +1060,9 @@ class EnumSet(SpecEnumSet): =20 self.value_pfx =3D yaml.get('name-prefix', f"{family.ident_name}-{= yaml['name']}-") self.header =3D yaml.get('header', None) - self.enum_cnt_name =3D yaml.get('enum-cnt-name', None) + self.enum_cnt_name =3D yaml.get('enum-cnt-name', f'--{self.value_p= fx}max') + suffix =3D yaml['type'] =3D=3D 'flags' and 'mask' or 'max' + self.enum_max_name =3D f'{self.value_pfx}{suffix}' =20 super().__init__(family, yaml) =20 @@ -3205,7 +3207,6 @@ def render_uapi(family, cw): cw.p(' */') =20 uapi_enum_start(family, cw, const, 'name') - name_pfx =3D const.get('name-prefix', f"{family.ident_name}-{c= onst['name']}-") for entry in enum.entries.values(): suffix =3D ',' if entry.value_change: @@ -3215,17 +3216,14 @@ def render_uapi(family, cw): if const.get('render-max', False): cw.nl() cw.p('/* private: */') + max_name =3D c_upper(enum.enum_max_name) if const['type'] =3D=3D 'flags': - max_name =3D c_upper(name_pfx + 'mask') - max_val =3D f' =3D {enum.get_mask()},' - cw.p(max_name + max_val) + max_val =3D f'{enum.get_mask()},' else: - cnt_name =3D enum.enum_cnt_name - max_name =3D c_upper(name_pfx + 'max') - if not cnt_name: - cnt_name =3D '__' + name_pfx + 'max' - cw.p(c_upper(cnt_name) + ',') - cw.p(max_name + ' =3D (' + c_upper(cnt_name) + ' - 1)') + cnt_name =3D c_upper(enum.enum_cnt_name) + cw.p(f'{cnt_name},') + max_val =3D f'({cnt_name} - 1)' + cw.p(f'{max_name} =3D {max_val}') cw.block_end(line=3D';') cw.nl() elif const['type'] =3D=3D 'const': --=20 2.51.0 From nobody Fri Dec 19 15:36:04 2025 Received: from mail1.fiberby.net (mail1.fiberby.net [193.104.135.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34FD8296BDB; Mon, 13 Oct 2025 16:51:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.104.135.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374310; cv=none; b=Gs8VgjOXzyKzgtsEq+iLvuHdk3UzjbvYJPLknIsNPcNX68Ru35OwFv45PIpkwt8euyfHbAHzpNxNglCguiCkbpfro7slJsDWTq18g5ypUe8O2cxEPivlvwneYR1rWFNQBE6Zci8/2b0VaUowNqyZTGFkLIzA73Urwgrll0+qV08= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374310; c=relaxed/simple; bh=wSnDcOPEm541S8uM2djsmmEa/KIIVZc/LcMVAQsHwEs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=r0yj6KHktbDTe00ayZLmP+UkwPICFdtc+v86NFFQmf59rRC3byBXELP+LIpU/y7JxuDgE4MxG5cxslnYqpeGuCvjEoAI/D9Cglz7Vd5RYvGu5q9BeqdaomWakYxCCWttqvMx1dO+CJGZVM7S/1dkXGPPxDyJcSEkddIsMaoGmdI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net; spf=pass smtp.mailfrom=fiberby.net; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b=BX85OMhy; arc=none smtp.client-ip=193.104.135.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fiberby.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b="BX85OMhy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fiberby.net; s=202008; t=1760374306; bh=wSnDcOPEm541S8uM2djsmmEa/KIIVZc/LcMVAQsHwEs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BX85OMhygxa8BP3Jy0gIzXmuu/VsQ491ny9dxfwzMNrTGUto2OHnNAb1gZU40S2ZD 4cNEpHiq8WV6zYZHSWZcnb0CqyvuJJ8fEK49eXLXPCGhn9S+F91qxkVvn+HweVEO1g fl2ph/SxNKoXfSdA3t5nVICqPz4oAJyE8027woqQx0Qv6OswFD0RIJeMwFmLEgxc24 i+L/XY6syAbkEJBzRKrkK9gqTnAadZbUZJY8W+YdolYUhz4/dEs26cQjE7VZcetgnL ZjS6I2nTXek8t5oJ6BQqWfakEwvnAEzSyScV+TNOy6gCWcnEmW5wFZEgRQ2etF09jx Fe9j+EQsbYptg== Received: from x201s (193-104-135-243.ip4.fiberby.net [193.104.135.243]) by mail1.fiberby.net (Postfix) with ESMTPSA id 685BB60107; Mon, 13 Oct 2025 16:51:43 +0000 (UTC) Received: by x201s (Postfix, from userid 1000) id C62DB201CE5; Mon, 13 Oct 2025 16:50:25 +0000 (UTC) From: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= , Alexei Starovoitov , Andrew Lunn , Arkadiusz Kubalewski , Daniel Borkmann , Daniel Zahka , Donald Hunter , Jacob Keller , Jesper Dangaard Brouer , Jiri Pirko , Joe Damato , John Fastabend , Jonathan Corbet , Simon Horman , Stanislav Fomichev , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Vadim Fedorenko , Willem de Bruijn , bpf@vger.kernel.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 3/6] tools: ynl-gen: use uapi mask definition in NLA_POLICY_MASK Date: Mon, 13 Oct 2025 16:50:00 +0000 Message-ID: <20251013165005.83659-4-ast@fiberby.net> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251013165005.83659-1-ast@fiberby.net> References: <20251013165005.83659-1-ast@fiberby.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Currently when generating policies using NLA_POLICY_MASK(), then we emit a pre-computed decimal mask. When render-max is set, then we can re-use the mask definition, that has been generated in the uapi header. This IMHO makes the generated code read more like handwritten code. This patch assumes that "kernel source" is only generated, when "uapi header" is also generated through ynl-gen, when render-max is set in the spec. AFAICT this is fine, as render-max is pointless when uapi is not generated by ynl-gen. Currently no generated policies are changed by this, as there are no specs which are used for generation, which also has render-max. In the future this might be used for code generation by wireguard. Signed-off-by: Asbj=C3=B8rn Sloth T=C3=B8nnesen Reviewed-by: Jacob Keller --- tools/net/ynl/pyynl/ynl_gen_c.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen= _c.py index 2666cc54d09c0..b00762721280c 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -418,12 +418,18 @@ class TypeScalar(Type): if 'flags-mask' in self.checks or self.is_bitfield: if self.is_bitfield: enum =3D self.family.consts[self.attr['enum']] - mask =3D enum.get_mask(as_flags=3DTrue) + if enum.get('render-max', False): + mask =3D c_upper(enum.enum_max_name) + else: + mask =3D enum.get_mask(as_flags=3DTrue) else: flags =3D self.family.consts[self.checks['flags-mask']] flag_cnt =3D len(flags['entries']) mask =3D (1 << flag_cnt) - 1 - return f"NLA_POLICY_MASK({policy}, 0x{mask:x})" + + if isinstance(mask, int): + mask =3D f'0x{mask:x}' + return f"NLA_POLICY_MASK({policy}, {mask})" elif 'full-range' in self.checks: return f"NLA_POLICY_FULL_RANGE({policy}, &{c_lower(self.enum_n= ame)}_range)" elif 'range' in self.checks: --=20 2.51.0 From nobody Fri Dec 19 15:36:04 2025 Received: from mail1.fiberby.net (mail1.fiberby.net [193.104.135.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E1382989B4; Mon, 13 Oct 2025 16:51:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.104.135.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374308; cv=none; b=UmBbwHsJgz+8MCa3XexdRl7xfYzC/Xr3oy3hddnTKjyH5tIal3IivjYc7yY2q1PX4TSO+oDmO3tg2vwjC7wT0nVqsSx3pC82Cj3b7Qh0txwj+yn30u3YfIaZW/l+/139iAlqwZMIuO5gwYe2xp/ysy2R/XLOZFAGOkoto+zgnxs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374308; c=relaxed/simple; bh=vdV0+M0c//vveSxiWtYRprv4vOfUbsvwAZSi8SqwOhw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tSxj0W/U1kdO7dNQAIoXQkdcjftMeBTHObOD1HDfb1K/Pr9Ma0T4zJdlnJf9dMZJzqXVS4qFKjV/wTirjRq+FbeRgE4i1ypjGu9ODw6zbbZb8oCYQsCc0tCpnfLqaMuHhxeBlBTC4Nj/dkGiKTQkxkFIf6mhXkaxqEOHvOOOkRE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net; spf=pass smtp.mailfrom=fiberby.net; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b=ej7+QjuB; arc=none smtp.client-ip=193.104.135.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fiberby.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b="ej7+QjuB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fiberby.net; s=202008; t=1760374303; bh=vdV0+M0c//vveSxiWtYRprv4vOfUbsvwAZSi8SqwOhw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ej7+QjuBabrAr8pBomkp6mXGHD9MfgDUK5zH0ddq3D6aZ+1IGEgq8f5JvzVxrUfQw U7hKGPAkKWzsz6PcTv82dcym597OoNOzLZBy58ydcRjx1lSakg8gWsUnpSGxmk8nBT xX0N3oKn23Yc1l2j30Ni2Vi+3DTV6RKNH9bJJFuc6qMGiNhDZhdFgY59ianpLJlrm3 NqKU8sQH2AQsdnJds39lxHYMGx2b4sAH5HsU0fKyoBtMOS7KzRA6Zcp2uvQF4Bqs3c XyxOZYZiQl9hpSFFsSu3DTHMcXctrE3JJX+4YY8wZ1CU3nUgrXBAi4fgUAYVvCQ9Z9 3CLhW1QNPoxrg== Received: from x201s (193-104-135-243.ip4.fiberby.net [193.104.135.243]) by mail1.fiberby.net (Postfix) with ESMTPSA id 99E616000C; Mon, 13 Oct 2025 16:50:35 +0000 (UTC) Received: by x201s (Postfix, from userid 1000) id BFAC1201E75; Mon, 13 Oct 2025 16:50:26 +0000 (UTC) From: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= , Alexei Starovoitov , Andrew Lunn , Arkadiusz Kubalewski , Daniel Borkmann , Daniel Zahka , Donald Hunter , Jacob Keller , Jesper Dangaard Brouer , Jiri Pirko , Joe Damato , John Fastabend , Jonathan Corbet , Simon Horman , Stanislav Fomichev , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Vadim Fedorenko , Willem de Bruijn , bpf@vger.kernel.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 4/6] tools: ynl-gen: add generic p_wrap() helper Date: Mon, 13 Oct 2025 16:50:01 +0000 Message-ID: <20251013165005.83659-5-ast@fiberby.net> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251013165005.83659-1-ast@fiberby.net> References: <20251013165005.83659-1-ast@fiberby.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Previously only write_func_prot() was performing line wrapping. As the next patch in this series also requires line wrapping, then this patch introduces a generic line wrapping helper in CodeWriter called p_wrap(), which can be used in both cases. This patch causes a change in the generated prototype for psp_device_get_locked(), as the skb argument actually fits on the first line, while not exceeding 80 characters. No functional changes. Signed-off-by: Asbj=C3=B8rn Sloth T=C3=B8nnesen Reviewed-by: Jacob Keller --- net/psp/psp-nl-gen.h | 4 +-- tools/net/ynl/pyynl/ynl_gen_c.py | 42 +++++++++++++++++++------------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/net/psp/psp-nl-gen.h b/net/psp/psp-nl-gen.h index 25268ed11fb56..ac5f59b4f498c 100644 --- a/net/psp/psp-nl-gen.h +++ b/net/psp/psp-nl-gen.h @@ -14,8 +14,8 @@ /* Common nested types */ extern const struct nla_policy psp_keys_nl_policy[PSP_A_KEYS_SPI + 1]; =20 -int psp_device_get_locked(const struct genl_split_ops *ops, - struct sk_buff *skb, struct genl_info *info); +int psp_device_get_locked(const struct genl_split_ops *ops, struct sk_buff= *skb, + struct genl_info *info); int psp_assoc_device_get_locked(const struct genl_split_ops *ops, struct sk_buff *skb, struct genl_info *info); void diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen= _c.py index b00762721280c..1201c2ac352ea 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -1693,6 +1693,27 @@ class CodeWriter: ind +=3D add_ind self._out.write('\t' * ind + line + '\n') =20 + def p_wrap(self, prefix, parts): + assert(len(parts) > 0) + ts =3D 8 + pfx_len =3D len(prefix) + pfx_ind_tabs =3D pfx_len // ts + pfx_ind =3D '\t' * pfx_ind_tabs + ' ' * (pfx_len % ts) + max_len =3D 80 - (self._ind * ts) + is_first_line =3D True + buf =3D f'{prefix}{parts[0]}' + for part in parts[1:]: + next_buf =3D f'{buf} {part}' + if len(next_buf) <=3D max_len: + buf =3D next_buf + else: + self.p(buf) + buf =3D f'{pfx_ind}{part}' + if is_first_line: + max_len -=3D pfx_ind_tabs * (ts-1) + is_first_line =3D False + self.p(buf) + def nl(self): self._nl =3D True =20 @@ -1751,23 +1772,10 @@ class CodeWriter: v =3D '' elif qual_ret[-1] !=3D '*': v +=3D ' ' - v +=3D name + '(' - ind =3D '\t' * (len(v) // 8) + ' ' * (len(v) % 8) - delta_ind =3D len(v) - len(ind) - v +=3D args[0] - i =3D 1 - while i < len(args): - next_len =3D len(v) + len(args[i]) - if v[0] =3D=3D '\t': - next_len +=3D delta_ind - if next_len > 76: - self.p(v + ',') - v =3D ind - else: - v +=3D ', ' - v +=3D args[i] - i +=3D 1 - self.p(v + ')' + suffix) + + parts =3D [f'{arg},' for arg in args[:-1]] + parts.append(f'{args[-1]}){suffix}') + self.p_wrap(f'{v}{name}(', parts) =20 def write_func_lvar(self, local_vars): if not local_vars: --=20 2.51.0 From nobody Fri Dec 19 15:36:04 2025 Received: from mail1.fiberby.net (mail1.fiberby.net [193.104.135.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A8A9B2989A2; Mon, 13 Oct 2025 16:51:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.104.135.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374308; cv=none; b=UHtcMB2bfyGFuxtO3lteBid+IzvbjGJ51FUpbcx8gXAi5QOBxlPv6v2vJFzAScltKUgH+HtTLKp/P3UeSF0Wbq4E1mDBgU3oVdbJva4i+Qq+gupeOIHSrWzMOBUnXGI8Tn0AYJhFq+26BBwUT0MDgQWKLTt0V3lvzjKD2JYRPYA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374308; c=relaxed/simple; bh=p8sDry/r93YpiCyDay4HUdBBvRo6dP4j8o/JiZT6IY8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IQ3ReubT4ew3p/2t/VgfkkEm73HH6dIKqN8lg0UfzNTTfG1yYpQy00bypU+/f7pYvNRuYdXkF2uFljJNVYTzQYOimojH0JRkYkBbtPjjDQbDquhPisM6q5tr6Z7zO7ehRp4qg9cIyDZe298OQLWOHB9tFJ7qE+PveYdKpdJ9Vmg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net; spf=pass smtp.mailfrom=fiberby.net; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b=CeNDYgRo; arc=none smtp.client-ip=193.104.135.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fiberby.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b="CeNDYgRo" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fiberby.net; s=202008; t=1760374303; bh=p8sDry/r93YpiCyDay4HUdBBvRo6dP4j8o/JiZT6IY8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CeNDYgRoOc4ApNqJSBJ07rEsBATyNRNTkiJiU0Kh7gdHykA5KL+rnwLWrddp7WK/a ewjf8NVUWd1Xo6p+R69jpNuMDIaYZu/u3dbuEexISIUVaUzcGdP41UWMa9MAD+nOzq Tub9QkJ1QqdUelLYVhjOO9CsDhIZJK7jokWz/w8SivaPzHkzqpOYIe5E5T5pWwJaX4 QGokedRi54mxcJnsjUOydDqOqnRKo31+baL77whKoNTqcjXVx9O4/nWzbC4ZMPz7pW ZrO7Qry/cU6RkwVN1ZsTP+Sf2N8WxQpkjy6ivnRFLWRxw5IY35LUif+S9yWHskdd5a il7lwTXJDtmvQ== Received: from x201s (193-104-135-243.ip4.fiberby.net [193.104.135.243]) by mail1.fiberby.net (Postfix) with ESMTPSA id A105A600C1; Mon, 13 Oct 2025 16:50:35 +0000 (UTC) Received: by x201s (Postfix, from userid 1000) id 83C60201F40; Mon, 13 Oct 2025 16:50:27 +0000 (UTC) From: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= , Alexei Starovoitov , Andrew Lunn , Arkadiusz Kubalewski , Daniel Borkmann , Daniel Zahka , Donald Hunter , Jacob Keller , Jesper Dangaard Brouer , Jiri Pirko , Joe Damato , John Fastabend , Jonathan Corbet , Simon Horman , Stanislav Fomichev , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Vadim Fedorenko , Willem de Bruijn , bpf@vger.kernel.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 5/6] tools: ynl-gen: construct bitflag masks in generated headers Date: Mon, 13 Oct 2025 16:50:02 +0000 Message-ID: <20251013165005.83659-6-ast@fiberby.net> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251013165005.83659-1-ast@fiberby.net> References: <20251013165005.83659-1-ast@fiberby.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Instead of pre-computing the bitflag mask within the code generator, then generate the code to combine all the flags in the generated code. This patch uses the new p_wrap() method to wrap long lines. This IMHO makes the generated code read more like handwritten code. No functional changes. Signed-off-by: Asbj=C3=B8rn Sloth T=C3=B8nnesen Reviewed-by: Jacob Keller --- include/uapi/linux/netdev.h | 6 +++++- tools/include/uapi/linux/netdev.h | 6 +++++- tools/net/ynl/pyynl/ynl_gen_c.py | 7 +++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/include/uapi/linux/netdev.h b/include/uapi/linux/netdev.h index db0526cb6672d..337f444178bbb 100644 --- a/include/uapi/linux/netdev.h +++ b/include/uapi/linux/netdev.h @@ -35,7 +35,11 @@ enum netdev_xdp_act { NETDEV_XDP_ACT_NDO_XMIT_SG =3D 1U << 6, =20 /* private: */ - NETDEV_XDP_ACT_MASK =3D 127, + NETDEV_XDP_ACT_MASK =3D NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT | + NETDEV_XDP_ACT_NDO_XMIT | + NETDEV_XDP_ACT_XSK_ZEROCOPY | + NETDEV_XDP_ACT_HW_OFFLOAD | NETDEV_XDP_ACT_RX_SG | + NETDEV_XDP_ACT_NDO_XMIT_SG, }; =20 /** diff --git a/tools/include/uapi/linux/netdev.h b/tools/include/uapi/linux/n= etdev.h index db0526cb6672d..337f444178bbb 100644 --- a/tools/include/uapi/linux/netdev.h +++ b/tools/include/uapi/linux/netdev.h @@ -35,7 +35,11 @@ enum netdev_xdp_act { NETDEV_XDP_ACT_NDO_XMIT_SG =3D 1U << 6, =20 /* private: */ - NETDEV_XDP_ACT_MASK =3D 127, + NETDEV_XDP_ACT_MASK =3D NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT | + NETDEV_XDP_ACT_NDO_XMIT | + NETDEV_XDP_ACT_XSK_ZEROCOPY | + NETDEV_XDP_ACT_HW_OFFLOAD | NETDEV_XDP_ACT_RX_SG | + NETDEV_XDP_ACT_NDO_XMIT_SG, }; =20 /** diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen= _c.py index 1201c2ac352ea..5e1c702143d86 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -3232,12 +3232,15 @@ def render_uapi(family, cw): cw.p('/* private: */') max_name =3D c_upper(enum.enum_max_name) if const['type'] =3D=3D 'flags': - max_val =3D f'{enum.get_mask()},' + values =3D list(enum.entries.values()) + parts =3D [f'{val.c_name} |' for val in values[:-1]] + parts.append(f'{values[-1].c_name},') + cw.p_wrap(f'{max_name} =3D ', parts) else: cnt_name =3D c_upper(enum.enum_cnt_name) cw.p(f'{cnt_name},') max_val =3D f'({cnt_name} - 1)' - cw.p(f'{max_name} =3D {max_val}') + cw.p(f'{max_name} =3D {max_val}') cw.block_end(line=3D';') cw.nl() elif const['type'] =3D=3D 'const': --=20 2.51.0 From nobody Fri Dec 19 15:36:04 2025 Received: from mail1.fiberby.net (mail1.fiberby.net [193.104.135.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED38923C4F3; Mon, 13 Oct 2025 16:51:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.104.135.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374309; cv=none; b=Nm8TLclGjO6UjsUSAtgfOhBDaDEtQhXKJLHVJEs7yPEbpZ4PAb59d+KnpxVht5AR8Qc492VpcUnbD7d9Sfeo+6dHB0R+6ULNYPJv1Id7/irHz5Q6NBe5rCQU1lxgrWAqHGbrhl0/jt5z9A35WZNhjamODzc6Tb8PlbUZKPwLcOI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760374309; c=relaxed/simple; bh=/oDiaZBlXUBR5cGDBcQM/4+6/ZJeCVisVjvE+Vycvp8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Rg/M+HDlVTtSGeiGfZY8rSe7tvO6/DN/hoPMJhqSkWUryibcUZu5S0g0xmhz78DgSleS7nw6jv/n57BS82N9MmY2l4xoG8Vosf4Z8QXjpY2MV5HkJwCYEhqQ9GEsqYRTtUR52TGV12CsdxlOWyM1YfGhgVsGlpvi9+Ky2kfTAqo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net; spf=pass smtp.mailfrom=fiberby.net; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b=KoYqNapt; arc=none smtp.client-ip=193.104.135.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fiberby.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b="KoYqNapt" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fiberby.net; s=202008; t=1760374303; bh=/oDiaZBlXUBR5cGDBcQM/4+6/ZJeCVisVjvE+Vycvp8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KoYqNaptWl5rUjJBbmXczrhDhy+iVD+oTskezAzXO/V5IxhZryHvmm7+//IT4ZvMh zJrTL0lmUUqbYdcvQE//dS60pwprwrACjekSPC3Pi1LR60N8qCeuybLsv/byqvgZMT K2/8oJHD0zo35dVwhRI+aTsd/KivsOrfQMk/Zzps/Xv8z+W04/PHH5/YL/s/ME1mr6 cVJmHNlSsvm3ltmqz1Zko/qswJAa+ZslHZ6ks41wKD4pPxFVhMHIFmC+9c/jpgF5pZ /69Vi73IilhPAI5ml9/xGWJwMiPxjxjPqJ85uR9Eml4R9gcRW7J7lYG33sKnAbwkXm J/wTrYNY4LPOg== Received: from x201s (193-104-135-243.ip4.fiberby.net [193.104.135.243]) by mail1.fiberby.net (Postfix) with ESMTPSA id B6A0F600FF; Mon, 13 Oct 2025 16:50:35 +0000 (UTC) Received: by x201s (Postfix, from userid 1000) id 4C663202AE6; Mon, 13 Oct 2025 16:50:28 +0000 (UTC) From: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= , Alexei Starovoitov , Andrew Lunn , Arkadiusz Kubalewski , Daniel Borkmann , Daniel Zahka , Donald Hunter , Jacob Keller , Jesper Dangaard Brouer , Jiri Pirko , Joe Damato , John Fastabend , Jonathan Corbet , Simon Horman , Stanislav Fomichev , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Vadim Fedorenko , Willem de Bruijn , bpf@vger.kernel.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 6/6] tools: ynl-gen: allow custom naming of render-max definitions Date: Mon, 13 Oct 2025 16:50:03 +0000 Message-ID: <20251013165005.83659-7-ast@fiberby.net> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251013165005.83659-1-ast@fiberby.net> References: <20251013165005.83659-1-ast@fiberby.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable When `render-max` is set for an enum, then it generates either (`__$pfx-MAX` and `$pfx-MAX`) or (`$pfx-MASK` for flags). The count definition `__$pfx-MAX` can already be overridden via `enum-cnt-name` in the spec. This patch adds a new `enum-max-name` attribute which can be used to override the names for either `$pfx-MAX` or `$pfx-MASK`. The existing `enum-cnt-name` is only described for the genetlink-c and genetlink-legacy protocols, so I have only added `enum-max-name` for those protocols. This doesn't change the generated output. Signed-off-by: Asbj=C3=B8rn Sloth T=C3=B8nnesen Reviewed-by: Jacob Keller --- Alternatively `enum-max-name` should be added to all protocols, so that genetlink families can also choose to eg. have these private variables prefixed with "__". As NETDEV_XDP_ACT_MASK leaked into xdp-tools [v1.4.0..v1.5.7], then if we want to change the default names[1], then we would still need to be able to use an override to keep the current NETDEV_XDP_ACT_MASK name in the netdev family. [1] https://lore.kernel.org/netdev/20230614211715.01940bbd@kernel.org/ --- Documentation/netlink/genetlink-c.yaml | 3 +++ Documentation/netlink/genetlink-legacy.yaml | 3 +++ Documentation/userspace-api/netlink/c-code-gen.rst | 7 +++++-- tools/net/ynl/pyynl/ynl_gen_c.py | 6 ++++-- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Documentation/netlink/genetlink-c.yaml b/Documentation/netlink= /genetlink-c.yaml index 5a234e9b5fa2e..755b24fb0c319 100644 --- a/Documentation/netlink/genetlink-c.yaml +++ b/Documentation/netlink/genetlink-c.yaml @@ -110,6 +110,9 @@ properties: enum-cnt-name: description: Name of the render-max counter enum entry. type: string + enum-max-name: + description: Name of the render-max max or mask enum entry. + type: string # End genetlink-c =20 attribute-sets: diff --git a/Documentation/netlink/genetlink-legacy.yaml b/Documentation/ne= tlink/genetlink-legacy.yaml index 66fb8653a3442..ad4d69be6294e 100644 --- a/Documentation/netlink/genetlink-legacy.yaml +++ b/Documentation/netlink/genetlink-legacy.yaml @@ -124,6 +124,9 @@ properties: enum-cnt-name: description: Name of the render-max counter enum entry. type: string + enum-max-name: + description: Name of the render-max max or mask enum entry. + type: string # End genetlink-c # Start genetlink-legacy members: diff --git a/Documentation/userspace-api/netlink/c-code-gen.rst b/Documenta= tion/userspace-api/netlink/c-code-gen.rst index 46415e6d646d2..413a56424012a 100644 --- a/Documentation/userspace-api/netlink/c-code-gen.rst +++ b/Documentation/userspace-api/netlink/c-code-gen.rst @@ -57,8 +57,11 @@ portion of the entry name. =20 Boolean ``render-max`` controls creation of the max values (which are enabled by default for attribute enums). These max -values are named ``__$pfx-MAX`` and ``$pfx-MAX``. The name -of the first value can be overridden via ``enum-cnt-name`` property. +values are named ``__$pfx-MAX`` and ``$pfx-MAX``, and can be +overwritten via the properties ``enum-cnt-name`` and +``enum-max-name`` respectively. +For flags ``render-max`` will generate a mask with all flags set, +which by default will be named ``$pfx-MASK``. =20 Attributes =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen= _c.py index 5e1c702143d86..a1a0b559b431b 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -1067,8 +1067,10 @@ class EnumSet(SpecEnumSet): self.value_pfx =3D yaml.get('name-prefix', f"{family.ident_name}-{= yaml['name']}-") self.header =3D yaml.get('header', None) self.enum_cnt_name =3D yaml.get('enum-cnt-name', f'--{self.value_p= fx}max') - suffix =3D yaml['type'] =3D=3D 'flags' and 'mask' or 'max' - self.enum_max_name =3D f'{self.value_pfx}{suffix}' + self.enum_max_name =3D yaml.get('enum-max-name', None) + if not self.enum_max_name: + suffix =3D yaml['type'] =3D=3D 'flags' and 'mask' or 'max' + self.enum_max_name =3D f'{self.value_pfx}{suffix}' =20 super().__init__(family, yaml) =20 --=20 2.51.0