From: Amit Cohen <amcohen@xxxxxxxxxx> When a netdevice is associated with local port, set the netdevice as part of PCI ports array. When a port is removed, unset the relevant netdevice. This will be useful for XDP support, to allow quick access to the relevant netdevice given local port from CQE. Init is done before the netdevice is registered and de-init is done after the netdevice is unregistered, so there is never concurrent access to the array between the control path and the data path. Signed-off-by: Amit Cohen <amcohen@xxxxxxxxxx> Reviewed-by: Ido Schimmel <idosch@xxxxxxxxxx> Signed-off-by: Petr Machata <petrm@xxxxxxxxxx> --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index d714311fd884..6b77e087fe47 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -1543,6 +1543,7 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u16 local_port, mlxsw_core_port_netdev_link(mlxsw_sp->core, local_port, mlxsw_sp_port, dev); mlxsw_sp_port->dev = dev; + mlxsw_core_bus_port_init(mlxsw_sp->core, local_port, dev); mlxsw_sp_port->mlxsw_sp = mlxsw_sp; mlxsw_sp_port->local_port = local_port; mlxsw_sp_port->pvid = MLXSW_SP_DEFAULT_VID; @@ -1758,6 +1759,7 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u16 local_port, err_dev_addr_init: free_percpu(mlxsw_sp_port->pcpu_stats); err_alloc_stats: + mlxsw_core_bus_port_fini(mlxsw_sp->core, local_port); free_netdev(dev); err_alloc_etherdev: mlxsw_core_port_fini(mlxsw_sp->core, local_port); @@ -1793,6 +1795,7 @@ static void mlxsw_sp_port_remove(struct mlxsw_sp *mlxsw_sp, u16 local_port) mlxsw_sp_port_buffers_fini(mlxsw_sp_port); free_percpu(mlxsw_sp_port->pcpu_stats); WARN_ON_ONCE(!list_empty(&mlxsw_sp_port->vlans_list)); + mlxsw_core_bus_port_fini(mlxsw_sp->core, local_port); free_netdev(mlxsw_sp_port->dev); mlxsw_core_port_fini(mlxsw_sp->core, local_port); mlxsw_sp_port_swid_set(mlxsw_sp, local_port, -- 2.47.0