[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251013165005.83659-2-ast@fiberby.net>
Date: Mon, 13 Oct 2025 16:49:58 +0000
From: Asbjørn Sloth Tønnesen <ast@...erby.net>
To: "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>
Cc: Asbjørn Sloth Tønnesen <ast@...erby.net>,
Alexei Starovoitov <ast@...nel.org>,
Andrew Lunn <andrew+netdev@...n.ch>,
Arkadiusz Kubalewski <arkadiusz.kubalewski@...el.com>,
Daniel Borkmann <daniel@...earbox.net>,
Daniel Zahka <daniel.zahka@...il.com>,
Donald Hunter <donald.hunter@...il.com>,
Jacob Keller <jacob.e.keller@...el.com>,
Jesper Dangaard Brouer <hawk@...nel.org>,
Jiri Pirko <jiri@...nulli.us>,
Joe Damato <jdamato@...tly.com>,
John Fastabend <john.fastabend@...il.com>,
Jonathan Corbet <corbet@....net>,
Simon Horman <horms@...nel.org>,
Stanislav Fomichev <sdf@...ichev.me>,
Toke Høiland-Jørgensen <toke@...hat.com>,
Vadim Fedorenko <vadim.fedorenko@...ux.dev>,
Willem de Bruijn <willemb@...gle.com>,
bpf@...r.kernel.org,
netdev@...r.kernel.org,
linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH net-next 1/6] tools: ynl-gen: bitshift the flag values in the generated code
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ørn Sloth Tønnesen <ast@...erby.net>
---
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 = 1,
- DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE = 2,
- DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE = 4,
+ DPLL_PIN_CAPABILITIES_DIRECTION_CAN_CHANGE = 1U << 0,
+ DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE = 1U << 1,
+ DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE = 1U << 2,
};
#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 = 1,
- ETHTOOL_FLAG_OMIT_REPLY = 2,
- ETHTOOL_FLAG_STATS = 4,
+ ETHTOOL_FLAG_COMPACT_BITSETS = 1U << 0,
+ ETHTOOL_FLAG_OMIT_REPLY = 1U << 1,
+ ETHTOOL_FLAG_STATS = 1U << 2,
};
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 = 1,
- ETHTOOL_PSE_EVENT_OVER_TEMP = 2,
- ETHTOOL_C33_PSE_EVENT_DETECTION = 4,
- ETHTOOL_C33_PSE_EVENT_CLASSIFICATION = 8,
- ETHTOOL_C33_PSE_EVENT_DISCONNECTION = 16,
- ETHTOOL_PSE_EVENT_OVER_BUDGET = 32,
- ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR = 64,
+ ETHTOOL_PSE_EVENT_OVER_CURRENT = 1U << 0,
+ ETHTOOL_PSE_EVENT_OVER_TEMP = 1U << 1,
+ ETHTOOL_C33_PSE_EVENT_DETECTION = 1U << 2,
+ ETHTOOL_C33_PSE_EVENT_CLASSIFICATION = 1U << 3,
+ ETHTOOL_C33_PSE_EVENT_DISCONNECTION = 1U << 4,
+ ETHTOOL_PSE_EVENT_OVER_BUDGET = 1U << 5,
+ ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR = 1U << 6,
};
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 = 1,
- NETDEV_XDP_ACT_REDIRECT = 2,
- NETDEV_XDP_ACT_NDO_XMIT = 4,
- NETDEV_XDP_ACT_XSK_ZEROCOPY = 8,
- NETDEV_XDP_ACT_HW_OFFLOAD = 16,
- NETDEV_XDP_ACT_RX_SG = 32,
- NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
+ NETDEV_XDP_ACT_BASIC = 1U << 0,
+ NETDEV_XDP_ACT_REDIRECT = 1U << 1,
+ NETDEV_XDP_ACT_NDO_XMIT = 1U << 2,
+ NETDEV_XDP_ACT_XSK_ZEROCOPY = 1U << 3,
+ NETDEV_XDP_ACT_HW_OFFLOAD = 1U << 4,
+ NETDEV_XDP_ACT_RX_SG = 1U << 5,
+ NETDEV_XDP_ACT_NDO_XMIT_SG = 1U << 6,
/* private: */
NETDEV_XDP_ACT_MASK = 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 = 1,
- NETDEV_XDP_RX_METADATA_HASH = 2,
- NETDEV_XDP_RX_METADATA_VLAN_TAG = 4,
+ NETDEV_XDP_RX_METADATA_TIMESTAMP = 1U << 0,
+ NETDEV_XDP_RX_METADATA_HASH = 1U << 1,
+ NETDEV_XDP_RX_METADATA_VLAN_TAG = 1U << 2,
};
/**
@@ -63,9 +63,9 @@ enum netdev_xdp_rx_metadata {
* by the driver.
*/
enum netdev_xsk_flags {
- NETDEV_XSK_FLAGS_TX_TIMESTAMP = 1,
- NETDEV_XSK_FLAGS_TX_CHECKSUM = 2,
- NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO = 4,
+ NETDEV_XSK_FLAGS_TX_TIMESTAMP = 1U << 0,
+ NETDEV_XSK_FLAGS_TX_CHECKSUM = 1U << 1,
+ NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO = 1U << 2,
};
enum netdev_queue_type {
@@ -74,7 +74,7 @@ enum netdev_queue_type {
};
enum netdev_qstats_scope {
- NETDEV_QSTATS_SCOPE_QUEUE = 1,
+ NETDEV_QSTATS_SCOPE_QUEUE = 1U << 0,
};
enum netdev_napi_threaded {
diff --git a/tools/include/uapi/linux/netdev.h b/tools/include/uapi/linux/netdev.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 = 1,
- NETDEV_XDP_ACT_REDIRECT = 2,
- NETDEV_XDP_ACT_NDO_XMIT = 4,
- NETDEV_XDP_ACT_XSK_ZEROCOPY = 8,
- NETDEV_XDP_ACT_HW_OFFLOAD = 16,
- NETDEV_XDP_ACT_RX_SG = 32,
- NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
+ NETDEV_XDP_ACT_BASIC = 1U << 0,
+ NETDEV_XDP_ACT_REDIRECT = 1U << 1,
+ NETDEV_XDP_ACT_NDO_XMIT = 1U << 2,
+ NETDEV_XDP_ACT_XSK_ZEROCOPY = 1U << 3,
+ NETDEV_XDP_ACT_HW_OFFLOAD = 1U << 4,
+ NETDEV_XDP_ACT_RX_SG = 1U << 5,
+ NETDEV_XDP_ACT_NDO_XMIT_SG = 1U << 6,
/* private: */
NETDEV_XDP_ACT_MASK = 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 = 1,
- NETDEV_XDP_RX_METADATA_HASH = 2,
- NETDEV_XDP_RX_METADATA_VLAN_TAG = 4,
+ NETDEV_XDP_RX_METADATA_TIMESTAMP = 1U << 0,
+ NETDEV_XDP_RX_METADATA_HASH = 1U << 1,
+ NETDEV_XDP_RX_METADATA_VLAN_TAG = 1U << 2,
};
/**
@@ -63,9 +63,9 @@ enum netdev_xdp_rx_metadata {
* by the driver.
*/
enum netdev_xsk_flags {
- NETDEV_XSK_FLAGS_TX_TIMESTAMP = 1,
- NETDEV_XSK_FLAGS_TX_CHECKSUM = 2,
- NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO = 4,
+ NETDEV_XSK_FLAGS_TX_TIMESTAMP = 1U << 0,
+ NETDEV_XSK_FLAGS_TX_CHECKSUM = 1U << 1,
+ NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO = 1U << 2,
};
enum netdev_queue_type {
@@ -74,7 +74,7 @@ enum netdev_queue_type {
};
enum netdev_qstats_scope {
- NETDEV_QSTATS_SCOPE_QUEUE = 1,
+ NETDEV_QSTATS_SCOPE_QUEUE = 1U << 0,
};
enum netdev_napi_threaded {
diff --git a/tools/net/ynl/pyynl/lib/nlspec.py b/tools/net/ynl/pyynl/lib/nlspec.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
- def user_value(self, as_flags=None):
+ def user_value(self, as_flags=None, as_c=None):
if self.enum_set['type'] == '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
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 = ','
if entry.value_change:
- suffix = f" = {entry.user_value()}" + suffix
+ suffix = f" = {entry.user_value(as_c=True)}" + suffix
cw.p(entry.c_name + suffix)
if const.get('render-max', False):
--
2.51.0
Powered by blists - more mailing lists