On Tue, Feb 26, 2019 at 05:14:27PM -0800, Florian Fainelli wrote:
> diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c 
> b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
> index b00f6f74f91a..995426ea9a43 100644
> --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
> +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
> @@ -3660,7 +3660,6 @@ static int mlxsw_sp_port_create(struct mlxsw_sp 
> *mlxsw_sp, u8 local_port,
>       }
>       mlxsw_sp_port->default_vlan = mlxsw_sp_port_vlan;
>  
> -     mlxsw_sp_port_switchdev_init(mlxsw_sp_port);
>       mlxsw_sp->ports[local_port] = mlxsw_sp_port;
>       err = register_netdev(dev);
>       if (err) {
> @@ -3677,7 +3676,6 @@ static int mlxsw_sp_port_create(struct mlxsw_sp 
> *mlxsw_sp, u8 local_port,
>  
>  err_register_netdev:
>       mlxsw_sp->ports[local_port] = NULL;
> -     mlxsw_sp_port_switchdev_fini(mlxsw_sp_port);
>       mlxsw_sp_port_vlan_destroy(mlxsw_sp_port_vlan);
>  err_port_vlan_create:
>  err_port_pvid_set:
> @@ -3720,7 +3718,6 @@ static void mlxsw_sp_port_remove(struct mlxsw_sp 
> *mlxsw_sp, u8 local_port)
>       mlxsw_core_port_clear(mlxsw_sp->core, local_port, mlxsw_sp);
>       unregister_netdev(mlxsw_sp_port->dev); /* This calls ndo_stop */
>       mlxsw_sp->ports[local_port] = NULL;
> -     mlxsw_sp_port_switchdev_fini(mlxsw_sp_port);
>       mlxsw_sp_port_vlan_flush(mlxsw_sp_port, true);
>       mlxsw_sp_port_nve_fini(mlxsw_sp_port);
>       mlxsw_sp_tc_qdisc_fini(mlxsw_sp_port);
> @@ -4441,12 +4438,6 @@ static int mlxsw_sp_init(struct mlxsw_core *mlxsw_core,
>               goto err_span_init;
>       }
>  
> -     err = mlxsw_sp_switchdev_init(mlxsw_sp);

I missed that and got a trace as soon as I tried to enslave a port. You
should only remove mlxsw_sp_port_switchdev_init() and not
mlxsw_sp_switchdev_init()

> -     if (err) {
> -             dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize 
> switchdev\n");
> -             goto err_switchdev_init;
> -     }
> -
>       err = mlxsw_sp_counter_pool_init(mlxsw_sp);
>       if (err) {
>               dev_err(mlxsw_sp->bus_info->dev, "Failed to init counter 
> pool\n");
> @@ -4517,8 +4508,6 @@ static int mlxsw_sp_init(struct mlxsw_core *mlxsw_core,
>  err_afa_init:
>       mlxsw_sp_counter_pool_fini(mlxsw_sp);
>  err_counter_pool_init:
> -     mlxsw_sp_switchdev_fini(mlxsw_sp);
> -err_switchdev_init:
>       mlxsw_sp_span_fini(mlxsw_sp);
>  err_span_init:
>       mlxsw_sp_lag_fini(mlxsw_sp);
> @@ -4585,7 +4574,6 @@ static void mlxsw_sp_fini(struct mlxsw_core *mlxsw_core)
>       mlxsw_sp_nve_fini(mlxsw_sp);
>       mlxsw_sp_afa_fini(mlxsw_sp);
>       mlxsw_sp_counter_pool_fini(mlxsw_sp);
> -     mlxsw_sp_switchdev_fini(mlxsw_sp);
>       mlxsw_sp_span_fini(mlxsw_sp);
>       mlxsw_sp_lag_fini(mlxsw_sp);
>       mlxsw_sp_buffers_fini(mlxsw_sp);
> diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h 
> b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
> index a61c1130d9e3..da6278b0caa4 100644
> --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
> +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
> @@ -407,8 +407,6 @@ extern const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals;
>  /* spectrum_switchdev.c */
>  int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp);
>  void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp);
> -void mlxsw_sp_port_switchdev_init(struct mlxsw_sp_port *mlxsw_sp_port);
> -void mlxsw_sp_port_switchdev_fini(struct mlxsw_sp_port *mlxsw_sp_port);
>  int mlxsw_sp_rif_fdb_op(struct mlxsw_sp *mlxsw_sp, const char *mac, u16 fid,
>                       bool adding);
>  void
> diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c 
> b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
> index c1aedfea3a31..f6ce386c3036 100644
> --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
> +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
> @@ -1938,10 +1938,6 @@ static struct mlxsw_sp_port 
> *mlxsw_sp_lag_rep_port(struct mlxsw_sp *mlxsw_sp,
>       return NULL;
>  }
>  
> -static const struct switchdev_ops mlxsw_sp_port_switchdev_ops = {
> -     .switchdev_port_attr_set        = mlxsw_sp_port_attr_set,
> -};
> -
>  static int
>  mlxsw_sp_bridge_8021q_port_join(struct mlxsw_sp_bridge_device *bridge_device,
>                               struct mlxsw_sp_bridge_port *bridge_port,
> @@ -3545,11 +3541,3 @@ void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp)
>       kfree(mlxsw_sp->bridge);
>  }
>  
> -void mlxsw_sp_port_switchdev_init(struct mlxsw_sp_port *mlxsw_sp_port)
> -{
> -     mlxsw_sp_port->dev->switchdev_ops = &mlxsw_sp_port_switchdev_ops;
> -}
> -
> -void mlxsw_sp_port_switchdev_fini(struct mlxsw_sp_port *mlxsw_sp_port)
> -{
> -}

Reply via email to