From: Nogah Frankel <nog...@mellanox.com>

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 <nog...@mellanox.com>
Signed-off-by: Jiri Pirko <j...@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlxsw/core.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.h 
b/drivers/net/ethernet/mellanox/mlxsw/core.h
index 66d97c4..5f6fed1 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.h
@@ -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);
-- 
2.7.4

Reply via email to