drivers/net/ethernet/mellanox/mlxsw/spectrum.c
110
int mlxsw_sp_flow_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1106
err = mlxsw_reg_write(mlxsw_sp_port->mlxsw_sp->core, MLXSW_REG(pplr),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1168
return mlxsw_sp_port->mlxsw_sp->ptp_ops->hwtstamp_set(mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1177
return mlxsw_sp_port->mlxsw_sp->ptp_ops->hwtstamp_get(mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1185
mlxsw_sp_port->mlxsw_sp->ptp_ops->hwtstamp_set(mlxsw_sp_port, &config,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
121
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(mgpc), mgpc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1210
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1217
ops = mlxsw_sp->port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1222
ops->reg_ptys_eth_pack(mlxsw_sp, ptys_pl, mlxsw_sp_port->local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1224
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ptys), ptys_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1228
ops->reg_ptys_eth_unpack(mlxsw_sp, ptys_pl, ð_proto_cap,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1231
ops->reg_ptys_eth_pack(mlxsw_sp, ptys_pl, mlxsw_sp_port->local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1234
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptys), ptys_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1240
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1245
port_type_speed_ops = mlxsw_sp->port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1246
port_type_speed_ops->reg_ptys_eth_pack(mlxsw_sp, ptys_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1249
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ptys), ptys_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1252
port_type_speed_ops->reg_ptys_eth_unpack(mlxsw_sp, ptys_pl, NULL, NULL,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1254
*speed = port_type_speed_ops->from_ptys_speed(mlxsw_sp, eth_proto_oper);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1262
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1270
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qeec), qeec_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1277
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1285
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qeec), qeec_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1292
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1300
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qeec), qeec_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1306
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
131
static int mlxsw_sp_flow_counter_clear(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1311
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qtct), qtct_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
138
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mgpc), mgpc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1403
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1407
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qtctm), qtctm_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
141
int mlxsw_sp_flow_counter_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1412
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1418
err = mlxsw_env_module_overheat_counter_get(mlxsw_sp->core, slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1432
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1437
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spvc), spvc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1440
static int mlxsw_sp_port_label_info_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1449
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(pllp), pllp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1457
static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
146
err = mlxsw_sp_counter_alloc(mlxsw_sp, MLXSW_SP_COUNTER_SUB_POOL_FLOW,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1471
err = mlxsw_sp_port_module_map(mlxsw_sp, local_port, port_mapping);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1473
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to map module\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1478
err = mlxsw_sp_port_swid_set(mlxsw_sp, local_port, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1480
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to set SWID\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1485
err = mlxsw_sp_port_label_info_get(mlxsw_sp, local_port, &port_number,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1488
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to get port label information\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1494
err = mlxsw_core_port_init(mlxsw_sp->core, local_port, slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1496
splittable, lanes, mlxsw_sp->base_mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1497
sizeof(mlxsw_sp->base_mac));
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1499
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to init core port\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
150
err = mlxsw_sp_flow_counter_clear(mlxsw_sp, *p_counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1509
SET_NETDEV_DEV(dev, mlxsw_sp->bus_info->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1510
dev_net_set(dev, mlxsw_sp_net(mlxsw_sp));
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1512
mlxsw_core_port_netdev_link(mlxsw_sp->core, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1515
mlxsw_sp_port->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1538
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Unable to init port mac address\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
156
mlxsw_sp_counter_free(mlxsw_sp, MLXSW_SP_COUNTER_SUB_POOL_FLOW,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1563
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to set system port mapping\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1570
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to enable speeds\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1575
err = mlxsw_sp->port_type_speed_ops->ptys_max_speed(mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1578
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to get maximum speed\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1585
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to set MTU\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1596
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to initialize buffers\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1603
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to initialize ETS\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
161
void mlxsw_sp_flow_counter_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1610
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to initialize TC MC mode\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1618
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to initialize DCB\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1625
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to initialize FIDs\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1632
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to initialize TC qdiscs\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
164
mlxsw_sp_counter_free(mlxsw_sp, MLXSW_SP_COUNTER_SUB_POOL_FLOW,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1640
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to clear VLAN filter\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1647
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to initialize NVE\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1655
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to set PVID\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1663
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to create VID 1\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1675
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to set default VLAN classification\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1681
mlxsw_sp->ptp_ops->shaper_work);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1683
mlxsw_sp->ports[local_port] = mlxsw_sp_port;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1687
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to set overheat initial value\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1694
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to register netdev\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1706
mlxsw_sp->ports[local_port] = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1734
mlxsw_core_port_fini(mlxsw_sp->core, local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1737
mlxsw_sp_port_swid_set(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1740
mlxsw_sp_port_module_unmap(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1746
static void mlxsw_sp_port_remove(struct mlxsw_sp *mlxsw_sp, u16 local_port)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1748
struct mlxsw_sp_port *mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1757
mlxsw_sp->ports[local_port] = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1768
mlxsw_core_port_fini(mlxsw_sp->core, local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1769
mlxsw_sp_port_swid_set(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1771
mlxsw_sp_port_module_unmap(mlxsw_sp, local_port, slot_index, module);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1774
static int mlxsw_sp_cpu_port_create(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1783
mlxsw_sp_port->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1786
err = mlxsw_core_cpu_port_init(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1788
mlxsw_sp->base_mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1789
sizeof(mlxsw_sp->base_mac));
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1791
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize core CPU port\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1795
mlxsw_sp->ports[MLXSW_PORT_CPU_PORT] = mlxsw_sp_port;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1803
static void mlxsw_sp_cpu_port_remove(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1806
mlxsw_sp->ports[MLXSW_PORT_CPU_PORT];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1808
mlxsw_core_cpu_port_fini(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1809
mlxsw_sp->ports[MLXSW_PORT_CPU_PORT] = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1818
static bool mlxsw_sp_port_created(struct mlxsw_sp *mlxsw_sp, u16 local_port)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1822
return mlxsw_sp->ports[local_port] != NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1825
static int mlxsw_sp_port_mapping_event_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1833
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pmecr), pmecr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1846
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1853
mlxsw_sp = container_of(events, struct mlxsw_sp, port_mapping_events);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1854
devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1862
err = mlxsw_sp_port_module_info_parse(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1872
if (!mlxsw_sp_port_created(mlxsw_sp, local_port))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1873
mlxsw_sp_port_create(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1880
mlxsw_sp->port_mapping[local_port] = port_mapping;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1893
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1897
if (WARN_ON_ONCE(!mlxsw_sp_local_port_is_valid(mlxsw_sp, local_port)))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1900
events = &mlxsw_sp->port_mapping_events;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
191
mlxsw_sp_vlan_tag_push(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1912
__mlxsw_sp_port_mapping_events_cancel(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1917
events = &mlxsw_sp->port_mapping_events;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1927
static void mlxsw_sp_ports_remove(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1929
unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1933
mlxsw_sp_port_mapping_event_set(mlxsw_sp, i, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1935
__mlxsw_sp_port_mapping_events_cancel(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1938
if (mlxsw_sp_port_created(mlxsw_sp, i))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1939
mlxsw_sp_port_remove(mlxsw_sp, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1940
mlxsw_sp_cpu_port_remove(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1941
kfree(mlxsw_sp->ports);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1942
mlxsw_sp->ports = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1950
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1955
if (mlxsw_sp_port_created(mlxsw_sp, i) && selector(priv, i))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1956
mlxsw_sp_port_remove(mlxsw_sp, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1959
static int mlxsw_sp_ports_create(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1961
unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1969
mlxsw_sp->ports = kzalloc(alloc_size, GFP_KERNEL);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1970
if (!mlxsw_sp->ports)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1973
events = &mlxsw_sp->port_mapping_events;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1979
err = mlxsw_sp_port_mapping_event_set(mlxsw_sp, i, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1984
err = mlxsw_sp_cpu_port_create(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1989
port_mapping = &mlxsw_sp->port_mapping[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1992
err = mlxsw_sp_port_create(mlxsw_sp, i, false, port_mapping);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2000
if (mlxsw_sp_port_created(mlxsw_sp, i))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2001
mlxsw_sp_port_remove(mlxsw_sp, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2003
mlxsw_sp_cpu_port_remove(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2007
mlxsw_sp_port_mapping_event_set(mlxsw_sp, i, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2009
__mlxsw_sp_port_mapping_events_cancel(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2010
kfree(mlxsw_sp->ports);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2011
mlxsw_sp->ports = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2015
static int mlxsw_sp_port_module_info_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2017
unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2022
mlxsw_sp->port_mapping = kzalloc_objs(struct mlxsw_sp_port_mapping,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2024
if (!mlxsw_sp->port_mapping)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2028
port_mapping = &mlxsw_sp->port_mapping[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2029
err = mlxsw_sp_port_module_info_get(mlxsw_sp, i, port_mapping);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2036
kfree(mlxsw_sp->port_mapping);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2040
static void mlxsw_sp_port_module_info_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2042
kfree(mlxsw_sp->port_mapping);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2046
mlxsw_sp_port_split_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2061
err = mlxsw_sp_port_create(mlxsw_sp, s_local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2074
if (mlxsw_sp_port_created(mlxsw_sp, s_local_port))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2075
mlxsw_sp_port_remove(mlxsw_sp, s_local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
208
mlxsw_sp_txhdr_preparations(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2080
static void mlxsw_sp_port_unsplit_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2091
port_mapping = &mlxsw_sp->port_mapping[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2094
mlxsw_sp_port_create(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2100
mlxsw_sp_port_get_by_local_port(struct mlxsw_sp *mlxsw_sp, u16 local_port)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2102
if (mlxsw_sp->ports && mlxsw_sp->ports[local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2103
return mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2111
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2119
mlxsw_sp_port = mlxsw_sp_port_get_by_local_port(mlxsw_sp, local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2121
dev_err(mlxsw_sp->bus_info->dev, "Port number \"%d\" does not exist\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
214
if (!mlxsw_sp->ptp_ops->tx_as_data)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2153
if (mlxsw_sp_port_created(mlxsw_sp, s_local_port))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2154
mlxsw_sp_port_remove(mlxsw_sp, s_local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2157
err = mlxsw_sp_port_split_create(mlxsw_sp, &port_mapping,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2160
dev_err(mlxsw_sp->bus_info->dev, "Failed to create split ports\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2167
mlxsw_sp_port_unsplit_create(mlxsw_sp, count, pmtdb_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2175
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2182
mlxsw_sp_port = mlxsw_sp_port_get_by_local_port(mlxsw_sp, local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2184
dev_err(mlxsw_sp->bus_info->dev, "Port number \"%d\" does not exist\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
220
mlxsw_sp_txhdr_info_data_init(mlxsw_sp->core, skb, txhdr_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
221
return mlxsw_sp_vlan_tag_push(mlxsw_sp, skb);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2211
if (mlxsw_sp_port_created(mlxsw_sp, s_local_port))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2212
mlxsw_sp_port_remove(mlxsw_sp, s_local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2215
mlxsw_sp_port_unsplit_create(mlxsw_sp, count, pmtdb_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2232
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2239
if (WARN_ON_ONCE(!mlxsw_sp_local_port_is_valid(mlxsw_sp, local_port)))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2241
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2257
static void mlxsw_sp1_ptp_fifo_event_func(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2275
mlxsw_sp1_ptp_got_timestamp(mlxsw_sp, ingress, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2284
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2286
mlxsw_sp1_ptp_fifo_event_func(mlxsw_sp, mtpptr_pl, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2292
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2294
mlxsw_sp1_ptp_fifo_event_func(mlxsw_sp, mtpptr_pl, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2300
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2301
struct mlxsw_sp_port *mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2305
dev_warn_ratelimited(mlxsw_sp->bus_info->dev, "Port %d: skb received for non-existent port\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2337
void mlxsw_sp_ptp_receive(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2340
mlxsw_sp->ptp_ops->receive(mlxsw_sp, skb, local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2397
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2425
__set_bit(i, mlxsw_sp->trap->policers_usage);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
244
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2483
static int mlxsw_sp_traps_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2489
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_CPU_POLICERS))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2491
max_policers = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_CPU_POLICERS);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2496
mlxsw_sp->trap = trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2498
err = mlxsw_sp_cpu_policers_set(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2502
err = mlxsw_sp_trap_groups_set(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2506
err = mlxsw_core_traps_register(mlxsw_sp->core, mlxsw_sp_listener,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2508
mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2512
err = mlxsw_core_traps_register(mlxsw_sp->core, mlxsw_sp->listeners,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2513
mlxsw_sp->listeners_count, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2520
mlxsw_core_traps_unregister(mlxsw_sp->core, mlxsw_sp_listener,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2522
mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2530
static void mlxsw_sp_traps_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2532
mlxsw_core_traps_unregister(mlxsw_sp->core, mlxsw_sp->listeners,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2533
mlxsw_sp->listeners_count,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2534
mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2535
mlxsw_core_traps_unregister(mlxsw_sp->core, mlxsw_sp_listener,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2536
ARRAY_SIZE(mlxsw_sp_listener), mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2537
kfree(mlxsw_sp->trap);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
254
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spms), spms_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2540
static int mlxsw_sp_lag_pgt_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2545
if (mlxsw_core_lag_mode(mlxsw_sp->core) !=
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2553
err = mlxsw_sp_pgt_mid_alloc_range(mlxsw_sp, &mlxsw_sp->lag_pgt_base,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2554
mlxsw_sp->max_lag * 8);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2557
if (WARN_ON_ONCE(mlxsw_sp->lag_pgt_base % 8)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2562
mlxsw_reg_sgcr_pack(sgcr_pl, mlxsw_sp->lag_pgt_base);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2563
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sgcr), sgcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2570
mlxsw_sp_pgt_mid_free_range(mlxsw_sp, mlxsw_sp->lag_pgt_base,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2571
mlxsw_sp->max_lag * 8);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2575
static void mlxsw_sp_lag_pgt_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2577
if (mlxsw_core_lag_mode(mlxsw_sp->core) !=
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2581
mlxsw_sp_pgt_mid_free_range(mlxsw_sp, mlxsw_sp->lag_pgt_base,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2582
mlxsw_sp->max_lag * 8);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
259
static int mlxsw_sp_base_mac_get(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2593
static int mlxsw_sp_lag_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2599
seed = jhash(mlxsw_sp->base_mac, sizeof(mlxsw_sp->base_mac),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2610
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcr), slcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2614
err = mlxsw_core_max_lag(mlxsw_sp->core, &mlxsw_sp->max_lag);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2618
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_LAG_MEMBERS))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2621
err = mlxsw_sp_lag_pgt_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2625
mlxsw_sp->lags = kzalloc_objs(struct mlxsw_sp_lag, mlxsw_sp->max_lag);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2626
if (!mlxsw_sp->lags) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2634
mlxsw_sp_lag_pgt_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2638
static void mlxsw_sp_lag_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
264
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(spad), spad_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2640
mlxsw_sp_lag_pgt_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2641
kfree(mlxsw_sp->lags);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
267
mlxsw_reg_spad_base_mac_memcpy_from(spad_pl, mlxsw_sp->base_mac);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2725
mlxsw_sp_sample_trigger_params_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2732
trigger_node = rhashtable_lookup(&mlxsw_sp->sample_trigger_ht, &key,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
274
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2741
mlxsw_sp_sample_trigger_node_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2756
err = rhashtable_insert_fast(&mlxsw_sp->sample_trigger_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2770
mlxsw_sp_sample_trigger_node_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2773
rhashtable_remove_fast(&mlxsw_sp->sample_trigger_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2780
mlxsw_sp_sample_trigger_params_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2792
trigger_node = rhashtable_lookup_fast(&mlxsw_sp->sample_trigger_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2796
return mlxsw_sp_sample_trigger_node_init(mlxsw_sp, &key,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
280
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(paos), paos_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2818
mlxsw_sp_sample_trigger_params_unset(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2828
trigger_node = rhashtable_lookup_fast(&mlxsw_sp->sample_trigger_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2837
mlxsw_sp_sample_trigger_node_fini(mlxsw_sp, trigger_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2847
static void mlxsw_sp_parsing_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2849
refcount_set(&mlxsw_sp->parsing.parsing_depth_ref, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2850
mlxsw_sp->parsing.parsing_depth = MLXSW_SP_DEFAULT_PARSING_DEPTH;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2851
mlxsw_sp->parsing.vxlan_udp_dport = MLXSW_SP_DEFAULT_VXLAN_UDP_DPORT;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2852
mutex_init(&mlxsw_sp->parsing.lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2855
static void mlxsw_sp_parsing_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2857
mutex_destroy(&mlxsw_sp->parsing.lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2858
WARN_ON_ONCE(refcount_read(&mlxsw_sp->parsing.parsing_depth_ref));
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
286
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2876
mlxsw_sp_ipv6_addr_init(struct mlxsw_sp *mlxsw_sp, const struct in6_addr *addr6,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2883
err = mlxsw_sp_kvdl_alloc(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2890
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rips), rips_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2904
err = rhashtable_insert_fast(&mlxsw_sp->ipv6_addr_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
291
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ppad), ppad_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2916
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_IPV6_ADDRESS, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2921
static void mlxsw_sp_ipv6_addr_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2926
rhashtable_remove_fast(&mlxsw_sp->ipv6_addr_ht, &node->ht_node,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2929
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_IPV6_ADDRESS, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2933
int mlxsw_sp_ipv6_addr_kvdl_index_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2940
mutex_lock(&mlxsw_sp->ipv6_addr_ht_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2941
node = rhashtable_lookup_fast(&mlxsw_sp->ipv6_addr_ht, addr6,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2949
err = mlxsw_sp_ipv6_addr_init(mlxsw_sp, addr6, p_kvdl_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2952
mutex_unlock(&mlxsw_sp->ipv6_addr_ht_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2957
mlxsw_sp_ipv6_addr_put(struct mlxsw_sp *mlxsw_sp, const struct in6_addr *addr6)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
296
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2961
mutex_lock(&mlxsw_sp->ipv6_addr_ht_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2962
node = rhashtable_lookup_fast(&mlxsw_sp->ipv6_addr_ht, addr6,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2970
mlxsw_sp_ipv6_addr_fini(mlxsw_sp, node);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2973
mutex_unlock(&mlxsw_sp->ipv6_addr_ht_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2976
static int mlxsw_sp_ipv6_addr_ht_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
298
eth_hw_addr_gen(mlxsw_sp_port->dev, mlxsw_sp->base_mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2980
err = rhashtable_init(&mlxsw_sp->ipv6_addr_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2985
mutex_init(&mlxsw_sp->ipv6_addr_ht_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2989
static void mlxsw_sp_ipv6_addr_ht_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2991
mutex_destroy(&mlxsw_sp->ipv6_addr_ht_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2992
rhashtable_destroy(&mlxsw_sp->ipv6_addr_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
2999
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3002
mlxsw_sp->core = mlxsw_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3003
mlxsw_sp->bus_info = mlxsw_bus_info;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3005
mlxsw_sp_parsing_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3007
err = mlxsw_sp_base_mac_get(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3009
dev_err(mlxsw_sp->bus_info->dev, "Failed to get base mac\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3013
err = mlxsw_sp_kvdl_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3015
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize KVDL\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3019
err = mlxsw_sp_pgt_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3021
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize PGT\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3028
err = mlxsw_sp_lag_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3030
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize LAG\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3034
err = mlxsw_sp->fid_core_ops->init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3036
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize FIDs\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3040
err = mlxsw_sp_policers_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3042
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize policers\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3046
err = mlxsw_sp_traps_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3048
dev_err(mlxsw_sp->bus_info->dev, "Failed to set traps\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3052
err = mlxsw_sp_devlink_traps_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3054
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize devlink traps\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3058
err = mlxsw_sp_buffers_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
306
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3060
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize buffers\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3067
err = mlxsw_sp_span_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3069
dev_err(mlxsw_sp->bus_info->dev, "Failed to init span system\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3073
err = mlxsw_sp_switchdev_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3075
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize switchdev\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3079
err = mlxsw_sp_counter_pool_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3081
dev_err(mlxsw_sp->bus_info->dev, "Failed to init counter pool\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3085
err = mlxsw_sp_afa_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3087
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize ACL actions\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3091
err = mlxsw_sp_ipv6_addr_ht_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3093
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize hash table for IPv6 addresses\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3097
err = mlxsw_sp_nve_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3099
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize NVE\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3103
err = mlxsw_sp_port_range_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3105
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize port ranges\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3109
err = mlxsw_sp_acl_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3111
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize ACL\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3115
err = mlxsw_sp_router_init(mlxsw_sp, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3117
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize router\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
312
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pmtu), pmtu_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3121
if (mlxsw_sp->bus_info->read_clock_capable) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3123
mlxsw_sp->clock =
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3124
mlxsw_sp->ptp_ops->clock_init(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3125
mlxsw_sp->bus_info->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3126
if (IS_ERR(mlxsw_sp->clock)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3127
err = PTR_ERR(mlxsw_sp->clock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3128
dev_err(mlxsw_sp->bus_info->dev, "Failed to init ptp clock\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3133
if (mlxsw_sp->clock) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3135
mlxsw_sp->ptp_state = mlxsw_sp->ptp_ops->init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3136
if (IS_ERR(mlxsw_sp->ptp_state)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3137
err = PTR_ERR(mlxsw_sp->ptp_state);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3138
dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize PTP\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3146
mlxsw_sp->netdevice_nb.notifier_call = mlxsw_sp_netdevice_event;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3147
err = register_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3148
&mlxsw_sp->netdevice_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
315
static int mlxsw_sp_port_swid_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3150
dev_err(mlxsw_sp->bus_info->dev, "Failed to register netdev notifier\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3154
err = mlxsw_sp_dpipe_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3156
dev_err(mlxsw_sp->bus_info->dev, "Failed to init pipeline debug\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3160
err = mlxsw_sp_port_module_info_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3162
dev_err(mlxsw_sp->bus_info->dev, "Failed to init port module info\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3166
err = rhashtable_init(&mlxsw_sp->sample_trigger_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3169
dev_err(mlxsw_sp->bus_info->dev, "Failed to init sampling trigger hashtable\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3173
err = mlxsw_sp_ports_create(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3175
dev_err(mlxsw_sp->bus_info->dev, "Failed to create ports\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3182
rhashtable_destroy(&mlxsw_sp->sample_trigger_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3184
mlxsw_sp_port_module_info_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3186
mlxsw_sp_dpipe_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3188
unregister_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3189
&mlxsw_sp->netdevice_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3191
if (mlxsw_sp->clock)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3192
mlxsw_sp->ptp_ops->fini(mlxsw_sp->ptp_state);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3194
if (mlxsw_sp->clock)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3195
mlxsw_sp->ptp_ops->clock_fini(mlxsw_sp->clock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3197
mlxsw_sp_router_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3199
mlxsw_sp_acl_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3201
mlxsw_sp_port_range_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3203
mlxsw_sp_nve_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3205
mlxsw_sp_ipv6_addr_ht_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3207
mlxsw_sp_afa_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3209
mlxsw_sp_counter_pool_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
321
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pspa), pspa_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3211
mlxsw_sp_switchdev_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3213
mlxsw_sp_span_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3215
mlxsw_sp_buffers_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3217
mlxsw_sp_devlink_traps_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3219
mlxsw_sp_traps_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3221
mlxsw_sp_policers_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3223
mlxsw_sp->fid_core_ops->fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3225
mlxsw_sp_lag_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3227
mlxsw_sp_pgt_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3229
mlxsw_sp_kvdl_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3230
mlxsw_sp_parsing_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3238
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3240
mlxsw_sp->switchdev_ops = &mlxsw_sp1_switchdev_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3241
mlxsw_sp->kvdl_ops = &mlxsw_sp1_kvdl_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3242
mlxsw_sp->afa_ops = &mlxsw_sp1_act_afa_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3243
mlxsw_sp->afk_ops = &mlxsw_sp1_afk_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3244
mlxsw_sp->mr_tcam_ops = &mlxsw_sp1_mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3245
mlxsw_sp->acl_rulei_ops = &mlxsw_sp1_acl_rulei_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3246
mlxsw_sp->acl_tcam_ops = &mlxsw_sp1_acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3247
mlxsw_sp->nve_ops_arr = mlxsw_sp1_nve_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3248
mlxsw_sp->mac_mask = mlxsw_sp1_mac_mask;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3249
mlxsw_sp->sb_vals = &mlxsw_sp1_sb_vals;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3250
mlxsw_sp->sb_ops = &mlxsw_sp1_sb_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3251
mlxsw_sp->port_type_speed_ops = &mlxsw_sp1_port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3252
mlxsw_sp->ptp_ops = &mlxsw_sp1_ptp_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3253
mlxsw_sp->span_ops = &mlxsw_sp1_span_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3254
mlxsw_sp->policer_core_ops = &mlxsw_sp1_policer_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3255
mlxsw_sp->trap_ops = &mlxsw_sp1_trap_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3256
mlxsw_sp->mall_ops = &mlxsw_sp1_mall_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3257
mlxsw_sp->router_ops = &mlxsw_sp1_router_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3258
mlxsw_sp->listeners = mlxsw_sp1_listener;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3259
mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp1_listener);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
326
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3260
mlxsw_sp->fid_core_ops = &mlxsw_sp1_fid_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3261
mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP1;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3262
mlxsw_sp->pgt_smpe_index_valid = true;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3271
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3273
mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3274
mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3275
mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3276
mlxsw_sp->afk_ops = &mlxsw_sp2_afk_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3277
mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3278
mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3279
mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3280
mlxsw_sp->acl_bf_ops = &mlxsw_sp2_acl_bf_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3281
mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3282
mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3283
mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3284
mlxsw_sp->sb_ops = &mlxsw_sp2_sb_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3285
mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3286
mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3287
mlxsw_sp->span_ops = &mlxsw_sp2_span_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3288
mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3289
mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3290
mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3291
mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3292
mlxsw_sp->listeners = mlxsw_sp2_listener;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3293
mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp2_listener);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3294
mlxsw_sp->fid_core_ops = &mlxsw_sp2_fid_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3295
mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP2;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3296
mlxsw_sp->pgt_smpe_index_valid = false;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
330
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(svpe), svpe_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3305
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3307
mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3308
mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3309
mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3310
mlxsw_sp->afk_ops = &mlxsw_sp2_afk_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3311
mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3312
mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3313
mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3314
mlxsw_sp->acl_bf_ops = &mlxsw_sp2_acl_bf_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3315
mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3316
mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3317
mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3318
mlxsw_sp->sb_ops = &mlxsw_sp3_sb_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3319
mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3320
mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3321
mlxsw_sp->span_ops = &mlxsw_sp3_span_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3322
mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3323
mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3324
mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3325
mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3326
mlxsw_sp->listeners = mlxsw_sp2_listener;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3327
mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp2_listener);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3328
mlxsw_sp->fid_core_ops = &mlxsw_sp2_fid_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3329
mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP3;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3330
mlxsw_sp->pgt_smpe_index_valid = false;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3339
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3341
mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3342
mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3343
mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3344
mlxsw_sp->afk_ops = &mlxsw_sp4_afk_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3345
mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3346
mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3347
mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3348
mlxsw_sp->acl_bf_ops = &mlxsw_sp4_acl_bf_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3349
mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3350
mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3351
mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3352
mlxsw_sp->sb_ops = &mlxsw_sp3_sb_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3353
mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3354
mlxsw_sp->ptp_ops = &mlxsw_sp4_ptp_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3355
mlxsw_sp->span_ops = &mlxsw_sp3_span_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3356
mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3357
mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3358
mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3359
mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
336
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3360
mlxsw_sp->listeners = mlxsw_sp2_listener;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3361
mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp2_listener);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3362
mlxsw_sp->fid_core_ops = &mlxsw_sp2_fid_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3363
mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP4;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3364
mlxsw_sp->pgt_smpe_index_valid = false;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3371
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3373
mlxsw_sp_ports_remove(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3374
rhashtable_destroy(&mlxsw_sp->sample_trigger_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3375
mlxsw_sp_port_module_info_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3376
mlxsw_sp_dpipe_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3377
unregister_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3378
&mlxsw_sp->netdevice_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3379
if (mlxsw_sp->clock) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3380
mlxsw_sp->ptp_ops->fini(mlxsw_sp->ptp_state);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3381
mlxsw_sp->ptp_ops->clock_fini(mlxsw_sp->clock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3383
mlxsw_sp_router_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3384
mlxsw_sp_acl_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3385
mlxsw_sp_port_range_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3386
mlxsw_sp_nve_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3387
mlxsw_sp_ipv6_addr_ht_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3388
mlxsw_sp_afa_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3389
mlxsw_sp_counter_pool_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3390
mlxsw_sp_switchdev_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3391
mlxsw_sp_span_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3392
mlxsw_sp_buffers_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3393
mlxsw_sp_devlink_traps_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3394
mlxsw_sp_traps_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3395
mlxsw_sp_policers_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3396
mlxsw_sp->fid_core_ops->fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3397
mlxsw_sp_lag_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3398
mlxsw_sp_pgt_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3399
mlxsw_sp_kvdl_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3400
mlxsw_sp_parsing_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
345
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spvmlr), spvmlr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
352
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
360
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spfsr), spfsr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3824
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3827
mlxsw_sp->ptp_ops->transmitted(mlxsw_sp, skb, local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3832
.priv_size = sizeof(struct mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3867
.priv_size = sizeof(struct mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
387
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3902
.priv_size = sizeof(struct mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
3937
.priv_size = sizeof(struct mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
397
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spevet), spevet_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4000
struct mlxsw_sp *mlxsw_sp_lower_get(struct net_device *dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4005
return mlxsw_sp_port ? mlxsw_sp_port->mlxsw_sp : NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4023
int mlxsw_sp_parsing_depth_inc(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4028
mutex_lock(&mlxsw_sp->parsing.lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
403
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4030
if (refcount_inc_not_zero(&mlxsw_sp->parsing.parsing_depth_ref))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4034
mlxsw_sp->parsing.vxlan_udp_dport);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4035
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mprs), mprs_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4039
mlxsw_sp->parsing.parsing_depth = MLXSW_SP_INCREASED_PARSING_DEPTH;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4040
refcount_set(&mlxsw_sp->parsing.parsing_depth_ref, 1);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4043
mutex_unlock(&mlxsw_sp->parsing.lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4047
void mlxsw_sp_parsing_depth_dec(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4051
mutex_lock(&mlxsw_sp->parsing.lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4053
if (!refcount_dec_and_test(&mlxsw_sp->parsing.parsing_depth_ref))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4057
mlxsw_sp->parsing.vxlan_udp_dport);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4058
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mprs), mprs_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4059
mlxsw_sp->parsing.parsing_depth = MLXSW_SP_DEFAULT_PARSING_DEPTH;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4062
mutex_unlock(&mlxsw_sp->parsing.lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4065
int mlxsw_sp_parsing_vxlan_udp_dport_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4071
mutex_lock(&mlxsw_sp->parsing.lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4073
mlxsw_reg_mprs_pack(mprs_pl, mlxsw_sp->parsing.parsing_depth,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4075
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mprs), mprs_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4079
mlxsw_sp->parsing.vxlan_udp_dport = be16_to_cpu(udp_dport);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4082
mutex_unlock(&mlxsw_sp->parsing.lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4106
mlxsw_sp_lag_create(struct mlxsw_sp *mlxsw_sp, struct net_device *lag_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4114
for (i = 0; i < mlxsw_sp->max_lag; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4115
if (!mlxsw_sp->lags[i].dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4119
if (i == mlxsw_sp->max_lag) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4127
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sldr), sldr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4131
lag = &mlxsw_sp->lags[lag_id];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4140
mlxsw_sp_lag_destroy(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_lag *lag)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4147
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sldr), sldr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
415
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spvid), spvid_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4153
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4158
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcor), slcor_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4164
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4169
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcor), slcor_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4175
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4180
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcor), slcor_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4186
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4191
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcor), slcor_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4195
mlxsw_sp_lag_find(struct mlxsw_sp *mlxsw_sp, struct net_device *lag_dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4199
for (i = 0; i < mlxsw_sp->max_lag; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4200
if (!mlxsw_sp->lags[i].dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4203
if (mlxsw_sp->lags[i].dev == lag_dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4204
return &mlxsw_sp->lags[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
421
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4211
mlxsw_sp_lag_get(struct mlxsw_sp *mlxsw_sp, struct net_device *lag_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4216
lag = mlxsw_sp_lag_find(mlxsw_sp, lag_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4222
return mlxsw_sp_lag_create(mlxsw_sp, lag_dev, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4226
mlxsw_sp_lag_put(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_lag *lag)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4231
mlxsw_sp_lag_destroy(mlxsw_sp, lag);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4235
mlxsw_sp_master_lag_check(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4247
static int mlxsw_sp_port_lag_index_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
425
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spaft), spaft_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4253
max_lag_members = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4256
if (!mlxsw_sp_port_lagged_get(mlxsw_sp, lag_id, i)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4350
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4356
lag = mlxsw_sp_lag_get(mlxsw_sp, lag_dev, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4361
err = mlxsw_sp_port_lag_index_get(mlxsw_sp, lag_id, &port_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4374
mlxsw_core_lag_mapping_set(mlxsw_sp->core, lag_id, port_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4393
err = mlxsw_sp_netdevice_enslavement_replay(mlxsw_sp, lag_dev, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4405
mlxsw_core_lag_mapping_clear(mlxsw_sp->core, lag_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4411
mlxsw_sp_lag_put(mlxsw_sp, lag);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4418
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4424
lag = &mlxsw_sp->lags[lag_id];
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4438
mlxsw_sp_lag_put(mlxsw_sp, lag);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4440
mlxsw_core_lag_mapping_clear(mlxsw_sp->core, lag_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4452
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4457
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sldr), sldr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4463
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4468
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sldr), sldr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4526
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4543
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spms), spms_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
457
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
461
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sspr), sspr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
465
mlxsw_sp_port_module_info_parse(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4664
static int __mlxsw_sp_netdevice_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4668
static int mlxsw_sp_netdevice_validate_uppers(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4695
err = __mlxsw_sp_netdevice_event(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4701
err = mlxsw_sp_netdevice_validate_uppers(mlxsw_sp, upper_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4719
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4724
mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4743
!mlxsw_sp_bridge_device_is_offloaded(mlxsw_sp, upper_dev) &&
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4749
!mlxsw_sp_bridge_device_is_offloaded(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4751
err = mlxsw_sp_netdevice_validate_uppers(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4758
!mlxsw_sp_master_lag_check(mlxsw_sp, upper_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4827
mlxsw_sp_netdevice_deslavement_replay(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
483
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Unsupported module config: width value is not power of 2\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4838
mlxsw_sp_netdevice_deslavement_replay(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4848
mlxsw_sp_rif_macvlan_del(mlxsw_sp, upper_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
490
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Unsupported module config: contains multiple modules\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4916
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4919
if (!mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4927
mlxsw_sp_netdevice_deslavement_replay(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
495
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Unsupported module config: contains multiple slot indexes\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4958
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4978
!mlxsw_sp_bridge_device_is_offloaded(mlxsw_sp, upper_dev) &&
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4984
!mlxsw_sp_bridge_device_is_offloaded(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
4986
err = mlxsw_sp_netdevice_validate_uppers(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5007
mlxsw_sp_netdevice_deslavement_replay(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5012
mlxsw_sp_rif_macvlan_del(mlxsw_sp, upper_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
502
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Unsupported module config: TX and RX lane numbers are different\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5042
static int mlxsw_sp_netdevice_bridge_vlan_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
507
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Unsupported module config: TX and RX lane numbers are not sequential\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5071
mlxsw_sp_rif_macvlan_del(mlxsw_sp, upper_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5078
static int mlxsw_sp_netdevice_vlan_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5095
return mlxsw_sp_netdevice_bridge_vlan_event(mlxsw_sp, vlan_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5103
static int mlxsw_sp_netdevice_bridge_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5147
mlxsw_sp_rif_destroy_by_dev(mlxsw_sp, upper_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5149
mlxsw_sp_rif_macvlan_del(mlxsw_sp, upper_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5159
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(macvlan_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5164
if (!mlxsw_sp || event != NETDEV_PRECHANGEUPPER)
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5178
static int mlxsw_sp_netdevice_vxlan_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5204
return mlxsw_sp_bridge_vxlan_join(mlxsw_sp, upper_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5207
mlxsw_sp_bridge_vxlan_leave(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5217
return mlxsw_sp_bridge_vxlan_join(mlxsw_sp, upper_dev, dev, 0,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
522
mlxsw_sp_port_module_info_get(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5227
mlxsw_sp_bridge_vxlan_leave(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5234
static int __mlxsw_sp_netdevice_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5243
span_entry = mlxsw_sp_span_entry_find_by_port(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5245
mlxsw_sp_span_entry_invalidate(mlxsw_sp, span_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5249
err = mlxsw_sp_netdevice_vxlan_event(mlxsw_sp, dev, event, ptr);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5255
err = mlxsw_sp_netdevice_vlan_event(mlxsw_sp, dev, event, ptr,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5258
err = mlxsw_sp_netdevice_bridge_event(mlxsw_sp, dev, event, ptr,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5269
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5272
mlxsw_sp = container_of(nb, struct mlxsw_sp, netdevice_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5273
mlxsw_sp_span_respin(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
5274
err = __mlxsw_sp_netdevice_event(mlxsw_sp, event, ptr, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
529
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(pmlp), pmlp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
532
return mlxsw_sp_port_module_info_parse(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
537
mlxsw_sp_port_module_map(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
543
mlxsw_env_module_port_map(mlxsw_sp->core, port_mapping->slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
555
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pmlp), pmlp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
561
mlxsw_env_module_port_unmap(mlxsw_sp->core, port_mapping->slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
566
static void mlxsw_sp_port_module_unmap(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
573
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pmlp), pmlp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
574
mlxsw_env_module_port_unmap(mlxsw_sp->core, slot_index, module);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
580
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
583
err = mlxsw_env_module_port_up(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
595
mlxsw_env_module_port_down(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
604
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
608
mlxsw_env_module_port_down(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
618
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
629
if (mlxsw_core_skb_transmit_busy(mlxsw_sp->core, &txhdr_info.tx_info))
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
637
skb = mlxsw_sp_txhdr_preparations(mlxsw_sp, skb, &txhdr_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
651
err = mlxsw_core_skb_transmit(mlxsw_sp->core, skb, &txhdr_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
773
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
776
return mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ppcnt), ppcnt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
902
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
912
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spvm), spvm_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1013
int mlxsw_sp_acl_rulei_act_mirror(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1018
int mlxsw_sp_acl_rulei_act_fwd(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1022
int mlxsw_sp_acl_rulei_act_vlan(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1026
int mlxsw_sp_acl_rulei_act_priority(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1029
int mlxsw_sp_acl_rulei_act_mangle(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1034
int mlxsw_sp_acl_rulei_act_police(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1038
int mlxsw_sp_acl_rulei_act_count(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1041
int mlxsw_sp_acl_rulei_act_fid_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1044
int mlxsw_sp_acl_rulei_act_ignore(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1047
int mlxsw_sp_acl_rulei_act_sample(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1057
mlxsw_sp_acl_rule_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1062
void mlxsw_sp_acl_rule_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1064
int mlxsw_sp_acl_rule_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1066
void mlxsw_sp_acl_rule_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1068
int mlxsw_sp_acl_rule_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1072
mlxsw_sp_acl_rule_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1077
int mlxsw_sp_acl_rule_get_stats(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1083
struct mlxsw_sp_fid *mlxsw_sp_acl_dummy_fid(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1086
mlxsw_sp_acl_act_cookie_lookup(struct mlxsw_sp *mlxsw_sp, u32 cookie_index)
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1088
return mlxsw_afa_cookie_lookup(mlxsw_sp->afa, cookie_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1091
int mlxsw_sp_acl_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1092
void mlxsw_sp_acl_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1097
int (*act_mangle_field)(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_acl_rule_info *rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1112
int (*init)(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1114
void (*fini)(struct mlxsw_sp *mlxsw_sp, void *priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1116
int (*region_init)(struct mlxsw_sp *mlxsw_sp, void *region_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1120
void (*region_fini)(struct mlxsw_sp *mlxsw_sp, void *region_priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1121
int (*region_associate)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1130
int (*entry_add)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1134
void (*entry_del)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1137
int (*entry_action_replace)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1140
int (*entry_activity_get)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1166
int (*sample_add)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1170
void (*sample_del)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1212
int mlxsw_sp_mall_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1226
int mlxsw_sp_flower_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1229
void mlxsw_sp_flower_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1232
int mlxsw_sp_flower_stats(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1235
int mlxsw_sp_flower_tmplt_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1238
void mlxsw_sp_flower_tmplt_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1241
int mlxsw_sp_flower_prio_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1265
struct mlxsw_sp_fid *mlxsw_sp_fid_lookup_by_index(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1270
struct mlxsw_sp_fid *mlxsw_sp_fid_lookup_by_vni(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1296
mlxsw_sp_fid_type_rif_type(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1299
struct mlxsw_sp_fid *mlxsw_sp_fid_8021q_get(struct mlxsw_sp *mlxsw_sp, u16 vid);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1300
struct mlxsw_sp_fid *mlxsw_sp_fid_8021d_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1302
struct mlxsw_sp_fid *mlxsw_sp_fid_8021q_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1304
struct mlxsw_sp_fid *mlxsw_sp_fid_8021d_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1306
struct mlxsw_sp_fid *mlxsw_sp_fid_rfid_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1308
struct mlxsw_sp_fid *mlxsw_sp_fid_dummy_get(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1332
int (*init)(struct mlxsw_sp *mlxsw_sp, void *priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1335
int (*route_create)(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1340
void (*route_destroy)(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1343
int (*route_update)(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1365
int mlxsw_sp_nve_learned_ip_resolve(struct mlxsw_sp *mlxsw_sp, u32 uip,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1368
int mlxsw_sp_nve_flood_ip_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1372
void mlxsw_sp_nve_flood_ip_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1376
int mlxsw_sp_nve_ipv6_addr_kvdl_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1379
void mlxsw_sp_nve_ipv6_addr_kvdl_unset(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1382
mlxsw_sp_nve_ipv6_addr_map_replace(struct mlxsw_sp *mlxsw_sp, const char *mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1385
void mlxsw_sp_nve_ipv6_addr_map_del(struct mlxsw_sp *mlxsw_sp, const char *mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1387
int mlxsw_sp_nve_fid_enable(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_fid *fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1390
void mlxsw_sp_nve_fid_disable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1394
int mlxsw_sp_nve_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1395
void mlxsw_sp_nve_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1398
int mlxsw_sp_devlink_traps_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1399
void mlxsw_sp_devlink_traps_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1427
int mlxsw_sp_trap_group_policer_hw_id_get(struct mlxsw_sp *mlxsw_sp, u16 id,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1430
static inline struct net *mlxsw_sp_net(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1432
return mlxsw_core_net(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1457
int mlxsw_sp_policer_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1461
void mlxsw_sp_policer_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1464
int mlxsw_sp_policer_drops_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1467
int mlxsw_sp_policers_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1468
void mlxsw_sp_policers_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1472
int mlxsw_sp_pgt_mid_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_mid);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1473
void mlxsw_sp_pgt_mid_free(struct mlxsw_sp *mlxsw_sp, u16 mid_base);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1474
int mlxsw_sp_pgt_mid_alloc_range(struct mlxsw_sp *mlxsw_sp, u16 *mid_base,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1476
void mlxsw_sp_pgt_mid_free_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1478
int mlxsw_sp_pgt_entry_port_set(struct mlxsw_sp *mlxsw_sp, u16 mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1480
int mlxsw_sp_pgt_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1481
void mlxsw_sp_pgt_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1490
int mlxsw_sp_port_range_reg_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1494
void mlxsw_sp_port_range_reg_put(struct mlxsw_sp *mlxsw_sp, u8 prr_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1495
int mlxsw_sp_port_range_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1496
void mlxsw_sp_port_range_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
217
(*clock_init)(struct mlxsw_sp *mlxsw_sp, struct device *dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
220
struct mlxsw_sp_ptp_state *(*init)(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
226
void (*receive)(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
232
void (*transmitted)(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
241
int (*get_ts_info)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
251
int (*init)(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
252
void (*fini)(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
318
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
366
void (*from_ptys_supported_port)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
369
void (*from_ptys_link)(struct mlxsw_sp *mlxsw_sp, u32 ptys_eth_proto,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
371
u32 (*from_ptys_speed)(struct mlxsw_sp *mlxsw_sp, u32 ptys_eth_proto);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
372
void (*from_ptys_link_mode)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
376
u32 (*to_ptys_advert_link)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
378
u32 (*to_ptys_speed_lanes)(struct mlxsw_sp *mlxsw_sp, u8 width,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
380
void (*reg_ptys_eth_pack)(struct mlxsw_sp *mlxsw_sp, char *payload,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
382
void (*reg_ptys_eth_unpack)(struct mlxsw_sp *mlxsw_sp, char *payload,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
395
mlxsw_sp_port_bitmap_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
398
unsigned int nbits = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
474
mlxsw_sp_port_lagged_get(struct mlxsw_sp *mlxsw_sp, u16 lag_id, u8 port_index)
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
479
local_port = mlxsw_core_lag_mapping_get(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
481
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
519
mlxsw_sp_local_port_is_valid(struct mlxsw_sp *mlxsw_sp, u16 local_port)
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
521
unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
578
int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
579
void mlxsw_sp_buffers_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
615
u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
616
u32 mlxsw_sp_bytes_cells(const struct mlxsw_sp *mlxsw_sp, u32 bytes);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
624
mlxsw_sp_sample_trigger_params_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
627
mlxsw_sp_sample_trigger_params_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
632
mlxsw_sp_sample_trigger_params_unset(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
634
int mlxsw_sp_ipv6_addr_kvdl_index_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
638
mlxsw_sp_ipv6_addr_put(struct mlxsw_sp *mlxsw_sp, const struct in6_addr *addr6);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
648
int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
649
void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
650
int mlxsw_sp_rif_fdb_op(struct mlxsw_sp *mlxsw_sp, const char *mac, u16 fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
661
bool mlxsw_sp_bridge_device_is_offloaded(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
663
int mlxsw_sp_bridge_vxlan_join(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
667
void mlxsw_sp_bridge_vxlan_leave(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
674
void mlxsw_sp_ptp_receive(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
705
int mlxsw_sp_flow_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
708
int mlxsw_sp_flow_counter_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
710
void mlxsw_sp_flow_counter_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
713
struct mlxsw_sp *mlxsw_sp_lower_get(struct net_device *dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
716
int mlxsw_sp_parsing_depth_inc(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
717
void mlxsw_sp_parsing_depth_dec(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
718
int mlxsw_sp_parsing_vxlan_udp_dport_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
749
int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
751
void mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
752
void mlxsw_sp_rif_macvlan_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
756
void mlxsw_sp_rif_destroy_by_dev(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
758
u16 mlxsw_sp_router_port(const struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
759
int mlxsw_sp_router_nve_promote_decap(struct mlxsw_sp *mlxsw_sp, u32 ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
763
void mlxsw_sp_router_nve_demote_decap(struct mlxsw_sp *mlxsw_sp, u32 ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
766
int mlxsw_sp_router_tb_id_vr_id(struct mlxsw_sp *mlxsw_sp, u32 tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
768
int mlxsw_sp_router_ul_rif_get(struct mlxsw_sp *mlxsw_sp, u32 ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
770
void mlxsw_sp_router_ul_rif_put(struct mlxsw_sp *mlxsw_sp, u16 ul_rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
799
int (*init)(struct mlxsw_sp *mlxsw_sp, void *priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
800
void (*fini)(struct mlxsw_sp *mlxsw_sp, void *priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
801
int (*alloc)(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
804
void (*free)(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
807
int (*alloc_size_query)(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
811
int (*resources_register)(struct mlxsw_sp *mlxsw_sp, void *priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
814
int mlxsw_sp_kvdl_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
815
void mlxsw_sp_kvdl_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
816
int mlxsw_sp_kvdl_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
819
void mlxsw_sp_kvdl_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
822
int mlxsw_sp_kvdl_alloc_count_query(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
883
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
899
static inline struct mlxsw_sp *
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
902
return block->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
949
struct mlxsw_sp_flow_block *mlxsw_sp_flow_block_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
967
int mlxsw_sp_acl_ruleset_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
970
void mlxsw_sp_acl_ruleset_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
974
mlxsw_sp_acl_ruleset_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
978
mlxsw_sp_acl_ruleset_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
982
void mlxsw_sp_acl_ruleset_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
992
void mlxsw_sp_acl_rulei_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
100
mlxsw_sp1_acl_ctcam_region_catchall_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
105
mlxsw_sp_acl_ctcam_entry_del(mlxsw_sp, ®ion->cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
108
mlxsw_sp_acl_rulei_destroy(mlxsw_sp, rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
113
mlxsw_sp1_acl_tcam_region_init(struct mlxsw_sp *mlxsw_sp, void *region_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
121
err = mlxsw_sp_acl_ctcam_region_init(mlxsw_sp, ®ion->cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
126
err = mlxsw_sp1_acl_ctcam_region_catchall_add(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
138
mlxsw_sp1_acl_tcam_region_fini(struct mlxsw_sp *mlxsw_sp, void *region_priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
142
mlxsw_sp1_acl_ctcam_region_catchall_del(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
147
mlxsw_sp1_acl_tcam_region_associate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
170
static int mlxsw_sp1_acl_tcam_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
179
return mlxsw_sp_acl_ctcam_entry_add(mlxsw_sp, ®ion->cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
184
static void mlxsw_sp1_acl_tcam_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
192
mlxsw_sp_acl_ctcam_entry_del(mlxsw_sp, ®ion->cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
197
mlxsw_sp1_acl_tcam_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
205
mlxsw_sp1_acl_tcam_region_entry_activity_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
215
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ptce2), ptce2_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
223
mlxsw_sp1_acl_tcam_entry_activity_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
232
return mlxsw_sp1_acl_tcam_region_entry_activity_get(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
50
static int mlxsw_sp1_acl_tcam_init(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
56
static void mlxsw_sp1_acl_tcam_fini(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
61
mlxsw_sp1_acl_ctcam_region_catchall_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
70
rulei = mlxsw_sp_acl_rulei_create(mlxsw_sp->acl, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
81
err = mlxsw_sp_acl_ctcam_entry_add(mlxsw_sp, ®ion->cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c
93
mlxsw_sp_acl_rulei_destroy(mlxsw_sp, rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
146
static int mlxsw_sp1_kvdl_alloc(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
164
static void mlxsw_sp1_kvdl_free(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
177
static int mlxsw_sp1_kvdl_alloc_size_query(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
208
mlxsw_sp1_kvdl_part_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
212
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
243
static int mlxsw_sp1_kvdl_parts_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
252
kvdl->parts[i] = mlxsw_sp1_kvdl_part_init(mlxsw_sp, info,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
331
static int mlxsw_sp1_kvdl_init(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
333
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
337
err = mlxsw_sp1_kvdl_parts_init(mlxsw_sp, kvdl);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
359
static void mlxsw_sp1_kvdl_fini(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum1_kvdl.c
361
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
122
mlxsw_sp1_mr_tcam_route_create(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
13
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
137
err = mlxsw_sp1_mr_tcam_route_replace(mlxsw_sp, &route->parman_item,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
149
mlxsw_sp1_mr_tcam_route_destroy(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
156
mlxsw_sp1_mr_tcam_route_remove(mlxsw_sp, &route->parman_item, key);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
161
mlxsw_sp1_mr_tcam_route_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
168
return mlxsw_sp1_mr_tcam_route_replace(mlxsw_sp, &route->parman_item,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
178
struct mlxsw_sp *mlxsw_sp = mr_tcam_region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
184
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtar), rtar_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
190
struct mlxsw_sp *mlxsw_sp = mr_tcam_region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
195
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtar), rtar_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
202
struct mlxsw_sp *mlxsw_sp = mr_tcam_region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
206
max_tcam_rules = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_MAX_TCAM_RULES);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
211
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtar), rtar_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
220
struct mlxsw_sp *mlxsw_sp = mr_tcam_region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
226
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rrcr), rrcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
238
mlxsw_sp1_mr_tcam_region_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
248
mr_tcam_region->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
28
static int mlxsw_sp1_mr_tcam_route_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
294
static int mlxsw_sp1_mr_tcam_init(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
301
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_MAX_TCAM_RULES))
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
305
err = mlxsw_sp1_mr_tcam_region_init(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
312
err = mlxsw_sp1_mr_tcam_region_init(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
57
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rmft2), rmft2_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
60
static int mlxsw_sp1_mr_tcam_route_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c
79
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rmft2), rmft2_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
113
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pefa), pefa_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
118
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pgcr), pgcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
122
err = mlxsw_sp_acl_atcam_init(mlxsw_sp, &tcam->atcam);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
135
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ACTSET,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
140
static void mlxsw_sp2_acl_tcam_fini(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
144
mlxsw_sp_acl_atcam_fini(mlxsw_sp, &tcam->atcam);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
145
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ACTSET,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
150
mlxsw_sp2_acl_tcam_region_init(struct mlxsw_sp *mlxsw_sp, void *region_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
160
return mlxsw_sp_acl_atcam_region_init(mlxsw_sp, &tcam->atcam,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
167
mlxsw_sp2_acl_tcam_region_fini(struct mlxsw_sp *mlxsw_sp, void *region_priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
175
mlxsw_sp2_acl_tcam_region_associate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
178
return mlxsw_sp_acl_atcam_region_associate(mlxsw_sp, region->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
210
static int mlxsw_sp2_acl_tcam_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
220
return mlxsw_sp_acl_atcam_entry_add(mlxsw_sp, ®ion->aregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
225
static void mlxsw_sp2_acl_tcam_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
233
mlxsw_sp_acl_atcam_entry_del(mlxsw_sp, ®ion->aregion, &chunk->achunk,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
238
mlxsw_sp2_acl_tcam_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
246
return mlxsw_sp_acl_atcam_entry_action_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
252
mlxsw_sp2_acl_tcam_entry_activity_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
69
static int mlxsw_sp2_acl_tcam_init(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
85
if (MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_MAX_DEFAULT_ACTIONS))
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
86
tcam->kvdl_count = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
88
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ACTSET,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c
97
afa_block = mlxsw_afa_block_create(mlxsw_sp->afa);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
107
static int mlxsw_sp2_kvdl_rec_del(struct mlxsw_sp *mlxsw_sp, u8 res_type,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
119
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(iedr), iedr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
124
static void mlxsw_sp2_kvdl_part_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
134
err = mlxsw_sp2_kvdl_rec_del(mlxsw_sp, part->info->res_type,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
145
static int mlxsw_sp2_kvdl_alloc(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
157
static void mlxsw_sp2_kvdl_free(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
166
return mlxsw_sp2_kvdl_part_free(mlxsw_sp, part, size, entry_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
169
static int mlxsw_sp2_kvdl_alloc_size_query(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
180
mlxsw_sp2_kvdl_part_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
189
if (!mlxsw_core_res_valid(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
191
!mlxsw_core_res_valid(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
194
usage_bit_count = mlxsw_core_res_get(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
196
index_range = mlxsw_core_res_get(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
221
static int mlxsw_sp2_kvdl_parts_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
230
kvdl->parts[i] = mlxsw_sp2_kvdl_part_init(mlxsw_sp, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
252
static int mlxsw_sp2_kvdl_init(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
256
return mlxsw_sp2_kvdl_parts_init(mlxsw_sp, kvdl);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c
259
static void mlxsw_sp2_kvdl_fini(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
11
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
113
mr_tcam->ruleset6 = mlxsw_sp_acl_ruleset_get(mr_tcam->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
123
err = mlxsw_sp2_mr_tcam_bind_group(mr_tcam->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
132
mlxsw_sp_acl_ruleset_put(mr_tcam->mlxsw_sp, mr_tcam->ruleset6);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
138
mlxsw_sp_acl_ruleset_put(mr_tcam->mlxsw_sp, mr_tcam->ruleset6);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
210
mlxsw_sp2_mr_tcam_route_create(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
227
rule = mlxsw_sp_acl_rule_create(mlxsw_sp, ruleset,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
234
err = mlxsw_sp_acl_rule_add(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
241
mlxsw_sp_acl_rule_destroy(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
246
mlxsw_sp2_mr_tcam_route_destroy(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
258
rule = mlxsw_sp_acl_rule_lookup(mlxsw_sp, ruleset,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
263
mlxsw_sp_acl_rule_del(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
264
mlxsw_sp_acl_rule_destroy(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
268
mlxsw_sp2_mr_tcam_route_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
282
rule = mlxsw_sp_acl_rule_lookup(mlxsw_sp, ruleset,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
287
return mlxsw_sp_acl_rule_action_replace(mlxsw_sp, rule, afa_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
290
static int mlxsw_sp2_mr_tcam_init(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
295
mr_tcam->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
296
mr_tcam->flow_block = mlxsw_sp_flow_block_create(mlxsw_sp, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
34
static int mlxsw_sp2_mr_tcam_bind_group(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
44
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pemrbt), pemrbt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
62
mr_tcam->ruleset4 = mlxsw_sp_acl_ruleset_get(mr_tcam->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
72
err = mlxsw_sp2_mr_tcam_bind_group(mr_tcam->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
81
mlxsw_sp_acl_ruleset_put(mr_tcam->mlxsw_sp, mr_tcam->ruleset4);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
87
mlxsw_sp_acl_ruleset_put(mr_tcam->mlxsw_sp, mr_tcam->ruleset4);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1005
dev_err(acl->mlxsw_sp->bus_info->dev, "Could not update acl activity");
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1010
int mlxsw_sp_acl_rule_get_stats(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1026
err = mlxsw_sp_flow_counter_get(mlxsw_sp, rulei->counter_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1034
err = mlxsw_sp_policer_drops_counter_get(mlxsw_sp, type,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1052
int mlxsw_sp_acl_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1059
alloc_size = sizeof(*acl) + mlxsw_sp_acl_tcam_priv_size(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
106
int mlxsw_sp_acl_ruleset_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1063
mlxsw_sp->acl = acl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1064
acl->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1065
acl->afk = mlxsw_afk_create(MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1067
mlxsw_sp->afk_ops);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1078
fid = mlxsw_sp_fid_dummy_get(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1087
err = mlxsw_sp_acl_tcam_init(mlxsw_sp, &acl->tcam);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1110
void mlxsw_sp_acl_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1112
struct mlxsw_sp_acl *acl = mlxsw_sp->acl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1114
cancel_delayed_work_sync(&mlxsw_sp->acl->rule_activity_update.dw);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1115
mlxsw_sp_acl_tcam_fini(mlxsw_sp, &acl->tcam);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
113
return ops->ruleset_bind(mlxsw_sp, ruleset->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
117
void mlxsw_sp_acl_ruleset_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
124
ops->ruleset_unbind(mlxsw_sp, ruleset->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
129
mlxsw_sp_acl_ruleset_block_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
138
err = mlxsw_sp_acl_ruleset_bind(mlxsw_sp, block, binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
147
mlxsw_sp_acl_ruleset_unbind(mlxsw_sp, block, binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
154
mlxsw_sp_acl_ruleset_block_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
161
mlxsw_sp_acl_ruleset_unbind(mlxsw_sp, block, binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
166
mlxsw_sp_acl_ruleset_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
171
struct mlxsw_sp_acl *acl = mlxsw_sp->acl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
189
err = ops->ruleset_add(mlxsw_sp, &acl->tcam, ruleset->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
203
ops->ruleset_del(mlxsw_sp, ruleset->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
211
static void mlxsw_sp_acl_ruleset_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
215
struct mlxsw_sp_acl *acl = mlxsw_sp->acl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
219
ops->ruleset_del(mlxsw_sp, ruleset->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
229
static void mlxsw_sp_acl_ruleset_ref_dec(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
234
mlxsw_sp_acl_ruleset_destroy(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
25
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
253
mlxsw_sp_acl_ruleset_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
258
struct mlxsw_sp_acl *acl = mlxsw_sp->acl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
261
ops = mlxsw_sp_acl_tcam_profile_ops(mlxsw_sp, profile);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
271
mlxsw_sp_acl_ruleset_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
277
struct mlxsw_sp_acl *acl = mlxsw_sp->acl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
280
ops = mlxsw_sp_acl_tcam_profile_ops(mlxsw_sp, profile);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
289
return mlxsw_sp_acl_ruleset_create(mlxsw_sp, block, chain_index, ops,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
293
void mlxsw_sp_acl_ruleset_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
296
mlxsw_sp_acl_ruleset_ref_dec(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
330
rulei->act_block = mlxsw_afa_block_create(acl->mlxsw_sp->afa);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
343
void mlxsw_sp_acl_rulei_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
349
mlxsw_sp_port_range_reg_put(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
352
mlxsw_sp_port_range_reg_put(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
416
int mlxsw_sp_acl_rulei_act_fwd(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
431
if (mlxsw_sp_port->mlxsw_sp != mlxsw_sp) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
448
int mlxsw_sp_acl_rulei_act_mirror(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
472
int mlxsw_sp_acl_rulei_act_vlan(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
489
dev_err(mlxsw_sp->bus_info->dev, "Unsupported VLAN protocol %#04x\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
499
dev_err(mlxsw_sp->bus_info->dev, "Unsupported VLAN action\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
504
int mlxsw_sp_acl_rulei_act_priority(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
584
mlxsw_sp_acl_rulei_act_mangle_field(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
604
static int mlxsw_sp1_acl_rulei_act_mangle_field(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
611
err = mlxsw_sp_acl_rulei_act_mangle_field(mlxsw_sp, rulei, mact, val, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
635
static int mlxsw_sp2_acl_rulei_act_mangle_field(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
642
err = mlxsw_sp_acl_rulei_act_mangle_field(mlxsw_sp, rulei, mact, val, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
714
int mlxsw_sp_acl_rulei_act_mangle(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
720
const struct mlxsw_sp_acl_rulei_ops *acl_rulei_ops = mlxsw_sp->acl_rulei_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
730
return acl_rulei_ops->act_mangle_field(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
740
int mlxsw_sp_acl_rulei_act_police(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
758
int mlxsw_sp_acl_rulei_act_count(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
772
int mlxsw_sp_acl_rulei_act_fid_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
779
int mlxsw_sp_acl_rulei_act_ignore(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
788
int mlxsw_sp_acl_rulei_act_sample(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
814
mlxsw_sp_acl_rule_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
834
rule->rulei = mlxsw_sp_acl_rulei_create(mlxsw_sp->acl, afa_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
845
mlxsw_sp_acl_ruleset_ref_dec(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
849
void mlxsw_sp_acl_rule_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
854
mlxsw_sp_acl_rulei_destroy(mlxsw_sp, rule->rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
856
mlxsw_sp_acl_ruleset_ref_dec(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
859
int mlxsw_sp_acl_rule_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
867
err = ops->rule_add(mlxsw_sp, ruleset->priv, rule->priv, rule->rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
882
err = mlxsw_sp_acl_ruleset_block_bind(mlxsw_sp, ruleset, block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
887
mutex_lock(&mlxsw_sp->acl->rules_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
888
list_add_tail(&rule->list, &mlxsw_sp->acl->rules);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
889
mutex_unlock(&mlxsw_sp->acl->rules_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
899
ops->rule_del(mlxsw_sp, rule->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
903
void mlxsw_sp_acl_rule_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
913
mutex_lock(&mlxsw_sp->acl->rules_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
915
mutex_unlock(&mlxsw_sp->acl->rules_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
918
mlxsw_sp_acl_ruleset_block_unbind(mlxsw_sp, ruleset, block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
921
ops->rule_del(mlxsw_sp, rule->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
924
int mlxsw_sp_acl_rule_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
935
return ops->rule_action_replace(mlxsw_sp, rule->priv, rule->rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
939
mlxsw_sp_acl_rule_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
94
struct mlxsw_sp_fid *mlxsw_sp_acl_dummy_fid(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
953
static int mlxsw_sp_acl_rule_activity_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
96
return mlxsw_sp->acl->dummy_fid;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
961
err = ops->rule_activity_get(mlxsw_sp, rule->priv, &active);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
976
err = mlxsw_sp_acl_rule_activity_update(acl->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
120
struct mlxsw_sp *mlxsw_sp = aregion->region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
125
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_MAX_LARGE_KEY_ID))
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
128
max_lkey_id = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_MAX_LARGE_KEY_ID);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
227
struct mlxsw_sp *mlxsw_sp = region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
228
struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
274
int mlxsw_sp_acl_atcam_region_associate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
282
max_regions = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_MAX_REGIONS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
287
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(perar), perar_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
315
mlxsw_sp_acl_atcam_region_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
339
err = mlxsw_sp_acl_ctcam_region_init(mlxsw_sp, &aregion->cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
378
mlxsw_sp_acl_atcam_region_entry_insert(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
390
err = mlxsw_sp_acl_tcam_priority_get(mlxsw_sp, rulei, &priority, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
409
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptce3), ptce3_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
421
mlxsw_sp_acl_atcam_region_entry_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
438
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptce3), ptce3_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
443
mlxsw_sp_acl_atcam_region_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
455
err = mlxsw_sp_acl_tcam_priority_get(mlxsw_sp, rulei, &priority, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
467
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptce3), ptce3_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
471
__mlxsw_sp_acl_atcam_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
478
struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
520
err = mlxsw_sp_acl_erp_bf_insert(mlxsw_sp, aregion, erp_mask, aentry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
524
err = mlxsw_sp_acl_atcam_region_entry_insert(mlxsw_sp, aregion, aentry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
532
mlxsw_sp_acl_erp_bf_remove(mlxsw_sp, aregion, erp_mask, aentry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
543
__mlxsw_sp_acl_atcam_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
547
mlxsw_sp_acl_atcam_region_entry_remove(mlxsw_sp, aregion, aentry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
548
mlxsw_sp_acl_erp_bf_remove(mlxsw_sp, aregion, aentry->erp_mask, aentry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
556
__mlxsw_sp_acl_atcam_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
561
return mlxsw_sp_acl_atcam_region_entry_action_replace(mlxsw_sp, aregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
565
int mlxsw_sp_acl_atcam_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
573
err = __mlxsw_sp_acl_atcam_entry_add(mlxsw_sp, aregion, aentry, rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
580
trace_mlxsw_sp_acl_atcam_entry_add_ctcam_spill(mlxsw_sp, aregion);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
581
err = mlxsw_sp_acl_ctcam_entry_add(mlxsw_sp, &aregion->cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
590
void mlxsw_sp_acl_atcam_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
596
mlxsw_sp_acl_ctcam_entry_del(mlxsw_sp, &aregion->cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
599
__mlxsw_sp_acl_atcam_entry_del(mlxsw_sp, aregion, aentry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
603
mlxsw_sp_acl_atcam_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
611
err = mlxsw_sp_acl_ctcam_entry_action_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
616
err = __mlxsw_sp_acl_atcam_entry_action_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
623
int mlxsw_sp_acl_atcam_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
626
return mlxsw_sp_acl_erps_init(mlxsw_sp, atcam);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
629
void mlxsw_sp_acl_atcam_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
632
mlxsw_sp_acl_erps_fini(mlxsw_sp, atcam);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
428
mlxsw_sp_acl_bf_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
441
bf_index = mlxsw_sp->acl_bf_ops->index_get(bf, aregion, aentry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
458
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(peabfe), peabfe_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
472
mlxsw_sp_acl_bf_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
484
bf_index = mlxsw_sp->acl_bf_ops->index_get(bf, aregion, aentry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
495
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(peabfe), peabfe_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
504
mlxsw_sp_acl_bf_init(struct mlxsw_sp *mlxsw_sp, unsigned int num_erp_banks)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
509
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_MAX_BF_LOG))
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c
515
bf_bank_size = 1 << MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_MAX_BF_LOG);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
101
mlxsw_sp_acl_ctcam_region_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
117
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptce2), ptce2_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
126
struct mlxsw_sp *mlxsw_sp = region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
129
max_tcam_rules = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_MAX_TCAM_RULES);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
132
return mlxsw_sp_acl_ctcam_region_resize(mlxsw_sp, region, new_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
14
mlxsw_sp_acl_ctcam_region_resize(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
142
struct mlxsw_sp *mlxsw_sp = region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
144
mlxsw_sp_acl_ctcam_region_move(mlxsw_sp, region,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
157
mlxsw_sp_acl_ctcam_region_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
188
int mlxsw_sp_acl_ctcam_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
202
err = mlxsw_sp_acl_ctcam_region_entry_insert(mlxsw_sp, cregion, centry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
214
void mlxsw_sp_acl_ctcam_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
219
mlxsw_sp_acl_ctcam_region_entry_remove(mlxsw_sp, cregion, centry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
224
int mlxsw_sp_acl_ctcam_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
229
return mlxsw_sp_acl_ctcam_region_entry_action_replace(mlxsw_sp, cregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
23
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptar), ptar_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
27
mlxsw_sp_acl_ctcam_region_move(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
36
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(prcr), prcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
40
mlxsw_sp_acl_ctcam_region_entry_insert(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
47
struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
55
err = mlxsw_sp_acl_tcam_priority_get(mlxsw_sp, rulei, &priority,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
75
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptce2), ptce2_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
87
mlxsw_sp_acl_ctcam_region_entry_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
96
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptce2), ptce2_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1033
int mlxsw_sp_acl_erp_bf_insert(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1046
return mlxsw_sp_acl_bf_entry_add(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1051
void mlxsw_sp_acl_erp_bf_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1064
mlxsw_sp_acl_bf_entry_del(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1348
struct mlxsw_sp *mlxsw_sp = aregion->region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1352
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(percr), percr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1358
struct mlxsw_sp *mlxsw_sp = aregion->region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1363
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pererp), pererp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1367
mlxsw_sp_acl_erp_hints_check(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1382
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to get ERP stats\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1388
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to get ERP hints stats\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1409
struct mlxsw_sp *mlxsw_sp = aregion->region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1419
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to create ERP hints\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1422
err = mlxsw_sp_acl_erp_hints_check(mlxsw_sp, aregion, hints,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1481
mlxsw_sp_acl_erp_tables_sizes_query(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1486
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_ERPT_ENTRIES_2KB) ||
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1487
!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_ERPT_ENTRIES_4KB) ||
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1488
!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_ERPT_ENTRIES_8KB) ||
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1489
!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_ERPT_ENTRIES_12KB))
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1492
size = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_ERPT_ENTRIES_2KB);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1495
size = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_ERPT_ENTRIES_4KB);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1498
size = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_ERPT_ENTRIES_8KB);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1501
size = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_ERPT_ENTRIES_12KB);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1507
static int mlxsw_sp_acl_erp_tables_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1513
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_MAX_ERPT_BANK_SIZE) ||
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1514
!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_MAX_ERPT_BANKS))
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1516
erpt_bank_size = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1518
erp_core->num_erp_banks = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1532
erp_core->bf = mlxsw_sp_acl_bf_init(mlxsw_sp, erp_core->num_erp_banks);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1539
err = mlxsw_sp_acl_erp_tables_sizes_query(mlxsw_sp, erp_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1553
static void mlxsw_sp_acl_erp_tables_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1560
int mlxsw_sp_acl_erps_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1569
erp_core->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1572
err = mlxsw_sp_acl_erp_tables_init(mlxsw_sp, erp_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1583
void mlxsw_sp_acl_erps_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
1586
mlxsw_sp_acl_erp_tables_fini(mlxsw_sp, atcam->erp_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
184
struct mlxsw_sp *mlxsw_sp = region->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
193
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(percr), percr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
27
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
388
struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
401
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(perpt), perpt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
408
struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
420
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(perpt), perpt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
428
struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
436
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pererp), pererp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
443
struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
454
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pererp), pererp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
534
err = mlxsw_sp_acl_bf_entry_add(aregion->region->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
546
mlxsw_sp_acl_bf_entry_del(aregion->region->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
561
mlxsw_sp_acl_bf_entry_del(aregion->region->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
650
struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
660
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pererp), pererp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
667
struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c
677
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pererp), pererp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
105
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_PBS,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
11
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
112
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
114
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_PBS,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
121
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
123
return mlxsw_sp_flow_counter_alloc(mlxsw_sp, p_counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
129
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
131
mlxsw_sp_flow_counter_free(mlxsw_sp, counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
141
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
145
err = mlxsw_sp_span_agent_get(mlxsw_sp, p_span_id, &agent_parms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
149
mlxsw_sp_port = mlxsw_sp->ports[local_in_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
157
mlxsw_sp_span_agent_put(mlxsw_sp, *p_span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
165
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
167
mlxsw_sp_port = mlxsw_sp->ports[local_in_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
169
mlxsw_sp_span_agent_put(mlxsw_sp, span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
177
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
182
return mlxsw_sp_policer_add(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
189
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
191
mlxsw_sp_policer_del(mlxsw_sp, MLXSW_SP_POLICER_TYPE_SINGLE_RATE,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
22
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ACTSET,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
241
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
248
err = mlxsw_sp_sample_trigger_params_set(mlxsw_sp, &trigger, ¶ms,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
253
err = mlxsw_sp_span_agent_get(mlxsw_sp, p_span_id, &agent_parms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
259
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
269
mlxsw_sp_span_agent_put(mlxsw_sp, *p_span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
27
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pefa), pefa_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
271
mlxsw_sp_sample_trigger_params_unset(mlxsw_sp, &trigger);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
282
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
284
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
286
mlxsw_sp_span_agent_put(mlxsw_sp, span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
287
mlxsw_sp_sample_trigger_params_unset(mlxsw_sp, &trigger);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
307
int mlxsw_sp_afa_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
309
mlxsw_sp->afa = mlxsw_afa_create(MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
311
mlxsw_sp->afa_ops, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
312
return PTR_ERR_OR_ZERO(mlxsw_sp->afa);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
315
void mlxsw_sp_afa_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
317
mlxsw_afa_destroy(mlxsw_sp->afa);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
34
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ACTSET,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
56
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
60
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ACTSET,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
73
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
78
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(pefa), pefa_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
88
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
93
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_PBS,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c
98
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ppbs), ppbs_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.h
10
void mlxsw_sp_afa_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.h
9
int mlxsw_sp_afa_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1008
mlxsw_sp_acl_tcam_chunk_destroy(mlxsw_sp, vchunk->chunk2);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1009
mlxsw_sp_acl_tcam_chunk_destroy(mlxsw_sp, vchunk->chunk);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1013
mlxsw_sp_acl_tcam_vregion_put(mlxsw_sp, vchunk->vregion);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1019
mlxsw_sp_acl_tcam_vchunk_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1035
return mlxsw_sp_acl_tcam_vchunk_create(mlxsw_sp, vgroup,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1040
mlxsw_sp_acl_tcam_vchunk_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1045
mlxsw_sp_acl_tcam_vchunk_destroy(mlxsw_sp, vchunk);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1049
mlxsw_sp_acl_tcam_entry_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1053
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1063
err = ops->entry_add(mlxsw_sp, chunk->region->priv, chunk->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1075
static void mlxsw_sp_acl_tcam_entry_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1078
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1080
ops->entry_del(mlxsw_sp, entry->chunk->region->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1086
mlxsw_sp_acl_tcam_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1091
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1093
return ops->entry_action_replace(mlxsw_sp, region->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1098
mlxsw_sp_acl_tcam_entry_activity_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1102
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1104
return ops->entry_activity_get(mlxsw_sp, entry->chunk->region->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1108
static int mlxsw_sp_acl_tcam_ventry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1117
vchunk = mlxsw_sp_acl_tcam_vchunk_get(mlxsw_sp, vgroup, rulei->priority,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1127
ventry->entry = mlxsw_sp_acl_tcam_entry_create(mlxsw_sp, ventry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1142
mlxsw_sp_acl_tcam_vchunk_put(mlxsw_sp, vchunk);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1146
static void mlxsw_sp_acl_tcam_ventry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1155
mlxsw_sp_acl_tcam_entry_destroy(mlxsw_sp, ventry->entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1157
mlxsw_sp_acl_tcam_vchunk_put(mlxsw_sp, vchunk);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1161
mlxsw_sp_acl_tcam_ventry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1167
return mlxsw_sp_acl_tcam_entry_action_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1173
mlxsw_sp_acl_tcam_ventry_activity_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1181
err = mlxsw_sp_acl_tcam_entry_activity_get(mlxsw_sp, ventry->entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1188
mlxsw_sp_acl_tcam_ventry_migrate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1202
new_entry = mlxsw_sp_acl_tcam_entry_create(mlxsw_sp, ventry, chunk);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1205
mlxsw_sp_acl_tcam_entry_destroy(mlxsw_sp, ventry->entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1211
mlxsw_sp_acl_tcam_vchunk_migrate_start(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1220
new_chunk = mlxsw_sp_acl_tcam_chunk_create(mlxsw_sp, vchunk, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1232
mlxsw_sp_acl_tcam_vchunk_migrate_end(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1236
mlxsw_sp_acl_tcam_chunk_destroy(mlxsw_sp, vchunk->chunk2);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1242
mlxsw_sp_acl_tcam_vchunk_migrate_one(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1252
err = mlxsw_sp_acl_tcam_vchunk_migrate_start(mlxsw_sp, vchunk,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1282
err = mlxsw_sp_acl_tcam_ventry_migrate(mlxsw_sp, ventry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1316
mlxsw_sp_acl_tcam_vchunk_migrate_end(mlxsw_sp, vchunk, ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1321
mlxsw_sp_acl_tcam_vchunk_migrate_all(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1342
err = mlxsw_sp_acl_tcam_vchunk_migrate_one(mlxsw_sp, vchunk,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1352
mlxsw_sp_acl_tcam_vregion_migrate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1359
trace_mlxsw_sp_acl_tcam_vregion_migrate(mlxsw_sp, vregion);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1360
err = mlxsw_sp_acl_tcam_vchunk_migrate_all(mlxsw_sp, vregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1372
err2 = mlxsw_sp_acl_tcam_vchunk_migrate_all(mlxsw_sp, vregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1375
trace_mlxsw_sp_acl_tcam_vregion_rehash_rollback_failed(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1377
dev_err(mlxsw_sp->bus_info->dev, "Failed to rollback during vregion migration fail\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1381
trace_mlxsw_sp_acl_tcam_vregion_migrate_end(mlxsw_sp, vregion);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1392
mlxsw_sp_acl_tcam_vregion_rehash_start(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1396
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1402
trace_mlxsw_sp_acl_tcam_vregion_rehash(mlxsw_sp, vregion);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1408
new_region = mlxsw_sp_acl_tcam_region_create(mlxsw_sp, vregion->tcam,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1420
err = mlxsw_sp_acl_tcam_group_region_attach(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1436
mlxsw_sp_acl_tcam_region_destroy(mlxsw_sp, new_region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1443
mlxsw_sp_acl_tcam_vregion_rehash_end(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1448
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1451
mlxsw_sp_acl_tcam_group_region_detach(mlxsw_sp, unused_region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1452
mlxsw_sp_acl_tcam_region_destroy(mlxsw_sp, unused_region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1458
mlxsw_sp_acl_tcam_vregion_rehash(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1470
err = mlxsw_sp_acl_tcam_vregion_rehash_start(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1474
dev_err(mlxsw_sp->bus_info->dev, "Failed get rehash hints\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1479
err = mlxsw_sp_acl_tcam_vregion_migrate(mlxsw_sp, vregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1482
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to migrate vregion\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1487
mlxsw_sp_acl_tcam_vregion_rehash_end(mlxsw_sp, vregion, ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1497
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1499
mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1500
tcam = mlxsw_sp_acl_to_tcam(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1514
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1520
mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1521
tcam = mlxsw_sp_acl_to_tcam(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1544
static int mlxsw_sp_acl_tcam_rehash_params_register(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1546
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1548
if (!mlxsw_sp->acl_tcam_ops->region_rehash_hints_get)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1556
mlxsw_sp_acl_tcam_rehash_params_unregister(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1558
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1560
if (!mlxsw_sp->acl_tcam_ops->region_rehash_hints_get)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1567
int mlxsw_sp_acl_tcam_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1570
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1581
err = mlxsw_sp_acl_tcam_rehash_params_register(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1585
max_tcam_regions = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1587
max_regions = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_MAX_REGIONS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1596
max_groups = MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_MAX_GROUPS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1599
tcam->max_group_size = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1604
err = ops->init(mlxsw_sp, tcam->priv, tcam);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
161
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1613
mlxsw_sp_acl_tcam_rehash_params_unregister(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1619
void mlxsw_sp_acl_tcam_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1622
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1624
ops->fini(mlxsw_sp, tcam->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1627
mlxsw_sp_acl_tcam_rehash_params_unregister(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1689
mlxsw_sp_acl_tcam_flower_ruleset_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1698
return mlxsw_sp_acl_tcam_vgroup_add(mlxsw_sp, tcam, &ruleset->vgroup,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1706
mlxsw_sp_acl_tcam_flower_ruleset_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1715
mlxsw_sp_acl_tcam_flower_ruleset_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1722
return mlxsw_sp_acl_tcam_group_bind(mlxsw_sp, &ruleset->vgroup.group,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1727
mlxsw_sp_acl_tcam_flower_ruleset_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1734
mlxsw_sp_acl_tcam_group_unbind(mlxsw_sp, &ruleset->vgroup.group,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1747
mlxsw_sp_acl_tcam_flower_rule_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1754
return mlxsw_sp_acl_tcam_ventry_add(mlxsw_sp, &ruleset->vgroup,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1759
mlxsw_sp_acl_tcam_flower_rule_del(struct mlxsw_sp *mlxsw_sp, void *rule_priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1763
mlxsw_sp_acl_tcam_ventry_del(mlxsw_sp, &rule->ventry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1767
mlxsw_sp_acl_tcam_flower_rule_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1775
mlxsw_sp_acl_tcam_flower_rule_activity_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1780
return mlxsw_sp_acl_tcam_ventry_activity_get(mlxsw_sp, &rule->ventry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1808
mlxsw_sp_acl_tcam_mr_ruleset_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1818
err = mlxsw_sp_acl_tcam_vgroup_add(mlxsw_sp, tcam, &ruleset->vgroup,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1832
ruleset->vchunk = mlxsw_sp_acl_tcam_vchunk_get(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1848
mlxsw_sp_acl_tcam_mr_ruleset_del(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1852
mlxsw_sp_acl_tcam_vchunk_put(mlxsw_sp, ruleset->vchunk);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1857
mlxsw_sp_acl_tcam_mr_ruleset_bind(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1866
mlxsw_sp_acl_tcam_mr_ruleset_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1882
mlxsw_sp_acl_tcam_mr_rule_add(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1889
return mlxsw_sp_acl_tcam_ventry_add(mlxsw_sp, &ruleset->vgroup,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1894
mlxsw_sp_acl_tcam_mr_rule_del(struct mlxsw_sp *mlxsw_sp, void *rule_priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1898
mlxsw_sp_acl_tcam_ventry_del(mlxsw_sp, &rule->ventry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1902
mlxsw_sp_acl_tcam_mr_rule_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1908
return mlxsw_sp_acl_tcam_ventry_action_replace(mlxsw_sp, &rule->ventry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1913
mlxsw_sp_acl_tcam_mr_rule_activity_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1942
mlxsw_sp_acl_tcam_profile_ops(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
207
static int mlxsw_sp_acl_tcam_group_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
226
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pagt), pagt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
24
size_t mlxsw_sp_acl_tcam_priv_size(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
257
mlxsw_sp_acl_tcam_vgroup_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
26
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
307
mlxsw_sp_acl_tcam_group_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
318
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ppbt), ppbt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
322
mlxsw_sp_acl_tcam_group_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
333
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ppbt), ppbt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
35
int mlxsw_sp_acl_tcam_priority_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
383
mlxsw_sp_acl_tcam_group_region_attach(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
416
err = mlxsw_sp_acl_tcam_group_update(mlxsw_sp, group);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
432
mlxsw_sp_acl_tcam_group_region_detach(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
440
mlxsw_sp_acl_tcam_group_update(mlxsw_sp, group);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
445
mlxsw_sp_acl_tcam_vgroup_vregion_attach(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
46
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, KVD_SIZE))
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
462
err = mlxsw_sp_acl_tcam_group_region_attach(mlxsw_sp, &vgroup->group,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
476
mlxsw_sp_acl_tcam_vgroup_vregion_detach(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
481
mlxsw_sp_acl_tcam_group_region_detach(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
483
mlxsw_sp_acl_tcam_group_region_detach(mlxsw_sp, vregion->region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
50
max_priority = MLXSW_CORE_RES_GET(mlxsw_sp->core, KVD_SIZE) - 1;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
570
mlxsw_sp_acl_tcam_region_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
590
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptar), ptar_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
598
mlxsw_sp_acl_tcam_region_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
606
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptar), ptar_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
610
mlxsw_sp_acl_tcam_region_enable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
617
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pacl), pacl_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
621
mlxsw_sp_acl_tcam_region_disable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
628
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pacl), pacl_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
632
mlxsw_sp_acl_tcam_region_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
637
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
644
region->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
652
err = ops->region_associate(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
657
err = mlxsw_sp_acl_tcam_region_alloc(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
661
err = mlxsw_sp_acl_tcam_region_enable(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
665
err = ops->region_init(mlxsw_sp, region->priv, tcam->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
673
mlxsw_sp_acl_tcam_region_disable(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
675
mlxsw_sp_acl_tcam_region_free(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
685
mlxsw_sp_acl_tcam_region_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
688
struct mlxsw_sp_acl_tcam *tcam = mlxsw_sp_acl_to_tcam(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
689
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
691
ops->region_fini(mlxsw_sp, region->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
692
mlxsw_sp_acl_tcam_region_disable(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
693
mlxsw_sp_acl_tcam_region_free(mlxsw_sp, region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
710
mlxsw_sp_acl_tcam_vregion_rehash(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
722
mlxsw_sp_acl_tcam_vregion_rehash(vregion->mlxsw_sp, vregion, &credits);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
770
mlxsw_sp_acl_tcam_vregion_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
775
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
776
struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
787
vregion->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
797
vregion->region = mlxsw_sp_acl_tcam_region_create(mlxsw_sp, tcam,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
804
err = mlxsw_sp_acl_tcam_vgroup_vregion_attach(mlxsw_sp, vgroup, vregion,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
822
mlxsw_sp_acl_tcam_region_destroy(mlxsw_sp, vregion->region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
831
mlxsw_sp_acl_tcam_vregion_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
834
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
848
mlxsw_sp_acl_tcam_vgroup_vregion_detach(mlxsw_sp, vregion);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
850
mlxsw_sp_acl_tcam_region_destroy(mlxsw_sp, vregion->region2);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
851
mlxsw_sp_acl_tcam_region_destroy(mlxsw_sp, vregion->region);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
858
mlxsw_sp_acl_tcam_vregion_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
887
return mlxsw_sp_acl_tcam_vregion_create(mlxsw_sp, vgroup, priority,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
892
mlxsw_sp_acl_tcam_vregion_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
897
mlxsw_sp_acl_tcam_vregion_destroy(mlxsw_sp, vregion);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
901
mlxsw_sp_acl_tcam_chunk_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
905
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
919
mlxsw_sp_acl_tcam_chunk_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
922
const struct mlxsw_sp_acl_tcam_ops *ops = mlxsw_sp->acl_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
929
mlxsw_sp_acl_tcam_vchunk_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
950
vregion = mlxsw_sp_acl_tcam_vregion_get(mlxsw_sp, vgroup,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
965
vchunk->chunk = mlxsw_sp_acl_tcam_chunk_create(mlxsw_sp, vchunk,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
991
mlxsw_sp_acl_tcam_vregion_put(mlxsw_sp, vregion);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
998
mlxsw_sp_acl_tcam_vchunk_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
113
mlxsw_sp_acl_ctcam_region_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
122
int mlxsw_sp_acl_ctcam_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
128
void mlxsw_sp_acl_ctcam_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
132
int mlxsw_sp_acl_ctcam_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
206
int mlxsw_sp_acl_atcam_region_associate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
209
mlxsw_sp_acl_atcam_region_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
220
int mlxsw_sp_acl_atcam_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
225
void mlxsw_sp_acl_atcam_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
229
int mlxsw_sp_acl_atcam_entry_action_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
233
int mlxsw_sp_acl_atcam_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
235
void mlxsw_sp_acl_atcam_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
262
int mlxsw_sp_acl_erp_bf_insert(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
266
void mlxsw_sp_acl_erp_bf_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
276
int mlxsw_sp_acl_erps_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
278
void mlxsw_sp_acl_erps_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
28
size_t mlxsw_sp_acl_tcam_priv_size(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
29
int mlxsw_sp_acl_tcam_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
290
mlxsw_sp_acl_bf_entry_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
296
mlxsw_sp_acl_bf_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
302
mlxsw_sp_acl_bf_init(struct mlxsw_sp *mlxsw_sp, unsigned int num_erp_banks);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
31
void mlxsw_sp_acl_tcam_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
33
int mlxsw_sp_acl_tcam_priority_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
39
int (*ruleset_add)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
43
void (*ruleset_del)(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
44
int (*ruleset_bind)(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
47
void (*ruleset_unbind)(struct mlxsw_sp *mlxsw_sp, void *ruleset_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
52
int (*rule_add)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
55
void (*rule_del)(struct mlxsw_sp *mlxsw_sp, void *rule_priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
56
int (*rule_action_replace)(struct mlxsw_sp *mlxsw_sp, void *rule_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
58
int (*rule_activity_get)(struct mlxsw_sp *mlxsw_sp, void *rule_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
63
mlxsw_sp_acl_tcam_profile_ops(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h
85
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1001
return __mlxsw_sp_sb_cms_init(mlxsw_sp_port->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1004
mlxsw_sp->sb_vals->cms_egress,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1005
mlxsw_sp->sb_vals->cms_egress_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1008
static int mlxsw_sp_cpu_port_sb_cms_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1010
return __mlxsw_sp_sb_cms_init(mlxsw_sp, 0, MLXSW_REG_SBXX_DIR_EGRESS,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1011
mlxsw_sp->sb_vals->cms_cpu,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1012
mlxsw_sp->sb_vals->cms_cpu_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1066
static int mlxsw_sp_sb_pms_init(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1072
for (i = 0; i < mlxsw_sp->sb_vals->pool_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1078
des = &mlxsw_sp->sb_vals->pool_dess[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1082
min_buff = mlxsw_sp_bytes_cells(mlxsw_sp, pm->min_buff);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1084
if (mlxsw_sp_sb_pool_is_static(mlxsw_sp, i))
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1085
max_buff = mlxsw_sp_bytes_cells(mlxsw_sp, max_buff);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1086
err = mlxsw_sp_sb_pm_write(mlxsw_sp, local_port, i, min_buff,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1096
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1098
return mlxsw_sp_sb_pms_init(mlxsw_sp, mlxsw_sp_port->local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1099
mlxsw_sp->sb_vals->pms, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1102
static int mlxsw_sp_cpu_port_sb_pms_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1104
return mlxsw_sp_sb_pms_init(mlxsw_sp, 0, mlxsw_sp->sb_vals->pms_cpu,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1133
static int mlxsw_sp_sb_mms_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1139
for (i = 0; i < mlxsw_sp->sb_vals->mms_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1144
mc = &mlxsw_sp->sb_vals->mms[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1145
des = &mlxsw_sp->sb_vals->pool_dess[mc->pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1149
min_buff = mlxsw_sp_bytes_cells(mlxsw_sp, mc->min_buff);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1152
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sbmm), sbmm_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1159
static void mlxsw_sp_pool_count(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1164
for (i = 0; i < mlxsw_sp->sb_vals->pool_count; ++i) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1165
if (mlxsw_sp->sb_vals->pool_dess[i].dir ==
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1247
int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1254
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, CELL_SIZE))
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1257
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, GUARANTEED_SHARED_BUFFER))
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1260
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_HEADROOM_SIZE))
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1263
mlxsw_sp->sb = kzalloc_obj(*mlxsw_sp->sb);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1264
if (!mlxsw_sp->sb)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1266
mlxsw_sp->sb->cell_size = MLXSW_CORE_RES_GET(mlxsw_sp->core, CELL_SIZE);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1267
mlxsw_sp->sb->sb_size = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1269
max_headroom_size = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1272
mlxsw_sp->sb->max_headroom_cells = max_headroom_size /
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1273
mlxsw_sp->sb->cell_size;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1275
err = mlxsw_sp_sb_ports_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1278
err = mlxsw_sp_sb_prs_init(mlxsw_sp, mlxsw_sp->sb_vals->prs,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1279
mlxsw_sp->sb_vals->pool_dess,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
128
u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1280
mlxsw_sp->sb_vals->pool_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1283
err = mlxsw_sp_cpu_port_sb_cms_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1286
err = mlxsw_sp_cpu_port_sb_pms_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1289
err = mlxsw_sp_sb_mms_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1292
mlxsw_sp_pool_count(mlxsw_sp, &ing_pool_count, &eg_pool_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1293
err = devl_sb_register(priv_to_devlink(mlxsw_sp->core), 0,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1294
mlxsw_sp->sb->sb_size,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
130
return mlxsw_sp->sb->cell_size * cells;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1309
mlxsw_sp_sb_ports_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1311
kfree(mlxsw_sp->sb);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1315
void mlxsw_sp_buffers_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1317
devl_sb_unregister(priv_to_devlink(mlxsw_sp->core), 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1318
mlxsw_sp_sb_ports_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1319
kfree(mlxsw_sp->sb);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
133
u32 mlxsw_sp_bytes_cells(const struct mlxsw_sp *mlxsw_sp, u32 bytes)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
135
return DIV_ROUND_UP(bytes, mlxsw_sp->sb->cell_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1358
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1362
dir = mlxsw_sp->sb_vals->pool_dess[pool_index].dir;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1363
pr = mlxsw_sp_sb_pr_get(mlxsw_sp, pool_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1365
pool_info->size = mlxsw_sp_cells_bytes(mlxsw_sp, pr->size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1367
pool_info->cell_size = mlxsw_sp->sb->cell_size;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1376
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1377
u32 pool_size = mlxsw_sp_bytes_cells(mlxsw_sp, size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1382
pr = &mlxsw_sp->sb_vals->prs[pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1384
if (size > MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1400
return mlxsw_sp_sb_pr_write(mlxsw_sp, pool_index, mode,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1406
static u32 mlxsw_sp_sb_threshold_out(struct mlxsw_sp *mlxsw_sp, u16 pool_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1409
struct mlxsw_sp_sb_pr *pr = mlxsw_sp_sb_pr_get(mlxsw_sp, pool_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1413
return mlxsw_sp_cells_bytes(mlxsw_sp, max_buff);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1416
static int mlxsw_sp_sb_threshold_in(struct mlxsw_sp *mlxsw_sp, u16 pool_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1420
struct mlxsw_sp_sb_pr *pr = mlxsw_sp_sb_pr_get(mlxsw_sp, pool_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1433
*p_max_buff = mlxsw_sp_bytes_cells(mlxsw_sp, threshold);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1444
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1446
struct mlxsw_sp_sb_pm *pm = mlxsw_sp_sb_pm_get(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1449
*p_threshold = mlxsw_sp_sb_threshold_out(mlxsw_sp, pool_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1460
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1470
err = mlxsw_sp_sb_threshold_in(mlxsw_sp, pool_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1475
return mlxsw_sp_sb_pm_write(mlxsw_sp, local_port, pool_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
148
static struct mlxsw_sp_sb_pr *mlxsw_sp_sb_pr_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1486
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1490
struct mlxsw_sp_sb_cm *cm = mlxsw_sp_sb_cm_get(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1493
*p_threshold = mlxsw_sp_sb_threshold_out(mlxsw_sp, cm->pool_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1507
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
151
return &mlxsw_sp->sb->prs[pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1520
if (dir != mlxsw_sp->sb_vals->pool_dess[pool_index].dir) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1526
cm = &mlxsw_sp->sb_vals->cms_ingress[tc_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1528
cm = &mlxsw_sp->sb_vals->cms_egress[tc_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1540
err = mlxsw_sp_sb_threshold_in(mlxsw_sp, pool_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1545
return mlxsw_sp_sb_cm_write(mlxsw_sp, local_port, pg_buff,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1562
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1575
if (!mlxsw_sp->ports[local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1583
cm = mlxsw_sp_sb_cm_get(mlxsw_sp, local_port, i,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1594
if (!mlxsw_sp->ports[local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1597
cm = mlxsw_sp_sb_cm_get(mlxsw_sp, local_port, i,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1611
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
162
static struct mlxsw_sp_sb_cm *mlxsw_sp_sb_cm_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1640
if (!mlxsw_sp->ports[local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1655
for (i = 0; i < mlxsw_sp->sb_vals->pool_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1656
err = mlxsw_sp_sb_pm_occ_query(mlxsw_sp, local_port, i,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
166
struct mlxsw_sp_sb_port *sb_port = &mlxsw_sp->sb->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1690
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1718
if (!mlxsw_sp->ports[local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1733
for (i = 0; i < mlxsw_sp->sb_vals->pool_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1734
err = mlxsw_sp_sb_pm_occ_clear(mlxsw_sp, local_port, i,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
175
static struct mlxsw_sp_sb_pm *mlxsw_sp_sb_pm_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1767
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1769
struct mlxsw_sp_sb_pm *pm = mlxsw_sp_sb_pm_get(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1772
*p_cur = mlxsw_sp_cells_bytes(mlxsw_sp, pm->occ.cur);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1773
*p_max = mlxsw_sp_cells_bytes(mlxsw_sp, pm->occ.max);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
178
return &mlxsw_sp->sb->ports[local_port].pms[pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1784
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1788
struct mlxsw_sp_sb_cm *cm = mlxsw_sp_sb_cm_get(mlxsw_sp, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1791
*p_cur = mlxsw_sp_cells_bytes(mlxsw_sp, cm->occ.cur);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
1792
*p_max = mlxsw_sp_cells_bytes(mlxsw_sp, cm->occ.max);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
181
static int mlxsw_sp_sb_pr_write(struct mlxsw_sp *mlxsw_sp, u16 pool_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
186
&mlxsw_sp->sb_vals->pool_dess[pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
193
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sbpr), sbpr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
198
size = mlxsw_sp_bytes_cells(mlxsw_sp, mlxsw_sp->sb->sb_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
199
pr = mlxsw_sp_sb_pr_get(mlxsw_sp, pool_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
205
static int mlxsw_sp_sb_pr_desc_write(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
217
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sbpr), sbpr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
220
static int mlxsw_sp_sb_cm_write(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
225
&mlxsw_sp->sb_vals->pool_dess[pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
232
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sbcm), sbcm_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
238
max_buff = mlxsw_sp_bytes_cells(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
239
mlxsw_sp->sb->sb_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
241
cm = mlxsw_sp_sb_cm_get(mlxsw_sp, local_port, pg_buff,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
250
static int mlxsw_sp_sb_pm_write(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
254
&mlxsw_sp->sb_vals->pool_dess[pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
261
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sbpm), sbpm_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
265
pm = mlxsw_sp_sb_pm_get(mlxsw_sp, local_port, pool_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
271
static int mlxsw_sp_sb_pm_occ_clear(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
275
&mlxsw_sp->sb_vals->pool_dess[pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
284
return mlxsw_reg_trans_query(mlxsw_sp->core, MLXSW_REG(sbpm), sbpm_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
297
static int mlxsw_sp_sb_pm_occ_query(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
301
&mlxsw_sp->sb_vals->pool_dess[pool_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
309
pm = mlxsw_sp_sb_pm_get(mlxsw_sp, local_port, pool_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
312
return mlxsw_reg_trans_query(mlxsw_sp->core, MLXSW_REG(sbpm), sbpm_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
348
static u16 mlxsw_sp_hdroom_buf_threshold_get(const struct mlxsw_sp *mlxsw_sp, int mtu)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
350
return 2 * mlxsw_sp_bytes_cells(mlxsw_sp, mtu);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
362
static u16 mlxsw_sp_hdroom_buf_delay_get(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
367
delay_cells = mlxsw_sp_bytes_cells(mlxsw_sp, hdroom->delay_bytes);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
377
return 2 * delay_cells + mlxsw_sp_bytes_cells(mlxsw_sp, hdroom->mtu);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
380
static u32 mlxsw_sp_hdroom_int_buf_size_get(struct mlxsw_sp *mlxsw_sp, int mtu, u32 speed)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
382
u32 buffsize = mlxsw_sp->sb_ops->int_buf_size_get(mtu, speed);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
384
return mlxsw_sp_bytes_cells(mlxsw_sp, buffsize) + 1;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
401
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
408
reserve_cells = mlxsw_sp_hdroom_int_buf_size_get(mlxsw_sp, max_mtu,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
428
thres_cells = mlxsw_sp_hdroom_buf_threshold_get(mlxsw_sp, hdroom->mtu);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
431
thres_cells = mlxsw_sp_hdroom_buf_threshold_get(mlxsw_sp, hdroom->mtu);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
432
delay_cells = mlxsw_sp_hdroom_buf_delay_get(mlxsw_sp, hdroom);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
455
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
476
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pbmc), pbmc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
500
err = mlxsw_reg_write(mlxsw_sp_port->mlxsw_sp->core, MLXSW_REG(pptb), pptb_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
520
err = mlxsw_reg_write(mlxsw_sp_port->mlxsw_sp->core, MLXSW_REG(sbib), sbib_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
528
static bool mlxsw_sp_hdroom_bufs_fit(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
538
return taken_headroom_cells <= mlxsw_sp->sb->max_headroom_cells;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
564
if (!mlxsw_sp_hdroom_bufs_fit(mlxsw_sp_port->mlxsw_sp, &tmp_hdroom) ||
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
565
!mlxsw_sp_hdroom_bufs_fit(mlxsw_sp_port->mlxsw_sp, hdroom))
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
604
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
621
hdroom.bufs.buf[9].size_cells = mlxsw_sp_bytes_cells(mlxsw_sp, size9);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
626
static int mlxsw_sp_sb_port_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
631
pms = kzalloc_objs(*pms, mlxsw_sp->sb_vals->pool_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
643
static int mlxsw_sp_sb_ports_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
645
unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
650
mlxsw_sp->sb->ports = kzalloc_objs(struct mlxsw_sp_sb_port, max_ports);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
651
if (!mlxsw_sp->sb->ports)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
654
prs = kzalloc_objs(*prs, mlxsw_sp->sb_vals->pool_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
659
mlxsw_sp->sb->prs = prs;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
662
err = mlxsw_sp_sb_port_init(mlxsw_sp, &mlxsw_sp->sb->ports[i]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
671
mlxsw_sp_sb_port_fini(&mlxsw_sp->sb->ports[i]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
672
kfree(mlxsw_sp->sb->prs);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
674
kfree(mlxsw_sp->sb->ports);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
678
static void mlxsw_sp_sb_ports_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
680
int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
684
mlxsw_sp_sb_port_fini(&mlxsw_sp->sb->ports[i]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
685
kfree(mlxsw_sp->sb->prs);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
686
kfree(mlxsw_sp->sb->ports);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
745
static int mlxsw_sp_sb_prs_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
751
u32 sb_cells = div_u64(mlxsw_sp->sb->sb_size, mlxsw_sp->sb->cell_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
767
size_cells = mlxsw_sp_bytes_cells(mlxsw_sp, size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
779
err = mlxsw_sp_sb_pr_write(mlxsw_sp, i, prs[i].mode,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
783
err = mlxsw_sp_sb_pr_write(mlxsw_sp, i, prs[i].mode,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
786
size_cells = mlxsw_sp_bytes_cells(mlxsw_sp, size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
787
err = mlxsw_sp_sb_pr_write(mlxsw_sp, i, prs[i].mode,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
794
err = mlxsw_sp_sb_pr_desc_write(mlxsw_sp, MLXSW_REG_SBXX_DIR_INGRESS,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
799
err = mlxsw_sp_sb_pr_desc_write(mlxsw_sp, MLXSW_REG_SBXX_DIR_EGRESS,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
941
mlxsw_sp_sb_pool_is_static(struct mlxsw_sp *mlxsw_sp, u16 pool_index)
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
943
struct mlxsw_sp_sb_pr *pr = mlxsw_sp_sb_pr_get(mlxsw_sp, pool_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
948
static int __mlxsw_sp_sb_cms_init(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
953
const struct mlxsw_sp_sb_vals *sb_vals = mlxsw_sp->sb_vals;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
968
min_buff = mlxsw_sp_bytes_cells(mlxsw_sp, cm->min_buff);
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
971
err = mlxsw_sp_sb_cm_write(mlxsw_sp, local_port, i,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
975
if (mlxsw_sp_sb_pool_is_static(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
977
max_buff = mlxsw_sp_bytes_cells(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
979
err = mlxsw_sp_sb_cm_write(mlxsw_sp, local_port, i,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
991
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
994
err = __mlxsw_sp_sb_cms_init(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
997
mlxsw_sp->sb_vals->cms_ingress,
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
998
mlxsw_sp->sb_vals->cms_ingress_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
100
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
120
int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
123
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
130
mlxsw_sp->counter_pool = pool;
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
150
err = mlxsw_sp_counter_sub_pools_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
166
void mlxsw_sp_counter_pool_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
168
struct mlxsw_sp_counter_pool *pool = mlxsw_sp->counter_pool;
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
169
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
171
mlxsw_sp_counter_sub_pools_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
180
int mlxsw_sp_counter_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
184
struct mlxsw_sp_counter_pool *pool = mlxsw_sp->counter_pool;
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
221
void mlxsw_sp_counter_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
225
struct mlxsw_sp_counter_pool *pool = mlxsw_sp->counter_pool;
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
52
static int mlxsw_sp_counter_sub_pools_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
54
struct mlxsw_sp_counter_pool *pool = mlxsw_sp->counter_pool;
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
55
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
66
if (!mlxsw_core_res_valid(mlxsw_sp->core, res_id))
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
68
sub_pool->entry_size = mlxsw_core_res_get(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
97
static void mlxsw_sp_counter_sub_pools_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c
99
struct mlxsw_sp_counter_pool *pool = mlxsw_sp->counter_pool;
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h
15
int mlxsw_sp_counter_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h
18
void mlxsw_sp_counter_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h
21
int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h
22
void mlxsw_sp_counter_pool_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
253
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
257
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpts), qpts_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
264
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
269
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qrwe), qrwe_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
303
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
307
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpdp), qpdp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
314
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
321
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpdpm), qpdpm_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
328
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
335
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpdsm), qpdsm_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
480
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
487
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ppcnt), ppcnt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
527
return mlxsw_reg_write(mlxsw_sp_port->mlxsw_sp->core, MLXSW_REG(pfcc),
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
586
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
594
u32 bytes = mlxsw_sp_cells_bytes(mlxsw_sp, hdroom->bufs.buf[i].size_cells);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
601
buf->total_size += mlxsw_sp_cells_bytes(mlxsw_sp, hdroom->int_buf.size_cells);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
612
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c
629
hdroom.bufs.buf[i].set_size_cells = mlxsw_sp_bytes_cells(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1064
static void mlxsw_sp_dpipe_table_adj_entry_fill(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1078
err = mlxsw_sp_nexthop_counter_get(mlxsw_sp, nh, &entry->counter);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1084
mlxsw_sp_dpipe_table_adj_entries_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1097
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1098
nh_count_max = mlxsw_sp_dpipe_table_adj_size(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1106
mlxsw_sp_nexthop_for_each(nh, mlxsw_sp->router) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1114
mlxsw_sp_dpipe_table_adj_entry_fill(mlxsw_sp, nh, entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1134
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1140
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1153
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1172
err = mlxsw_sp_dpipe_table_adj_entries_get(mlxsw_sp, &entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1182
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1190
mlxsw_sp_nexthop_for_each(nh, mlxsw_sp->router) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1198
err = mlxsw_sp_nexthop_counter_enable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1202
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1204
mlxsw_sp_nexthop_eth_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1212
mlxsw_sp_nexthop_for_each(nh, mlxsw_sp->router) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1215
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1223
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1226
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1227
size = mlxsw_sp_dpipe_table_adj_size(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1228
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1243
static int mlxsw_sp_dpipe_adj_table_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1245
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1251
mlxsw_sp, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1270
static void mlxsw_sp_dpipe_adj_table_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1272
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1278
int mlxsw_sp_dpipe_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1280
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1285
err = mlxsw_sp_dpipe_erif_table_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1289
err = mlxsw_sp_dpipe_host4_table_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1293
err = mlxsw_sp_dpipe_host6_table_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1297
err = mlxsw_sp_dpipe_adj_table_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1303
mlxsw_sp_dpipe_host6_table_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1305
mlxsw_sp_dpipe_host4_table_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1307
mlxsw_sp_dpipe_erif_table_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1309
devl_dpipe_headers_unregister(priv_to_devlink(mlxsw_sp->core));
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1313
void mlxsw_sp_dpipe_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1315
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1317
mlxsw_sp_dpipe_adj_table_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1318
mlxsw_sp_dpipe_host6_table_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1319
mlxsw_sp_dpipe_host4_table_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
1320
mlxsw_sp_dpipe_erif_table_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
154
static int mlxsw_sp_erif_entry_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
181
err = mlxsw_sp_rif_counter_value_get(mlxsw_sp, rif,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
199
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
213
rif_count = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
214
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
222
struct mlxsw_sp_rif *rif = mlxsw_sp_rif_by_index(mlxsw_sp, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
226
err = mlxsw_sp_erif_entry_get(mlxsw_sp, &entry, rif,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
245
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
252
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
259
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
262
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
263
for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
264
struct mlxsw_sp_rif *rif = mlxsw_sp_rif_by_index(mlxsw_sp, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
275
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
281
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
283
return MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
294
static int mlxsw_sp_dpipe_erif_table_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
296
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
301
mlxsw_sp, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
304
static void mlxsw_sp_dpipe_erif_table_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
306
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
510
mlxsw_sp_dpipe_table_host_entry_fill(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
530
err = mlxsw_sp_neigh_counter_get(mlxsw_sp, neigh_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
537
mlxsw_sp_dpipe_table_host_entries_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
550
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
552
rif_count = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
559
for (; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
560
struct mlxsw_sp_rif *rif = mlxsw_sp_rif_by_index(mlxsw_sp, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
580
mlxsw_sp_dpipe_table_host_entry_fill(mlxsw_sp, entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
606
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
611
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
616
mlxsw_sp_dpipe_table_host_entries_dump(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
641
err = mlxsw_sp_dpipe_table_host_entries_get(mlxsw_sp, &entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
653
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
655
return mlxsw_sp_dpipe_table_host_entries_dump(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
661
mlxsw_sp_dpipe_table_host_counters_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
666
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
667
for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
668
struct mlxsw_sp_rif *rif = mlxsw_sp_rif_by_index(mlxsw_sp, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
683
mlxsw_sp_neigh_entry_counter_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
688
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
693
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
695
mlxsw_sp_dpipe_table_host_counters_update(mlxsw_sp, enable, AF_INET);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
700
mlxsw_sp_dpipe_table_host_size_get(struct mlxsw_sp *mlxsw_sp, int type)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
705
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
706
for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
707
struct mlxsw_sp_rif *rif = mlxsw_sp_rif_by_index(mlxsw_sp, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
725
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
732
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
734
return mlxsw_sp_dpipe_table_host_size_get(mlxsw_sp, AF_INET);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
747
static int mlxsw_sp_dpipe_host4_table_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
749
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
755
mlxsw_sp, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
774
static void mlxsw_sp_dpipe_host4_table_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
776
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
792
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
794
return mlxsw_sp_dpipe_table_host_entries_dump(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
801
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
803
mlxsw_sp_dpipe_table_host_counters_update(mlxsw_sp, enable, AF_INET6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
809
struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
811
return mlxsw_sp_dpipe_table_host_size_get(mlxsw_sp, AF_INET6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
824
static int mlxsw_sp_dpipe_host6_table_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
826
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
832
mlxsw_sp, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
851
static void mlxsw_sp_dpipe_host6_table_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
853
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
909
static u64 mlxsw_sp_dpipe_table_adj_size(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
914
mlxsw_sp_nexthop_for_each(nh, mlxsw_sp->router)
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.h
7
int mlxsw_sp_dpipe_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.h
8
void mlxsw_sp_dpipe_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1000
ops = mlxsw_sp->port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1002
ops->reg_ptys_eth_pack(mlxsw_sp, ptys_pl, mlxsw_sp_port->local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1004
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ptys), ptys_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1007
ops->reg_ptys_eth_unpack(mlxsw_sp, ptys_pl, ð_proto_cap, NULL, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1011
ops->to_ptys_advert_link(mlxsw_sp, cmd) :
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1012
ops->to_ptys_speed_lanes(mlxsw_sp, mlxsw_sp_port->mapping.width,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1021
ops->reg_ptys_eth_pack(mlxsw_sp, ptys_pl, mlxsw_sp_port->local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1023
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptys), ptys_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1042
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1044
return mlxsw_env_get_module_info(netdev, mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1054
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1058
return mlxsw_env_get_module_eeprom(netdev, mlxsw_sp->core, slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1068
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1072
return mlxsw_env_get_module_eeprom_by_page(mlxsw_sp->core, slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1082
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1086
return mlxsw_env_set_module_eeprom_by_page(mlxsw_sp->core, slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1094
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1096
return mlxsw_sp->ptp_ops->get_ts_info(mlxsw_sp, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1227
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1231
return mlxsw_env_reset_module(dev, mlxsw_sp->core, slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1241
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1245
return mlxsw_env_get_module_power_mode(mlxsw_sp->core, slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1255
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1259
return mlxsw_env_set_module_power_mode(mlxsw_sp->core, slot_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1402
mlxsw_sp1_from_ptys_supported_port(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1423
mlxsw_sp1_from_ptys_link(struct mlxsw_sp *mlxsw_sp, u32 ptys_eth_proto,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1436
mlxsw_sp1_from_ptys_speed(struct mlxsw_sp *mlxsw_sp, u32 ptys_eth_proto)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1449
mlxsw_sp1_from_ptys_link_mode(struct mlxsw_sp *mlxsw_sp, bool carrier_ok,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1494
mlxsw_sp1_to_ptys_advert_link(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
15
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1508
static u32 mlxsw_sp1_to_ptys_speed_lanes(struct mlxsw_sp *mlxsw_sp, u8 width,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1525
mlxsw_sp1_reg_ptys_eth_pack(struct mlxsw_sp *mlxsw_sp, char *payload,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1532
mlxsw_sp1_reg_ptys_eth_unpack(struct mlxsw_sp *mlxsw_sp, char *payload,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
160
err = mlxsw_reg_query(mlxsw_sp_port->mlxsw_sp->core, MLXSW_REG(pddr),
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
17
strscpy(drvinfo->driver, mlxsw_sp->bus_info->device_kind,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1930
mlxsw_sp2_from_ptys_supported_port(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1949
mlxsw_sp2_from_ptys_link(struct mlxsw_sp *mlxsw_sp, u32 ptys_eth_proto,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1962
mlxsw_sp2_from_ptys_speed(struct mlxsw_sp *mlxsw_sp, u32 ptys_eth_proto)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
1975
mlxsw_sp2_from_ptys_link_mode(struct mlxsw_sp *mlxsw_sp, bool carrier_ok,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
199
return mlxsw_reg_write(mlxsw_sp_port->mlxsw_sp->core, MLXSW_REG(pfcc),
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
2035
mlxsw_sp2_to_ptys_advert_link(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
2049
static u32 mlxsw_sp2_to_ptys_speed_lanes(struct mlxsw_sp *mlxsw_sp, u8 width,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
2084
mlxsw_sp2_reg_ptys_eth_pack(struct mlxsw_sp *mlxsw_sp, char *payload,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
2092
mlxsw_sp2_reg_ptys_eth_unpack(struct mlxsw_sp *mlxsw_sp, char *payload,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
23
mlxsw_sp->bus_info->fw_rev.major,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
24
mlxsw_sp->bus_info->fw_rev.minor,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
25
mlxsw_sp->bus_info->fw_rev.subminor);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
26
strscpy(drvinfo->bus_info, mlxsw_sp->bus_info->device_name,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
575
struct mlxsw_core *mlxsw_core = mlxsw_sp_port->mlxsw_sp->core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
683
mlxsw_sp_port->mlxsw_sp->ptp_ops->get_stats_strings(&p);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
698
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
714
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mlcr), mlcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
766
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
782
data[data_index + i] = mlxsw_sp_cells_bytes(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
849
mlxsw_sp_port->mlxsw_sp->ptp_ops->get_stats(mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
851
data_index += mlxsw_sp_port->mlxsw_sp->ptp_ops->get_stats_count();
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
866
mlxsw_sp_port->mlxsw_sp->ptp_ops->get_stats_count();
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
873
mlxsw_sp_port_get_link_supported(struct mlxsw_sp *mlxsw_sp, u32 eth_proto_cap,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
878
ops = mlxsw_sp->port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
884
ops->from_ptys_supported_port(mlxsw_sp, eth_proto_cap, cmd);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
885
ops->from_ptys_link(mlxsw_sp, eth_proto_cap,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
890
mlxsw_sp_port_get_link_advertise(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
896
ops = mlxsw_sp->port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
902
ops->from_ptys_link(mlxsw_sp, eth_proto_admin,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
938
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
943
ops = mlxsw_sp->port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
945
ops->reg_ptys_eth_pack(mlxsw_sp, ptys_pl, mlxsw_sp_port->local_port, 0, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
946
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ptys), ptys_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
950
ops->reg_ptys_eth_unpack(mlxsw_sp, ptys_pl, p_eth_proto_cap, p_eth_proto_admin,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
962
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
973
ops = mlxsw_sp->port_type_speed_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
976
mlxsw_sp_port_get_link_supported(mlxsw_sp, eth_proto_cap, cmd);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
978
mlxsw_sp_port_get_link_advertise(mlxsw_sp, eth_proto_admin, autoneg, cmd);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
982
ops->from_ptys_link_mode(mlxsw_sp, netif_carrier_ok(dev),
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
993
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1064
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1069
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(smpe), smpe_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1078
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1090
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(reiv), reiv_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1123
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1141
if (mlxsw_sp->fid_core->port_fid_mappings[local_port]++ == 0) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1150
mlxsw_sp->fid_core->port_fid_mappings[local_port]--;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1163
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1166
if (mlxsw_sp->fid_core->port_fid_mappings[local_port] == 1)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1168
mlxsw_sp->fid_core->port_fid_mappings[local_port]--;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1213
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1230
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfgc), sfgc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1370
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1377
rif = mlxsw_sp_rif_by_index(mlxsw_sp, rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1385
fid->fid_offset = mlxsw_sp_fid_rfid_fid_offset_cff(mlxsw_sp, port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
139
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1422
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1448
if (mlxsw_sp->fid_core->port_fid_mappings[local_port]++ == 0) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1457
mlxsw_sp->fid_core->port_fid_mappings[local_port]--;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1472
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1475
if (mlxsw_sp->fid_core->port_fid_mappings[local_port] == 1)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1477
mlxsw_sp->fid_core->port_fid_mappings[local_port]--;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1530
mlxsw_sp_fid_rfid_port_add_cff(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1536
err = mlxsw_sp_pgt_entry_port_set(mlxsw_sp, pgt_addr, smpe,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1542
u16 router_port = mlxsw_sp_router_port(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1544
err = mlxsw_sp_pgt_entry_port_set(mlxsw_sp, pgt_addr, smpe,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1553
mlxsw_sp_pgt_entry_port_set(mlxsw_sp, pgt_addr, smpe, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1559
mlxsw_sp_fid_rfid_port_del_cff(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1564
u16 router_port = mlxsw_sp_router_port(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1566
mlxsw_sp_pgt_entry_port_set(mlxsw_sp, pgt_addr, smpe,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1569
mlxsw_sp_pgt_entry_port_set(mlxsw_sp, pgt_addr, smpe, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1579
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1591
fid_offset = mlxsw_sp_fid_rfid_fid_offset_cff(mlxsw_sp, port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1597
return mlxsw_sp_fid_rfid_port_add_cff(mlxsw_sp, flood_table,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1601
mlxsw_sp_fid_rfid_port_del_cff(mlxsw_sp, flood_table, pgt_addr, smpe,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1750
mlxsw_sp_nve_fid_disable(fid->fid_family->mlxsw_sp, fid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1760
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1768
if (mlxsw_sp->fid_core->port_fid_mappings[local_port]) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1788
if (mlxsw_sp->fid_core->port_fid_mappings[local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1797
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1802
if (mlxsw_sp->fid_core->port_fid_mappings[local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
189
struct mlxsw_sp_fid *mlxsw_sp_fid_lookup_by_index(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
194
fid = rhashtable_lookup_fast(&mlxsw_sp->fid_core->fid_ht, &fid_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
1996
static struct mlxsw_sp_fid *mlxsw_sp_fid_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2003
fid_family = mlxsw_sp->fid_core->fid_family_arr[type];
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2014
static struct mlxsw_sp_fid *mlxsw_sp_fid_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2023
fid = mlxsw_sp_fid_lookup(mlxsw_sp, type, arg);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2027
fid_family = mlxsw_sp->fid_core->fid_family_arr[type];
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2049
err = rhashtable_insert_fast(&mlxsw_sp->fid_core->fid_ht, &fid->ht_node,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2072
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2078
rhashtable_remove_fast(&mlxsw_sp->fid_core->fid_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2087
struct mlxsw_sp_fid *mlxsw_sp_fid_8021q_get(struct mlxsw_sp *mlxsw_sp, u16 vid)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2089
return mlxsw_sp_fid_get(mlxsw_sp, MLXSW_SP_FID_TYPE_8021Q, &vid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2092
struct mlxsw_sp_fid *mlxsw_sp_fid_8021d_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2095
return mlxsw_sp_fid_get(mlxsw_sp, MLXSW_SP_FID_TYPE_8021D, &br_ifindex);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2098
struct mlxsw_sp_fid *mlxsw_sp_fid_8021q_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2101
return mlxsw_sp_fid_lookup(mlxsw_sp, MLXSW_SP_FID_TYPE_8021Q, &vid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2104
struct mlxsw_sp_fid *mlxsw_sp_fid_8021d_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2107
return mlxsw_sp_fid_lookup(mlxsw_sp, MLXSW_SP_FID_TYPE_8021D,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2111
struct mlxsw_sp_fid *mlxsw_sp_fid_rfid_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2114
return mlxsw_sp_fid_get(mlxsw_sp, MLXSW_SP_FID_TYPE_RFID, &rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2117
struct mlxsw_sp_fid *mlxsw_sp_fid_dummy_get(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2119
return mlxsw_sp_fid_get(mlxsw_sp, MLXSW_SP_FID_TYPE_DUMMY, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2125
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2134
err = mlxsw_sp_pgt_mid_alloc_range(mlxsw_sp, &fid_family->pgt_base,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2157
mlxsw_sp_pgt_mid_free_range(mlxsw_sp, fid_family->pgt_base, pgt_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2164
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2172
mlxsw_sp_pgt_mid_free_range(mlxsw_sp, fid_family->pgt_base, pgt_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2175
static int mlxsw_sp_fid_family_register(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2186
fid_family->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2200
mlxsw_sp->fid_core->fid_family_arr[tmpl->type] = fid_family;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2212
mlxsw_sp_fid_family_unregister(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2215
mlxsw_sp->fid_core->fid_family_arr[fid_family->type] = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2228
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
223
struct mlxsw_sp_fid *mlxsw_sp_fid_lookup_by_vni(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2231
rfid_family = mlxsw_sp->fid_core->fid_family_arr[type_rfid];
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2241
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2244
rfid_family = mlxsw_sp->fid_core->fid_family_arr[type_rfid];
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2251
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2258
mlxsw_sp->fid_core->port_fid_mappings[mlxsw_sp_port->local_port] = 0;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2277
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
228
fid = rhashtable_lookup_fast(&mlxsw_sp->fid_core->vni_ht, &vni,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2280
mlxsw_sp->fid_core->port_fid_mappings[mlxsw_sp_port->local_port] = 0;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2294
mlxsw_sp_fids_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2297
unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2301
fid_core = kzalloc_obj(*mlxsw_sp->fid_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2304
mlxsw_sp->fid_core = fid_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2322
err = mlxsw_sp_fid_family_register(mlxsw_sp, fid_family_arr[i]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2335
mlxsw_sp_fid_family_unregister(mlxsw_sp, fid_family);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2347
static void mlxsw_sp_fids_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2349
struct mlxsw_sp_fid_core *fid_core = mlxsw_sp->fid_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2353
mlxsw_sp_fid_family_unregister(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2361
static int mlxsw_sp1_fids_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2363
return mlxsw_sp_fids_init(mlxsw_sp, mlxsw_sp1_fid_family_arr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2371
static int mlxsw_sp_fid_check_flood_profile_id(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2376
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_NVE_FLOOD_PRF))
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2379
max_profiles = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_NVE_FLOOD_PRF);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2388
mlxsw_sp2_fids_init_flood_table(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2406
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sffp), sffp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2415
mlxsw_sp2_fids_init_flood_profile(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2422
err = mlxsw_sp_fid_check_flood_profile_id(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2431
err = mlxsw_sp2_fids_init_flood_table(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2449
mlxsw_sp2_fids_init_flood_profiles(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2458
err = mlxsw_sp2_fids_init_flood_profile(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2467
static int mlxsw_sp2_fids_init_ctl(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2469
return mlxsw_sp_fids_init(mlxsw_sp, mlxsw_sp2_fid_family_arr_ctl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2472
static int mlxsw_sp2_fids_init_cff(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2476
err = mlxsw_sp2_fids_init_flood_profiles(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2480
return mlxsw_sp_fids_init(mlxsw_sp, mlxsw_sp2_fid_family_arr_cff);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2483
static int mlxsw_sp2_fids_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2485
switch (mlxsw_core_flood_mode(mlxsw_sp->core)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2487
return mlxsw_sp2_fids_init_ctl(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
2489
return mlxsw_sp2_fids_init_cff(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
291
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
300
err = rhashtable_lookup_insert_fast(&mlxsw_sp->fid_core->vni_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
315
rhashtable_remove_fast(&mlxsw_sp->fid_core->vni_ht, &fid->vni_ht_node,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
324
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
331
rhashtable_remove_fast(&mlxsw_sp->fid_core->vni_ht, &fid->vni_ht_node,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
397
struct mlxsw_core *core = fid_family->mlxsw_sp->core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
449
return mlxsw_sp_pgt_entry_port_set(fid_family->mlxsw_sp, mid_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
483
mlxsw_sp_fid_type_rif_type(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
486
struct mlxsw_sp_fid_core *fid_core = mlxsw_sp->fid_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
568
static u16 mlxsw_sp_fid_rfid_fid_offset_cff(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
571
u16 max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
582
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
587
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfmr), sfmr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
593
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
609
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfmr), sfmr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
616
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
626
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(svfa), svfa_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
648
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
658
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(svfa), svfa_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
678
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
685
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(svfa), svfa_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
691
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
707
if (!mlxsw_sp->fid_core->port_fid_mappings[pv->local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
721
if (!mlxsw_sp->fid_core->port_fid_mappings[pv->local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
733
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
740
if (!mlxsw_sp->fid_core->port_fid_mappings[pv->local_port])
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
754
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
786
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(reiv), reiv_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
801
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
805
num_port_pages = mlxsw_core_max_ports(mlxsw_sp->core) /
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
893
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
905
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(svfa), svfa_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c
931
mlxsw_sp_nve_fid_disable(fid->fid_family->mlxsw_sp, fid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
107
static int mlxsw_sp_flow_block_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
126
mlxsw_sp_acl_ruleset_unbind(mlxsw_sp, block, binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
13
mlxsw_sp_flow_block_create(struct mlxsw_sp *mlxsw_sp, struct net *net)
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
138
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_flow_block_mlxsw_sp(flow_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
142
return mlxsw_sp_mall_replace(mlxsw_sp, flow_block, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
154
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_flow_block_mlxsw_sp(flow_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
158
return mlxsw_sp_flower_replace(mlxsw_sp, flow_block, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
160
mlxsw_sp_flower_destroy(mlxsw_sp, flow_block, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
163
return mlxsw_sp_flower_stats(mlxsw_sp, flow_block, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
165
return mlxsw_sp_flower_tmplt_create(mlxsw_sp, flow_block, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
167
mlxsw_sp_flower_tmplt_destroy(mlxsw_sp, flow_block, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
205
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
212
mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
214
flow_block = mlxsw_sp_flow_block_create(mlxsw_sp, f->net);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
218
mlxsw_sp, flow_block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
22
block->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
229
err = mlxsw_sp_flow_block_bind(mlxsw_sp, flow_block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
256
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
262
mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
272
err = mlxsw_sp_flow_block_unbind(mlxsw_sp, flow_block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
52
static int mlxsw_sp_flow_block_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c
87
err = mlxsw_sp_acl_ruleset_bind(mlxsw_sp, block, binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
134
ruleset = mlxsw_sp_acl_ruleset_lookup(mlxsw_sp, block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
166
err = mlxsw_sp_acl_rulei_act_ignore(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
173
fid = mlxsw_sp_acl_dummy_fid(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
175
err = mlxsw_sp_acl_rulei_act_fid_set(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
181
err = mlxsw_sp_acl_rulei_act_fwd(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
200
err = mlxsw_sp_acl_rulei_act_mirror(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
212
err = mlxsw_sp_acl_rulei_act_vlan(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
220
err = mlxsw_sp_acl_rulei_act_priority(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
234
err = mlxsw_sp_acl_rulei_act_mangle(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
259
err = mlxsw_sp_acl_rulei_act_police(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
278
err = mlxsw_sp_acl_rulei_act_sample(mlxsw_sp, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
291
dev_err(mlxsw_sp->bus_info->dev, "Unsupported action\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
334
if (mlxsw_sp_port->mlxsw_sp != block->mlxsw_sp) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
414
static int mlxsw_sp_flower_parse_ports(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
427
dev_err(mlxsw_sp->bus_info->dev, "Only UDP and TCP keys are supported\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
442
mlxsw_sp_flower_parse_ports_range(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
469
err = mlxsw_sp_port_range_reg_get(mlxsw_sp, &range,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
487
err = mlxsw_sp_port_range_reg_get(mlxsw_sp, &range,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
503
static int mlxsw_sp_flower_parse_tcp(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
516
dev_err(mlxsw_sp->bus_info->dev, "TCP keys supported only for TCP\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
524
dev_err(mlxsw_sp->bus_info->dev, "TCP flags match not supported on reserved bits\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
534
static int mlxsw_sp_flower_parse_ip(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
547
dev_err(mlxsw_sp->bus_info->dev, "IP keys supported only for IPv4/6\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
567
static int mlxsw_sp_flower_parse(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
58
static int mlxsw_sp_flower_parse_actions(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
592
dev_err(mlxsw_sp->bus_info->dev, "Unsupported key\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
691
err = mlxsw_sp_flower_parse_ports(mlxsw_sp, rulei, f, ip_proto);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
695
err = mlxsw_sp_flower_parse_ports_range(mlxsw_sp, rulei, f, ip_proto);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
699
err = mlxsw_sp_flower_parse_tcp(mlxsw_sp, rulei, f, ip_proto);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
703
err = mlxsw_sp_flower_parse_ip(mlxsw_sp, rulei, f, n_proto_key & n_proto_mask);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
707
return mlxsw_sp_flower_parse_actions(mlxsw_sp, block, rulei,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
740
int mlxsw_sp_flower_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
753
ruleset = mlxsw_sp_acl_ruleset_get(mlxsw_sp, block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
759
rule = mlxsw_sp_acl_rule_create(mlxsw_sp, ruleset, f->cookie, NULL,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
767
err = mlxsw_sp_flower_parse(mlxsw_sp, block, rulei, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
775
err = mlxsw_sp_acl_rule_add(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
779
mlxsw_sp_acl_ruleset_put(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
785
mlxsw_sp_acl_rule_destroy(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
787
mlxsw_sp_acl_ruleset_put(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
791
void mlxsw_sp_flower_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
798
ruleset = mlxsw_sp_acl_ruleset_get(mlxsw_sp, block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
80
err = mlxsw_sp_acl_rulei_act_count(mlxsw_sp, rulei, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
804
rule = mlxsw_sp_acl_rule_lookup(mlxsw_sp, ruleset, f->cookie);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
806
mlxsw_sp_acl_rule_del(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
807
mlxsw_sp_acl_rule_destroy(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
810
mlxsw_sp_acl_ruleset_put(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
813
int mlxsw_sp_flower_stats(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
826
ruleset = mlxsw_sp_acl_ruleset_get(mlxsw_sp, block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
832
rule = mlxsw_sp_acl_rule_lookup(mlxsw_sp, ruleset, f->cookie);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
838
err = mlxsw_sp_acl_rule_get_stats(mlxsw_sp, rule, &packets, &bytes,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
846
mlxsw_sp_acl_ruleset_put(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
850
mlxsw_sp_acl_ruleset_put(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
854
int mlxsw_sp_flower_tmplt_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
863
err = mlxsw_sp_flower_parse(mlxsw_sp, block, &rulei, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
866
ruleset = mlxsw_sp_acl_ruleset_get(mlxsw_sp, block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
875
void mlxsw_sp_flower_tmplt_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
881
ruleset = mlxsw_sp_acl_ruleset_get(mlxsw_sp, block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
887
mlxsw_sp_acl_ruleset_put(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
888
mlxsw_sp_acl_ruleset_put(mlxsw_sp, ruleset);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
891
int mlxsw_sp_flower_prio_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
898
ruleset = mlxsw_sp_acl_ruleset_lookup(mlxsw_sp, block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
170
mlxsw_sp_ipip_nexthop_update_gre4(struct mlxsw_sp *mlxsw_sp, u32 adj_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
184
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ratr), ratr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
188
mlxsw_sp_ipip_decap_config_gre4(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
223
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtdp), rtdp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
241
static bool mlxsw_sp_ipip_can_offload_gre4(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
259
mlxsw_sp_ipip_ol_loopback_config_gre4(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
278
mlxsw_sp_ipip_ol_netdev_change_gre(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
295
if (mlxsw_sp_ipip_demote_tunnel_by_saddr(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
300
mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
315
err = __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
319
err = __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
323
err = __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
334
mlxsw_sp_ipip_ol_netdev_change_gre4(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
341
return mlxsw_sp_ipip_ol_netdev_change_gre(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
346
mlxsw_sp_ipip_rem_addr_set_gre4(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
353
mlxsw_sp_ipip_rem_addr_unset_gre4(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
388
mlxsw_sp_ipip_nexthop_update_gre6(struct mlxsw_sp *mlxsw_sp, u32 adj_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
402
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ratr), ratr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
406
mlxsw_sp_ipip_decap_config_gre6(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
440
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtdp), rtdp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
443
static bool mlxsw_sp_ipip_can_offload_gre6(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
461
mlxsw_sp_ipip_ol_loopback_config_gre6(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
480
mlxsw_sp_ipip_ol_netdev_change_gre6(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
491
err = mlxsw_sp_ipv6_addr_kvdl_index_get(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
498
err = mlxsw_sp_ipip_ol_netdev_change_gre(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
503
mlxsw_sp_ipv6_addr_put(mlxsw_sp, &old_addr6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
509
mlxsw_sp_ipv6_addr_put(mlxsw_sp, &new_parms.daddr.addr6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
514
mlxsw_sp_ipip_rem_addr_set_gre6(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
517
return mlxsw_sp_ipv6_addr_kvdl_index_get(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
523
mlxsw_sp_ipip_rem_addr_unset_gre6(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
526
mlxsw_sp_ipv6_addr_put(mlxsw_sp, &ipip_entry->parms.daddr.addr6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
568
static int mlxsw_sp_ipip_ecn_encap_init_one(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
574
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tieem), tieem_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
577
int mlxsw_sp_ipip_ecn_encap_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
586
err = mlxsw_sp_ipip_ecn_encap_init_one(mlxsw_sp, i, outer_ecn);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
594
static int mlxsw_sp_ipip_ecn_decap_init_one(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
605
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tidem), tidem_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
608
int mlxsw_sp_ipip_ecn_decap_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c
616
err = mlxsw_sp_ipip_ecn_decap_init_one(mlxsw_sp, i, j);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.h
57
int (*nexthop_update)(struct mlxsw_sp *mlxsw_sp, u32 adj_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.h
61
bool (*can_offload)(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.h
66
(*ol_loopback_config)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.h
69
int (*decap_config)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.h
73
int (*ol_netdev_change)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.h
76
int (*rem_ip_addr_set)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.h
78
void (*rem_ip_addr_unset)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
17
int mlxsw_sp_kvdl_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
19
const struct mlxsw_sp_kvdl_ops *kvdl_ops = mlxsw_sp->kvdl_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
23
kvdl = kzalloc(sizeof(*mlxsw_sp->kvdl) + kvdl_ops->priv_size,
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
29
mlxsw_sp->kvdl = kvdl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
31
err = kvdl_ops->init(mlxsw_sp, kvdl->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
42
void mlxsw_sp_kvdl_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
44
struct mlxsw_sp_kvdl *kvdl = mlxsw_sp->kvdl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
46
kvdl->kvdl_ops->fini(mlxsw_sp, kvdl->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
51
int mlxsw_sp_kvdl_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
55
struct mlxsw_sp_kvdl *kvdl = mlxsw_sp->kvdl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
59
err = kvdl->kvdl_ops->alloc(mlxsw_sp, kvdl->priv, type,
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
66
void mlxsw_sp_kvdl_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
70
struct mlxsw_sp_kvdl *kvdl = mlxsw_sp->kvdl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
73
kvdl->kvdl_ops->free(mlxsw_sp, kvdl->priv, type,
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
78
int mlxsw_sp_kvdl_alloc_count_query(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
83
struct mlxsw_sp_kvdl *kvdl = mlxsw_sp->kvdl;
drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
85
return kvdl->kvdl_ops->alloc_size_query(mlxsw_sp, kvdl->priv, type,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
107
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
116
err = mlxsw_sp_sample_trigger_params_set(mlxsw_sp, &trigger,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
122
err = mlxsw_sp->mall_ops->sample_add(mlxsw_sp, mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
129
mlxsw_sp_sample_trigger_params_unset(mlxsw_sp, &trigger);
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
137
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
146
mlxsw_sp->mall_ops->sample_del(mlxsw_sp, mlxsw_sp_port, mall_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
147
mlxsw_sp_sample_trigger_params_unset(mlxsw_sp, &trigger);
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
200
int mlxsw_sp_mall_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
228
err = mlxsw_sp_flower_prio_get(mlxsw_sp, block, f->common.chain_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
30
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
379
static int mlxsw_sp1_mall_sample_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
399
static void mlxsw_sp1_mall_sample_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
411
static int mlxsw_sp2_mall_sample_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
42
err = mlxsw_sp_span_agent_get(mlxsw_sp, &mall_entry->mirror.span_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
425
err = mlxsw_sp_span_agent_get(mlxsw_sp, &mall_entry->sample.span_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
443
err = mlxsw_sp_span_agent_bind(mlxsw_sp, span_trigger, mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
455
mlxsw_sp_span_agent_put(mlxsw_sp, mall_entry->sample.span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
459
static void mlxsw_sp2_mall_sample_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
469
mlxsw_sp_span_agent_unbind(mlxsw_sp, span_trigger, mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
472
mlxsw_sp_span_agent_put(mlxsw_sp, mall_entry->sample.span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
60
err = mlxsw_sp_span_agent_bind(mlxsw_sp, trigger, mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
72
mlxsw_sp_span_agent_put(mlxsw_sp, mall_entry->mirror.span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
80
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
87
mlxsw_sp_span_agent_unbind(mlxsw_sp, trigger, mlxsw_sp_port, &parms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
89
mlxsw_sp_span_agent_put(mlxsw_sp, mall_entry->mirror.span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
95
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
99
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mpsc), mpsc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
1005
mr->mr_ops->route_stats(mlxsw_sp, mr_route->route_priv, &packets,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
1026
mlxsw_sp_mr_route_stats_update(mr_table->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
1036
int mlxsw_sp_mr_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
1047
mlxsw_sp->mr = mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
1051
err = mr_ops->init(mlxsw_sp, mr->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
1066
void mlxsw_sp_mr_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
1068
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
1071
mr->mr_ops->fini(mlxsw_sp, mr->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
252
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
254
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
274
err = mr->mr_ops->route_create(mlxsw_sp, mr->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
280
err = mr->mr_ops->route_update(mlxsw_sp, mr_route->route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
291
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
292
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
294
mr->mr_ops->route_destroy(mlxsw_sp, mr->priv, mr_route->route_priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
417
dev_warn(mr_table->mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
485
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
487
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
497
err = mr->mr_ops->route_irif_update(mlxsw_sp, rve->mr_route->route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
502
err = mr->mr_ops->route_action_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
520
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
521
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
523
mr->mr_ops->route_action_update(mlxsw_sp, rve->mr_route->route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
534
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
536
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
543
err = mr->mr_ops->route_erif_add(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
555
err = mr->mr_ops->route_action_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
565
err = mr->mr_ops->route_min_mtu_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
578
mr->mr_ops->route_action_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
583
mr->mr_ops->route_erif_del(mlxsw_sp, rve->mr_route->route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
593
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
595
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
612
mr->mr_ops->route_action_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
618
mr->mr_ops->route_erif_del(mlxsw_sp, rve->mr_route->route_priv, rifi);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
67
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
751
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
753
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
768
mr->mr_ops->route_min_mtu_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
787
dev_warn(mr_table->mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
834
dev_warn(mr_table->mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
894
struct mlxsw_sp_mr_table *mlxsw_sp_mr_table_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
908
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
919
mr_table->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
936
err = mr->mr_ops->route_create(mlxsw_sp, mr->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
956
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
957
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
963
mr->mr_ops->route_destroy(mlxsw_sp, mr->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
996
static void mlxsw_sp_mr_route_stats_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c
999
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
44
int (*init)(struct mlxsw_sp *mlxsw_sp, void *priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
45
int (*route_create)(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
48
int (*route_update)(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
50
int (*route_stats)(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
52
int (*route_action_update)(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
54
int (*route_min_mtu_update)(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
56
int (*route_irif_update)(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
58
int (*route_erif_add)(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
60
int (*route_erif_del)(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
62
void (*route_destroy)(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
64
void (*fini)(struct mlxsw_sp *mlxsw_sp, void *priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
70
int mlxsw_sp_mr_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
72
void mlxsw_sp_mr_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h
88
struct mlxsw_sp_mr_table *mlxsw_sp_mr_table_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
100
sublist = mlxsw_sp_mr_erif_sublist_create(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
113
mlxsw_sp_mr_erif_list_flush(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
120
mlxsw_sp_mr_erif_sublist_destroy(mlxsw_sp, erif_sublist);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
124
mlxsw_sp_mr_erif_list_commit(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
161
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rigr2),
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
192
mlxsw_sp_mr_tcam_afa_block_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
201
afa_block = mlxsw_afa_block_create(mlxsw_sp->afa);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
222
err = mlxsw_sp_mr_erif_list_commit(mlxsw_sp, erif_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
260
mlxsw_sp_mr_tcam_erif_populate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
270
err = mlxsw_sp_mr_erif_list_add(mlxsw_sp, erif_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
279
mlxsw_sp_mr_tcam_route_create(struct mlxsw_sp *mlxsw_sp, void *priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
283
const struct mlxsw_sp_mr_tcam_ops *ops = mlxsw_sp->mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
295
err = mlxsw_sp_mr_tcam_erif_populate(mlxsw_sp, &route->erif_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
301
err = mlxsw_sp_flow_counter_alloc(mlxsw_sp, &route->counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
306
route->afa_block = mlxsw_sp_mr_tcam_afa_block_create(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
324
err = ops->route_create(mlxsw_sp, mr_tcam->priv, route->priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
33
mlxsw_sp_mr_erif_sublist_full(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
336
mlxsw_sp_flow_counter_free(mlxsw_sp, route->counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
339
mlxsw_sp_mr_erif_list_flush(mlxsw_sp, &route->erif_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
343
static void mlxsw_sp_mr_tcam_route_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
346
const struct mlxsw_sp_mr_tcam_ops *ops = mlxsw_sp->mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
350
ops->route_destroy(mlxsw_sp, mr_tcam->priv, route->priv, &route->key);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
353
mlxsw_sp_flow_counter_free(mlxsw_sp, route->counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
354
mlxsw_sp_mr_erif_list_flush(mlxsw_sp, &route->erif_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
357
static int mlxsw_sp_mr_tcam_route_stats(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
36
int erif_list_entries = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
363
return mlxsw_sp_flow_counter_get(mlxsw_sp, route->counter_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
368
mlxsw_sp_mr_tcam_route_action_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
372
const struct mlxsw_sp_mr_tcam_ops *ops = mlxsw_sp->mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
378
afa_block = mlxsw_sp_mr_tcam_afa_block_create(mlxsw_sp, route_action,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
387
err = ops->route_update(mlxsw_sp, route->priv, &route->key, afa_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
401
static int mlxsw_sp_mr_tcam_route_min_mtu_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
404
const struct mlxsw_sp_mr_tcam_ops *ops = mlxsw_sp->mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
410
afa_block = mlxsw_sp_mr_tcam_afa_block_create(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
420
err = ops->route_update(mlxsw_sp, route->priv, &route->key, afa_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
434
static int mlxsw_sp_mr_tcam_route_irif_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
445
static int mlxsw_sp_mr_tcam_route_erif_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
451
err = mlxsw_sp_mr_erif_list_add(mlxsw_sp, &route->erif_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
458
return mlxsw_sp_mr_erif_list_commit(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
463
static int mlxsw_sp_mr_tcam_route_erif_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
466
const struct mlxsw_sp_mr_tcam_ops *ops = mlxsw_sp->mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
482
err = mlxsw_sp_mr_erif_list_add(mlxsw_sp, &erif_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
49
mlxsw_sp_mr_erif_sublist_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
490
afa_block = mlxsw_sp_mr_tcam_afa_block_create(mlxsw_sp, route->action,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
501
err = ops->route_update(mlxsw_sp, route->priv, &route->key, afa_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
506
mlxsw_sp_mr_erif_list_flush(mlxsw_sp, &route->erif_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
515
mlxsw_sp_mr_erif_list_flush(mlxsw_sp, &erif_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
520
mlxsw_sp_mr_tcam_route_update(struct mlxsw_sp *mlxsw_sp, void *route_priv,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
523
const struct mlxsw_sp_mr_tcam_ops *ops = mlxsw_sp->mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
531
err = mlxsw_sp_mr_tcam_erif_populate(mlxsw_sp, &erif_list, route_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
536
afa_block = mlxsw_sp_mr_tcam_afa_block_create(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
548
err = ops->route_update(mlxsw_sp, route->priv, &route->key, afa_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
553
mlxsw_sp_mr_erif_list_flush(mlxsw_sp, &route->erif_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
565
mlxsw_sp_mr_erif_list_flush(mlxsw_sp, &erif_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
569
static int mlxsw_sp_mr_tcam_init(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
571
const struct mlxsw_sp_mr_tcam_ops *ops = mlxsw_sp->mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
575
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MC_ERIF_LIST_ENTRIES))
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
58
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_MCRIGR,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
582
err = ops->init(mlxsw_sp, mr_tcam->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
592
static void mlxsw_sp_mr_tcam_fini(struct mlxsw_sp *mlxsw_sp, void *priv)
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
594
const struct mlxsw_sp_mr_tcam_ops *ops = mlxsw_sp->mr_tcam_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
70
mlxsw_sp_mr_erif_sublist_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
74
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_MCRIGR,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
80
mlxsw_sp_mr_erif_list_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
90
sublist = mlxsw_sp_mr_erif_sublist_create(mlxsw_sp, erif_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c
99
if (mlxsw_sp_mr_erif_sublist_full(mlxsw_sp, sublist)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1002
nve_dev = __dev_get_by_index(mlxsw_sp_net(mlxsw_sp), nve_ifindex);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1006
mlxsw_sp_nve_fdb_clear_offload(mlxsw_sp, fid, nve_dev, vni);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1011
mlxsw_sp_nve_tunnel_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1016
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1020
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tnqdr), tnqdr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1027
static int mlxsw_sp_nve_qos_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1032
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tnqcr), tnqcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1035
static int mlxsw_sp_nve_ecn_encap_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1046
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tneem),
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1055
static int __mlxsw_sp_nve_ecn_decap_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1066
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tndem), tndem_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1069
static int mlxsw_sp_nve_ecn_decap_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1081
err = __mlxsw_sp_nve_ecn_decap_init(mlxsw_sp, i, j);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1090
static int mlxsw_sp_nve_ecn_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1094
err = mlxsw_sp_nve_ecn_encap_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1098
return mlxsw_sp_nve_ecn_decap_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1101
static int mlxsw_sp_nve_resources_query(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1105
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_NVE_MC_ENTRIES_IPV4) ||
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1106
!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_NVE_MC_ENTRIES_IPV6))
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1108
max = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_NVE_MC_ENTRIES_IPV4);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1109
mlxsw_sp->nve->num_max_mc_entries[MLXSW_SP_L3_PROTO_IPV4] = max;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1110
max = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_NVE_MC_ENTRIES_IPV6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1111
mlxsw_sp->nve->num_max_mc_entries[MLXSW_SP_L3_PROTO_IPV6] = max;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1116
int mlxsw_sp_nve_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1121
nve = kzalloc_obj(*mlxsw_sp->nve);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1124
mlxsw_sp->nve = nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1125
nve->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1126
nve->nve_ops_arr = mlxsw_sp->nve_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1139
err = mlxsw_sp_nve_qos_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1143
err = mlxsw_sp_nve_ecn_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1147
err = mlxsw_sp_nve_resources_query(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1160
mlxsw_sp->nve = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1165
void mlxsw_sp_nve_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1167
WARN_ON(mlxsw_sp->nve->num_nve_tunnels);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1168
WARN_ON(!list_empty(&mlxsw_sp->nve->ipv6_addr_list));
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1169
rhashtable_destroy(&mlxsw_sp->nve->ipv6_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1170
rhashtable_destroy(&mlxsw_sp->nve->mc_list_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1171
kfree(mlxsw_sp->nve);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
1172
mlxsw_sp->nve = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
136
err = mlxsw_sp_ipv6_addr_kvdl_index_get(mc_record->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
150
mlxsw_sp_ipv6_addr_put(mc_record->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
187
int mlxsw_sp_nve_learned_ip_resolve(struct mlxsw_sp *mlxsw_sp, u32 uip,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
202
mlxsw_sp_nve_mc_list_find(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
205
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
212
mlxsw_sp_nve_mc_list_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
215
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
238
static void mlxsw_sp_nve_mc_list_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
241
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
250
mlxsw_sp_nve_mc_list_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
255
mc_list = mlxsw_sp_nve_mc_list_find(mlxsw_sp, key);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
259
return mlxsw_sp_nve_mc_list_create(mlxsw_sp, key);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
263
mlxsw_sp_nve_mc_list_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
268
mlxsw_sp_nve_mc_list_destroy(mlxsw_sp, mc_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
272
mlxsw_sp_nve_mc_record_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
276
unsigned int num_max_entries = mlxsw_sp->nve->num_max_mc_entries[proto];
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
284
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_TNUMT, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
290
mc_record->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
305
struct mlxsw_sp *mlxsw_sp = mc_record->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
308
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_TNUMT, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
315
mlxsw_sp_nve_mc_record_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
323
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
330
return mlxsw_sp_nve_mc_record_create(mlxsw_sp, mc_list, proto);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
345
struct mlxsw_sp_nve *nve = mc_record->mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
364
struct mlxsw_sp *mlxsw_sp = mc_record->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
384
num_max_entries = mlxsw_sp->nve->num_max_mc_entries[mc_record->proto];
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
397
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tnumt), tnumt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
416
struct mlxsw_sp_nve *nve = mc_record->mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
553
static int mlxsw_sp_nve_mc_list_ip_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
561
mc_record = mlxsw_sp_nve_mc_record_get(mlxsw_sp, mc_list, proto);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
576
static void mlxsw_sp_nve_mc_list_ip_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
632
int mlxsw_sp_nve_flood_ip_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
642
mc_list = mlxsw_sp_nve_mc_list_get(mlxsw_sp, &key);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
646
err = mlxsw_sp_nve_mc_list_ip_add(mlxsw_sp, mc_list, proto, addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
657
mlxsw_sp_nve_mc_list_ip_del(mlxsw_sp, mc_list, proto, addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
659
mlxsw_sp_nve_mc_list_put(mlxsw_sp, mc_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
66
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
663
void mlxsw_sp_nve_flood_ip_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
672
mc_list = mlxsw_sp_nve_mc_list_find(mlxsw_sp, &key);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
677
mlxsw_sp_nve_mc_list_ip_del(mlxsw_sp, mc_list, proto, addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
678
mlxsw_sp_nve_mc_list_put(mlxsw_sp, mc_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
684
struct mlxsw_sp_nve *nve = mc_record->mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
701
static void mlxsw_sp_nve_flood_ip_flush(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
714
mc_list = mlxsw_sp_nve_mc_list_find(mlxsw_sp, &key);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
722
mlxsw_sp_nve_mc_list_put(mlxsw_sp, mc_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
725
static int mlxsw_sp_nve_tunnel_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
728
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
737
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
750
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
758
static void mlxsw_sp_nve_tunnel_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
760
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
765
if (mlxsw_sp->nve->num_nve_tunnels == 1) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
767
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
774
static void mlxsw_sp_nve_fdb_flush_by_fid(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
781
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfdf), sfdf_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
784
static void mlxsw_sp_nve_fdb_clear_offload(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
795
ops = mlxsw_sp->nve->nve_ops_arr[type];
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
817
int mlxsw_sp_nve_ipv6_addr_kvdl_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
821
return mlxsw_sp_ipv6_addr_kvdl_index_get(mlxsw_sp, addr6, p_kvdl_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
824
void mlxsw_sp_nve_ipv6_addr_kvdl_unset(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
827
mlxsw_sp_ipv6_addr_put(mlxsw_sp, addr6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
831
mlxsw_sp_nve_ipv6_ht_node_lookup(struct mlxsw_sp *mlxsw_sp, const char *mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
838
return rhashtable_lookup_fast(&mlxsw_sp->nve->ipv6_ht, &key,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
842
static int mlxsw_sp_nve_ipv6_ht_insert(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
847
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
873
mlxsw_sp_nve_ipv6_ht_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
876
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
885
mlxsw_sp_nve_ipv6_addr_map_replace(struct mlxsw_sp *mlxsw_sp, const char *mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
893
ipv6_ht_node = mlxsw_sp_nve_ipv6_ht_node_lookup(mlxsw_sp, mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
896
return mlxsw_sp_nve_ipv6_ht_insert(mlxsw_sp, mac, fid_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
899
mlxsw_sp_ipv6_addr_put(mlxsw_sp, &ipv6_ht_node->addr6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
904
void mlxsw_sp_nve_ipv6_addr_map_del(struct mlxsw_sp *mlxsw_sp, const char *mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
911
ipv6_ht_node = mlxsw_sp_nve_ipv6_ht_node_lookup(mlxsw_sp, mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
916
mlxsw_sp_nve_ipv6_ht_remove(mlxsw_sp, ipv6_ht_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
919
static void mlxsw_sp_nve_ipv6_addr_flush_by_fid(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
923
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
930
mlxsw_sp_ipv6_addr_put(mlxsw_sp, &ipv6_ht_node->addr6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
931
mlxsw_sp_nve_ipv6_ht_remove(mlxsw_sp, ipv6_ht_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
935
int mlxsw_sp_nve_fid_enable(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_fid *fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
939
struct mlxsw_sp_nve *nve = mlxsw_sp->nve;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
957
err = mlxsw_sp_nve_tunnel_init(mlxsw_sp, &config);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
979
mlxsw_sp_nve_tunnel_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
983
void mlxsw_sp_nve_fid_disable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
994
mlxsw_sp_nve_flood_ip_flush(mlxsw_sp, fid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
995
mlxsw_sp_nve_fdb_flush_by_fid(mlxsw_sp, fid_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
996
mlxsw_sp_nve_ipv6_addr_flush_by_fid(mlxsw_sp, fid_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.h
28
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
194
mlxsw_sp1_nve_vxlan_config_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
201
err = mlxsw_sp_router_tb_id_vr_id(mlxsw_sp, config->ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
210
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tngcr), tngcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
213
static void mlxsw_sp1_nve_vxlan_config_clear(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
219
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tngcr), tngcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
222
static int mlxsw_sp1_nve_vxlan_rtdp_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
229
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtdp), rtdp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
235
struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
238
err = mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, config->udp_dport);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
242
err = mlxsw_sp_parsing_depth_inc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
246
err = mlxsw_sp1_nve_vxlan_config_set(mlxsw_sp, config);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
250
err = mlxsw_sp1_nve_vxlan_rtdp_set(mlxsw_sp, nve->tunnel_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
254
err = mlxsw_sp_router_nve_promote_decap(mlxsw_sp, config->ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
265
mlxsw_sp1_nve_vxlan_config_clear(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
267
mlxsw_sp_parsing_depth_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
269
mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
276
struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
278
mlxsw_sp_router_nve_demote_decap(mlxsw_sp, config->ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
280
mlxsw_sp1_nve_vxlan_config_clear(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
281
mlxsw_sp_parsing_depth_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
282
mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
313
static int mlxsw_sp2_nve_vxlan_learning_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
320
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tnpc), tnpc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
324
mlxsw_sp2_nve_decap_ethertype_set(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
332
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spvid), spvid_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
336
mlxsw_sp2_nve_vxlan_config_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
344
err = mlxsw_sp_router_ul_rif_get(mlxsw_sp, config->ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
348
mlxsw_sp->nve->ul_rif_index = ul_rif_index;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
350
err = mlxsw_sp2_nve_vxlan_learning_set(mlxsw_sp, config->learning_en);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
357
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tngcr), tngcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
363
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spvtr), spvtr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
367
err = mlxsw_sp2_nve_decap_ethertype_set(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
376
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spvtr), spvtr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
379
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tngcr), tngcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
381
mlxsw_sp2_nve_vxlan_learning_set(mlxsw_sp, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
383
mlxsw_sp_router_ul_rif_put(mlxsw_sp, ul_rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
387
static void mlxsw_sp2_nve_vxlan_config_clear(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
394
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(spvtr), spvtr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
396
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tngcr), tngcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
397
mlxsw_sp2_nve_vxlan_learning_set(mlxsw_sp, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
398
mlxsw_sp_router_ul_rif_put(mlxsw_sp, mlxsw_sp->nve->ul_rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
401
static int mlxsw_sp2_nve_vxlan_rtdp_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
410
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtdp), rtdp_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
416
struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
419
err = mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, config->udp_dport);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
423
err = mlxsw_sp_parsing_depth_inc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
427
err = mlxsw_sp2_nve_vxlan_config_set(mlxsw_sp, config);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
431
err = mlxsw_sp2_nve_vxlan_rtdp_set(mlxsw_sp, nve->tunnel_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
436
err = mlxsw_sp_router_nve_promote_decap(mlxsw_sp, config->ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
447
mlxsw_sp2_nve_vxlan_config_clear(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
449
mlxsw_sp_parsing_depth_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
451
mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
458
struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
460
mlxsw_sp_router_nve_demote_decap(mlxsw_sp, config->ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
462
mlxsw_sp2_nve_vxlan_config_clear(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
463
mlxsw_sp_parsing_depth_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
464
mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
183
mlxsw_sp_pgt_entry_port_write(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
195
mlxsw_sp->pgt->smpe_index_valid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
199
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(smid2), smid2_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
207
mlxsw_sp_pgt_entry_port_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
218
err = mlxsw_sp_pgt_entry_port_write(mlxsw_sp, pgt_entry, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
234
mlxsw_sp_pgt_entry_port_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
240
mlxsw_sp_pgt_entry_port_write(mlxsw_sp, pgt_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
245
static int mlxsw_sp_pgt_entry_port_add(struct mlxsw_sp *mlxsw_sp, u16 mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
252
mutex_lock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
254
pgt_entry = mlxsw_sp_pgt_entry_get(mlxsw_sp->pgt, mid, smpe);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
260
pgt_entry_port = mlxsw_sp_pgt_entry_port_create(mlxsw_sp, pgt_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
267
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
271
mlxsw_sp_pgt_entry_put(mlxsw_sp->pgt, mid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
273
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
277
static void mlxsw_sp_pgt_entry_port_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
28
int mlxsw_sp_pgt_mid_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_mid)
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
283
mutex_lock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
285
pgt_entry = idr_find(&mlxsw_sp->pgt->pgt_idr, mid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
293
mlxsw_sp_pgt_entry_port_destroy(mlxsw_sp, pgt_entry, pgt_entry_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
294
mlxsw_sp_pgt_entry_put(mlxsw_sp->pgt, mid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
297
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
300
int mlxsw_sp_pgt_entry_port_set(struct mlxsw_sp *mlxsw_sp, u16 mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
304
return mlxsw_sp_pgt_entry_port_add(mlxsw_sp, mid, smpe,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
307
mlxsw_sp_pgt_entry_port_del(mlxsw_sp, mid, smpe, local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
311
int mlxsw_sp_pgt_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
315
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, PGT_SIZE))
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
318
pgt = kzalloc_obj(*mlxsw_sp->pgt);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
32
mutex_lock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
323
pgt->end_index = MLXSW_CORE_RES_GET(mlxsw_sp->core, PGT_SIZE);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
325
pgt->smpe_index_valid = mlxsw_sp->pgt_smpe_index_valid;
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
326
mlxsw_sp->pgt = pgt;
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
33
index = idr_alloc(&mlxsw_sp->pgt->pgt_idr, NULL, 0,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
330
void mlxsw_sp_pgt_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
332
mutex_destroy(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
333
WARN_ON(!idr_is_empty(&mlxsw_sp->pgt->pgt_idr));
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
334
idr_destroy(&mlxsw_sp->pgt->pgt_idr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
335
kfree(mlxsw_sp->pgt);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
34
mlxsw_sp->pgt->end_index, GFP_KERNEL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
42
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
46
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
50
void mlxsw_sp_pgt_mid_free(struct mlxsw_sp *mlxsw_sp, u16 mid_base)
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
52
mutex_lock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
53
WARN_ON(idr_remove(&mlxsw_sp->pgt->pgt_idr, mid_base));
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
54
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
57
int mlxsw_sp_pgt_mid_alloc_range(struct mlxsw_sp *mlxsw_sp, u16 *p_mid_base,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
63
mutex_lock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
65
mid_base = idr_get_cursor(&mlxsw_sp->pgt->pgt_idr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
67
err = idr_alloc_cyclic(&mlxsw_sp->pgt->pgt_idr, NULL,
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
73
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
79
idr_remove(&mlxsw_sp->pgt->pgt_idr, mid_base + i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
80
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
85
mlxsw_sp_pgt_mid_free_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base, u16 count)
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
87
struct idr *pgt_idr = &mlxsw_sp->pgt->pgt_idr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
90
mutex_lock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c
95
mutex_unlock(&mlxsw_sp->pgt->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
108
struct devlink *devlink = priv_to_devlink(family->mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
15
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
158
struct mlxsw_sp *mlxsw_sp = family->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
165
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpcr), qpcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
173
struct mlxsw_sp_policer_core *policer_core = family->mlxsw_sp->policer_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
231
int mlxsw_sp_policer_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
240
family = mlxsw_sp->policer_core->family_arr[type];
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
274
void mlxsw_sp_policer_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
280
family = mlxsw_sp->policer_core->family_arr[type];
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
285
int mlxsw_sp_policer_drops_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
293
family = mlxsw_sp->policer_core->family_arr[type];
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
298
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(qpcr), qpcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
308
mlxsw_sp_policer_family_register(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
318
family->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
331
mlxsw_sp->policer_core->family_arr[tmpl->type] = family;
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
345
mlxsw_sp_policer_family_unregister(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
355
int mlxsw_sp_policers_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
363
mlxsw_sp->policer_core = policer_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
364
policer_core->ops = mlxsw_sp->policer_core_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
371
err = mlxsw_sp_policer_family_register(mlxsw_sp, mlxsw_sp_policer_family_arr[i]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
382
family = mlxsw_sp->policer_core->family_arr[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
383
mlxsw_sp_policer_family_unregister(mlxsw_sp, family);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
386
kfree(mlxsw_sp->policer_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
390
void mlxsw_sp_policers_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
397
family = mlxsw_sp->policer_core->family_arr[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
398
mlxsw_sp_policer_family_unregister(mlxsw_sp, family);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
401
kfree(mlxsw_sp->policer_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
82
struct mlxsw_core *core = family->mlxsw_sp->core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
101
struct mlxsw_sp_port_range_core *pr_core = mlxsw_sp->pr_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
115
int mlxsw_sp_port_range_reg_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
122
prr = mlxsw_sp_port_range_reg_find(mlxsw_sp, range);
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
129
prr = mlxsw_sp_port_range_reg_create(mlxsw_sp, range, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
138
void mlxsw_sp_port_range_reg_put(struct mlxsw_sp *mlxsw_sp, u8 prr_index)
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
140
struct mlxsw_sp_port_range_core *pr_core = mlxsw_sp->pr_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
150
mlxsw_sp_port_range_reg_destroy(mlxsw_sp, prr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
160
int mlxsw_sp_port_range_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
163
struct mlxsw_core *core = mlxsw_sp->core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
175
pr_core = kzalloc_obj(*mlxsw_sp->pr_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
178
mlxsw_sp->pr_core = pr_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
191
void mlxsw_sp_port_range_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
193
struct mlxsw_sp_port_range_core *pr_core = mlxsw_sp->pr_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
195
devl_resource_occ_get_unregister(priv_to_devlink(mlxsw_sp->core),
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
25
mlxsw_sp_port_range_reg_configure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
43
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pprr), pprr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
47
mlxsw_sp_port_range_reg_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
51
struct mlxsw_sp_port_range_core *pr_core = mlxsw_sp->pr_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
70
err = mlxsw_sp_port_range_reg_configure(mlxsw_sp, prr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
87
static void mlxsw_sp_port_range_reg_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
90
struct mlxsw_sp_port_range_core *pr_core = mlxsw_sp->pr_core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_port_range.c
98
mlxsw_sp_port_range_reg_find(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
100
mlxsw_sp2_ptp_state(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1002
err = mlxsw_sp_ptp_mtptpt_set(mlxsw_sp, MLXSW_REG_MTPTPT_TRAP_ID_PTP0,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1008
err = mlxsw_sp_ptp_mtptpt_set(mlxsw_sp, MLXSW_REG_MTPTPT_TRAP_ID_PTP1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1016
mlxsw_sp_ptp_mtptpt_set(mlxsw_sp, MLXSW_REG_MTPTPT_TRAP_ID_PTP0, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
102
return container_of(mlxsw_sp->ptp_state, struct mlxsw_sp2_ptp_state,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1020
static void mlxsw_sp_ptp_traps_unset(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1022
mlxsw_sp_ptp_mtptpt_set(mlxsw_sp, MLXSW_REG_MTPTPT_TRAP_ID_PTP1, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1023
mlxsw_sp_ptp_mtptpt_set(mlxsw_sp, MLXSW_REG_MTPTPT_TRAP_ID_PTP0, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1026
struct mlxsw_sp_ptp_state *mlxsw_sp1_ptp_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1031
err = mlxsw_sp1_ptp_shaper_params_set(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1038
ptp_state->common.mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1047
err = mlxsw_sp_ptp_traps_set(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1051
err = mlxsw_sp1_ptp_set_fifo_clr_on_trap(mlxsw_sp, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1061
mlxsw_sp_ptp_traps_unset(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1071
struct mlxsw_sp *mlxsw_sp = ptp_state_common->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1074
ptp_state = mlxsw_sp1_ptp_state(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1077
mlxsw_sp1_ptp_mtpppc_set(mlxsw_sp, 0, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1078
mlxsw_sp1_ptp_set_fifo_clr_on_trap(mlxsw_sp, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1079
mlxsw_sp_ptp_traps_unset(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1157
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1167
for (i = 1; i < mlxsw_core_max_ports(mlxsw_sp->core); i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1168
tmp = mlxsw_sp->ports[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1180
err = mlxsw_sp_parsing_depth_inc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1187
mlxsw_sp_parsing_depth_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1189
return mlxsw_sp1_ptp_mtpppc_set(mlxsw_sp_port->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1201
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1205
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qeec), qeec_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1280
int mlxsw_sp1_ptp_get_ts_info(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1283
info->phc_index = ptp_clock_index(mlxsw_sp->clock->ptp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1352
struct mlxsw_sp_ptp_state *mlxsw_sp2_ptp_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1358
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, FID))
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1365
ptp_state->common.mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1367
err = mlxsw_sp_ptp_traps_set(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1382
struct mlxsw_sp *mlxsw_sp = ptp_state_common->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1385
ptp_state = mlxsw_sp2_ptp_state(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1388
mlxsw_sp_ptp_traps_unset(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1432
void mlxsw_sp2_ptp_receive(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1437
mlxsw_sp2_ptp_hwtstamp_fill(mlxsw_sp->core, mlxsw_skb_cb(skb),
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1440
mlxsw_sp_rx_listener_no_mark_func(skb, local_port, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1443
void mlxsw_sp2_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1448
mlxsw_sp2_ptp_hwtstamp_fill(mlxsw_sp->core, mlxsw_skb_cb(skb),
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1459
ptp_state = mlxsw_sp2_ptp_state(mlxsw_sp_port->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1534
static int mlxsw_sp2_ptp_mtpcpc_set(struct mlxsw_sp *mlxsw_sp, bool ptp_trap_en,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1541
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mtpcpc), mtpcpc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1544
static int mlxsw_sp2_ptp_enable(struct mlxsw_sp *mlxsw_sp, u16 ing_types,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1548
struct mlxsw_sp2_ptp_state *ptp_state = mlxsw_sp2_ptp_state(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1551
err = mlxsw_sp2_ptp_mtpcpc_set(mlxsw_sp, true, ing_types, egr_types);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1559
static int mlxsw_sp2_ptp_disable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1562
struct mlxsw_sp2_ptp_state *ptp_state = mlxsw_sp2_ptp_state(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1565
err = mlxsw_sp2_ptp_mtpcpc_set(mlxsw_sp, false, 0, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1580
ptp_state = mlxsw_sp2_ptp_state(mlxsw_sp_port->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1585
err = mlxsw_sp2_ptp_enable(mlxsw_sp_port->mlxsw_sp, ing_types,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1601
ptp_state = mlxsw_sp2_ptp_state(mlxsw_sp_port->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1606
err = mlxsw_sp2_ptp_disable(mlxsw_sp_port->mlxsw_sp, new_config);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1628
ptp_state = mlxsw_sp2_ptp_state(mlxsw_sp_port->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1670
int mlxsw_sp2_ptp_get_ts_info(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
1673
info->phc_index = ptp_clock_index(mlxsw_sp->clock->ptp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
274
mlxsw_sp1_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
291
clock->common.core = mlxsw_sp->core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
33
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
444
mlxsw_sp2_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
453
clock->core = mlxsw_sp->core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
517
mlxsw_sp1_ptp_unmatched_save(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
523
struct mlxsw_sp1_ptp_state *ptp_state = mlxsw_sp1_ptp_state(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
545
mlxsw_sp1_ptp_unmatched_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
548
struct mlxsw_sp1_ptp_state *ptp_state = mlxsw_sp1_ptp_state(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
565
mlxsw_sp1_ptp_unmatched_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
568
struct mlxsw_sp1_ptp_state *ptp_state = mlxsw_sp1_ptp_state(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
583
static void mlxsw_sp1_ptp_packet_finish(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
594
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
603
mlxsw_sp_rx_listener_no_mark_func(skb, local_port, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
611
static void mlxsw_sp1_packet_timestamp(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
616
struct mlxsw_sp_ptp_clock *clock_common = mlxsw_sp->clock;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
628
mlxsw_sp1_ptp_packet_finish(mlxsw_sp, skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
633
mlxsw_sp1_ptp_unmatched_finish(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
637
mlxsw_sp1_packet_timestamp(mlxsw_sp, unmatched->key,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
641
mlxsw_sp1_ptp_packet_finish(mlxsw_sp, unmatched->skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
659
static void mlxsw_sp1_ptp_got_piece(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
663
struct mlxsw_sp1_ptp_state *ptp_state = mlxsw_sp1_ptp_state(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
672
unmatched = mlxsw_sp1_ptp_unmatched_lookup(mlxsw_sp, key, &length);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
682
err = mlxsw_sp1_ptp_unmatched_save(mlxsw_sp, key,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
687
mlxsw_sp1_ptp_packet_finish(mlxsw_sp, skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
694
err = mlxsw_sp1_ptp_unmatched_remove(mlxsw_sp, unmatched);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
701
mlxsw_sp1_ptp_unmatched_finish(mlxsw_sp, unmatched);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
706
static void mlxsw_sp1_ptp_got_packet(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
715
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
739
mlxsw_sp1_ptp_got_piece(mlxsw_sp, key, skb, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
743
mlxsw_sp1_ptp_packet_finish(mlxsw_sp, skb, local_port, ingress, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
746
void mlxsw_sp1_ptp_got_timestamp(struct mlxsw_sp *mlxsw_sp, bool ingress,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
755
if (WARN_ON_ONCE(!mlxsw_sp_local_port_is_valid(mlxsw_sp, local_port)))
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
757
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
777
mlxsw_sp1_ptp_got_piece(mlxsw_sp, key, NULL, timestamp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
780
void mlxsw_sp1_ptp_receive(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
784
mlxsw_sp1_ptp_got_packet(mlxsw_sp, skb, local_port, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
787
void mlxsw_sp1_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
790
mlxsw_sp1_ptp_got_packet(mlxsw_sp, skb, local_port, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
797
struct mlxsw_sp *mlxsw_sp = ptp_state->common.mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
820
mlxsw_sp_port = mlxsw_sp->ports[unmatched->key.local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
837
mlxsw_sp1_ptp_unmatched_finish(mlxsw_sp, unmatched);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
872
static int mlxsw_sp_ptp_mtptpt_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
879
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mtptpt), mtptpt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
882
static int mlxsw_sp1_ptp_set_fifo_clr_on_trap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
888
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(mogcr), mogcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
894
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mogcr), mogcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
897
static int mlxsw_sp1_ptp_mtpppc_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
903
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mtpppc), mtpppc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
93
mlxsw_sp1_ptp_state(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
95
return container_of(mlxsw_sp->ptp_state, struct mlxsw_sp1_ptp_state,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
968
static int mlxsw_sp1_ptp_shaper_params_set(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
983
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpsc), qpsc_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
991
static int mlxsw_sp_ptp_traps_set(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
10
struct mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
100
static inline void mlxsw_sp1_ptp_receive(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
103
mlxsw_sp_rx_listener_no_mark_func(skb, local_port, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
106
static inline void mlxsw_sp1_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
113
mlxsw_sp1_ptp_got_timestamp(struct mlxsw_sp *mlxsw_sp, bool ingress,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
154
mlxsw_sp2_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
164
mlxsw_sp2_ptp_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
17
mlxsw_sp1_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
173
static inline void mlxsw_sp2_ptp_receive(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
176
mlxsw_sp_rx_listener_no_mark_func(skb, local_port, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
179
static inline void mlxsw_sp2_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
21
struct mlxsw_sp_ptp_state *mlxsw_sp1_ptp_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
25
void mlxsw_sp1_ptp_receive(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
28
void mlxsw_sp1_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
31
void mlxsw_sp1_ptp_got_timestamp(struct mlxsw_sp *mlxsw_sp, bool ingress,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
45
int mlxsw_sp1_ptp_get_ts_info(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
54
mlxsw_sp2_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
58
struct mlxsw_sp_ptp_state *mlxsw_sp2_ptp_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
62
void mlxsw_sp2_ptp_receive(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
65
void mlxsw_sp2_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
75
int mlxsw_sp2_ptp_get_ts_info(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
81
mlxsw_sp1_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h
91
mlxsw_sp1_ptp_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1009
dev_err(mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1012
mlxsw_sp_qdisc_tbf_max_size(mlxsw_sp->lowest_shaper_bs),
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1423
backlog = mlxsw_sp_cells_bytes(mlxsw_sp_port->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1458
mlxsw_sp_qdisc_update_stats(mlxsw_sp_port->mlxsw_sp, mlxsw_sp_qdisc,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1746
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1760
static int mlxsw_sp_qevent_span_configure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1773
err = mlxsw_sp_span_agent_get(mlxsw_sp, &span_id, agent_parms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1784
err = mlxsw_sp_span_agent_bind(mlxsw_sp, span_trigger, mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1798
mlxsw_sp_span_agent_unbind(mlxsw_sp, span_trigger, mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1803
mlxsw_sp_span_agent_put(mlxsw_sp, span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1807
static void mlxsw_sp_qevent_span_deconfigure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1822
mlxsw_sp_span_agent_unbind(mlxsw_sp, span_trigger, mlxsw_sp_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1825
mlxsw_sp_span_agent_put(mlxsw_sp, span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1828
static int mlxsw_sp_qevent_mirror_configure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1836
return mlxsw_sp_qevent_span_configure(mlxsw_sp, mall_entry, qevent_binding,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1840
static void mlxsw_sp_qevent_mirror_deconfigure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1844
mlxsw_sp_qevent_span_deconfigure(mlxsw_sp, qevent_binding, mall_entry->mirror.span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1847
static int mlxsw_sp_qevent_trap_configure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1856
err = mlxsw_sp_trap_group_policer_hw_id_get(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1863
return mlxsw_sp_qevent_span_configure(mlxsw_sp, mall_entry, qevent_binding,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1867
static void mlxsw_sp_qevent_trap_deconfigure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1871
mlxsw_sp_qevent_span_deconfigure(mlxsw_sp, qevent_binding, mall_entry->trap.span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1875
mlxsw_sp_qevent_entry_configure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1887
return mlxsw_sp_qevent_mirror_configure(mlxsw_sp, mall_entry, qevent_binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1889
return mlxsw_sp_qevent_trap_configure(mlxsw_sp, mall_entry, qevent_binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1897
static void mlxsw_sp_qevent_entry_deconfigure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1903
return mlxsw_sp_qevent_mirror_deconfigure(mlxsw_sp, mall_entry, qevent_binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1905
return mlxsw_sp_qevent_trap_deconfigure(mlxsw_sp, mall_entry, qevent_binding);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1921
err = mlxsw_sp_qevent_entry_configure(qevent_block->mlxsw_sp, mall_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1931
mlxsw_sp_qevent_entry_deconfigure(qevent_block->mlxsw_sp, mall_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1942
mlxsw_sp_qevent_entry_deconfigure(qevent_block->mlxsw_sp, mall_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
1989
static int mlxsw_sp_qevent_mall_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2072
struct mlxsw_sp *mlxsw_sp = qevent_block->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2076
return mlxsw_sp_qevent_mall_replace(mlxsw_sp, qevent_block, f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2097
static struct mlxsw_sp_qevent_block *mlxsw_sp_qevent_block_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2108
qevent_block->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2174
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2183
block_cb = flow_block_cb_lookup(f->block, mlxsw_sp_qevent_block_cb, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2185
qevent_block = mlxsw_sp_qevent_block_create(mlxsw_sp, f->net);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2188
block_cb = flow_block_cb_alloc(mlxsw_sp_qevent_block_cb, mlxsw_sp, qevent_block,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2252
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2257
block_cb = flow_block_cb_lookup(f->block, mlxsw_sp_qevent_block_cb, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
557
mlxsw_sp_qdisc_update_stats(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
572
stats_ptr->qstats->backlog += mlxsw_sp_cells_bytes(mlxsw_sp, backlog);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
593
mlxsw_sp_qdisc_update_stats(mlxsw_sp_port->mlxsw_sp, mlxsw_sp_qdisc,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
605
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
614
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(cwtp), cwtp_cmd);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
621
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(cwtpm), cwtpm_cmd);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
628
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
633
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(cwtpm), cwtpm_cmd);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
681
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
685
dev_err(mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
690
if (p->max > MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
692
dev_err(mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
697
dev_err(mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
717
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
738
min = mlxsw_sp_bytes_cells(mlxsw_sp, p->min);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
739
max = mlxsw_sp_bytes_cells(mlxsw_sp, p->max);
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
752
backlog = mlxsw_sp_cells_bytes(mlxsw_sp_port->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
965
if (bs < mlxsw_sp_port->mlxsw_sp->lowest_shaper_bs ||
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
993
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
999
dev_err(mlxsw_sp_port->mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10008
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1002
vr = &mlxsw_sp->router->vrs[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10025
crif = mlxsw_sp_crif_lookup(ctx->mlxsw_sp->router, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10032
err = __mlxsw_sp_inetaddr_event(ctx->mlxsw_sp, dev, NETDEV_UP,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1005
err = mlxsw_sp_vr_lpm_tree_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10054
crif = mlxsw_sp_crif_lookup(ctx->mlxsw_sp->router, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10062
__mlxsw_sp_inetaddr_event(ctx->mlxsw_sp, dev, NETDEV_DOWN, nomaster,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10069
int mlxsw_sp_netdevice_enslavement_replay(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10074
.mlxsw_sp = mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10103
void mlxsw_sp_netdevice_deslavement_replay(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10107
.mlxsw_sp = mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1014
mlxsw_sp->router->lpm.proto_trees[proto] = new_tree;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1015
mlxsw_sp_lpm_tree_put(mlxsw_sp, old_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1021
vr = &mlxsw_sp->router->vrs[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10219
mutex_lock(&mlxsw_sp_port->mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10221
mutex_unlock(&mlxsw_sp_port->mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10229
mutex_lock(&mlxsw_sp_port->mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10231
mutex_unlock(&mlxsw_sp_port->mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10239
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1024
mlxsw_sp_vr_lpm_tree_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10243
mlxsw_sp = router->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10245
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10257
err = mlxsw_sp_netdevice_offload_xstats_cmd(mlxsw_sp, dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10259
else if (mlxsw_sp_netdev_is_ipip_ol(mlxsw_sp, dev))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10260
err = mlxsw_sp_netdevice_ipip_ol_event(mlxsw_sp, dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10262
else if (mlxsw_sp_netdev_is_ipip_ul(mlxsw_sp, dev))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10263
err = mlxsw_sp_netdevice_ipip_ul_event(mlxsw_sp, dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10274
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10280
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10289
struct mlxsw_sp *mlxsw_sp = rms->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10294
return mlxsw_sp_rif_macvlan_add(mlxsw_sp, dev, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10301
.mlxsw_sp = rif->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1031
static int mlxsw_sp_vrs_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10321
return mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10357
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1037
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_VRS))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10372
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10382
err = mlxsw_sp_rif_mac_profile_get(rif->mlxsw_sp, rif->addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10396
err = mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1040
max_vrs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_VRS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10408
mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1041
mlxsw_sp->router->vrs = kzalloc_objs(struct mlxsw_sp_vr, max_vrs);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10415
mlxsw_sp_rif_mac_profile_put(rif->mlxsw_sp, mac_profile);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1042
if (!mlxsw_sp->router->vrs)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10425
mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10429
mlxsw_sp_rif_mac_profile_put(rif->mlxsw_sp, rif->mac_profile_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10437
return mlxsw_sp_fid_rfid_get(rif->mlxsw_sp, rif->rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10453
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1046
vr = &mlxsw_sp->router->vrs[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10462
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10465
u16 mlxsw_sp_router_port(const struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10467
return mlxsw_core_max_ports(mlxsw_sp->core) + 1;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10474
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10479
err = mlxsw_sp_rif_mac_profile_get(mlxsw_sp, rif->addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10490
mlxsw_sp_router_port(mlxsw_sp), true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10495
mlxsw_sp_router_port(mlxsw_sp), true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10503
err = mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10515
mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10521
mlxsw_sp_router_port(mlxsw_sp), false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10524
mlxsw_sp_router_port(mlxsw_sp), false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10528
mlxsw_sp_rif_mac_profile_put(mlxsw_sp, mac_profile);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1053
static void mlxsw_sp_router_fib_flush(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10536
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10540
mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10544
mlxsw_sp_router_port(mlxsw_sp), false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10546
mlxsw_sp_router_port(mlxsw_sp), false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10548
mlxsw_sp_rif_mac_profile_put(rif->mlxsw_sp, rif->mac_profile_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1055
static void mlxsw_sp_vrs_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10558
return mlxsw_sp_fid_8021d_get(rif->mlxsw_sp, rif_ifindex);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10602
return mlxsw_sp_fid_8021q_get(rif->mlxsw_sp, params->vid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10628
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10635
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10643
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10647
err = mlxsw_sp_rif_mac_profile_get(mlxsw_sp, rif->addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1065
mlxsw_sp_router_fib_flush(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10658
mlxsw_sp_router_port(mlxsw_sp), true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1066
kfree(mlxsw_sp->router->vrs);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10663
mlxsw_sp_router_port(mlxsw_sp), true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10671
err = mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10683
mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10689
mlxsw_sp_router_port(mlxsw_sp), false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10692
mlxsw_sp_router_port(mlxsw_sp), false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10696
mlxsw_sp_rif_mac_profile_put(mlxsw_sp, mac_profile);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10704
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10707
mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10711
mlxsw_sp_router_port(mlxsw_sp), false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10713
mlxsw_sp_router_port(mlxsw_sp), false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10715
mlxsw_sp_rif_mac_profile_put(rif->mlxsw_sp, rif->mac_profile_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10776
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10780
ul_vr = mlxsw_sp_vr_get(mlxsw_sp, ul_tb_id, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10794
mlxsw_sp_vr_put(mlxsw_sp, ul_vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10801
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10804
ul_vr = &mlxsw_sp->router->vrs[lb_rif->ul_vr_id];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10808
mlxsw_sp_vr_put(mlxsw_sp, ul_vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10829
struct mlxsw_sp *mlxsw_sp = ul_rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10837
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10841
mlxsw_sp_ul_rif_create(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_vr *vr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10850
err = mlxsw_sp_rif_index_alloc(mlxsw_sp, &rif_index, rif_entries);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10863
mlxsw_sp->router->rifs[rif_index] = ul_rif;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10864
ul_rif->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10870
atomic_add(rif_entries, &mlxsw_sp->router->rifs_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10874
mlxsw_sp->router->rifs[rif_index] = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10877
mlxsw_sp_rif_index_free(mlxsw_sp, rif_index, rif_entries);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10883
struct mlxsw_sp *mlxsw_sp = ul_rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10887
atomic_sub(rif_entries, &mlxsw_sp->router->rifs_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10889
mlxsw_sp->router->rifs[ul_rif->rif_index] = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10891
mlxsw_sp_rif_index_free(mlxsw_sp, rif_index, rif_entries);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10895
mlxsw_sp_ul_rif_get(struct mlxsw_sp *mlxsw_sp, u32 tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10902
vr = mlxsw_sp_vr_get(mlxsw_sp, tb_id, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10909
vr->ul_rif = mlxsw_sp_ul_rif_create(mlxsw_sp, vr, ul_crif, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10921
mlxsw_sp_vr_put(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10927
struct mlxsw_sp *mlxsw_sp = ul_rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10930
vr = &mlxsw_sp->router->vrs[ul_rif->vr_id];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10937
mlxsw_sp_vr_put(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10940
int mlxsw_sp_router_ul_rif_get(struct mlxsw_sp *mlxsw_sp, u32 ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10946
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10947
ul_rif = mlxsw_sp_ul_rif_get(mlxsw_sp, ul_tb_id, NULL, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10954
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10958
void mlxsw_sp_router_ul_rif_put(struct mlxsw_sp *mlxsw_sp, u16 ul_rif_index)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10962
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10963
ul_rif = mlxsw_sp->router->rifs[ul_rif_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10969
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10979
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
10983
ul_rif = mlxsw_sp_ul_rif_get(mlxsw_sp, ul_tb_id, NULL, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11004
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11007
ul_rif = mlxsw_sp_rif_by_index(mlxsw_sp, lb_rif->ul_rif_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11027
static int mlxsw_sp_rifs_table_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11040
MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS), -1);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11044
mlxsw_sp->router->rifs_table = rifs_table;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11053
static void mlxsw_sp_rifs_table_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11055
gen_pool_destroy(mlxsw_sp->router->rifs_table);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11058
static int mlxsw_sp_rifs_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11060
u64 max_rifs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11061
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11062
struct mlxsw_core *core = mlxsw_sp->core;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11067
mlxsw_sp->router->max_rif_mac_profile =
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11070
mlxsw_sp->router->rifs = kzalloc_objs(struct mlxsw_sp_rif *, max_rifs);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11071
if (!mlxsw_sp->router->rifs)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11074
err = mlxsw_sp_rifs_table_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11078
idr_init(&mlxsw_sp->router->rif_mac_profiles_idr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11079
atomic_set(&mlxsw_sp->router->rif_mac_profiles_count, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11080
atomic_set(&mlxsw_sp->router->rifs_count, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11084
mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11088
mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11093
kfree(mlxsw_sp->router->rifs);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11097
static void mlxsw_sp_rifs_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11099
int max_rifs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11100
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11103
WARN_ON_ONCE(atomic_read(&mlxsw_sp->router->rifs_count));
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11105
WARN_ON_ONCE(mlxsw_sp->router->rifs[i]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11110
WARN_ON(!idr_is_empty(&mlxsw_sp->router->rif_mac_profiles_idr));
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11111
idr_destroy(&mlxsw_sp->router->rif_mac_profiles_idr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11112
mlxsw_sp_rifs_table_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11113
kfree(mlxsw_sp->router->rifs);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11117
mlxsw_sp_ipip_config_tigcr(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11122
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tigcr), tigcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11125
static int mlxsw_sp_ipips_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11129
INIT_LIST_HEAD(&mlxsw_sp->router->ipip_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11131
err = mlxsw_sp_ipip_ecn_encap_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11134
err = mlxsw_sp_ipip_ecn_decap_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11138
return mlxsw_sp_ipip_config_tigcr(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11141
static int mlxsw_sp1_ipips_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11143
mlxsw_sp->router->ipip_ops_arr = mlxsw_sp1_ipip_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11144
return mlxsw_sp_ipips_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11147
static int mlxsw_sp2_ipips_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11149
mlxsw_sp->router->ipip_ops_arr = mlxsw_sp2_ipip_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11150
return mlxsw_sp_ipips_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11153
static void mlxsw_sp_ipips_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11155
WARN_ON(!list_empty(&mlxsw_sp->router->ipip_list));
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11168
mlxsw_sp_router_fib_flush(router->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11261
static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11264
struct net *net = mlxsw_sp_net(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11321
static void mlxsw_sp_mp6_hash_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11324
u32 hash_fields = ip6_multipath_hash_fields(mlxsw_sp_net(mlxsw_sp));
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11328
switch (ip6_multipath_hash_policy(mlxsw_sp_net(mlxsw_sp))) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11379
static int mlxsw_sp_mp_hash_parsing_depth_adjust(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11386
err = mlxsw_sp_parsing_depth_inc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11389
mlxsw_sp->router->inc_parsing_depth = true;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11391
mlxsw_sp_parsing_depth_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11392
mlxsw_sp->router->inc_parsing_depth = false;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11398
static int mlxsw_sp_mp_hash_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11402
struct net *net = mlxsw_sp_net(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1141
mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11410
seed = jhash(mlxsw_sp->base_mac, sizeof(mlxsw_sp->base_mac), 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11413
mlxsw_sp_mp4_hash_init(mlxsw_sp, &config);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11414
mlxsw_sp_mp6_hash_init(mlxsw_sp, &config);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11416
old_inc_parsing_depth = mlxsw_sp->router->inc_parsing_depth;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11418
err = mlxsw_sp_mp_hash_parsing_depth_adjust(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11433
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(recr2), recr2_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11440
mlxsw_sp_mp_hash_parsing_depth_adjust(mlxsw_sp, new_inc_parsing_depth,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11445
static void mlxsw_sp_mp_hash_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11447
bool old_inc_parsing_depth = mlxsw_sp->router->inc_parsing_depth;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11449
mlxsw_sp_mp_hash_parsing_depth_adjust(mlxsw_sp, old_inc_parsing_depth,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11453
static int mlxsw_sp_mp_hash_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11458
static void mlxsw_sp_mp_hash_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1146
mlxsw_sp_ipip_ol_ipip_lb_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11463
static int mlxsw_sp_dscp_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11478
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rdpm), rdpm_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11481
static int __mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11483
struct net *net = mlxsw_sp_net(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11488
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_RIFS))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11490
max_rifs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11496
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rgcr), rgcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11499
static void __mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11504
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rgcr), rgcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11507
static int mlxsw_sp_lb_rif_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11510
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11524
lb_rif = mlxsw_sp_ul_rif_get(mlxsw_sp, RT_TABLE_MAIN, router->lb_crif,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11538
static void mlxsw_sp_lb_rif_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11540
mlxsw_sp_ul_rif_put(mlxsw_sp->router->lb_crif->rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11541
mlxsw_sp_crif_free(mlxsw_sp->router->lb_crif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11544
static int mlxsw_sp1_router_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11548
mlxsw_sp->router->rif_ops_arr = mlxsw_sp1_rif_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11549
mlxsw_sp->router->adj_grp_size_ranges = mlxsw_sp1_adj_grp_size_ranges;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1155
ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11550
mlxsw_sp->router->adj_grp_size_ranges_count = size_ranges_count;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11560
static int mlxsw_sp2_router_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11564
mlxsw_sp->router->rif_ops_arr = mlxsw_sp2_rif_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11565
mlxsw_sp->router->adj_grp_size_ranges = mlxsw_sp2_adj_grp_size_ranges;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11566
mlxsw_sp->router->adj_grp_size_ranges_count = size_ranges_count;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11576
int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11583
router = kzalloc_obj(*mlxsw_sp->router);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11587
mlxsw_sp->router = router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11588
router->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11590
err = mlxsw_sp->router_ops->init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11594
INIT_LIST_HEAD(&mlxsw_sp->router->nh_res_grp_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11595
INIT_DELAYED_WORK(&mlxsw_sp->router->nh_grp_activity_dw,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11597
INIT_LIST_HEAD(&mlxsw_sp->router->nexthop_neighs_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11598
err = __mlxsw_sp_router_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1160
.lb_config = ipip_ops->ol_loopback_config(mlxsw_sp, ol_dev),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11602
err = mlxsw_sp->router_ops->ipips_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11606
err = rhashtable_init(&mlxsw_sp->router->crif_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11611
err = mlxsw_sp_rifs_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11615
err = rhashtable_init(&mlxsw_sp->router->nexthop_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11620
err = rhashtable_init(&mlxsw_sp->router->nexthop_group_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11625
INIT_LIST_HEAD(&mlxsw_sp->router->nexthop_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11626
err = mlxsw_sp_lpm_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1163
rif = mlxsw_sp_rif_create(mlxsw_sp, &lb_params.common, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11630
err = mlxsw_sp_mr_init(mlxsw_sp, &mlxsw_sp_mr_tcam_ops);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11634
err = mlxsw_sp_vrs_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11638
err = mlxsw_sp_lb_rif_init(mlxsw_sp, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11642
err = mlxsw_sp_neigh_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11646
err = mlxsw_sp_mp_hash_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11650
err = mlxsw_sp_dscp_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11675
mlxsw_sp->router->netevent_nb.notifier_call =
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11677
err = register_netevent_notifier(&mlxsw_sp->router->netevent_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11681
mlxsw_sp->router->netdevice_nb.notifier_call =
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11683
err = register_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11684
&mlxsw_sp->router->netdevice_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11688
mlxsw_sp->router->nexthop_nb.notifier_call =
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11690
err = register_nexthop_notifier(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11691
&mlxsw_sp->router->nexthop_nb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11696
mlxsw_sp->router->fib_nb.notifier_call = mlxsw_sp_router_fib_event;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11697
err = register_fib_notifier(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11698
&mlxsw_sp->router->fib_nb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1170
mlxsw_sp_ipip_entry_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11706
unregister_nexthop_notifier(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11707
&mlxsw_sp->router->nexthop_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11709
unregister_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11712
unregister_netevent_notifier(&mlxsw_sp->router->netevent_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11724
mlxsw_sp_mp_hash_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11726
mlxsw_sp_neigh_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11728
mlxsw_sp_lb_rif_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11730
mlxsw_sp_vrs_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11732
mlxsw_sp_mr_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11734
mlxsw_sp_lpm_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11736
rhashtable_destroy(&mlxsw_sp->router->nexthop_group_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11738
rhashtable_destroy(&mlxsw_sp->router->nexthop_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11740
mlxsw_sp_rifs_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11742
rhashtable_destroy(&mlxsw_sp->router->crif_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11744
mlxsw_sp_ipips_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11746
__mlxsw_sp_router_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11748
cancel_delayed_work_sync(&mlxsw_sp->router->nh_grp_activity_dw);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11750
mutex_destroy(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11751
kfree(mlxsw_sp->router);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11755
void mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11757
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11759
unregister_fib_notifier(mlxsw_sp_net(mlxsw_sp), &router->fib_nb);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11760
unregister_nexthop_notifier(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11762
unregister_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11770
mlxsw_sp_mp_hash_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11771
mlxsw_sp_neigh_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11772
mlxsw_sp_lb_rif_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11773
mlxsw_sp_vrs_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11774
mlxsw_sp_mr_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11775
mlxsw_sp_lpm_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11778
mlxsw_sp_rifs_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11779
rhashtable_destroy(&mlxsw_sp->router->crif_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11780
mlxsw_sp_ipips_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
11781
__mlxsw_sp_router_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1179
ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1184
ipip_entry->ol_lb = mlxsw_sp_ipip_ol_ipip_lb_create(mlxsw_sp, ipipt,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1195
err = ipip_ops->rem_ip_addr_set(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1210
static void mlxsw_sp_ipip_entry_dealloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1214
mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1216
ipip_ops->rem_ip_addr_unset(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1222
mlxsw_sp_ipip_entry_saddr_matches(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1232
if (mlxsw_sp->router->ipip_ops_arr[ipipt]->ul_proto != ul_proto)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1240
static int mlxsw_sp_ipip_decap_parsing_depth_inc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1245
ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1251
return mlxsw_sp_parsing_depth_inc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1256
static void mlxsw_sp_ipip_decap_parsing_depth_dec(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1260
mlxsw_sp->router->ipip_ops_arr[ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1263
mlxsw_sp_parsing_depth_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1267
mlxsw_sp_fib_entry_decap_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1274
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1279
err = mlxsw_sp_ipip_decap_parsing_depth_inc(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1291
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1296
static void mlxsw_sp_fib_entry_decap_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1304
mlxsw_sp_ipip_decap_parsing_depth_dec(mlxsw_sp, ipipt);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1305
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1312
static int mlxsw_sp_fib_entry_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1316
mlxsw_sp_ipip_entry_demote_decap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1321
mlxsw_sp_fib_entry_decap_fini(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1324
mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1328
mlxsw_sp_ipip_entry_promote_decap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1332
if (mlxsw_sp_fib_entry_decap_init(mlxsw_sp, decap_fib_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1337
if (mlxsw_sp_fib_entry_update(mlxsw_sp, decap_fib_entry))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1338
mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1342
mlxsw_sp_router_ip2me_fib_entry_find(struct mlxsw_sp *mlxsw_sp, u32 tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1355
vr = mlxsw_sp_vr_find(mlxsw_sp, tb_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1387
mlxsw_sp_ipip_entry_find_decap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1401
ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1404
ul_vr = mlxsw_sp_vr_find(mlxsw_sp, ul_tb_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1439
mlxsw_sp_ipip_entry_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1445
ipip_entry = mlxsw_sp_ipip_entry_alloc(mlxsw_sp, ipipt, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1450
&mlxsw_sp->router->ipip_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1456
mlxsw_sp_ipip_entry_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1460
mlxsw_sp_ipip_entry_dealloc(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1464
mlxsw_sp_ipip_entry_matches_decap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1473
if (mlxsw_sp->router->ipip_ops_arr[ipipt]->ul_proto != ul_proto)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1476
return mlxsw_sp_ipip_entry_saddr_matches(mlxsw_sp, ul_proto, ul_dip,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1482
mlxsw_sp_ipip_entry_find_by_decap(struct mlxsw_sp *mlxsw_sp, int ul_dev_ifindex,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1491
ul_dev = dev_get_by_index_rcu(mlxsw_sp_net(mlxsw_sp), ul_dev_ifindex);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1495
list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1497
if (mlxsw_sp_ipip_entry_matches_decap(mlxsw_sp, ul_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1511
static bool mlxsw_sp_netdev_ipip_type(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1515
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1530
static bool mlxsw_sp_netdev_is_ipip_ol(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1533
return mlxsw_sp_netdev_ipip_type(mlxsw_sp, dev, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1537
mlxsw_sp_ipip_entry_find_by_ol_dev(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1542
list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1551
mlxsw_sp_ipip_entry_find_by_ul_dev(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1557
ipip_entry = list_prepare_entry(start, &mlxsw_sp->router->ipip_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1559
list_for_each_entry_continue(ipip_entry, &mlxsw_sp->router->ipip_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
156
int (*init)(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
157
int (*ipips_init)(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1575
static bool mlxsw_sp_netdev_is_ipip_ul(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1578
return mlxsw_sp_ipip_entry_find_by_ul_dev(mlxsw_sp, dev, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1581
static bool mlxsw_sp_netdevice_ipip_can_offload(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1586
= mlxsw_sp->router->ipip_ops_arr[ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1588
return ops->can_offload(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1591
static int mlxsw_sp_netdevice_ipip_ol_reg_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1600
mlxsw_sp_netdev_ipip_type(mlxsw_sp, ol_dev, &ipipt);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1601
if (mlxsw_sp_netdevice_ipip_can_offload(mlxsw_sp, ol_dev, ipipt)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1603
ul_proto = mlxsw_sp->router->ipip_ops_arr[ipipt]->ul_proto;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1605
if (!mlxsw_sp_ipip_demote_tunnel_by_saddr(mlxsw_sp, ul_proto,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1608
ipip_entry = mlxsw_sp_ipip_entry_create(mlxsw_sp, ipipt,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
161
mlxsw_sp_rif_find_by_dev(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1618
static void mlxsw_sp_netdevice_ipip_ol_unreg_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1623
ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1625
mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1629
mlxsw_sp_ipip_entry_ol_up_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1634
decap_fib_entry = mlxsw_sp_ipip_entry_find_decap(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1636
mlxsw_sp_ipip_entry_promote_decap(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1648
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
165
static void mlxsw_sp_lpm_tree_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
167
static int mlxsw_sp_vr_lpm_tree_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1676
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1679
static int mlxsw_sp_netdevice_ipip_ol_update_mtu(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1686
ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
170
static int mlxsw_sp_vr_lpm_tree_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1700
static void mlxsw_sp_netdevice_ipip_ol_up_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1705
ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1707
mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1711
mlxsw_sp_ipip_entry_ol_down_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1715
mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1718
static void mlxsw_sp_netdevice_ipip_ol_down_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1723
ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1725
mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1728
static void mlxsw_sp_nexthop_rif_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1731
static void mlxsw_sp_rif_migrate_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1740
mlxsw_sp_nexthop_rif_update(mlxsw_sp, new_rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1752
mlxsw_sp_ipip_entry_ol_lb_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1760
new_lb_rif = mlxsw_sp_ipip_ol_ipip_lb_create(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1768
mlxsw_sp_rif_migrate_destroy(mlxsw_sp, &old_lb_rif->common,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1786
int __mlxsw_sp_ipip_entry_update_tunnel(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1802
mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1805
err = mlxsw_sp_ipip_entry_ol_lb_update(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1810
mlxsw_sp_nexthop_rif_update(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1815
mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1820
static int mlxsw_sp_netdevice_ipip_ol_vrf_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1825
mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1830
return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1835
mlxsw_sp_netdevice_ipip_ul_vrf_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1848
ul_proto = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]->ul_proto;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1850
if (mlxsw_sp_ipip_demote_tunnel_by_saddr(mlxsw_sp, ul_proto,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1857
return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1862
mlxsw_sp_netdevice_ipip_ul_up_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1866
return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1871
mlxsw_sp_netdevice_ipip_ul_down_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1879
return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1884
mlxsw_sp_netdevice_ipip_ol_change_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1892
ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1901
if (!mlxsw_sp_netdevice_ipip_can_offload(mlxsw_sp, ol_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1903
mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1907
ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1908
err = ipip_ops->ol_netdev_change(mlxsw_sp, ipip_entry, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1912
void mlxsw_sp_ipip_entry_demote_tunnel(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1918
mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1919
mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1929
mlxsw_sp_ipip_demote_tunnel_by_saddr(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1937
list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1940
mlxsw_sp_ipip_entry_saddr_matches(mlxsw_sp, ul_proto, saddr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1942
mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1950
static void mlxsw_sp_ipip_demote_tunnel_by_ul_netdev(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1955
list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1964
mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1968
static int mlxsw_sp_netdevice_ipip_ol_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1979
err = mlxsw_sp_netdevice_ipip_ol_reg_event(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1982
mlxsw_sp_netdevice_ipip_ol_unreg_event(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1985
mlxsw_sp_netdevice_ipip_ol_up_event(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1988
mlxsw_sp_netdevice_ipip_ol_down_event(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
1994
err = mlxsw_sp_netdevice_ipip_ol_vrf_event(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2000
err = mlxsw_sp_netdevice_ipip_ol_change_event(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2004
err = mlxsw_sp_netdevice_ipip_ol_update_mtu(mlxsw_sp, ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2011
__mlxsw_sp_netdevice_ipip_ul_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2026
return mlxsw_sp_netdevice_ipip_ul_vrf_event(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2034
return mlxsw_sp_netdevice_ipip_ul_up_event(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2037
return mlxsw_sp_netdevice_ipip_ul_down_event(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2045
mlxsw_sp_netdevice_ipip_ul_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2053
while ((ipip_entry = mlxsw_sp_ipip_entry_find_by_ul_dev(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2059
err = __mlxsw_sp_netdevice_ipip_ul_event(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2063
mlxsw_sp_ipip_demote_tunnel_by_ul_netdev(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2070
&mlxsw_sp->router->ipip_list))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2078
mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2086
int mlxsw_sp_router_nve_promote_decap(struct mlxsw_sp *mlxsw_sp, u32 ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2092
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2096
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2112
fib_entry = mlxsw_sp_router_ip2me_fib_entry_find(mlxsw_sp, ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2121
err = mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2129
mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2131
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2135
void mlxsw_sp_router_nve_demote_decap(struct mlxsw_sp *mlxsw_sp, u32 ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
214
static int mlxsw_sp_rif_counter_edit(struct mlxsw_sp *mlxsw_sp, u16 rif_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2140
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2143
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2150
fib_entry = mlxsw_sp_router_ip2me_fib_entry_find(mlxsw_sp, ul_tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2157
mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2159
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2162
static bool mlxsw_sp_router_nve_is_decap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2167
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2246
int mlxsw_sp_neigh_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
225
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2253
return mlxsw_sp_flow_counter_get(mlxsw_sp, neigh_entry->counter_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2258
mlxsw_sp_neigh_entry_alloc(struct mlxsw_sp *mlxsw_sp, struct neighbour *n,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2282
mlxsw_sp_neigh_entry_insert(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2285
return rhashtable_insert_fast(&mlxsw_sp->router->neigh_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2291
mlxsw_sp_neigh_entry_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2294
rhashtable_remove_fast(&mlxsw_sp->router->neigh_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2300
mlxsw_sp_neigh_counter_should_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
231
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2318
devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2323
mlxsw_sp_neigh_counter_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2326
if (!mlxsw_sp_neigh_counter_should_alloc(mlxsw_sp, neigh_entry))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2329
if (mlxsw_sp_flow_counter_alloc(mlxsw_sp, &neigh_entry->counter_index))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2336
mlxsw_sp_neigh_counter_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
234
int mlxsw_sp_rif_counter_value_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2341
mlxsw_sp_flow_counter_free(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2347
mlxsw_sp_neigh_entry_create(struct mlxsw_sp *mlxsw_sp, struct neighbour *n)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2353
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, n->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2357
neigh_entry = mlxsw_sp_neigh_entry_alloc(mlxsw_sp, n, rif->rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2361
err = mlxsw_sp_neigh_entry_insert(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2365
mlxsw_sp_neigh_counter_alloc(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2366
atomic_inc(&mlxsw_sp->router->neighs_update.neigh_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2377
mlxsw_sp_neigh_entry_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2381
atomic_dec(&mlxsw_sp->router->neighs_update.neigh_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2382
mlxsw_sp_neigh_counter_free(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2383
mlxsw_sp_neigh_entry_remove(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2388
mlxsw_sp_neigh_entry_lookup(struct mlxsw_sp *mlxsw_sp, struct neighbour *n)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2393
return rhashtable_lookup_fast(&mlxsw_sp->router->neigh_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2398
mlxsw_sp_router_neighs_update_interval_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2409
mlxsw_sp->router->neighs_update.interval = jiffies_to_msecs(interval);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2412
static void mlxsw_sp_router_neigh_ent_ipv4_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2416
u64 max_rifs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2427
if (!mlxsw_sp->router->rifs[rif]) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2428
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Incorrect RIF in neighbour entry\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2433
dev = mlxsw_sp_rif_dev(mlxsw_sp->router->rifs[rif]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2444
static void mlxsw_sp_router_neigh_ent_ipv6_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2456
if (!mlxsw_sp->router->rifs[rif]) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2457
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Incorrect RIF in neighbour entry\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2461
dev = mlxsw_sp_rif_dev(mlxsw_sp->router->rifs[rif]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2471
static void mlxsw_sp_router_neigh_ent_ipv6_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2478
static void mlxsw_sp_router_neigh_rec_ipv4_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2495
mlxsw_sp_router_neigh_ent_ipv4_process(mlxsw_sp, rauhtd_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2501
static void mlxsw_sp_router_neigh_rec_ipv6_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2506
mlxsw_sp_router_neigh_ent_ipv6_process(mlxsw_sp, rauhtd_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2510
static void mlxsw_sp_router_neigh_rec_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2515
mlxsw_sp_router_neigh_rec_ipv4_process(mlxsw_sp, rauhtd_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2519
mlxsw_sp_router_neigh_rec_ipv6_process(mlxsw_sp, rauhtd_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
252
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ricnt), ricnt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2546
__mlxsw_sp_router_neighs_update_rauhtd(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2554
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2557
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(rauhtd),
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2560
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to dump neighbour table\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2565
mlxsw_sp_router_neigh_rec_process(mlxsw_sp, rauhtd_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2568
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2573
static int mlxsw_sp_router_neighs_update_rauhtd(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2579
if (!atomic_read(&mlxsw_sp->router->neighs_update.neigh_count))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2587
err = __mlxsw_sp_router_neighs_update_rauhtd(mlxsw_sp, rauhtd_pl, type);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2592
err = __mlxsw_sp_router_neighs_update_rauhtd(mlxsw_sp, rauhtd_pl, type);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2598
static void mlxsw_sp_router_neighs_update_nh(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2602
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2603
list_for_each_entry(neigh_entry, &mlxsw_sp->router->nexthop_neighs_list,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2609
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2613
mlxsw_sp_router_neighs_update_work_schedule(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2615
unsigned long interval = mlxsw_sp->router->neighs_update.interval;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2617
mlxsw_core_schedule_dw(&mlxsw_sp->router->neighs_update.dw,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2628
err = mlxsw_sp_router_neighs_update_rauhtd(router->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2630
dev_err(router->mlxsw_sp->bus_info->dev, "Could not update kernel for neigh activity");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2632
mlxsw_sp_router_neighs_update_nh(router->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2634
mlxsw_sp_router_neighs_update_work_schedule(router->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2662
mlxsw_sp_nexthop_neigh_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2673
mlxsw_sp_router_neigh_entry_op4(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2686
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rauht), rauht_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2690
mlxsw_sp_router_neigh_entry_op6(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2703
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rauht), rauht_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2721
mlxsw_sp_neigh_entry_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2732
err = mlxsw_sp_router_neigh_entry_op4(mlxsw_sp, neigh_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2739
err = mlxsw_sp_router_neigh_entry_op6(mlxsw_sp, neigh_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2755
mlxsw_sp_neigh_entry_counter_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2760
mlxsw_sp_neigh_counter_alloc(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2762
mlxsw_sp_neigh_counter_free(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2763
mlxsw_sp_neigh_entry_update(mlxsw_sp, neigh_entry, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2768
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
277
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2776
struct mlxsw_sp *mlxsw_sp = net_work->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2793
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2794
mlxsw_sp_span_respin(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2797
neigh_entry = mlxsw_sp_neigh_entry_lookup(mlxsw_sp, n);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2801
neigh_entry = mlxsw_sp_neigh_entry_create(mlxsw_sp, n);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2811
mlxsw_sp_neigh_entry_update(mlxsw_sp, neigh_entry, entry_connected);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2812
mlxsw_sp_nexthop_neigh_update(mlxsw_sp, neigh_entry, !entry_connected,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2816
mlxsw_sp_neigh_entry_destroy(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2819
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2824
static int mlxsw_sp_mp_hash_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2830
struct mlxsw_sp *mlxsw_sp = net_work->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2832
mlxsw_sp_mp_hash_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2836
static int __mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2842
struct mlxsw_sp *mlxsw_sp = net_work->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2844
__mlxsw_sp_router_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2855
if (!net_eq(net, mlxsw_sp_net(router->mlxsw_sp)))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2868
net_work->mlxsw_sp = router->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
291
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ricnt), ricnt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2946
static int mlxsw_sp_neigh_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2950
err = rhashtable_init(&mlxsw_sp->router->neigh_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2958
mlxsw_sp_router_neighs_update_interval_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2961
INIT_DELAYED_WORK(&mlxsw_sp->router->neighs_update.dw,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2963
INIT_DELAYED_WORK(&mlxsw_sp->router->nexthop_probe_dw,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2965
atomic_set(&mlxsw_sp->router->neighs_update.neigh_count, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2966
mlxsw_core_schedule_dw(&mlxsw_sp->router->neighs_update.dw, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2967
mlxsw_core_schedule_dw(&mlxsw_sp->router->nexthop_probe_dw, 0);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2971
static void mlxsw_sp_neigh_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2973
cancel_delayed_work_sync(&mlxsw_sp->router->neighs_update.dw);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2974
cancel_delayed_work_sync(&mlxsw_sp->router->nexthop_probe_dw);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2975
rhashtable_destroy(&mlxsw_sp->router->neigh_ht);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2978
static void mlxsw_sp_neigh_rif_gone_sync(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2985
mlxsw_sp_neigh_entry_update(mlxsw_sp, neigh_entry, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2986
mlxsw_sp_neigh_entry_destroy(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
2991
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3005
rc = mlxsw_sp_router_schedule_neigh_work(rms->mlxsw_sp->router, n);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3010
static int mlxsw_sp_neigh_rif_made_sync(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3014
.mlxsw_sp = mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3035
mlxsw_sp_neigh_rif_gone_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3169
mlxsw_sp_nexthop_counter_alloc(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
317
static int mlxsw_sp_rif_counter_clear(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3178
err = mlxsw_sp_flow_counter_alloc(mlxsw_sp, &nhct->counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3191
mlxsw_sp_nexthop_counter_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3194
mlxsw_sp_flow_counter_free(mlxsw_sp, nhct->counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3199
mlxsw_sp_nexthop_sh_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3212
nhct = mlxsw_sp_nexthop_counter_alloc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3224
mlxsw_sp_nexthop_counter_free(mlxsw_sp, nhct);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3228
static void mlxsw_sp_nexthop_sh_counter_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
324
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ricnt), ricnt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3242
mlxsw_sp_nexthop_counter_free(mlxsw_sp, nhct);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3245
int mlxsw_sp_nexthop_counter_enable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3256
devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3262
nhct = mlxsw_sp_nexthop_sh_counter_get(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3264
nhct = mlxsw_sp_nexthop_counter_alloc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3272
void mlxsw_sp_nexthop_counter_disable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3279
mlxsw_sp_nexthop_sh_counter_put(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3281
mlxsw_sp_nexthop_counter_free(mlxsw_sp, nh->counter);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3285
static int mlxsw_sp_nexthop_counter_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3289
return mlxsw_sp_nexthop_counter_enable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3290
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3294
int mlxsw_sp_nexthop_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
330
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3300
return mlxsw_sp_flow_counter_get(mlxsw_sp, nh->counter->counter_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
341
err = mlxsw_sp_counter_alloc(mlxsw_sp, MLXSW_SP_COUNTER_SUB_POOL_RIF,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
346
err = mlxsw_sp_rif_counter_clear(mlxsw_sp, *p_counter_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
350
err = mlxsw_sp_rif_counter_edit(mlxsw_sp, rif->rif_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
359
mlxsw_sp_counter_free(mlxsw_sp, MLXSW_SP_COUNTER_SUB_POOL_RIF,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3616
static int mlxsw_sp_nexthop_group_insert(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3623
return rhashtable_insert_fast(&mlxsw_sp->router->nexthop_group_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3628
static void mlxsw_sp_nexthop_group_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3635
rhashtable_remove_fast(&mlxsw_sp->router->nexthop_group_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3641
mlxsw_sp_nexthop4_group_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3648
return rhashtable_lookup_fast(&mlxsw_sp->router->nexthop_group_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3654
mlxsw_sp_nexthop6_group_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3661
return rhashtable_lookup_fast(&mlxsw_sp->router->nexthop_group_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
367
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3672
static int mlxsw_sp_nexthop_insert(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3675
return rhashtable_insert_fast(&mlxsw_sp->router->nexthop_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3679
static void mlxsw_sp_nexthop_remove(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3682
rhashtable_remove_fast(&mlxsw_sp->router->nexthop_ht, &nh->ht_node,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3687
mlxsw_sp_nexthop_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3690
return rhashtable_lookup_fast(&mlxsw_sp->router->nexthop_ht, &key,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3694
static int mlxsw_sp_adj_index_mass_update_vr(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3707
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(raleu), raleu_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3710
static int mlxsw_sp_adj_index_mass_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3719
err = mlxsw_sp_adj_index_mass_update_vr(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3733
mlxsw_sp_adj_index_mass_update_vr(mlxsw_sp, vr_entry->key.proto,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3741
static int __mlxsw_sp_nexthop_eth_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3752
mlxsw_sp->router->lb_crif->rif->rif_index;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
376
mlxsw_sp_rif_counter_edit(mlxsw_sp, rif->rif_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
378
mlxsw_sp_counter_free(mlxsw_sp, MLXSW_SP_COUNTER_SUB_POOL_RIF,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3780
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ratr), ratr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3783
int mlxsw_sp_nexthop_eth_update(struct mlxsw_sp *mlxsw_sp, u32 adj_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3792
err = __mlxsw_sp_nexthop_eth_update(mlxsw_sp, adj_index + i,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3801
static int __mlxsw_sp_nexthop_ipip_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3808
ipip_ops = mlxsw_sp->router->ipip_ops_arr[nh->ipip_entry->ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3809
return ipip_ops->nexthop_update(mlxsw_sp, adj_index, nh->ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3813
static int mlxsw_sp_nexthop_ipip_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3823
err = __mlxsw_sp_nexthop_ipip_update(mlxsw_sp, adj_index + i,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3832
static int mlxsw_sp_nexthop_update(struct mlxsw_sp *mlxsw_sp, u32 adj_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3842
return mlxsw_sp_nexthop_eth_update(mlxsw_sp, adj_index, nh,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3845
return mlxsw_sp_nexthop_ipip_update(mlxsw_sp, adj_index, nh,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
385
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3850
mlxsw_sp_nexthop_group_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3863
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3871
err = mlxsw_sp_nexthop_counter_update(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3875
err = mlxsw_sp_nexthop_update(mlxsw_sp, adj_index, nh,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
388
devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3888
mlxsw_sp_nexthop_fib_entries_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3895
err = mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3928
static void mlxsw_sp_adj_grp_size_round_up(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3933
for (i = 0; i < mlxsw_sp->router->adj_grp_size_ranges_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3936
size_range = &mlxsw_sp->router->adj_grp_size_ranges[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3949
static void mlxsw_sp_adj_grp_size_round_down(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3955
for (i = mlxsw_sp->router->adj_grp_size_ranges_count - 1; i >= 0; i--) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3958
size_range = &mlxsw_sp->router->adj_grp_size_ranges[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3967
static int mlxsw_sp_fix_adj_grp_size(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3976
mlxsw_sp_adj_grp_size_round_up(mlxsw_sp, p_adj_grp_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3977
err = mlxsw_sp_kvdl_alloc_count_query(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
3986
mlxsw_sp_adj_grp_size_round_down(mlxsw_sp, p_adj_grp_size, alloc_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4045
mlxsw_sp_nexthop4_group_offload_refresh(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4079
mlxsw_sp_nexthop6_group_offload_refresh(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4094
mlxsw_sp_nexthop_bucket_offload_refresh(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4107
nexthop_bucket_set_hw_flags(mlxsw_sp_net(mlxsw_sp), nh_grp->obj.id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4112
mlxsw_sp_nexthop_obj_group_offload_refresh(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4128
nexthop_set_hw_flags(mlxsw_sp_net(mlxsw_sp), nh_grp->obj.id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4140
mlxsw_sp_nexthop_bucket_offload_refresh(mlxsw_sp, nh, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4145
mlxsw_sp_nexthop_group_offload_refresh(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4150
mlxsw_sp_nexthop4_group_offload_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4153
mlxsw_sp_nexthop6_group_offload_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4156
mlxsw_sp_nexthop_obj_group_offload_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4162
mlxsw_sp_nexthop_group_refresh(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4175
return mlxsw_sp_nexthop_fib_entries_update(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4190
err = mlxsw_sp_nexthop_group_update(mlxsw_sp, nhgi, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4192
dev_warn(mlxsw_sp->bus_info->dev, "Failed to update neigh MAC in adjacency table.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4198
mlxsw_sp_nexthop_group_offload_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4211
err = mlxsw_sp_fix_adj_grp_size(mlxsw_sp, &ecmp_size);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4216
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4222
dev_warn(mlxsw_sp->bus_info->dev, "Failed to allocate KVD linear area for nexthop group.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4232
err = mlxsw_sp_nexthop_group_update(mlxsw_sp, nhgi, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4234
dev_warn(mlxsw_sp->bus_info->dev, "Failed to update neigh MAC in adjacency table.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4238
mlxsw_sp_nexthop_group_offload_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4244
err = mlxsw_sp_nexthop_fib_entries_update(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4246
dev_warn(mlxsw_sp->bus_info->dev, "Failed to add adjacency index to fib entries.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4252
err = mlxsw_sp_adj_index_mass_update(mlxsw_sp, nh_grp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4254
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4257
dev_warn(mlxsw_sp->bus_info->dev, "Failed to mass-update adjacency index for nexthop group.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4270
err2 = mlxsw_sp_nexthop_fib_entries_update(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4272
dev_warn(mlxsw_sp->bus_info->dev, "Failed to set traps for fib entries.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4273
mlxsw_sp_nexthop_group_offload_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4275
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4296
mlxsw_sp_nexthop_dead_neigh_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4318
mlxsw_sp_neigh_entry_remove(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4320
err = mlxsw_sp_neigh_entry_insert(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4335
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh->nhgi->nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4342
mlxsw_sp_neigh_entry_insert(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4348
mlxsw_sp_nexthop_neigh_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4360
err = mlxsw_sp_nexthop_dead_neigh_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4363
dev_err(mlxsw_sp->bus_info->dev, "Failed to replace dead neigh\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4370
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh->nhgi->nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4393
static int mlxsw_sp_nexthop_neigh_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4421
neigh_entry = mlxsw_sp_neigh_entry_lookup(mlxsw_sp, n);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4423
neigh_entry = mlxsw_sp_neigh_entry_create(mlxsw_sp, n);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4440
&mlxsw_sp->router->nexthop_neighs_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4457
static void mlxsw_sp_nexthop_neigh_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4476
mlxsw_sp_neigh_entry_destroy(mlxsw_sp, neigh_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4492
static void mlxsw_sp_nexthop_ipip_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4502
crif = mlxsw_sp_crif_lookup(mlxsw_sp->router, ipip_entry->ol_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4512
static void mlxsw_sp_nexthop_ipip_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4524
static bool mlxsw_sp_nexthop4_ipip_type(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4532
mlxsw_sp_netdev_ipip_type(mlxsw_sp, dev, p_ipipt);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4535
static int mlxsw_sp_nexthop_type_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4544
ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4546
ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4547
if (ipip_ops->can_offload(mlxsw_sp, dev)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4549
mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4555
crif = mlxsw_sp_crif_lookup(mlxsw_sp->router, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4564
err = mlxsw_sp_nexthop_neigh_init(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4575
static int mlxsw_sp_nexthop_type_rif_made(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4580
return mlxsw_sp_nexthop_neigh_init(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4588
static void mlxsw_sp_nexthop_type_rif_gone(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4593
mlxsw_sp_nexthop_neigh_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4596
mlxsw_sp_nexthop_ipip_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4601
static void mlxsw_sp_nexthop_type_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4604
mlxsw_sp_nexthop_type_rif_gone(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4608
static int mlxsw_sp_nexthop4_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4626
err = mlxsw_sp_nexthop_insert(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4630
err = mlxsw_sp_nexthop_counter_enable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4634
list_add_tail(&nh->router_list_node, &mlxsw_sp->router->nexthop_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4649
err = mlxsw_sp_nexthop_type_init(mlxsw_sp, nh, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4657
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4659
mlxsw_sp_nexthop_remove(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4663
static void mlxsw_sp_nexthop4_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4666
mlxsw_sp_nexthop_type_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4668
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4669
mlxsw_sp_nexthop_remove(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4672
static void mlxsw_sp_nexthop4_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4679
nh = mlxsw_sp_nexthop_lookup(mlxsw_sp, key);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4685
mlxsw_sp_nexthop_type_init(mlxsw_sp, nh, fib_nh->fib_nh_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4688
mlxsw_sp_nexthop_type_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4692
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh->nhgi->nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4695
static void mlxsw_sp_nexthop_rif_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4716
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh->nhgi->nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4720
static int mlxsw_sp_nexthop_rif_made_sync(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4729
err = mlxsw_sp_nexthop_type_rif_made(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4732
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh->nhgi->nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4743
mlxsw_sp_nexthop_type_rif_gone(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4744
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh->nhgi->nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4749
static void mlxsw_sp_nexthop_rif_gone_sync(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4756
mlxsw_sp_nexthop_type_rif_gone(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4757
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh->nhgi->nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4761
static int mlxsw_sp_adj_trap_entry_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4767
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4768
&mlxsw_sp->router->adj_trap_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4775
mlxsw_sp->router->adj_trap_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4776
mlxsw_sp->router->lb_crif->rif->rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4779
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ratr), ratr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4786
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4787
mlxsw_sp->router->adj_trap_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4791
static void mlxsw_sp_adj_trap_entry_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4793
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4794
mlxsw_sp->router->adj_trap_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4797
static int mlxsw_sp_nexthop_group_inc(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4801
if (refcount_inc_not_zero(&mlxsw_sp->router->num_groups))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4804
err = mlxsw_sp_adj_trap_entry_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4808
refcount_set(&mlxsw_sp->router->num_groups, 1);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4813
static void mlxsw_sp_nexthop_group_dec(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4815
if (!refcount_dec_and_test(&mlxsw_sp->router->num_groups))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4818
mlxsw_sp_adj_trap_entry_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4822
mlxsw_sp_nh_grp_activity_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4835
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ratrad), ratrad_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4852
mlxsw_sp_nh_grp_activity_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4861
mlxsw_sp_nh_grp_activity_get(mlxsw_sp, nh_grp, activity);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4862
nexthop_res_grp_activity_update(mlxsw_sp_net(mlxsw_sp), nh_grp->obj.id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4869
mlxsw_sp_nh_grp_activity_work_schedule(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4873
mlxsw_core_schedule_dw(&mlxsw_sp->router->nh_grp_activity_dw,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4889
mlxsw_sp_nh_grp_activity_update(router->mlxsw_sp, nhgi->nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4897
mlxsw_sp_nh_grp_activity_work_schedule(router->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4901
mlxsw_sp_nexthop_obj_single_validate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4918
mlxsw_sp_nexthop_obj_group_entry_validate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4924
err = mlxsw_sp_nexthop_obj_single_validate(mlxsw_sp, nh, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4932
!mlxsw_sp_netdev_ipip_type(mlxsw_sp, nh->dev, NULL)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4941
mlxsw_sp_nexthop_obj_group_validate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4957
err = mlxsw_sp_nexthop_obj_group_entry_validate(mlxsw_sp, nh,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4967
mlxsw_sp_nexthop_obj_res_group_size_validate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4980
for (i = 0; i < mlxsw_sp->router->adj_grp_size_ranges_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4983
size_range = &mlxsw_sp->router->adj_grp_size_ranges[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
4997
err = mlxsw_sp_kvdl_alloc_count_query(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5010
mlxsw_sp_nexthop_obj_res_group_validate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5017
err = mlxsw_sp_nexthop_obj_res_group_size_validate(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5028
err = mlxsw_sp_nexthop_obj_group_entry_validate(mlxsw_sp, nh,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5037
static int mlxsw_sp_nexthop_obj_validate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5050
return mlxsw_sp_nexthop_obj_single_validate(mlxsw_sp, info->nh,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5053
return mlxsw_sp_nexthop_obj_group_validate(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5057
return mlxsw_sp_nexthop_obj_res_group_validate(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5062
return mlxsw_sp_nexthop_obj_group_entry_validate(mlxsw_sp, nh,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5070
static bool mlxsw_sp_nexthop_obj_is_gateway(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5079
mlxsw_sp_netdev_ipip_type(mlxsw_sp, dev, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5089
static void mlxsw_sp_nexthop_obj_blackhole_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5098
nh->crif = mlxsw_sp->router->lb_crif;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5101
static void mlxsw_sp_nexthop_obj_blackhole_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5109
mlxsw_sp_nexthop_obj_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5133
list_add_tail(&nh->router_list_node, &mlxsw_sp->router->nexthop_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5137
err = mlxsw_sp_nexthop_type_init(mlxsw_sp, nh, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5142
mlxsw_sp_nexthop_obj_blackhole_init(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5160
static void mlxsw_sp_nexthop_obj_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5164
mlxsw_sp_nexthop_obj_blackhole_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5165
mlxsw_sp_nexthop_type_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5167
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5172
mlxsw_sp_nexthop_obj_group_info_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5205
nhgi->gateway = mlxsw_sp_nexthop_obj_is_gateway(mlxsw_sp, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5234
err = mlxsw_sp_nexthop_obj_init(mlxsw_sp, nh_grp, nh, nh_obj,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5239
err = mlxsw_sp_nexthop_group_inc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5242
err = mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5252
if (list_empty(&mlxsw_sp->router->nh_res_grp_list))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5253
mlxsw_sp_nh_grp_activity_work_schedule(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5254
list_add(&nhgi->list, &mlxsw_sp->router->nh_res_grp_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5260
mlxsw_sp_nexthop_group_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5266
mlxsw_sp_nexthop_obj_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5273
mlxsw_sp_nexthop_obj_group_info_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5277
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5282
if (list_empty(&mlxsw_sp->router->nh_res_grp_list))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5286
mlxsw_sp_nexthop_group_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5290
mlxsw_sp_nexthop_obj_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5292
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5300
mlxsw_sp_nexthop_obj_group_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5318
err = mlxsw_sp_nexthop_obj_group_info_init(mlxsw_sp, nh_grp, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
532
static struct mlxsw_sp_fib *mlxsw_sp_fib_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5334
mlxsw_sp_nexthop_obj_group_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5339
mlxsw_sp_nexthop_obj_group_info_fini(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5347
mlxsw_sp_nexthop_obj_group_lookup(struct mlxsw_sp *mlxsw_sp, u32 id)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5353
return rhashtable_lookup_fast(&mlxsw_sp->router->nexthop_group_ht,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5358
static int mlxsw_sp_nexthop_obj_group_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5361
return mlxsw_sp_nexthop_group_insert(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5365
mlxsw_sp_nexthop_obj_group_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5384
err = mlxsw_sp_adj_index_mass_update(mlxsw_sp, old_nh_grp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5396
err = mlxsw_sp_nexthop_fib_entries_update(mlxsw_sp, old_nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
540
lpm_tree = mlxsw_sp->router->lpm.proto_trees[proto];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5406
err = mlxsw_sp_nexthop_fib_entries_update(mlxsw_sp, old_nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5416
mlxsw_sp_nexthop_obj_group_offload_refresh(mlxsw_sp, old_nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5423
mlxsw_sp_nexthop_obj_group_destroy(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5435
static int mlxsw_sp_nexthop_obj_res_group_pre(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5444
nh_grp = mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp, info->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5461
err = mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5472
static int mlxsw_sp_nexthop_obj_new(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5479
nh_grp = mlxsw_sp_nexthop_obj_group_create(mlxsw_sp, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5483
old_nh_grp = mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp, info->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5485
err = mlxsw_sp_nexthop_obj_group_add(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5487
err = mlxsw_sp_nexthop_obj_group_replace(mlxsw_sp, nh_grp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5492
mlxsw_sp_nexthop_obj_group_destroy(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5498
static void mlxsw_sp_nexthop_obj_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5503
nh_grp = mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp, info->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5508
mlxsw_sp_nexthop_group_remove(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5515
mlxsw_sp_nexthop_obj_group_destroy(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5518
static int mlxsw_sp_nexthop_obj_bucket_query(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
552
err = mlxsw_sp_vr_lpm_tree_bind(mlxsw_sp, fib, lpm_tree->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5526
return mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ratr), ratr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5549
mlxsw_sp_nexthop_obj_bucket_adj_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5569
err = mlxsw_sp_nexthop_update(mlxsw_sp, adj_index, nh, force, ratr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5576
err = mlxsw_sp_nexthop_obj_bucket_query(mlxsw_sp, adj_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
558
mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5592
mlxsw_sp_nexthop_bucket_offload_refresh(mlxsw_sp, nh, bucket_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5597
static int mlxsw_sp_nexthop_obj_bucket_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5608
nh_grp = mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp, info->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5622
mlxsw_sp_nexthop_obj_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5625
err = mlxsw_sp_nexthop_obj_init(mlxsw_sp, nh_grp, nh, nh_obj, 1);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5631
err = mlxsw_sp_nexthop_obj_bucket_adj_update(mlxsw_sp, nh, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5638
mlxsw_sp_nexthop_obj_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
564
static void mlxsw_sp_fib_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5641
mlxsw_sp_nexthop_obj_init(mlxsw_sp, nh_grp, nh, nh_obj, 1);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5649
mlxsw_sp_nexthop_obj_mp_hw_stats_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5660
err = mlxsw_sp_nexthop_counter_get(mlxsw_sp, nh, &packets);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5669
mlxsw_sp_nexthop_obj_res_hw_stats_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
567
mlxsw_sp_vr_lpm_tree_unbind(mlxsw_sp, fib);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
568
mlxsw_sp_lpm_tree_put(mlxsw_sp, fib->lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5691
err = mlxsw_sp_nexthop_counter_get(mlxsw_sp, nh, &packets);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5699
static void mlxsw_sp_nexthop_obj_hw_stats_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5708
nh_grp = mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp, info->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5714
mlxsw_sp_nexthop_obj_res_hw_stats_get(mlxsw_sp, nhgi,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5717
mlxsw_sp_nexthop_obj_mp_hw_stats_get(mlxsw_sp, nhgi,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5729
err = mlxsw_sp_nexthop_obj_validate(router->mlxsw_sp, event, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5737
err = mlxsw_sp_nexthop_obj_res_group_pre(router->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5741
err = mlxsw_sp_nexthop_obj_new(router->mlxsw_sp, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5744
mlxsw_sp_nexthop_obj_del(router->mlxsw_sp, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5747
err = mlxsw_sp_nexthop_obj_bucket_replace(router->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
575
mlxsw_sp_lpm_tree_find_unused(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5751
mlxsw_sp_nexthop_obj_hw_stats_get(router->mlxsw_sp, info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5763
static bool mlxsw_sp_fi_is_gateway(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5769
mlxsw_sp_nexthop4_ipip_type(mlxsw_sp, nh, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5773
mlxsw_sp_nexthop4_group_info_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5786
nhgi->gateway = mlxsw_sp_fi_is_gateway(mlxsw_sp, nh_grp->ipv4.fi);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5793
err = mlxsw_sp_nexthop4_init(mlxsw_sp, nh_grp, nh, fib_nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5797
err = mlxsw_sp_nexthop_group_inc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
580
for (i = 0; i < mlxsw_sp->router->lpm.tree_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5800
err = mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5807
mlxsw_sp_nexthop_group_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
581
lpm_tree = &mlxsw_sp->router->lpm.trees[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5813
mlxsw_sp_nexthop4_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5820
mlxsw_sp_nexthop4_group_info_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5826
mlxsw_sp_nexthop_group_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5830
mlxsw_sp_nexthop4_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5832
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5838
mlxsw_sp_nexthop4_group_create(struct mlxsw_sp *mlxsw_sp, struct fib_info *fi)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5856
err = mlxsw_sp_nexthop4_group_info_init(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5860
err = mlxsw_sp_nexthop_group_insert(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5869
mlxsw_sp_nexthop4_group_info_fini(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5879
mlxsw_sp_nexthop4_group_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
588
static int mlxsw_sp_lpm_tree_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5884
mlxsw_sp_nexthop_group_remove(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5885
mlxsw_sp_nexthop4_group_info_fini(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5892
static int mlxsw_sp_nexthop4_group_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5899
nh_grp = mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5906
nh_grp = mlxsw_sp_nexthop4_group_lookup(mlxsw_sp, fi);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5908
nh_grp = mlxsw_sp_nexthop4_group_create(mlxsw_sp, fi);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5918
static void mlxsw_sp_nexthop4_group_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5928
mlxsw_sp_nexthop_obj_group_destroy(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5932
mlxsw_sp_nexthop4_group_destroy(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
596
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralta), ralta_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
599
static void mlxsw_sp_lpm_tree_free(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
5994
mlxsw_sp_fib4_offload_failed_flag_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6009
fib_alias_hw_flags_set(mlxsw_sp_net(mlxsw_sp), &fri);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6013
mlxsw_sp_fib4_entry_hw_flags_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6034
fib_alias_hw_flags_set(mlxsw_sp_net(mlxsw_sp), &fri);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6038
mlxsw_sp_fib4_entry_hw_flags_clear(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6057
fib_alias_hw_flags_set(mlxsw_sp_net(mlxsw_sp), &fri);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6062
mlxsw_sp_fib6_offload_failed_flag_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
607
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralta), ralta_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6072
fib6_info_hw_flags_set(mlxsw_sp_net(mlxsw_sp), rt_arr[i],
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6077
mlxsw_sp_fib6_offload_failed_flag_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6086
mlxsw_sp_fib6_entry_hw_flags_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6101
fib6_info_hw_flags_set(mlxsw_sp_net(mlxsw_sp), mlxsw_sp_rt6->rt,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6106
mlxsw_sp_fib6_entry_hw_flags_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
611
mlxsw_sp_lpm_tree_left_struct_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6114
mlxsw_sp_fib6_entry_hw_flags_clear(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6123
fib6_info_hw_flags_set(mlxsw_sp_net(mlxsw_sp), mlxsw_sp_rt6->rt,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6128
mlxsw_sp_fib6_entry_hw_flags_clear(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6135
mlxsw_sp_fib_entry_hw_flags_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6140
mlxsw_sp_fib4_entry_hw_flags_set(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6143
mlxsw_sp_fib6_entry_hw_flags_set(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6149
mlxsw_sp_fib_entry_hw_flags_clear(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6154
mlxsw_sp_fib4_entry_hw_flags_clear(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6157
mlxsw_sp_fib6_entry_hw_flags_clear(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6163
mlxsw_sp_fib_entry_hw_flags_refresh(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6169
mlxsw_sp_fib_entry_hw_flags_set(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6172
mlxsw_sp_fib_entry_hw_flags_clear(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6205
static int mlxsw_sp_fib_entry_op_remote(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6228
adjacency_index = mlxsw_sp->router->adj_trap_index;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6238
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6241
static int mlxsw_sp_fib_entry_op_local(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6262
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6265
static int mlxsw_sp_fib_entry_op_trap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6273
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6276
static int mlxsw_sp_fib_entry_op_blackhole(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6286
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6290
mlxsw_sp_fib_entry_op_unreachable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6303
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6307
mlxsw_sp_fib_entry_op_ipip_decap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
631
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralst), ralst_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6319
ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6320
err = ipip_ops->decap_config(mlxsw_sp, ipip_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6328
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6331
static int mlxsw_sp_fib_entry_op_nve_decap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6340
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6343
static int __mlxsw_sp_fib_entry_op(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6349
return mlxsw_sp_fib_entry_op_remote(mlxsw_sp, fib_entry, op);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
635
mlxsw_sp_lpm_tree_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6351
return mlxsw_sp_fib_entry_op_local(mlxsw_sp, fib_entry, op);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6353
return mlxsw_sp_fib_entry_op_trap(mlxsw_sp, fib_entry, op);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6355
return mlxsw_sp_fib_entry_op_blackhole(mlxsw_sp, fib_entry, op);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6357
return mlxsw_sp_fib_entry_op_unreachable(mlxsw_sp, fib_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6360
return mlxsw_sp_fib_entry_op_ipip_decap(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6363
return mlxsw_sp_fib_entry_op_nve_decap(mlxsw_sp, fib_entry, op);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6368
static int mlxsw_sp_fib_entry_op(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6372
int err = __mlxsw_sp_fib_entry_op(mlxsw_sp, fib_entry, op);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6377
mlxsw_sp_fib_entry_hw_flags_refresh(mlxsw_sp, fib_entry, op);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6382
static int mlxsw_sp_fib_entry_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6385
return mlxsw_sp_fib_entry_op(mlxsw_sp, fib_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6389
static int mlxsw_sp_fib_entry_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6392
return mlxsw_sp_fib_entry_op(mlxsw_sp, fib_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6397
mlxsw_sp_fib4_entry_type_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6403
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6410
ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, ifindex,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6414
return mlxsw_sp_fib_entry_decap_init(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6418
if (mlxsw_sp_router_nve_is_decap(mlxsw_sp, tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
642
lpm_tree = mlxsw_sp_lpm_tree_find_unused(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6455
mlxsw_sp_fib_entry_type_unset(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
646
err = mlxsw_sp_lpm_tree_alloc(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6460
mlxsw_sp_fib_entry_decap_fini(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6468
mlxsw_sp_fib4_entry_type_unset(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6471
mlxsw_sp_fib_entry_type_unset(mlxsw_sp, &fib4_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6475
mlxsw_sp_fib4_entry_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6488
err = mlxsw_sp_nexthop4_group_get(mlxsw_sp, fib_entry, fen_info->fi);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6497
err = mlxsw_sp_fib4_entry_type_set(mlxsw_sp, fen_info, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
650
err = mlxsw_sp_lpm_tree_left_struct_set(mlxsw_sp, prefix_usage,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6514
mlxsw_sp_nexthop4_group_put(mlxsw_sp, &fib4_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6520
static void mlxsw_sp_fib4_entry_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6526
mlxsw_sp_fib4_entry_type_unset(mlxsw_sp, fib4_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6529
mlxsw_sp_nexthop4_group_put(mlxsw_sp, &fib4_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6534
mlxsw_sp_fib4_entry_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6542
vr = mlxsw_sp_vr_find(mlxsw_sp, fen_info->tb_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
662
mlxsw_sp_lpm_tree_free(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6620
static int mlxsw_sp_fib_lpm_tree_link(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6628
lpm_tree = mlxsw_sp->router->lpm.proto_trees[fib->proto];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6634
lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6639
err = mlxsw_sp_vrs_lpm_tree_replace(mlxsw_sp, fib, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6648
mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6652
static void mlxsw_sp_fib_lpm_tree_unlink(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
666
static void mlxsw_sp_lpm_tree_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6668
lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6673
err = mlxsw_sp_vrs_lpm_tree_replace(mlxsw_sp, fib, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6680
mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6683
static int mlxsw_sp_fib_node_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
669
mlxsw_sp_lpm_tree_free(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6694
err = mlxsw_sp_fib_lpm_tree_link(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6706
static void mlxsw_sp_fib_node_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6711
mlxsw_sp_fib_lpm_tree_unlink(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6717
mlxsw_sp_fib_node_get(struct mlxsw_sp *mlxsw_sp, u32 tb_id, const void *addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6726
vr = mlxsw_sp_vr_get(mlxsw_sp, tb_id, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
673
mlxsw_sp_lpm_tree_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6741
err = mlxsw_sp_fib_node_init(mlxsw_sp, fib_node, fib);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6750
mlxsw_sp_vr_put(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6754
static void mlxsw_sp_fib_node_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6761
mlxsw_sp_fib_node_fini(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6763
mlxsw_sp_vr_put(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6766
static int mlxsw_sp_fib_node_entry_link(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6774
err = mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6786
mlxsw_sp_fib_node_entry_unlink(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6791
mlxsw_sp_fib_entry_del(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
680
for (i = 0; i < mlxsw_sp->router->lpm.tree_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
681
lpm_tree = &mlxsw_sp->router->lpm.trees[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6813
mlxsw_sp_router_fib4_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6822
!mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp, fen_info->fi->nh->id))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6825
fib_node = mlxsw_sp_fib_node_get(mlxsw_sp, fen_info->tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6830
dev_warn(mlxsw_sp->bus_info->dev, "Failed to get FIB node\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6834
fib4_entry = mlxsw_sp_fib4_entry_create(mlxsw_sp, fib_node, fen_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6836
dev_warn(mlxsw_sp->bus_info->dev, "Failed to create FIB entry\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6842
mlxsw_sp_fib4_entry_destroy(mlxsw_sp, fib4_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6843
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6848
err = mlxsw_sp_fib_node_entry_link(mlxsw_sp, &fib4_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6850
dev_warn(mlxsw_sp->bus_info->dev, "Failed to link FIB entry to node\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6858
mlxsw_sp_fib_entry_hw_flags_clear(mlxsw_sp, replaced);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6861
mlxsw_sp_fib4_entry_destroy(mlxsw_sp, fib4_replaced);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6867
mlxsw_sp_fib4_entry_destroy(mlxsw_sp, fib4_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6869
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6873
static void mlxsw_sp_router_fib4_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6879
fib4_entry = mlxsw_sp_fib4_entry_lookup(mlxsw_sp, fen_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6884
mlxsw_sp_fib_node_entry_unlink(mlxsw_sp, &fib4_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6885
mlxsw_sp_fib4_entry_destroy(mlxsw_sp, fib4_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6886
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
690
return mlxsw_sp_lpm_tree_create(mlxsw_sp, prefix_usage, proto);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6964
static bool mlxsw_sp_nexthop6_ipip_type(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6969
mlxsw_sp_netdev_ipip_type(mlxsw_sp, rt->fib6_nh->fib_nh_dev, ret);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6972
static int mlxsw_sp_nexthop6_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
698
static void mlxsw_sp_lpm_tree_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6987
err = mlxsw_sp_nexthop_counter_enable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6991
list_add_tail(&nh->router_list_node, &mlxsw_sp->router->nexthop_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
6997
err = mlxsw_sp_nexthop_type_init(mlxsw_sp, nh, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7005
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7009
static void mlxsw_sp_nexthop6_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7012
mlxsw_sp_nexthop_type_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7014
mlxsw_sp_nexthop_counter_disable(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7017
static bool mlxsw_sp_rt6_is_gateway(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7021
mlxsw_sp_nexthop6_ipip_type(mlxsw_sp, rt, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7025
mlxsw_sp_nexthop6_group_info_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
703
mlxsw_sp_lpm_tree_destroy(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7041
nhgi->gateway = mlxsw_sp_rt6_is_gateway(mlxsw_sp, mlxsw_sp_rt6->rt);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7047
err = mlxsw_sp_nexthop6_init(mlxsw_sp, nh_grp, nh, rt);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7053
err = mlxsw_sp_nexthop_group_inc(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7056
err = mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7063
mlxsw_sp_nexthop_group_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7069
mlxsw_sp_nexthop6_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7076
mlxsw_sp_nexthop6_group_info_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
708
static int mlxsw_sp_lpm_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7082
mlxsw_sp_nexthop_group_dec(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7086
mlxsw_sp_nexthop6_fini(mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7088
mlxsw_sp_nexthop_group_refresh(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7094
mlxsw_sp_nexthop6_group_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7111
err = mlxsw_sp_nexthop6_group_info_init(mlxsw_sp, nh_grp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7115
err = mlxsw_sp_nexthop_group_insert(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7124
mlxsw_sp_nexthop6_group_info_fini(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7133
mlxsw_sp_nexthop6_group_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7138
mlxsw_sp_nexthop_group_remove(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7139
mlxsw_sp_nexthop6_group_info_fini(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7145
static int mlxsw_sp_nexthop6_group_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
715
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_LPM_TREES))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7152
nh_grp = mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7159
nh_grp = mlxsw_sp_nexthop6_group_lookup(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7161
nh_grp = mlxsw_sp_nexthop6_group_create(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7179
static void mlxsw_sp_nexthop6_group_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
718
max_trees = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_LPM_TREES);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7189
mlxsw_sp_nexthop_obj_group_destroy(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
719
mlxsw_sp->router->lpm.tree_count = max_trees - MLXSW_SP_LPM_TREE_MIN;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7193
mlxsw_sp_nexthop6_group_destroy(mlxsw_sp, nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7197
mlxsw_sp_nexthop6_group_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
720
mlxsw_sp->router->lpm.trees = kzalloc_objs(struct mlxsw_sp_lpm_tree,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7208
err = mlxsw_sp_nexthop6_group_get(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
721
mlxsw_sp->router->lpm.tree_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
722
if (!mlxsw_sp->router->lpm.trees)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7221
err = mlxsw_sp_fib_entry_update(mlxsw_sp, &fib6_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7226
mlxsw_sp_nexthop6_group_destroy(mlxsw_sp, old_nh_grp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7234
mlxsw_sp_nexthop6_group_put(mlxsw_sp, &fib6_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7244
mlxsw_sp_fib6_entry_nexthop_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
725
for (i = 0; i < mlxsw_sp->router->lpm.tree_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
726
lpm_tree = &mlxsw_sp->router->lpm.trees[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7262
err = mlxsw_sp_nexthop6_group_update(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7280
mlxsw_sp_fib6_entry_nexthop_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7298
mlxsw_sp_nexthop6_group_update(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
730
lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7302
mlxsw_sp_fib6_entry_type_set_local(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7309
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7314
ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, ifindex,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7320
return mlxsw_sp_fib_entry_decap_init(mlxsw_sp, fib_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7323
if (mlxsw_sp_router_nve_is_decap(mlxsw_sp, tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7335
static int mlxsw_sp_fib6_entry_type_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7340
return mlxsw_sp_fib6_entry_type_set_local(mlxsw_sp, fib_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
736
mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV4] = lpm_tree;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7370
mlxsw_sp_fib6_entry_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
738
lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7396
err = mlxsw_sp_nexthop6_group_get(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7405
err = mlxsw_sp_fib6_entry_type_set(mlxsw_sp, fib_entry, rt_arr[0]);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7416
mlxsw_sp_nexthop6_group_put(mlxsw_sp, fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7430
mlxsw_sp_fib6_entry_type_unset(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7433
mlxsw_sp_fib_entry_type_unset(mlxsw_sp, &fib6_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7436
static void mlxsw_sp_fib6_entry_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
744
mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV6] = lpm_tree;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7441
mlxsw_sp_fib6_entry_type_unset(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7444
mlxsw_sp_nexthop6_group_put(mlxsw_sp, &fib6_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7451
mlxsw_sp_fib6_entry_lookup(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7460
vr = mlxsw_sp_vr_find(mlxsw_sp, rt->fib6_table->tb6_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
749
lpm_tree = mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV4];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
750
mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7503
static int mlxsw_sp_router_fib6_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7519
if (rt->nh && !mlxsw_sp_nexthop_obj_group_lookup(mlxsw_sp, rt->nh->id))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
752
kfree(mlxsw_sp->router->lpm.trees);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7522
fib_node = mlxsw_sp_fib_node_get(mlxsw_sp, rt->fib6_table->tb6_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7530
fib6_entry = mlxsw_sp_fib6_entry_create(mlxsw_sp, fib_node, rt_arr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7538
mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7539
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7544
err = mlxsw_sp_fib_node_entry_link(mlxsw_sp, &fib6_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7552
mlxsw_sp_fib_entry_hw_flags_clear(mlxsw_sp, replaced);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7555
mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_replaced);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
756
static void mlxsw_sp_lpm_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7561
mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7563
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7567
static int mlxsw_sp_router_fib6_append(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7582
fib_node = mlxsw_sp_fib_node_get(mlxsw_sp, rt->fib6_table->tb6_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7591
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7597
err = mlxsw_sp_fib6_entry_nexthop_add(mlxsw_sp, fib6_entry, rt_arr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
760
lpm_tree = mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV6];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7605
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7609
static void mlxsw_sp_router_fib6_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
761
mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7625
fib6_entry = mlxsw_sp_fib6_entry_lookup(mlxsw_sp, rt);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
763
lpm_tree = mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV4];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7633
mlxsw_sp_fib6_entry_nexthop_del(mlxsw_sp, fib6_entry, rt_arr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
764
mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7640
mlxsw_sp_fib_node_entry_unlink(mlxsw_sp, &fib6_entry->common);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7641
mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7642
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7654
static int mlxsw_sp_router_fibmr_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
766
kfree(mlxsw_sp->router->lpm.trees);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7661
vr = mlxsw_sp_vr_get(mlxsw_sp, men_info->tb_id, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7669
static void mlxsw_sp_router_fibmr_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7675
vr = mlxsw_sp_vr_find(mlxsw_sp, men_info->tb_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7681
mlxsw_sp_vr_put(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7685
mlxsw_sp_router_fibmr_vif_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7692
vr = mlxsw_sp_vr_get(mlxsw_sp, ven_info->tb_id, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7697
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, ven_info->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7704
mlxsw_sp_router_fibmr_vif_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7710
vr = mlxsw_sp_vr_find(mlxsw_sp, ven_info->tb_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7716
mlxsw_sp_vr_put(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7719
static void mlxsw_sp_fib4_node_flush(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7726
mlxsw_sp_fib_node_entry_unlink(mlxsw_sp, fib_node->fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7727
mlxsw_sp_fib4_entry_destroy(mlxsw_sp, fib4_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7728
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7731
static void mlxsw_sp_fib6_node_flush(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7738
mlxsw_sp_fib_node_entry_unlink(mlxsw_sp, fib_node->fib_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7739
mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7740
mlxsw_sp_fib_node_put(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7743
static void mlxsw_sp_fib_node_flush(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7748
mlxsw_sp_fib4_node_flush(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7751
mlxsw_sp_fib6_node_flush(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7756
static void mlxsw_sp_vr_fib_flush(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
776
static struct mlxsw_sp_vr *mlxsw_sp_vr_find_unused(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7766
mlxsw_sp_fib_node_flush(mlxsw_sp, fib_node);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7772
static void mlxsw_sp_router_fib_flush(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7774
int max_vrs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_VRS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7778
struct mlxsw_sp_vr *vr = &mlxsw_sp->router->vrs[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
778
int max_vrs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_VRS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7785
mlxsw_sp_vr_fib_flush(mlxsw_sp, vr, MLXSW_SP_L3_PROTO_IPV4);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7792
mlxsw_sp_vr_fib_flush(mlxsw_sp, vr, MLXSW_SP_L3_PROTO_IPV6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7812
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
783
vr = &mlxsw_sp->router->vrs[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7868
struct mlxsw_sp *mlxsw_sp = fib_work->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7871
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7872
mlxsw_sp_span_respin(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7876
err = mlxsw_sp_router_fib4_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7879
dev_warn(mlxsw_sp->bus_info->dev, "FIB replace failed.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7880
mlxsw_sp_fib4_offload_failed_flag_set(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7886
mlxsw_sp_router_fib4_del(mlxsw_sp, &fib_work->fen_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7891
mlxsw_sp_nexthop4_event(mlxsw_sp, fib_work->event,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7896
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
790
static int mlxsw_sp_vr_lpm_tree_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7905
struct mlxsw_sp *mlxsw_sp = fib_work->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7908
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7909
mlxsw_sp_span_respin(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7913
err = mlxsw_sp_router_fib6_replace(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7917
dev_warn(mlxsw_sp->bus_info->dev, "FIB replace failed.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7918
mlxsw_sp_fib6_offload_failed_flag_set(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7925
err = mlxsw_sp_router_fib6_append(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7929
dev_warn(mlxsw_sp->bus_info->dev, "FIB append failed.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7930
mlxsw_sp_fib6_offload_failed_flag_set(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7937
mlxsw_sp_router_fib6_del(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7943
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7951
struct mlxsw_sp *mlxsw_sp = fib_work->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7956
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7962
err = mlxsw_sp_router_fibmr_add(mlxsw_sp, &fib_work->men_info,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7965
dev_warn(mlxsw_sp->bus_info->dev, "MR entry add failed.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7969
mlxsw_sp_router_fibmr_del(mlxsw_sp, &fib_work->men_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7973
err = mlxsw_sp_router_fibmr_vif_add(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7976
dev_warn(mlxsw_sp->bus_info->dev, "MR VIF add failed.\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
798
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(raltb), raltb_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7980
mlxsw_sp_router_fibmr_vif_del(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
7985
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
801
static int mlxsw_sp_vr_lpm_tree_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8061
struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8076
if (rule->iifindex == mlxsw_sp_net(mlxsw_sp)->loopback_dev->ifindex)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
809
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(raltb), raltb_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8124
router->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8144
fib_work->mlxsw_sp = router->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8175
mlxsw_sp_rif_find_by_dev(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8178
int max_rifs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8182
if (mlxsw_sp->router->rifs[i] &&
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8183
mlxsw_sp_rif_dev_is(mlxsw_sp->router->rifs[i], dev))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8184
return mlxsw_sp->router->rifs[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8189
static int mlxsw_sp_router_rif_disable(struct mlxsw_sp *mlxsw_sp, u16 rif)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8195
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
820
static struct mlxsw_sp_vr *mlxsw_sp_vr_find(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8200
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8203
static int mlxsw_sp_router_rif_made_sync(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8208
err = mlxsw_sp_neigh_rif_made_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8212
err = mlxsw_sp_nexthop_rif_made_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8219
mlxsw_sp_neigh_rif_gone_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8223
static void mlxsw_sp_router_rif_gone_sync(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8229
mlxsw_sp_router_rif_disable(mlxsw_sp, rif->rif_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
823
int max_vrs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_VRS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8230
mlxsw_sp_nexthop_rif_gone_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8231
mlxsw_sp_neigh_rif_gone_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8293
mlxsw_sp_dev_rif_type(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8298
if (mlxsw_sp_netdev_ipip_type(mlxsw_sp, dev, NULL))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
830
vr = &mlxsw_sp->router->vrs[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8311
return mlxsw_sp_fid_type_rif_type(mlxsw_sp, type);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8314
static int mlxsw_sp_rif_index_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_rif_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8317
*p_rif_index = gen_pool_alloc(mlxsw_sp->router->rifs_table,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8329
static void mlxsw_sp_rif_index_free(struct mlxsw_sp *mlxsw_sp, u16 rif_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8332
gen_pool_free(mlxsw_sp->router->rifs_table,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
837
int mlxsw_sp_router_tb_id_vr_id(struct mlxsw_sp *mlxsw_sp, u32 tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8371
struct mlxsw_sp_rif *mlxsw_sp_rif_by_index(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8374
return mlxsw_sp->router->rifs[rif_index];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
843
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
844
vr = mlxsw_sp_vr_find(mlxsw_sp, tb_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
85
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
851
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8580
mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8595
type = mlxsw_sp_dev_rif_type(mlxsw_sp, params->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8596
ops = mlxsw_sp->router->rif_ops_arr[type];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8598
vr = mlxsw_sp_vr_get(mlxsw_sp, tb_id ? : RT_TABLE_MAIN, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8603
err = mlxsw_sp_rif_index_alloc(mlxsw_sp, &rif_index, rif_entries);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8609
crif = mlxsw_sp_crif_lookup(mlxsw_sp->router, params->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8621
mlxsw_sp->router->rifs[rif_index] = rif;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8622
rif->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8648
err = mlxsw_sp_router_rif_made_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8662
atomic_add(rif_entries, &mlxsw_sp->router->rifs_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8666
mlxsw_sp_router_rif_gone_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
867
static struct mlxsw_sp_vr *mlxsw_sp_vr_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8676
mlxsw_sp->router->rifs[rif_index] = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8681
mlxsw_sp_rif_index_free(mlxsw_sp, rif_index, rif_entries);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8684
mlxsw_sp_vr_put(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8692
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8700
atomic_sub(rif_entries, &mlxsw_sp->router->rifs_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8701
mlxsw_sp_router_rif_gone_sync(mlxsw_sp, rif);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8702
vr = &mlxsw_sp->router->vrs[rif->vr_id];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8718
mlxsw_sp->router->rifs[rif->rif_index] = NULL;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8721
mlxsw_sp_rif_index_free(mlxsw_sp, rif_index, rif_entries);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8723
mlxsw_sp_vr_put(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8729
void mlxsw_sp_rif_destroy_by_dev(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8734
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8735
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8740
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8743
static void mlxsw_sp_rif_destroy_vlan_upper(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8757
crif = mlxsw_sp_crif_lookup(mlxsw_sp->router, upper_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8764
static int mlxsw_sp_inetaddr_bridge_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
877
vr = mlxsw_sp_vr_find_unused(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8770
int mlxsw_sp_router_bridge_vlan_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8782
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8783
old_rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8813
mlxsw_sp_rif_destroy_vlan_upper(mlxsw_sp, br_dev, new_pvid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8817
new_rif = mlxsw_sp_rif_create(mlxsw_sp, ¶ms, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
882
fib4 = mlxsw_sp_fib_create(mlxsw_sp, vr, MLXSW_SP_L3_PROTO_IPV4);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8824
mlxsw_sp_rif_migrate_destroy(mlxsw_sp, old_rif, new_rif,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8836
err = mlxsw_sp_inetaddr_bridge_event(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8843
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
885
fib6 = mlxsw_sp_fib_create(mlxsw_sp, vr, MLXSW_SP_L3_PROTO_IPV6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8882
mlxsw_sp_rif_subport_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8889
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, params->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8891
return mlxsw_sp_rif_create(mlxsw_sp, params, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
890
mr4_table = mlxsw_sp_mr_table_create(mlxsw_sp, vr->id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8909
static int mlxsw_sp_rif_mac_profile_index_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8913
u8 max_rif_mac_profiles = mlxsw_sp->router->max_rif_mac_profile;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8914
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8933
mlxsw_sp_rif_mac_profile_index_free(struct mlxsw_sp *mlxsw_sp, u8 mac_profile)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8937
profile = idr_remove(&mlxsw_sp->router->rif_mac_profiles_idr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8958
mlxsw_sp_rif_mac_profile_find(const struct mlxsw_sp *mlxsw_sp, const char *mac)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
896
mr6_table = mlxsw_sp_mr_table_create(mlxsw_sp, vr->id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8960
struct mlxsw_sp_router *router = mlxsw_sp->router;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8966
mlxsw_sp->mac_mask))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8975
const struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8977
return atomic_read(&mlxsw_sp->router->rif_mac_profiles_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8982
const struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8984
return atomic_read(&mlxsw_sp->router->rifs_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8988
mlxsw_sp_rif_mac_profile_create(struct mlxsw_sp *mlxsw_sp, const char *mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8998
err = mlxsw_sp_rif_mac_profile_index_alloc(mlxsw_sp, profile, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9002
atomic_inc(&mlxsw_sp->router->rif_mac_profiles_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9010
static void mlxsw_sp_rif_mac_profile_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9015
atomic_dec(&mlxsw_sp->router->rif_mac_profiles_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9016
profile = mlxsw_sp_rif_mac_profile_index_free(mlxsw_sp, mac_profile);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9020
static int mlxsw_sp_rif_mac_profile_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9026
profile = mlxsw_sp_rif_mac_profile_find(mlxsw_sp, mac);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9032
profile = mlxsw_sp_rif_mac_profile_create(mlxsw_sp, mac, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9041
static void mlxsw_sp_rif_mac_profile_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9046
profile = idr_find(&mlxsw_sp->router->rif_mac_profiles_idr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9054
mlxsw_sp_rif_mac_profile_destroy(mlxsw_sp, mac_profile);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9059
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9062
profile = idr_find(&mlxsw_sp->router->rif_mac_profiles_idr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9073
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9076
profile = idr_find(&mlxsw_sp->router->rif_mac_profiles_idr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9086
mlxsw_sp_rif_mac_profile_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9095
!mlxsw_sp_rif_mac_profile_find(mlxsw_sp, new_mac))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9098
err = mlxsw_sp_rif_mac_profile_get(mlxsw_sp, new_mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9103
mlxsw_sp_rif_mac_profile_put(mlxsw_sp, rif->mac_profile_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9114
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9127
rif = mlxsw_sp_rif_subport_get(mlxsw_sp, ¶ms, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
913
mlxsw_sp_fib_destroy(mlxsw_sp, fib6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
915
mlxsw_sp_fib_destroy(mlxsw_sp, fib4);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9184
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port_vlan->mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9186
lockdep_assert_held(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9188
if (!mlxsw_sp_rif_find_by_dev(mlxsw_sp, l3_dev))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
919
static void mlxsw_sp_vr_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9198
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port_vlan->mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9200
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9202
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
926
mlxsw_sp_fib_destroy(mlxsw_sp, vr->fib6);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9275
static int mlxsw_sp_inetaddr_bridge_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
928
mlxsw_sp_fib_destroy(mlxsw_sp, vr->fib4);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9312
rif = mlxsw_sp_rif_create(mlxsw_sp, ¶ms, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9317
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, l3_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
932
static struct mlxsw_sp_vr *mlxsw_sp_vr_get(struct mlxsw_sp *mlxsw_sp, u32 tb_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9325
static int mlxsw_sp_inetaddr_vlan_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9349
return mlxsw_sp_inetaddr_bridge_event(mlxsw_sp, vlan_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9373
static int mlxsw_sp_rif_vrrp_op(struct mlxsw_sp *mlxsw_sp, u16 rif_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
938
vr = mlxsw_sp_vr_find(mlxsw_sp, tb_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9385
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9394
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9397
static int mlxsw_sp_rif_macvlan_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
940
vr = mlxsw_sp_vr_create(mlxsw_sp, tb_id, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9405
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, vlan->lowerdev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9409
err = mlxsw_sp_rif_fdb_op(mlxsw_sp, macvlan_dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9414
err = mlxsw_sp_rif_vrrp_op(mlxsw_sp, rif->rif_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9428
mlxsw_sp_rif_fdb_op(mlxsw_sp, macvlan_dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9433
static void __mlxsw_sp_rif_macvlan_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9439
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, vlan->lowerdev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
944
static void mlxsw_sp_vr_put(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_vr *vr)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9445
mlxsw_sp_rif_vrrp_op(mlxsw_sp, rif->rif_index, macvlan_dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9447
mlxsw_sp_rif_fdb_op(mlxsw_sp, macvlan_dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9451
void mlxsw_sp_rif_macvlan_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9454
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9455
__mlxsw_sp_rif_macvlan_del(mlxsw_sp, macvlan_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9456
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9459
static int mlxsw_sp_inetaddr_macvlan_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9466
return mlxsw_sp_rif_macvlan_add(mlxsw_sp, macvlan_dev, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9468
__mlxsw_sp_rif_macvlan_del(mlxsw_sp, macvlan_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9475
static int __mlxsw_sp_inetaddr_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9487
return mlxsw_sp_inetaddr_bridge_event(mlxsw_sp, dev, -1, event,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9490
return mlxsw_sp_inetaddr_vlan_event(mlxsw_sp, dev, event,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9493
return mlxsw_sp_inetaddr_macvlan_event(mlxsw_sp, dev, event,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
950
mlxsw_sp_vr_destroy(mlxsw_sp, vr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9514
rif = mlxsw_sp_rif_find_by_dev(router->mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9518
err = __mlxsw_sp_inetaddr_event(router->mlxsw_sp, dev, event, false,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9530
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9534
mlxsw_sp = mlxsw_sp_lower_get(dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9535
if (!mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9538
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9539
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9543
err = __mlxsw_sp_inetaddr_event(mlxsw_sp, dev, event, false,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9546
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9552
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9562
struct mlxsw_sp *mlxsw_sp = inet6addr_work->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9568
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9570
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9574
__mlxsw_sp_inetaddr_event(mlxsw_sp, dev, event, false, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9576
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9601
inet6addr_work->mlxsw_sp = router->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9615
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9619
mlxsw_sp = mlxsw_sp_lower_get(dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9620
if (!mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9623
mutex_lock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9624
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9628
err = __mlxsw_sp_inetaddr_event(mlxsw_sp, dev, event, false,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9631
mutex_unlock(&mlxsw_sp->router->lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9635
static int mlxsw_sp_rif_edit(struct mlxsw_sp *mlxsw_sp, u16 rif_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9642
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9650
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9654
mlxsw_sp_router_port_change_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
966
static int mlxsw_sp_vr_lpm_tree_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9665
err = mlxsw_sp_rif_fdb_op(mlxsw_sp, rif->addr, fid_index, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9670
err = mlxsw_sp_rif_mac_profile_replace(mlxsw_sp, rif, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9675
err = mlxsw_sp_rif_edit(mlxsw_sp, rif->rif_index, dev->dev_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9680
err = mlxsw_sp_rif_fdb_op(mlxsw_sp, dev->dev_addr, fid_index, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9692
vr = &mlxsw_sp->router->vrs[rif->vr_id];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9706
mlxsw_sp_rif_edit(mlxsw_sp, rif->rif_index, rif->addr, rif->mtu,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9709
mlxsw_sp_rif_mac_profile_replace(mlxsw_sp, rif, rif->addr, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9711
mlxsw_sp_rif_fdb_op(mlxsw_sp, rif->addr, fid_index, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9718
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9726
profile = mlxsw_sp_rif_mac_profile_find(mlxsw_sp, info->dev_addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9730
max_rif_mac_profiles = mlxsw_sp->router->max_rif_mac_profile;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9731
occ = mlxsw_sp_rif_mac_profiles_occ_get(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9742
static bool mlxsw_sp_router_netdevice_interesting(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
975
err = mlxsw_sp_vr_lpm_tree_bind(mlxsw_sp, fib, new_tree->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9750
mlxsw_sp_netdev_is_ipip_ol(mlxsw_sp, dev) ||
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
978
mlxsw_sp_lpm_tree_put(mlxsw_sp, old_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9795
mlxsw_sp_nexthop_type_fini(router->mlxsw_sp, nh);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9808
if (!mlxsw_sp_router_netdevice_interesting(router->mlxsw_sp, dev))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
982
mlxsw_sp_lpm_tree_put(mlxsw_sp, new_tree);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9820
if (!mlxsw_sp_router_netdevice_interesting(router->mlxsw_sp, dev))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
987
static int mlxsw_sp_vrs_lpm_tree_replace(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9883
mlxsw_sp_netdevice_offload_xstats_cmd(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9890
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
991
int max_vrs = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_VRS);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9913
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9916
mlxsw_sp = mlxsw_sp_lower_get(dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9917
if (!mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9920
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9927
return mlxsw_sp_router_port_change_event(mlxsw_sp, rif, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9938
static int mlxsw_sp_port_vrf_join(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9947
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, l3_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9949
__mlxsw_sp_inetaddr_event(mlxsw_sp, l3_dev, NETDEV_DOWN, false,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9952
return __mlxsw_sp_inetaddr_event(mlxsw_sp, l3_dev, NETDEV_UP, false,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9956
static void mlxsw_sp_port_vrf_leave(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9961
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, l3_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9964
__mlxsw_sp_inetaddr_event(mlxsw_sp, l3_dev, NETDEV_DOWN, false, NULL);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
998
old_tree = mlxsw_sp->router->lpm.proto_trees[proto];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9980
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(l3_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9986
if (!mlxsw_sp || netif_is_macvlan(l3_dev))
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9997
err = mlxsw_sp_port_vrf_join(mlxsw_sp, l3_dev, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
9999
mlxsw_sp_port_vrf_leave(mlxsw_sp, l3_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
120
int mlxsw_sp_neigh_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
124
mlxsw_sp_neigh_entry_counter_update(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
128
int __mlxsw_sp_ipip_entry_update_tunnel(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
134
void mlxsw_sp_ipip_entry_demote_tunnel(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
137
mlxsw_sp_ipip_demote_tunnel_by_saddr(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
153
int mlxsw_sp_nexthop_counter_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
155
int mlxsw_sp_nexthop_eth_update(struct mlxsw_sp *mlxsw_sp, u32 adj_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
158
int mlxsw_sp_nexthop_counter_enable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
160
void mlxsw_sp_nexthop_counter_disable(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
169
int mlxsw_sp_ipip_ecn_encap_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
170
int mlxsw_sp_ipip_ecn_decap_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
173
int mlxsw_sp_router_bridge_vlan_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
182
int mlxsw_sp_netdevice_enslavement_replay(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
185
void mlxsw_sp_netdevice_deslavement_replay(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
22
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
90
struct mlxsw_sp_rif *mlxsw_sp_rif_by_index(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
99
int mlxsw_sp_rif_counter_value_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
100
mlxsw_sp->span = span;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1016
mlxsw_sp_span_entry_ops(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1019
struct mlxsw_sp_span *span = mlxsw_sp->span;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
102
for (i = 0; i < mlxsw_sp->span->entries_count; i++)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
103
mlxsw_sp->span->entries[i].id = i;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1032
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1036
mlxsw_sp = span->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1039
for (i = 0; i < mlxsw_sp->span->entries_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1040
struct mlxsw_sp_span_entry *curr = &mlxsw_sp->span->entries[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1049
err = curr->ops->parms_set(mlxsw_sp, curr->to_dev, &sparms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
105
err = mlxsw_sp->span_ops->init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1055
mlxsw_sp_span_entry_configure(mlxsw_sp, curr, sparms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1061
void mlxsw_sp_span_respin(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1063
if (atomic_read(&mlxsw_sp->span->active_entries_count) == 0)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1065
mlxsw_core_schedule_work(&mlxsw_sp->span->work);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1068
int mlxsw_sp_span_agent_get(struct mlxsw_sp *mlxsw_sp, int *p_span_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1079
ops = mlxsw_sp_span_entry_ops(mlxsw_sp, to_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1081
dev_err(mlxsw_sp->bus_info->dev, "Cannot mirror to requested destination\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1086
err = ops->parms_set(mlxsw_sp, to_dev, &sparms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1093
span_entry = mlxsw_sp_span_entry_get(mlxsw_sp, to_dev, ops, sparms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
110
mlxsw_sp_span_occ_get, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1102
void mlxsw_sp_span_agent_put(struct mlxsw_sp *mlxsw_sp, int span_id)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1108
span_entry = mlxsw_sp_span_entry_find_by_id(mlxsw_sp, span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1112
mlxsw_sp_span_entry_put(mlxsw_sp, span_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
116
mutex_destroy(&mlxsw_sp->span->analyzed_ports_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1167
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
117
kfree(mlxsw_sp->span);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1172
mutex_lock(&mlxsw_sp->span->analyzed_ports_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1174
analyzed_port = mlxsw_sp_span_analyzed_port_find(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1181
analyzed_port = mlxsw_sp_span_analyzed_port_create(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1188
mutex_unlock(&mlxsw_sp->span->analyzed_ports_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1195
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1199
mutex_lock(&mlxsw_sp->span->analyzed_ports_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1201
analyzed_port = mlxsw_sp_span_analyzed_port_find(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
121
void mlxsw_sp_span_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1212
mutex_unlock(&mlxsw_sp->span->analyzed_ports_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
123
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1241
return mlxsw_reg_write(span->mlxsw_sp->core, MLXSW_REG(mpar), mpar_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
125
cancel_work_sync(&mlxsw_sp->span->work);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
128
WARN_ON_ONCE(!list_empty(&mlxsw_sp->span->trigger_entries_list));
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
129
WARN_ON_ONCE(!list_empty(&mlxsw_sp->span->analyzed_ports_list));
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
130
mutex_destroy(&mlxsw_sp->span->analyzed_ports_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
131
kfree(mlxsw_sp->span);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1355
struct mlxsw_sp *mlxsw_sp = trigger_entry->span->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1379
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mpagr), mpagr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
139
static int mlxsw_sp1_span_entry_cpu_parms(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1406
struct mlxsw_sp *mlxsw_sp = trigger_entry->span->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1430
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(momte), momte_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1435
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(momte), momte_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1559
int mlxsw_sp_span_agent_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1569
if (!mlxsw_sp_span_entry_find_by_id(mlxsw_sp, parms->span_id))
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1572
trigger_entry = mlxsw_sp_span_trigger_entry_find(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1584
trigger_entry = mlxsw_sp_span_trigger_entry_create(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1595
void mlxsw_sp_span_agent_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1604
if (WARN_ON_ONCE(!mlxsw_sp_span_entry_find_by_id(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1608
trigger_entry = mlxsw_sp_span_trigger_entry_find(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1617
mlxsw_sp_span_trigger_entry_destroy(mlxsw_sp->span, trigger_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1623
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1628
trigger_entry = mlxsw_sp_span_trigger_entry_find(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1640
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1645
trigger_entry = mlxsw_sp_span_trigger_entry_find(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1670
static int mlxsw_sp1_span_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
168
mlxsw_sp_span_entry_phys_parms(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1681
mlxsw_sp->span->span_trigger_ops_arr = mlxsw_sp1_span_trigger_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1682
mlxsw_sp->span->span_entry_ops_arr = mlxsw_sp1_span_entry_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1683
mlxsw_sp->span->span_entry_ops_arr_size = arr_size;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1688
static int mlxsw_sp1_span_policer_id_base_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1699
static int mlxsw_sp2_span_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1710
mlxsw_sp->span->span_trigger_ops_arr = mlxsw_sp2_span_trigger_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1711
mlxsw_sp->span->span_entry_ops_arr = mlxsw_sp2_span_entry_ops_arr;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1712
mlxsw_sp->span->span_entry_ops_arr_size = arr_size;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1720
static int mlxsw_sp2_span_policer_id_base_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1726
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(mogcr), mogcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
1731
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mogcr), mogcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
181
struct mlxsw_sp *mlxsw_sp = dest_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
193
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mpat), mpat_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
201
struct mlxsw_sp *mlxsw_sp = dest_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
208
mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mpat), mpat_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
23
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
318
bridge_port = mlxsw_sp_bridge_port_find(port->mlxsw_sp->bridge, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
449
mlxsw_sp_span_entry_gretap4_parms(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
482
struct mlxsw_sp *mlxsw_sp = dest_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
501
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mpat), mpat_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
554
mlxsw_sp_span_entry_gretap6_parms(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
587
struct mlxsw_sp *mlxsw_sp = dest_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
605
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mpat), mpat_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
632
mlxsw_sp_span_entry_vlan_parms(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
653
struct mlxsw_sp *mlxsw_sp = dest_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
664
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mpat), mpat_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
700
static int mlxsw_sp2_span_entry_cpu_parms(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
704
sparmsp->dest_port = mlxsw_sp->ports[MLXSW_PORT_CPU_PORT];
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
75
const struct mlxsw_sp *mlxsw_sp = priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
750
mlxsw_sp_span_entry_nop_parms(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
77
return atomic_read(&mlxsw_sp->span->active_entries_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
776
mlxsw_sp_span_entry_configure(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
785
if (sparms.dest_port->mlxsw_sp != mlxsw_sp) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
786
dev_err(mlxsw_sp->bus_info->dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
794
dev_err(mlxsw_sp->bus_info->dev, "Failed to offload mirror\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
80
int mlxsw_sp_span_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
813
struct mlxsw_sp *mlxsw_sp = span->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
82
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
833
err = mlxsw_sp->span_ops->policer_id_base_set(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
851
mlxsw_sp_span_entry_create(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
86
if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_SPAN))
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
860
for (i = 0; i < mlxsw_sp->span->entries_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
861
if (!refcount_read(&mlxsw_sp->span->entries[i].ref_count)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
862
span_entry = &mlxsw_sp->span->entries[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
872
err = mlxsw_sp_span_policer_id_base_set(mlxsw_sp->span,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
878
atomic_inc(&mlxsw_sp->span->active_entries_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
882
mlxsw_sp_span_entry_configure(mlxsw_sp, span_entry, sparms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
887
static void mlxsw_sp_span_entry_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
89
entries_count = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_SPAN);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
891
atomic_dec(&mlxsw_sp->span->active_entries_count);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
893
mlxsw_sp_span_policer_id_base_unset(mlxsw_sp->span);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
897
mlxsw_sp_span_entry_find_by_port(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
902
for (i = 0; i < mlxsw_sp->span->entries_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
903
struct mlxsw_sp_span_entry *curr = &mlxsw_sp->span->entries[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
911
void mlxsw_sp_span_entry_invalidate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
919
mlxsw_sp_span_entry_find_by_id(struct mlxsw_sp *mlxsw_sp, int span_id)
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
923
for (i = 0; i < mlxsw_sp->span->entries_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
924
struct mlxsw_sp_span_entry *curr = &mlxsw_sp->span->entries[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
933
mlxsw_sp_span_entry_find_by_parms(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
939
for (i = 0; i < mlxsw_sp->span->entries_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
940
struct mlxsw_sp_span_entry *curr = &mlxsw_sp->span->entries[i];
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
952
mlxsw_sp_span_entry_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
959
span_entry = mlxsw_sp_span_entry_find_by_parms(mlxsw_sp, to_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
967
return mlxsw_sp_span_entry_create(mlxsw_sp, to_dev, ops, sparms);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
970
static int mlxsw_sp_span_entry_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
974
mlxsw_sp_span_entry_destroy(mlxsw_sp, span_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c
99
span->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
100
void mlxsw_sp_span_agent_put(struct mlxsw_sp *mlxsw_sp, int span_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
105
int mlxsw_sp_span_agent_bind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
110
mlxsw_sp_span_agent_unbind(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
13
struct mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
65
int (*init)(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
66
int (*policer_id_base_set)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
81
int (*parms_set)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
89
int mlxsw_sp_span_init(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
90
void mlxsw_sp_span_fini(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
91
void mlxsw_sp_span_respin(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
94
mlxsw_sp_span_entry_find_by_port(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
96
void mlxsw_sp_span_entry_invalidate(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h
98
int mlxsw_sp_span_agent_get(struct mlxsw_sp *mlxsw_sp, int *p_span_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1013
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
103
void (*init)(struct mlxsw_sp *mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1049
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1057
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1065
err = mlxsw_sp_bridge_mdb_mc_enable_sync(mlxsw_sp, bridge_device,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1090
mlxsw_sp_bridge_mdb_mc_enable_sync(mlxsw_sp, bridge_device,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1112
mlxsw_sp_mdb_entry_port_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1129
err = mlxsw_sp_pgt_entry_port_set(mlxsw_sp, mdb_entry->mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1148
mlxsw_sp_pgt_entry_port_set(mlxsw_sp, mdb_entry->mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1154
mlxsw_sp_mdb_entry_port_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1174
mlxsw_sp_pgt_entry_port_set(mlxsw_sp, mdb_entry->mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1179
mlxsw_sp_mdb_entry_mrouter_port_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1193
err = mlxsw_sp_pgt_entry_port_set(mlxsw_sp, mdb_entry->mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1212
mlxsw_sp_pgt_entry_port_set(mlxsw_sp, mdb_entry->mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1218
mlxsw_sp_mdb_entry_mrouter_port_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1237
mlxsw_sp_pgt_entry_port_set(mlxsw_sp, mdb_entry->mid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1242
mlxsw_sp_bridge_mrouter_update_mdb(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1246
u16 local_port = mlxsw_sp_router_port(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1251
mlxsw_sp_mdb_entry_mrouter_port_get(mlxsw_sp, mdb_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1254
mlxsw_sp_mdb_entry_mrouter_port_put(mlxsw_sp, mdb_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1264
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1270
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1275
mlxsw_sp_bridge_mrouter_update_mdb(mlxsw_sp, bridge_device,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1339
mlxsw_sp_span_respin(mlxsw_sp_port->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
134
mlxsw_sp_bridge_port_fdb_flush(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
144
mlxsw_sp_bridge_mdb_mc_enable_sync(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1461
mlxsw_sp_bridge_port_get(mlxsw_sp_port->mlxsw_sp->bridge,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1499
mlxsw_sp_bridge_port_fdb_flush(mlxsw_sp_port->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1508
mlxsw_sp_bridge_port_put(mlxsw_sp_port->mlxsw_sp->bridge, bridge_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1567
mlxsw_sp_br_rif_pvid_change(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1574
return mlxsw_sp_router_bridge_vlan_add(mlxsw_sp, br_dev, vlan->vid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1584
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1592
err = mlxsw_sp_br_rif_pvid_change(mlxsw_sp, orig_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1599
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1618
mlxsw_sp_bridge_port_fdb_flush(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1631
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfdf), sfdf_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1647
mlxsw_sp_port_fdb_tun_uc_op4(struct mlxsw_sp *mlxsw_sp, bool dynamic,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
166
bool mlxsw_sp_bridge_device_is_offloaded(const struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1665
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfd), sfd_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1677
static int mlxsw_sp_port_fdb_tun_uc_op6_sfd_write(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
169
return !!mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1693
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfd), sfd_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1705
static int mlxsw_sp_port_fdb_tun_uc_op6_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1712
err = mlxsw_sp_nve_ipv6_addr_kvdl_set(mlxsw_sp, addr, &kvdl_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1716
err = mlxsw_sp_port_fdb_tun_uc_op6_sfd_write(mlxsw_sp, mac, fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1721
err = mlxsw_sp_nve_ipv6_addr_map_replace(mlxsw_sp, mac, fid, addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1731
mlxsw_sp_port_fdb_tun_uc_op6_sfd_write(mlxsw_sp, mac, fid, kvdl_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1734
mlxsw_sp_nve_ipv6_addr_kvdl_unset(mlxsw_sp, addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1738
static void mlxsw_sp_port_fdb_tun_uc_op6_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1742
mlxsw_sp_nve_ipv6_addr_map_del(mlxsw_sp, mac, fid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1743
mlxsw_sp_port_fdb_tun_uc_op6_sfd_write(mlxsw_sp, mac, fid, 0, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1744
mlxsw_sp_nve_ipv6_addr_kvdl_unset(mlxsw_sp, addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1748
mlxsw_sp_port_fdb_tun_uc_op6(struct mlxsw_sp *mlxsw_sp, const char *mac,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
175
struct mlxsw_sp *mlxsw_sp = priv->data;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1752
return mlxsw_sp_port_fdb_tun_uc_op6_add(mlxsw_sp, mac, fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1755
mlxsw_sp_port_fdb_tun_uc_op6_del(mlxsw_sp, mac, fid, addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1759
static int mlxsw_sp_port_fdb_tunnel_uc_op(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1767
return mlxsw_sp_port_fdb_tun_uc_op4(mlxsw_sp, dynamic, mac, fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
177
mlxsw_sp_rif_destroy_by_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1770
return mlxsw_sp_port_fdb_tun_uc_op6(mlxsw_sp, mac, fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1778
static int __mlxsw_sp_port_fdb_uc_op(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1796
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfd), sfd_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1808
static int mlxsw_sp_port_fdb_uc_op(struct mlxsw_sp *mlxsw_sp, u16 local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
181
static void mlxsw_sp_bridge_device_rifs_destroy(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1812
return __mlxsw_sp_port_fdb_uc_op(mlxsw_sp, local_port, mac, fid, vid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1817
int mlxsw_sp_rif_fdb_op(struct mlxsw_sp *mlxsw_sp, const char *mac, u16 fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1820
return __mlxsw_sp_port_fdb_uc_op(mlxsw_sp, 0, mac, fid, 0, adding,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1825
static int mlxsw_sp_port_fdb_uc_lag_op(struct mlxsw_sp *mlxsw_sp, u16 lag_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1842
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfd), sfd_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
185
.data = (void *)mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1858
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1865
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
188
mlxsw_sp_rif_destroy_by_dev(mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1880
return mlxsw_sp_port_fdb_uc_op(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1885
return mlxsw_sp_port_fdb_uc_lag_op(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1891
static int mlxsw_sp_mdb_entry_write(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1908
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfd), sfd_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1921
mlxsw_sp_bridge_port_get_ports_bitmap(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1932
max_lag_members = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1936
mlxsw_sp_port = mlxsw_sp_port_lagged_get(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1948
struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1954
mlxsw_sp_bridge_port_get_ports_bitmap(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1961
static int mlxsw_sp_mc_mdb_mrouters_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1970
mdb_entry_port = mlxsw_sp_mdb_entry_mrouter_port_get(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1983
mlxsw_sp_mdb_entry_mrouter_port_put(mlxsw_sp, mdb_entry, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1987
static void mlxsw_sp_mc_mdb_mrouters_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1994
mlxsw_sp_mdb_entry_mrouter_port_put(mlxsw_sp, mdb_entry, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
1998
mlxsw_sp_mc_mdb_mrouters_set(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2005
err = mlxsw_sp_port_bitmap_init(mlxsw_sp, &ports_bm);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2009
mlxsw_sp_mc_get_mrouters_bitmap(&ports_bm, bridge_device, mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2012
err = mlxsw_sp_mc_mdb_mrouters_add(mlxsw_sp, &ports_bm,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2015
mlxsw_sp_mc_mdb_mrouters_del(mlxsw_sp, &ports_bm, mdb_entry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2022
mlxsw_sp_mc_mdb_entry_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2036
err = mlxsw_sp_pgt_mid_alloc(mlxsw_sp, &mdb_entry->mid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
204
err = mlxsw_sp_bridge_vxlan_join(bridge->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2042
err = mlxsw_sp_mc_mdb_mrouters_set(mlxsw_sp, bridge_device, mdb_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2047
mdb_entry_port = mlxsw_sp_mdb_entry_port_get(mlxsw_sp, mdb_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2055
err = mlxsw_sp_mdb_entry_write(mlxsw_sp, mdb_entry, true);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2072
mlxsw_sp_mdb_entry_write(mlxsw_sp, mdb_entry, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2074
mlxsw_sp_mdb_entry_port_put(mlxsw_sp, mdb_entry, local_port, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2076
mlxsw_sp_mc_mdb_mrouters_set(mlxsw_sp, bridge_device, mdb_entry, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2078
mlxsw_sp_pgt_mid_free(mlxsw_sp, mdb_entry->mid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2085
mlxsw_sp_mc_mdb_entry_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2094
mlxsw_sp_mdb_entry_write(mlxsw_sp, mdb_entry, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2095
mlxsw_sp_mdb_entry_port_put(mlxsw_sp, mdb_entry, local_port, force);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2096
mlxsw_sp_mc_mdb_mrouters_set(mlxsw_sp, bridge_device, mdb_entry, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2098
mlxsw_sp_pgt_mid_free(mlxsw_sp, mdb_entry->mid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2103
mlxsw_sp_mc_mdb_entry_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2117
mdb_entry_port = mlxsw_sp_mdb_entry_port_get(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2126
return mlxsw_sp_mc_mdb_entry_init(mlxsw_sp, bridge_device, addr, fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2153
mlxsw_sp_mc_mdb_entry_put(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2171
mlxsw_sp_mc_mdb_entry_fini(mlxsw_sp, mdb_entry, bridge_device,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2174
mlxsw_sp_mdb_entry_port_put(mlxsw_sp, mdb_entry, local_port,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2181
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2189
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2202
mdb_entry = mlxsw_sp_mc_mdb_entry_get(mlxsw_sp, bridge_device,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
221
mlxsw_sp_bridge_vxlan_leave(bridge->mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2212
mlxsw_sp_bridge_mdb_mc_enable_sync(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2220
err = mlxsw_sp_mdb_entry_write(mlxsw_sp, mdb_entry, mc_enabled);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2229
mlxsw_sp_mdb_entry_write(mlxsw_sp, mdb_entry, !mc_enabled);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2238
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2247
mlxsw_sp_mdb_entry_mrouter_port_get(mlxsw_sp, mdb_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2250
mlxsw_sp_mdb_entry_mrouter_port_put(mlxsw_sp, mdb_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2274
mlxsw_sp_span_respin(mlxsw_sp_port->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2310
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2317
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2332
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2342
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
235
mlxsw_sp_bridge_vxlan_leave(bridge->mlxsw_sp, dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2364
mlxsw_sp_mc_mdb_entry_put(mlxsw_sp, bridge_device, mdb_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2374
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2387
mlxsw_sp_mdb_entry_mrouter_port_put(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
239
static void mlxsw_sp_fdb_notify_work_schedule(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2391
mlxsw_sp_mc_mdb_entry_put(mlxsw_sp, bridge_device, mdb_entry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2416
mlxsw_sp_span_respin(mlxsw_sp_port->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
242
struct mlxsw_sp_bridge *bridge = mlxsw_sp->bridge;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2421
static struct mlxsw_sp_port *mlxsw_sp_lag_rep_port(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2428
max_lag_members = MLXSW_CORE_RES_GET(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2431
mlxsw_sp_port = mlxsw_sp_port_lagged_get(mlxsw_sp, lag_id, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2514
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(bridge_device->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2535
fid = mlxsw_sp_fid_8021q_get(mlxsw_sp, vid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
254
struct device *dev = bridge->mlxsw_sp->bus_info->dev;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2547
err = mlxsw_sp_nve_fid_enable(mlxsw_sp, fid, ¶ms, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2595
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(bridge_device->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2597
return mlxsw_sp_fid_8021q_get(mlxsw_sp, vid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2604
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(bridge_device->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2606
return mlxsw_sp_fid_8021q_lookup(mlxsw_sp, vid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2705
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(bridge_device->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2716
fid = mlxsw_sp_fid_8021d_get(mlxsw_sp, bridge_device->dev->ifindex);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2728
err = mlxsw_sp_nve_fid_enable(mlxsw_sp, fid, ¶ms, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2744
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(bridge_device->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2746
return mlxsw_sp_fid_8021d_get(mlxsw_sp, bridge_device->dev->ifindex);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2753
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(bridge_device->dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2759
return mlxsw_sp_fid_8021d_lookup(mlxsw_sp, bridge_device->dev->ifindex);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2881
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2886
bridge_port = mlxsw_sp_bridge_port_get(mlxsw_sp->bridge, brport_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2897
err = mlxsw_sp_netdevice_enslavement_replay(mlxsw_sp, br_dev, extack);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
29
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2907
mlxsw_sp_bridge_port_put(mlxsw_sp->bridge, bridge_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2915
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2919
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2929
mlxsw_sp_bridge_port_put(mlxsw_sp->bridge, bridge_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
293
mlxsw_sp_fdb_notify_work_schedule(bridge->mlxsw_sp, false);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2932
static void __mlxsw_sp_bridge_vxlan_leave(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2939
fid = mlxsw_sp_fid_lookup_by_vni(mlxsw_sp, vxlan->cfg.vni);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2943
mlxsw_sp_nve_fid_disable(mlxsw_sp, fid);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2951
int mlxsw_sp_bridge_vxlan_join(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2960
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2981
__mlxsw_sp_bridge_vxlan_leave(mlxsw_sp, vxlan_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2985
void mlxsw_sp_bridge_vxlan_leave(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
2989
__mlxsw_sp_bridge_vxlan_leave(mlxsw_sp, vxlan_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3071
static void mlxsw_sp_fdb_notify_mac_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3087
if (WARN_ON_ONCE(!mlxsw_sp_local_port_is_valid(mlxsw_sp, local_port)))
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3089
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3091
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Incorrect local port in FDB notification\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3118
err = mlxsw_sp_port_fdb_uc_op(mlxsw_sp, local_port, mac, fid, evid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3121
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to set FDB entry\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3139
static void mlxsw_sp_fdb_notify_mac_lag_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3156
mlxsw_sp_port = mlxsw_sp_lag_rep_port(mlxsw_sp, lag_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3158
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Cannot find port representor for LAG\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3185
err = mlxsw_sp_port_fdb_uc_lag_op(mlxsw_sp, lag_id, mac, fid, lag_vid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3188
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to set FDB entry\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3207
__mlxsw_sp_fdb_notify_mac_uc_tunnel_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
321
mlxsw_sp_bridge_device_rifs_destroy(bridge->mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3226
dev = __dev_get_by_index(mlxsw_sp_net(mlxsw_sp), nve_ifindex);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3248
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3257
static void mlxsw_sp_fdb_notify_mac_uc_tunnel_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3276
fid = mlxsw_sp_fid_lookup_by_index(mlxsw_sp, fid_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3280
err = mlxsw_sp_nve_learned_ip_resolve(mlxsw_sp, uip,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3286
err = __mlxsw_sp_fdb_notify_mac_uc_tunnel_process(mlxsw_sp, fid, adding,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3291
err = mlxsw_sp_port_fdb_tunnel_uc_op(mlxsw_sp, mac, fid_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3317
mlxsw_sp_port_fdb_tunnel_uc_op(mlxsw_sp, mac, fid_index,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3322
static void mlxsw_sp_fdb_notify_rec_process(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3327
mlxsw_sp_fdb_notify_mac_process(mlxsw_sp, sfn_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3331
mlxsw_sp_fdb_notify_mac_process(mlxsw_sp, sfn_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3335
mlxsw_sp_fdb_notify_mac_lag_process(mlxsw_sp, sfn_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3339
mlxsw_sp_fdb_notify_mac_lag_process(mlxsw_sp, sfn_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3343
mlxsw_sp_fdb_notify_mac_uc_tunnel_process(mlxsw_sp, sfn_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3347
mlxsw_sp_fdb_notify_mac_uc_tunnel_process(mlxsw_sp, sfn_pl,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3358
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3371
mlxsw_sp = bridge->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3380
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(sfn), sfn_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3382
dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to get FDB notifications\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3387
mlxsw_sp_fdb_notify_rec_process(mlxsw_sp, sfn_pl, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3398
mlxsw_sp_fdb_notify_work_schedule(mlxsw_sp, !queries);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3413
mlxsw_sp_switchdev_bridge_vxlan_fdb_event(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3435
err = mlxsw_sp_port_fdb_tunnel_uc_op(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3449
err = mlxsw_sp_port_fdb_tunnel_uc_op(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3468
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3489
mlxsw_sp = mlxsw_sp_lower_get(br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3490
if (!mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3492
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3505
mlxsw_sp_switchdev_bridge_vxlan_fdb_event(mlxsw_sp, switchdev_work, fid,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3555
mlxsw_sp_span_respin(mlxsw_sp_port->mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3565
mlxsw_sp_switchdev_vxlan_fdb_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3582
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3586
fid = mlxsw_sp_fid_lookup_by_vni(mlxsw_sp, vxlan_fdb_info->vni);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3594
err = mlxsw_sp_nve_flood_ip_add(mlxsw_sp, fid, proto, &addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3615
err = mlxsw_sp_port_fdb_tunnel_uc_op(mlxsw_sp, vxlan_fdb_info->eth_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3637
mlxsw_sp_switchdev_vxlan_fdb_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3654
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3658
fid = mlxsw_sp_fid_lookup_by_vni(mlxsw_sp, vxlan_fdb_info->vni);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3666
mlxsw_sp_nve_flood_ip_del(mlxsw_sp, fid, proto, &addr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3671
mlxsw_sp_port_fdb_tunnel_uc_op(mlxsw_sp, vxlan_fdb_info->eth_addr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3687
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3699
mlxsw_sp = mlxsw_sp_lower_get(br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3700
if (!mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3705
mlxsw_sp_switchdev_vxlan_fdb_add(mlxsw_sp, switchdev_work);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3708
mlxsw_sp_switchdev_vxlan_fdb_del(mlxsw_sp, switchdev_work);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3847
mlxsw_sp_switchdev_vxlan_vlan_add(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3877
fid = mlxsw_sp_fid_lookup_by_vni(mlxsw_sp, vni);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3896
__mlxsw_sp_bridge_vxlan_leave(mlxsw_sp, vxlan_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3912
__mlxsw_sp_bridge_vxlan_leave(mlxsw_sp, vxlan_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3933
mlxsw_sp_switchdev_vxlan_vlan_del(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3944
fid = mlxsw_sp_fid_lookup_by_vni(mlxsw_sp, vni);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3952
__mlxsw_sp_bridge_vxlan_leave(mlxsw_sp, vxlan_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3969
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3977
mlxsw_sp = mlxsw_sp_lower_get(br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3978
if (!mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3983
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
3990
return mlxsw_sp_switchdev_vxlan_vlan_add(mlxsw_sp, bridge_device,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4004
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4011
mlxsw_sp = mlxsw_sp_lower_get(br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4012
if (!mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4017
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, br_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4024
mlxsw_sp_switchdev_vxlan_vlan_del(mlxsw_sp, bridge_device, vxlan_dev,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4104
static int mlxsw_sp_fdb_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4106
struct mlxsw_sp_bridge *bridge = mlxsw_sp->bridge;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4110
err = mlxsw_sp_ageing_set(mlxsw_sp, MLXSW_SP_DEFAULT_AGEING_TIME);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4112
dev_err(mlxsw_sp->bus_info->dev, "Failed to set default ageing time\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4118
dev_err(mlxsw_sp->bus_info->dev, "Failed to register switchdev notifier\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4125
dev_err(mlxsw_sp->bus_info->dev, "Failed to register switchdev blocking notifier\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4138
static void mlxsw_sp_fdb_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4142
cancel_delayed_work_sync(&mlxsw_sp->bridge->fdb_notify.dw);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4150
static void mlxsw_sp1_switchdev_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4152
mlxsw_sp->bridge->bridge_8021ad_ops = &mlxsw_sp1_bridge_8021ad_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4159
static void mlxsw_sp2_switchdev_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4161
mlxsw_sp->bridge->bridge_8021ad_ops = &mlxsw_sp2_bridge_8021ad_ops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4168
int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4172
bridge = kzalloc_obj(*mlxsw_sp->bridge);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4175
mlxsw_sp->bridge = bridge;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4176
bridge->mlxsw_sp = mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4178
INIT_LIST_HEAD(&mlxsw_sp->bridge->bridges_list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4183
mlxsw_sp->switchdev_ops->init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4185
return mlxsw_sp_fdb_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4188
void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4190
mlxsw_sp_fdb_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4191
WARN_ON(!list_empty(&mlxsw_sp->bridge->bridges_list));
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
4192
kfree(mlxsw_sp->bridge);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
694
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
900
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge,
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
946
static int mlxsw_sp_ageing_set(struct mlxsw_sp *mlxsw_sp, u32 ageing_time)
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
952
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfdat), sfdat_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
955
mlxsw_sp->bridge->ageing_time = ageing_time;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
962
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
970
return mlxsw_sp_ageing_set(mlxsw_sp, ageing_time);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
977
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
980
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
995
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
998
bridge_device = mlxsw_sp_bridge_device_find(mlxsw_sp->bridge, orig_dev);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
100
err = mlxsw_sp_rx_listener(mlxsw_sp, skb, local_port, mlxsw_sp_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
104
devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
105
in_devlink_port = mlxsw_core_port_devlink_port_get(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
119
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1191
mlxsw_sp_trap_policer_item_lookup(struct mlxsw_sp *mlxsw_sp, u32 id)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1193
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1205
mlxsw_sp_trap_group_item_lookup(struct mlxsw_sp *mlxsw_sp, u16 id)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1207
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1219
mlxsw_sp_trap_item_lookup(struct mlxsw_sp *mlxsw_sp, u16 id)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1221
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
123
mlxsw_sp = devlink_trap_ctx_priv(trap_ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1232
static int mlxsw_sp_trap_cpu_policers_set(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1234
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
124
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1249
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpcr), qpcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1252
static int mlxsw_sp_trap_dummy_group_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1257
mlxsw_sp->trap->thin_policer_hw_id, 0, 1);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1258
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(htgt), htgt_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
126
err = mlxsw_sp_rx_listener(mlxsw_sp, skb, local_port, mlxsw_sp_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1261
static int mlxsw_sp_trap_policer_items_arr_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1265
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1274
dev_err(mlxsw_sp->bus_info->dev, "Exceeded number of supported packet trap policers\n");
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
130
devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1308
static void mlxsw_sp_trap_policer_items_arr_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
131
in_devlink_port = mlxsw_core_port_devlink_port_get(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1310
kfree(mlxsw_sp->trap->policer_items_arr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1313
static int mlxsw_sp_trap_policers_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1315
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1317
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1320
err = mlxsw_sp_trap_policer_items_arr_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1340
mlxsw_sp_trap_policer_items_arr_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1344
static void mlxsw_sp_trap_policers_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1346
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1348
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
135
fa_cookie = mlxsw_sp_acl_act_cookie_lookup(mlxsw_sp, cookie_index);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1356
mlxsw_sp_trap_policer_items_arr_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1359
static int mlxsw_sp_trap_group_items_arr_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1364
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1368
err = mlxsw_sp->trap_ops->groups_init(mlxsw_sp, &spec_group_items_arr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1391
static void mlxsw_sp_trap_group_items_arr_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1393
kfree(mlxsw_sp->trap->group_items_arr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1396
static int mlxsw_sp_trap_groups_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1398
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1400
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1403
err = mlxsw_sp_trap_group_items_arr_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1421
mlxsw_sp_trap_group_items_arr_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1425
static void mlxsw_sp_trap_groups_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1427
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1428
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1437
mlxsw_sp_trap_group_items_arr_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1446
static int mlxsw_sp_trap_items_arr_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1451
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1455
err = mlxsw_sp->trap_ops->traps_init(mlxsw_sp, &spec_trap_items_arr,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
146
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1478
static void mlxsw_sp_trap_items_arr_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1480
kfree(mlxsw_sp->trap->trap_items_arr);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1483
static int mlxsw_sp_traps_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1485
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1486
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1490
err = mlxsw_sp_trap_items_arr_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1497
mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
150
mlxsw_sp = devlink_trap_ctx_priv(trap_ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1509
mlxsw_sp_trap_items_arr_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
151
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1513
static void mlxsw_sp_traps_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1515
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1516
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1525
mlxsw_sp_trap_items_arr_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1528
int mlxsw_sp_devlink_traps_init(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
153
err = mlxsw_sp_rx_listener(mlxsw_sp, skb, local_port, mlxsw_sp_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1532
err = mlxsw_sp_trap_cpu_policers_set(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1536
err = mlxsw_sp_trap_dummy_group_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1540
err = mlxsw_sp_trap_policers_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1544
err = mlxsw_sp_trap_groups_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1548
err = mlxsw_sp_traps_init(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1555
mlxsw_sp_trap_groups_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1557
mlxsw_sp_trap_policers_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1561
void mlxsw_sp_devlink_traps_fini(struct mlxsw_sp *mlxsw_sp)
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1563
mlxsw_sp_traps_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1564
mlxsw_sp_trap_groups_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1565
mlxsw_sp_trap_policers_fini(mlxsw_sp);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
157
devlink = priv_to_devlink(mlxsw_sp->core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1571
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1575
trap_item = mlxsw_sp_trap_item_lookup(mlxsw_sp, trap->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
158
in_devlink_port = mlxsw_core_port_devlink_port_get(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1597
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1601
trap_item = mlxsw_sp_trap_item_lookup(mlxsw_sp, trap->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1620
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1624
trap_item = mlxsw_sp_trap_item_lookup(mlxsw_sp, trap->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1665
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1670
group_item = mlxsw_sp_trap_group_item_lookup(mlxsw_sp, group->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1682
policer_item = mlxsw_sp_trap_policer_item_lookup(mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1713
mlxsw_sp_trap_policer_item_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1716
struct mlxsw_sp_trap *trap = mlxsw_sp->trap;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1734
mlxsw_sp_trap_policer_item_fini(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1737
__clear_bit(policer_item->hw_id, mlxsw_sp->trap->policers_usage);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1755
static int __mlxsw_sp_trap_policer_set(struct mlxsw_sp *mlxsw_sp, u16 hw_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1770
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpcr), qpcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1776
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1780
policer_item = mlxsw_sp_trap_policer_item_lookup(mlxsw_sp, policer->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1784
err = mlxsw_sp_trap_policer_item_init(mlxsw_sp, policer_item);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1788
err = __mlxsw_sp_trap_policer_set(mlxsw_sp, policer_item->hw_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1797
mlxsw_sp_trap_policer_item_fini(mlxsw_sp, policer_item);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1804
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1807
policer_item = mlxsw_sp_trap_policer_item_lookup(mlxsw_sp, policer->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1811
mlxsw_sp_trap_policer_item_fini(mlxsw_sp, policer_item);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1819
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1822
policer_item = mlxsw_sp_trap_policer_item_lookup(mlxsw_sp, policer->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1826
return __mlxsw_sp_trap_policer_set(mlxsw_sp, policer_item->hw_id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1835
struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1840
policer_item = mlxsw_sp_trap_policer_item_lookup(mlxsw_sp, policer->id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1846
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(qpcr), qpcr_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1855
int mlxsw_sp_trap_group_policer_hw_id_get(struct mlxsw_sp *mlxsw_sp, u16 id,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1862
gr_item = mlxsw_sp_trap_group_item_lookup(mlxsw_sp, id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1872
pol_item = mlxsw_sp_trap_policer_item_lookup(mlxsw_sp, pol_id);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1903
mlxsw_sp1_trap_groups_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1913
static int mlxsw_sp1_traps_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
197
struct mlxsw_sp *mlxsw_sp = devlink_trap_ctx_priv(trap_ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1971
mlxsw_sp2_trap_groups_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
1981
static int mlxsw_sp2_traps_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
208
mlxsw_sp_ptp_receive(mlxsw_sp, skb, local_port);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
212
mlxsw_sp_sample_tx_port_get(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
221
local_port = mlxsw_core_lag_mapping_get(mlxsw_sp->core,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
227
if (local_port >= mlxsw_core_max_ports(mlxsw_sp->core))
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
230
return mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
238
static void mlxsw_sp_psample_md_init(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
248
mlxsw_sp_port = mlxsw_sp_sample_tx_port_get(mlxsw_sp, rx_md_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
263
struct mlxsw_sp *mlxsw_sp = devlink_trap_ctx_priv(trap_ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
274
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
280
params = mlxsw_sp_sample_trigger_params_lookup(mlxsw_sp, &trigger);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
288
mlxsw_sp_psample_md_init(mlxsw_sp, &md, skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
300
struct mlxsw_sp *mlxsw_sp = devlink_trap_ctx_priv(trap_ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
317
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
324
mlxsw_sp_port_tx = mlxsw_sp_sample_tx_port_get(mlxsw_sp, rx_md_info);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
330
params = mlxsw_sp_sample_trigger_params_lookup(mlxsw_sp, &trigger);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
338
mlxsw_sp_psample_md_init(mlxsw_sp, &md, skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
349
struct mlxsw_sp *mlxsw_sp = devlink_trap_ctx_priv(trap_ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
362
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
366
params = mlxsw_sp_sample_trigger_params_lookup(mlxsw_sp, &trigger);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
374
mlxsw_sp_psample_md_init(mlxsw_sp, &md, skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
62
static int mlxsw_sp_rx_listener(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
69
dev_warn_ratelimited(mlxsw_sp->bus_info->dev, "Port %d: skb received for non-existent port\n",
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
93
struct mlxsw_sp *mlxsw_sp;
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
97
mlxsw_sp = devlink_trap_ctx_priv(trap_ctx);
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
98
mlxsw_sp_port = mlxsw_sp->ports[local_port];
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.h
27
int (*groups_init)(struct mlxsw_sp *mlxsw_sp,
drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.h
30
int (*traps_init)(struct mlxsw_sp *mlxsw_sp,
include/trace/events/mlxsw.h
100
TP_ARGS(mlxsw_sp, vregion),
include/trace/events/mlxsw.h
103
__field(const void *, mlxsw_sp)
include/trace/events/mlxsw.h
108
__entry->mlxsw_sp = mlxsw_sp;
include/trace/events/mlxsw.h
113
__entry->mlxsw_sp, __entry->vregion)
include/trace/events/mlxsw.h
12
struct mlxsw_sp;
include/trace/events/mlxsw.h
17
TP_PROTO(const struct mlxsw_sp *mlxsw_sp,
include/trace/events/mlxsw.h
20
TP_ARGS(mlxsw_sp, aregion),
include/trace/events/mlxsw.h
23
__field(const void *, mlxsw_sp)
include/trace/events/mlxsw.h
28
__entry->mlxsw_sp = mlxsw_sp;
include/trace/events/mlxsw.h
33
__entry->mlxsw_sp, __entry->aregion)
include/trace/events/mlxsw.h
37
TP_PROTO(const struct mlxsw_sp *mlxsw_sp,
include/trace/events/mlxsw.h
40
TP_ARGS(mlxsw_sp, vregion),
include/trace/events/mlxsw.h
43
__field(const void *, mlxsw_sp)
include/trace/events/mlxsw.h
48
__entry->mlxsw_sp = mlxsw_sp;
include/trace/events/mlxsw.h
53
__entry->mlxsw_sp, __entry->vregion)
include/trace/events/mlxsw.h
57
TP_PROTO(const struct mlxsw_sp *mlxsw_sp,
include/trace/events/mlxsw.h
60
TP_ARGS(mlxsw_sp, vregion),
include/trace/events/mlxsw.h
63
__field(const void *, mlxsw_sp)
include/trace/events/mlxsw.h
68
__entry->mlxsw_sp = mlxsw_sp;
include/trace/events/mlxsw.h
73
__entry->mlxsw_sp, __entry->vregion)
include/trace/events/mlxsw.h
77
TP_PROTO(const struct mlxsw_sp *mlxsw_sp,
include/trace/events/mlxsw.h
80
TP_ARGS(mlxsw_sp, vregion),
include/trace/events/mlxsw.h
83
__field(const void *, mlxsw_sp)
include/trace/events/mlxsw.h
88
__entry->mlxsw_sp = mlxsw_sp;
include/trace/events/mlxsw.h
93
__entry->mlxsw_sp, __entry->vregion)
include/trace/events/mlxsw.h
97
TP_PROTO(const struct mlxsw_sp *mlxsw_sp,