mlxsw: spectrum: Put pointer to flex action ops to mlxsw_sp
authorJiri Pirko <jiri@mellanox.com>
Sun, 8 Jul 2018 07:00:19 +0000 (10:00 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sun, 8 Jul 2018 08:05:19 +0000 (17:05 +0900)
Spectrum-2 need a slightly different handling of flexible actions. So
put an ops pointer in mlxsw_sp struct and rename it.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c

index 52437363766a8a7b72522cdba10bdb8f6430f309..cba0e9ba7deaf24596118d9444a39a5999471141 100644 (file)
@@ -3621,6 +3621,8 @@ static int mlxsw_sp_init(struct mlxsw_core *mlxsw_core,
        struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
        int err;
 
+       mlxsw_sp->afa_ops = &mlxsw_sp1_act_afa_ops;
+
        mlxsw_sp->core = mlxsw_core;
        mlxsw_sp->bus_info = mlxsw_bus_info;
 
index 4a519d8edec8fe0410e5548182a389848011b2d2..f5294c9a4c92dde5398cbfd45cc05f4155f51a16 100644 (file)
@@ -168,6 +168,7 @@ struct mlxsw_sp {
                struct mlxsw_sp_span_entry *entries;
                int entries_count;
        } span;
+       const struct mlxsw_afa_ops *afa_ops;
 };
 
 static inline struct mlxsw_sp_upper *
@@ -584,6 +585,9 @@ void mlxsw_sp_acl_fini(struct mlxsw_sp *mlxsw_sp);
 /* spectrum_acl_tcam.c */
 extern const struct mlxsw_sp_acl_ops mlxsw_sp_acl_tcam_ops;
 
+/* spectrum_acl_flex_actions.c */
+extern const struct mlxsw_afa_ops mlxsw_sp1_act_afa_ops;
+
 /* spectrum_flower.c */
 int mlxsw_sp_flower_replace(struct mlxsw_sp *mlxsw_sp,
                            struct mlxsw_sp_acl_block *block,
index 510ce48d87f7470fff02d524fe13416af2ae3c5f..5ab070916949d5a9d6891c2d4b9722eb909d4c22 100644 (file)
@@ -154,7 +154,7 @@ mlxsw_sp_act_mirror_del(void *priv, u8 local_in_port, int span_id, bool ingress)
        mlxsw_sp_span_mirror_del(in_port, span_id, type, false);
 }
 
-static const struct mlxsw_afa_ops mlxsw_sp_act_afa_ops = {
+const struct mlxsw_afa_ops mlxsw_sp1_act_afa_ops = {
        .kvdl_set_add           = mlxsw_sp_act_kvdl_set_add,
        .kvdl_set_del           = mlxsw_sp_act_kvdl_set_del,
        .kvdl_fwd_entry_add     = mlxsw_sp_act_kvdl_fwd_entry_add,
@@ -169,7 +169,7 @@ int mlxsw_sp_afa_init(struct mlxsw_sp *mlxsw_sp)
 {
        mlxsw_sp->afa = mlxsw_afa_create(MLXSW_CORE_RES_GET(mlxsw_sp->core,
                                                            ACL_ACTIONS_PER_SET),
-                                        &mlxsw_sp_act_afa_ops, mlxsw_sp);
+                                        mlxsw_sp->afa_ops, mlxsw_sp);
        return PTR_ERR_OR_ZERO(mlxsw_sp->afa);
 }