mlxsw: spectrum_acl: Pass mlxsw_sp_port down to ruleset bind/unbind ops
authorJiri Pirko <jiri@mellanox.com>
Wed, 17 Jan 2018 10:46:57 +0000 (11:46 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Jan 2018 19:53:58 +0000 (14:53 -0500)
No need to convert from mlxsw_sp_port to net_device and back again.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Acked-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c

index 6f9153239dca7a818a2178c0d2c3daa6150e8f91..58ff79211c09e33e742462ce79891b0962f850bb 100644 (file)
@@ -470,9 +470,11 @@ struct mlxsw_sp_acl_profile_ops {
                           void *priv, void *ruleset_priv);
        void (*ruleset_del)(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv);
        int (*ruleset_bind)(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv,
-                           struct net_device *dev, bool ingress);
+                           struct mlxsw_sp_port *mlxsw_sp_port,
+                           bool ingress);
        void (*ruleset_unbind)(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv,
-                              struct net_device *dev, bool ingress);
+                              struct mlxsw_sp_port *mlxsw_sp_port,
+                              bool ingress);
        u16 (*ruleset_group_id)(void *ruleset_priv);
        size_t rule_priv_size;
        int (*rule_add)(struct mlxsw_sp *mlxsw_sp,
index f98bca90cd8fb54127a8452ccbb6b78966732d04..9439bfa4ecc29e2d18463d4cf6503ea895a3e522 100644 (file)
@@ -169,7 +169,7 @@ mlxsw_sp_acl_ruleset_bind(struct mlxsw_sp *mlxsw_sp,
        const struct mlxsw_sp_acl_profile_ops *ops = ruleset->ht_key.ops;
 
        return ops->ruleset_bind(mlxsw_sp, ruleset->priv,
-                                binding->mlxsw_sp_port->dev, binding->ingress);
+                                binding->mlxsw_sp_port, binding->ingress);
 }
 
 static void
@@ -181,7 +181,7 @@ mlxsw_sp_acl_ruleset_unbind(struct mlxsw_sp *mlxsw_sp,
        const struct mlxsw_sp_acl_profile_ops *ops = ruleset->ht_key.ops;
 
        ops->ruleset_unbind(mlxsw_sp, ruleset->priv,
-                           binding->mlxsw_sp_port->dev, binding->ingress);
+                           binding->mlxsw_sp_port, binding->ingress);
 }
 
 static bool mlxsw_sp_acl_ruleset_block_bound(struct mlxsw_sp_acl_block *block)
index 50b2f9add20a10f0933df4f35d562a9abbc0bbb6..c6e180c2be1e825e394662b38b8374c7c4c6e252 100644 (file)
@@ -258,15 +258,11 @@ static void mlxsw_sp_acl_tcam_group_del(struct mlxsw_sp *mlxsw_sp,
 static int
 mlxsw_sp_acl_tcam_group_bind(struct mlxsw_sp *mlxsw_sp,
                             struct mlxsw_sp_acl_tcam_group *group,
-                            struct net_device *dev, bool ingress)
+                            struct mlxsw_sp_port *mlxsw_sp_port,
+                            bool ingress)
 {
-       struct mlxsw_sp_port *mlxsw_sp_port;
        char ppbt_pl[MLXSW_REG_PPBT_LEN];
 
-       if (!mlxsw_sp_port_dev_check(dev))
-               return -EINVAL;
-
-       mlxsw_sp_port = netdev_priv(dev);
        mlxsw_reg_ppbt_pack(ppbt_pl, ingress ? MLXSW_REG_PXBT_E_IACL :
                                               MLXSW_REG_PXBT_E_EACL,
                            MLXSW_REG_PXBT_OP_BIND, mlxsw_sp_port->local_port,
@@ -277,15 +273,11 @@ mlxsw_sp_acl_tcam_group_bind(struct mlxsw_sp *mlxsw_sp,
 static void
 mlxsw_sp_acl_tcam_group_unbind(struct mlxsw_sp *mlxsw_sp,
                               struct mlxsw_sp_acl_tcam_group *group,
-                              struct net_device *dev, bool ingress)
+                              struct mlxsw_sp_port *mlxsw_sp_port,
+                              bool ingress)
 {
-       struct mlxsw_sp_port *mlxsw_sp_port;
        char ppbt_pl[MLXSW_REG_PPBT_LEN];
 
-       if (WARN_ON(!mlxsw_sp_port_dev_check(dev)))
-               return;
-
-       mlxsw_sp_port = netdev_priv(dev);
        mlxsw_reg_ppbt_pack(ppbt_pl, ingress ? MLXSW_REG_PXBT_E_IACL :
                                               MLXSW_REG_PXBT_E_EACL,
                            MLXSW_REG_PXBT_OP_UNBIND, mlxsw_sp_port->local_port,
@@ -1054,22 +1046,25 @@ mlxsw_sp_acl_tcam_flower_ruleset_del(struct mlxsw_sp *mlxsw_sp,
 static int
 mlxsw_sp_acl_tcam_flower_ruleset_bind(struct mlxsw_sp *mlxsw_sp,
                                      void *ruleset_priv,
-                                     struct net_device *dev, bool ingress)
+                                     struct mlxsw_sp_port *mlxsw_sp_port,
+                                     bool ingress)
 {
        struct mlxsw_sp_acl_tcam_flower_ruleset *ruleset = ruleset_priv;
 
        return mlxsw_sp_acl_tcam_group_bind(mlxsw_sp, &ruleset->group,
-                                           dev, ingress);
+                                           mlxsw_sp_port, ingress);
 }
 
 static void
 mlxsw_sp_acl_tcam_flower_ruleset_unbind(struct mlxsw_sp *mlxsw_sp,
                                        void *ruleset_priv,
-                                       struct net_device *dev, bool ingress)
+                                       struct mlxsw_sp_port *mlxsw_sp_port,
+                                       bool ingress)
 {
        struct mlxsw_sp_acl_tcam_flower_ruleset *ruleset = ruleset_priv;
 
-       mlxsw_sp_acl_tcam_group_unbind(mlxsw_sp, &ruleset->group, dev, ingress);
+       mlxsw_sp_acl_tcam_group_unbind(mlxsw_sp, &ruleset->group,
+                                      mlxsw_sp_port, ingress);
 }
 
 static u16