mlxsw: core: Expose generic macros for rx trap
authorNogah Frankel <nogahf@mellanox.com>
Fri, 25 Nov 2016 09:33:31 +0000 (10:33 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 26 Nov 2016 02:22:14 +0000 (21:22 -0500)
In Spectrum, there is a macro to arrange the traps list.
This macro is useful for everyone who is using rx traps.
Create a similar macro in core.h for creating the generic listener struct
for rx traps.

Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/core.h

index 66d97c4..5f6fed1 100644 (file)
@@ -101,6 +101,20 @@ struct mlxsw_listener {
        bool is_event;
 };
 
+#define MLXSW_RXL(_func, _trap_id, _action, _unreg_action)             \
+       {                                                               \
+               .trap_id = MLXSW_TRAP_ID_##_trap_id,                    \
+               .u.rx_listener =                                        \
+               {                                                       \
+                       .func = _func,                                  \
+                       .local_port = MLXSW_PORT_DONT_CARE,             \
+                       .trap_id = MLXSW_TRAP_ID_##_trap_id,            \
+               },                                                      \
+               .action = MLXSW_REG_HPKT_ACTION_##_action,              \
+               .unreg_action = MLXSW_REG_HPKT_ACTION_##_unreg_action,  \
+               .is_event = false,                                      \
+       }
+
 int mlxsw_core_rx_listener_register(struct mlxsw_core *mlxsw_core,
                                    const struct mlxsw_rx_listener *rxl,
                                    void *priv);