mlxsw_m 32 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_m *mlxsw_m; mlxsw_m 37 drivers/net/ethernet/mellanox/mlxsw/minimal.c static int mlxsw_m_base_mac_get(struct mlxsw_m *mlxsw_m) mlxsw_m 42 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_reg_query(mlxsw_m->core, MLXSW_REG(spad), spad_pl); mlxsw_m 45 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_reg_spad_base_mac_memcpy_from(spad_pl, mlxsw_m->base_mac); mlxsw_m 58 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_m *mlxsw_m = mlxsw_m_port->mlxsw_m; mlxsw_m 60 drivers/net/ethernet/mellanox/mlxsw/minimal.c return mlxsw_core_port_devlink_port_get(mlxsw_m->core, mlxsw_m 74 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_m *mlxsw_m = mlxsw_m_port->mlxsw_m; mlxsw_m 76 drivers/net/ethernet/mellanox/mlxsw/minimal.c strlcpy(drvinfo->driver, mlxsw_m->bus_info->device_kind, mlxsw_m 80 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->bus_info->fw_rev.major, mlxsw_m 81 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->bus_info->fw_rev.minor, mlxsw_m 82 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->bus_info->fw_rev.subminor); mlxsw_m 83 drivers/net/ethernet/mellanox/mlxsw/minimal.c strlcpy(drvinfo->bus_info, mlxsw_m->bus_info->device_name, mlxsw_m 91 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_core *core = mlxsw_m_port->mlxsw_m->core; mlxsw_m 101 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_core *core = mlxsw_m_port->mlxsw_m->core; mlxsw_m 114 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m_port_module_info_get(struct mlxsw_m *mlxsw_m, u8 local_port, mlxsw_m 121 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_reg_query(mlxsw_m->core, MLXSW_REG(pmlp), pmlp_pl); mlxsw_m 133 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_m *mlxsw_m = mlxsw_m_port->mlxsw_m; mlxsw_m 139 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_reg_query(mlxsw_m->core, MLXSW_REG(ppad), ppad_pl); mlxsw_m 152 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m_port_create(struct mlxsw_m *mlxsw_m, u8 local_port, u8 module) mlxsw_m 158 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_core_port_init(mlxsw_m->core, local_port, mlxsw_m 160 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->base_mac, mlxsw_m 161 drivers/net/ethernet/mellanox/mlxsw/minimal.c sizeof(mlxsw_m->base_mac)); mlxsw_m 163 drivers/net/ethernet/mellanox/mlxsw/minimal.c dev_err(mlxsw_m->bus_info->dev, "Port %d: Failed to init core port\n", mlxsw_m 174 drivers/net/ethernet/mellanox/mlxsw/minimal.c SET_NETDEV_DEV(dev, mlxsw_m->bus_info->dev); mlxsw_m 177 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m_port->mlxsw_m = mlxsw_m; mlxsw_m 186 drivers/net/ethernet/mellanox/mlxsw/minimal.c dev_err(mlxsw_m->bus_info->dev, "Port %d: Unable to get port mac address\n", mlxsw_m 192 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->ports[local_port] = mlxsw_m_port; mlxsw_m 195 drivers/net/ethernet/mellanox/mlxsw/minimal.c dev_err(mlxsw_m->bus_info->dev, "Port %d: Failed to register netdev\n", mlxsw_m 200 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_core_port_eth_set(mlxsw_m->core, mlxsw_m_port->local_port, mlxsw_m 206 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->ports[local_port] = NULL; mlxsw_m 210 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_core_port_fini(mlxsw_m->core, local_port); mlxsw_m 214 drivers/net/ethernet/mellanox/mlxsw/minimal.c static void mlxsw_m_port_remove(struct mlxsw_m *mlxsw_m, u8 local_port) mlxsw_m 216 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_m_port *mlxsw_m_port = mlxsw_m->ports[local_port]; mlxsw_m 218 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_core_port_clear(mlxsw_m->core, local_port, mlxsw_m); mlxsw_m 220 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->ports[local_port] = NULL; mlxsw_m 222 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_core_port_fini(mlxsw_m->core, local_port); mlxsw_m 225 drivers/net/ethernet/mellanox/mlxsw/minimal.c static int mlxsw_m_port_module_map(struct mlxsw_m *mlxsw_m, u8 local_port, mlxsw_m 232 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_m_port_module_info_get(mlxsw_m, local_port, &module, mlxsw_m 243 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->module_to_port[module] = ++mlxsw_m->max_ports; mlxsw_m 248 drivers/net/ethernet/mellanox/mlxsw/minimal.c static void mlxsw_m_port_module_unmap(struct mlxsw_m *mlxsw_m, u8 module) mlxsw_m 250 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->module_to_port[module] = -1; mlxsw_m 253 drivers/net/ethernet/mellanox/mlxsw/minimal.c static int mlxsw_m_ports_create(struct mlxsw_m *mlxsw_m) mlxsw_m 255 drivers/net/ethernet/mellanox/mlxsw/minimal.c unsigned int max_ports = mlxsw_core_max_ports(mlxsw_m->core); mlxsw_m 260 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->ports = kcalloc(max_ports, sizeof(*mlxsw_m->ports), mlxsw_m 262 drivers/net/ethernet/mellanox/mlxsw/minimal.c if (!mlxsw_m->ports) mlxsw_m 265 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->module_to_port = kmalloc_array(max_ports, sizeof(int), mlxsw_m 267 drivers/net/ethernet/mellanox/mlxsw/minimal.c if (!mlxsw_m->module_to_port) { mlxsw_m 274 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->module_to_port[i] = -1; mlxsw_m 278 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_m_port_module_map(mlxsw_m, i, &last_module); mlxsw_m 284 drivers/net/ethernet/mellanox/mlxsw/minimal.c for (i = 0; i < mlxsw_m->max_ports; i++) { mlxsw_m 285 drivers/net/ethernet/mellanox/mlxsw/minimal.c if (mlxsw_m->module_to_port[i] > 0) { mlxsw_m 286 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_m_port_create(mlxsw_m, mlxsw_m 287 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->module_to_port[i], mlxsw_m 298 drivers/net/ethernet/mellanox/mlxsw/minimal.c if (mlxsw_m->module_to_port[i] > 0) mlxsw_m 299 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m_port_remove(mlxsw_m, mlxsw_m 300 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->module_to_port[i]); mlxsw_m 305 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m_port_module_unmap(mlxsw_m, i); mlxsw_m 306 drivers/net/ethernet/mellanox/mlxsw/minimal.c kfree(mlxsw_m->module_to_port); mlxsw_m 308 drivers/net/ethernet/mellanox/mlxsw/minimal.c kfree(mlxsw_m->ports); mlxsw_m 312 drivers/net/ethernet/mellanox/mlxsw/minimal.c static void mlxsw_m_ports_remove(struct mlxsw_m *mlxsw_m) mlxsw_m 316 drivers/net/ethernet/mellanox/mlxsw/minimal.c for (i = 0; i < mlxsw_m->max_ports; i++) { mlxsw_m 317 drivers/net/ethernet/mellanox/mlxsw/minimal.c if (mlxsw_m->module_to_port[i] > 0) { mlxsw_m 318 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m_port_remove(mlxsw_m, mlxsw_m 319 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->module_to_port[i]); mlxsw_m 320 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m_port_module_unmap(mlxsw_m, i); mlxsw_m 324 drivers/net/ethernet/mellanox/mlxsw/minimal.c kfree(mlxsw_m->module_to_port); mlxsw_m 325 drivers/net/ethernet/mellanox/mlxsw/minimal.c kfree(mlxsw_m->ports); mlxsw_m 331 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_m *mlxsw_m = mlxsw_core_driver_priv(mlxsw_core); mlxsw_m 334 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->core = mlxsw_core; mlxsw_m 335 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m->bus_info = mlxsw_bus_info; mlxsw_m 337 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_m_base_mac_get(mlxsw_m); mlxsw_m 339 drivers/net/ethernet/mellanox/mlxsw/minimal.c dev_err(mlxsw_m->bus_info->dev, "Failed to get base mac\n"); mlxsw_m 343 drivers/net/ethernet/mellanox/mlxsw/minimal.c err = mlxsw_m_ports_create(mlxsw_m); mlxsw_m 345 drivers/net/ethernet/mellanox/mlxsw/minimal.c dev_err(mlxsw_m->bus_info->dev, "Failed to create ports\n"); mlxsw_m 354 drivers/net/ethernet/mellanox/mlxsw/minimal.c struct mlxsw_m *mlxsw_m = mlxsw_core_driver_priv(mlxsw_core); mlxsw_m 356 drivers/net/ethernet/mellanox/mlxsw/minimal.c mlxsw_m_ports_remove(mlxsw_m); mlxsw_m 363 drivers/net/ethernet/mellanox/mlxsw/minimal.c .priv_size = sizeof(struct mlxsw_m),