[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240223114453.335809-2-tobias@waldekranz.com>
Date: Fri, 23 Feb 2024 12:44:50 +0100
From: Tobias Waldekranz <tobias@...dekranz.com>
To: davem@...emloft.net,
kuba@...nel.org
Cc: roopa@...dia.com,
razor@...ckwall.org,
bridge@...ts.linux.dev,
netdev@...r.kernel.org,
jiri@...nulli.us,
ivecera@...hat.com,
rostedt@...dmis.org,
mhiramat@...nel.org,
linux-trace-kernel@...r.kernel.org
Subject: [PATCH v3 net-next 1/4] net: switchdev: Wrap enums in mapper macros
In order to avoid having to maintain separate mappings from enum
values to strings, wrap enumerators in mapper macros, so that
enum-to-string tables can be generated.
This will make it easier to create helpers that convert switchdev
objects to strings.
Signed-off-by: Tobias Waldekranz <tobias@...dekranz.com>
---
include/net/switchdev.h | 113 ++++++++++++++++++++++++----------------
1 file changed, 68 insertions(+), 45 deletions(-)
diff --git a/include/net/switchdev.h b/include/net/switchdev.h
index 8346b0d29542..86298a21c6c8 100644
--- a/include/net/switchdev.h
+++ b/include/net/switchdev.h
@@ -16,21 +16,28 @@
#define SWITCHDEV_F_SKIP_EOPNOTSUPP BIT(1)
#define SWITCHDEV_F_DEFER BIT(2)
+#define SWITCHDEV_ATTR_ID_MAPPER(_fn) \
+ _fn(UNDEFINED), \
+ _fn(PORT_STP_STATE), \
+ _fn(PORT_MST_STATE), \
+ _fn(PORT_BRIDGE_FLAGS), \
+ _fn(PORT_PRE_BRIDGE_FLAGS), \
+ _fn(PORT_MROUTER), \
+ _fn(BRIDGE_AGEING_TIME), \
+ _fn(BRIDGE_VLAN_FILTERING), \
+ _fn(BRIDGE_VLAN_PROTOCOL), \
+ _fn(BRIDGE_MC_DISABLED), \
+ _fn(BRIDGE_MROUTER), \
+ _fn(BRIDGE_MST), \
+ _fn(MRP_PORT_ROLE), \
+ _fn(VLAN_MSTI), \
+ /* */
+
+#define SWITCHDEV_ATTR_ID_ENUMERATOR(_id) \
+ SWITCHDEV_ATTR_ID_ ## _id
+
enum switchdev_attr_id {
- SWITCHDEV_ATTR_ID_UNDEFINED,
- SWITCHDEV_ATTR_ID_PORT_STP_STATE,
- SWITCHDEV_ATTR_ID_PORT_MST_STATE,
- SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS,
- SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS,
- SWITCHDEV_ATTR_ID_PORT_MROUTER,
- SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME,
- SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING,
- SWITCHDEV_ATTR_ID_BRIDGE_VLAN_PROTOCOL,
- SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED,
- SWITCHDEV_ATTR_ID_BRIDGE_MROUTER,
- SWITCHDEV_ATTR_ID_BRIDGE_MST,
- SWITCHDEV_ATTR_ID_MRP_PORT_ROLE,
- SWITCHDEV_ATTR_ID_VLAN_MSTI,
+ SWITCHDEV_ATTR_ID_MAPPER(SWITCHDEV_ATTR_ID_ENUMERATOR)
};
struct switchdev_mst_state {
@@ -69,18 +76,25 @@ struct switchdev_attr {
} u;
};
+#define SWITCHDEV_OBJ_ID_MAPPER(_fn) \
+ _fn(UNDEFINED), \
+ _fn(PORT_VLAN), \
+ _fn(PORT_MDB), \
+ _fn(HOST_MDB), \
+ _fn(MRP), \
+ _fn(RING_TEST_MRP), \
+ _fn(RING_ROLE_MRP), \
+ _fn(RING_STATE_MRP), \
+ _fn(IN_TEST_MRP), \
+ _fn(IN_ROLE_MRP), \
+ _fn(IN_STATE_MRP), \
+ /* */
+
+#define SWITCHDEV_OBJ_ID_ENUMERATOR(_id) \
+ SWITCHDEV_OBJ_ID_ ## _id
+
enum switchdev_obj_id {
- SWITCHDEV_OBJ_ID_UNDEFINED,
- SWITCHDEV_OBJ_ID_PORT_VLAN,
- SWITCHDEV_OBJ_ID_PORT_MDB,
- SWITCHDEV_OBJ_ID_HOST_MDB,
- SWITCHDEV_OBJ_ID_MRP,
- SWITCHDEV_OBJ_ID_RING_TEST_MRP,
- SWITCHDEV_OBJ_ID_RING_ROLE_MRP,
- SWITCHDEV_OBJ_ID_RING_STATE_MRP,
- SWITCHDEV_OBJ_ID_IN_TEST_MRP,
- SWITCHDEV_OBJ_ID_IN_ROLE_MRP,
- SWITCHDEV_OBJ_ID_IN_STATE_MRP,
+ SWITCHDEV_OBJ_ID_MAPPER(SWITCHDEV_OBJ_ID_ENUMERATOR)
};
struct switchdev_obj {
@@ -209,27 +223,36 @@ struct switchdev_brport {
bool tx_fwd_offload;
};
+#define SWITCHDEV_TYPE_MAPPER(_fn) \
+ _fn(UNKNOWN), \
+ \
+ _fn(FDB_ADD_TO_BRIDGE), \
+ _fn(FDB_DEL_TO_BRIDGE), \
+ _fn(FDB_ADD_TO_DEVICE), \
+ _fn(FDB_DEL_TO_DEVICE), \
+ _fn(FDB_OFFLOADED), \
+ _fn(FDB_FLUSH_TO_BRIDGE), \
+ \
+ _fn(PORT_OBJ_ADD), \
+ _fn(PORT_OBJ_DEL), \
+ _fn(PORT_ATTR_SET), \
+ \
+ _fn(VXLAN_FDB_ADD_TO_BRIDGE), \
+ _fn(VXLAN_FDB_DEL_TO_BRIDGE), \
+ _fn(VXLAN_FDB_ADD_TO_DEVICE), \
+ _fn(VXLAN_FDB_DEL_TO_DEVICE), \
+ _fn(VXLAN_FDB_OFFLOADED), \
+ \
+ _fn(BRPORT_OFFLOADED), \
+ _fn(BRPORT_UNOFFLOADED), \
+ _fn(BRPORT_REPLAY), \
+ /* */
+
+#define SWITCHDEV_TYPE_ENUMERATOR(_id) \
+ SWITCHDEV_ ## _id
+
enum switchdev_notifier_type {
- SWITCHDEV_FDB_ADD_TO_BRIDGE = 1,
- SWITCHDEV_FDB_DEL_TO_BRIDGE,
- SWITCHDEV_FDB_ADD_TO_DEVICE,
- SWITCHDEV_FDB_DEL_TO_DEVICE,
- SWITCHDEV_FDB_OFFLOADED,
- SWITCHDEV_FDB_FLUSH_TO_BRIDGE,
-
- SWITCHDEV_PORT_OBJ_ADD, /* Blocking. */
- SWITCHDEV_PORT_OBJ_DEL, /* Blocking. */
- SWITCHDEV_PORT_ATTR_SET, /* May be blocking . */
-
- SWITCHDEV_VXLAN_FDB_ADD_TO_BRIDGE,
- SWITCHDEV_VXLAN_FDB_DEL_TO_BRIDGE,
- SWITCHDEV_VXLAN_FDB_ADD_TO_DEVICE,
- SWITCHDEV_VXLAN_FDB_DEL_TO_DEVICE,
- SWITCHDEV_VXLAN_FDB_OFFLOADED,
-
- SWITCHDEV_BRPORT_OFFLOADED,
- SWITCHDEV_BRPORT_UNOFFLOADED,
- SWITCHDEV_BRPORT_REPLAY,
+ SWITCHDEV_TYPE_MAPPER(SWITCHDEV_TYPE_ENUMERATOR)
};
struct switchdev_notifier_info {
--
2.34.1
Powered by blists - more mailing lists