Commit 6dce962c authored by Amit Cohen's avatar Amit Cohen Committed by Paolo Abeni

mlxsw: spectrum: Change mlxsw_sp_upper to LAG structure

The structure mlxsw_sp_upper is used only as LAG. Rename it to
mlxsw_sp_lag and move it to spectrum.c file, as it is used only there.
Move the function mlxsw_sp_lag_get() with the structure.
Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 4acf4e62
...@@ -2751,6 +2751,11 @@ static void mlxsw_sp_lag_pgt_fini(struct mlxsw_sp *mlxsw_sp) ...@@ -2751,6 +2751,11 @@ static void mlxsw_sp_lag_pgt_fini(struct mlxsw_sp *mlxsw_sp)
#define MLXSW_SP_LAG_SEED_INIT 0xcafecafe #define MLXSW_SP_LAG_SEED_INIT 0xcafecafe
struct mlxsw_sp_lag {
struct net_device *dev;
unsigned int ref_count;
};
static int mlxsw_sp_lag_init(struct mlxsw_sp *mlxsw_sp) static int mlxsw_sp_lag_init(struct mlxsw_sp *mlxsw_sp)
{ {
char slcr_pl[MLXSW_REG_SLCR_LEN]; char slcr_pl[MLXSW_REG_SLCR_LEN];
...@@ -2784,7 +2789,7 @@ static int mlxsw_sp_lag_init(struct mlxsw_sp *mlxsw_sp) ...@@ -2784,7 +2789,7 @@ static int mlxsw_sp_lag_init(struct mlxsw_sp *mlxsw_sp)
if (err) if (err)
return err; return err;
mlxsw_sp->lags = kcalloc(max_lag, sizeof(struct mlxsw_sp_upper), mlxsw_sp->lags = kcalloc(max_lag, sizeof(struct mlxsw_sp_lag),
GFP_KERNEL); GFP_KERNEL);
if (!mlxsw_sp->lags) { if (!mlxsw_sp->lags) {
err = -ENOMEM; err = -ENOMEM;
...@@ -4329,11 +4334,17 @@ static int mlxsw_sp_lag_col_port_disable(struct mlxsw_sp_port *mlxsw_sp_port, ...@@ -4329,11 +4334,17 @@ static int mlxsw_sp_lag_col_port_disable(struct mlxsw_sp_port *mlxsw_sp_port,
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcor), slcor_pl); return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcor), slcor_pl);
} }
static struct mlxsw_sp_lag *
mlxsw_sp_lag_get(struct mlxsw_sp *mlxsw_sp, u16 lag_id)
{
return &mlxsw_sp->lags[lag_id];
}
static int mlxsw_sp_lag_index_get(struct mlxsw_sp *mlxsw_sp, static int mlxsw_sp_lag_index_get(struct mlxsw_sp *mlxsw_sp,
struct net_device *lag_dev, struct net_device *lag_dev,
u16 *p_lag_id) u16 *p_lag_id)
{ {
struct mlxsw_sp_upper *lag; struct mlxsw_sp_lag *lag;
int free_lag_id = -1; int free_lag_id = -1;
u16 max_lag; u16 max_lag;
int err, i; int err, i;
...@@ -4482,7 +4493,7 @@ static int mlxsw_sp_port_lag_join(struct mlxsw_sp_port *mlxsw_sp_port, ...@@ -4482,7 +4493,7 @@ static int mlxsw_sp_port_lag_join(struct mlxsw_sp_port *mlxsw_sp_port,
struct netlink_ext_ack *extack) struct netlink_ext_ack *extack)
{ {
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
struct mlxsw_sp_upper *lag; struct mlxsw_sp_lag *lag;
u16 lag_id; u16 lag_id;
u8 port_index; u8 port_index;
int err; int err;
...@@ -4560,7 +4571,7 @@ static void mlxsw_sp_port_lag_leave(struct mlxsw_sp_port *mlxsw_sp_port, ...@@ -4560,7 +4571,7 @@ static void mlxsw_sp_port_lag_leave(struct mlxsw_sp_port *mlxsw_sp_port,
{ {
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
u16 lag_id = mlxsw_sp_port->lag_id; u16 lag_id = mlxsw_sp_port->lag_id;
struct mlxsw_sp_upper *lag; struct mlxsw_sp_lag *lag;
if (!mlxsw_sp_port->lagged) if (!mlxsw_sp_port->lagged)
return; return;
......
...@@ -78,11 +78,6 @@ struct mlxsw_sp_span_entry; ...@@ -78,11 +78,6 @@ struct mlxsw_sp_span_entry;
enum mlxsw_sp_l3proto; enum mlxsw_sp_l3proto;
union mlxsw_sp_l3addr; union mlxsw_sp_l3addr;
struct mlxsw_sp_upper {
struct net_device *dev;
unsigned int ref_count;
};
enum mlxsw_sp_rif_type { enum mlxsw_sp_rif_type {
MLXSW_SP_RIF_TYPE_SUBPORT, MLXSW_SP_RIF_TYPE_SUBPORT,
MLXSW_SP_RIF_TYPE_VLAN, MLXSW_SP_RIF_TYPE_VLAN,
...@@ -136,6 +131,7 @@ struct mlxsw_sp_span_ops; ...@@ -136,6 +131,7 @@ struct mlxsw_sp_span_ops;
struct mlxsw_sp_qdisc_state; struct mlxsw_sp_qdisc_state;
struct mlxsw_sp_mall_entry; struct mlxsw_sp_mall_entry;
struct mlxsw_sp_pgt; struct mlxsw_sp_pgt;
struct mlxsw_sp_lag;
struct mlxsw_sp_port_mapping { struct mlxsw_sp_port_mapping {
u8 module; u8 module;
...@@ -164,7 +160,7 @@ struct mlxsw_sp { ...@@ -164,7 +160,7 @@ struct mlxsw_sp {
const struct mlxsw_bus_info *bus_info; const struct mlxsw_bus_info *bus_info;
unsigned char base_mac[ETH_ALEN]; unsigned char base_mac[ETH_ALEN];
const unsigned char *mac_mask; const unsigned char *mac_mask;
struct mlxsw_sp_upper *lags; struct mlxsw_sp_lag *lags;
struct mlxsw_sp_port_mapping *port_mapping; struct mlxsw_sp_port_mapping *port_mapping;
struct mlxsw_sp_port_mapping_events port_mapping_events; struct mlxsw_sp_port_mapping_events port_mapping_events;
struct rhashtable sample_trigger_ht; struct rhashtable sample_trigger_ht;
...@@ -257,12 +253,6 @@ struct mlxsw_sp_fid_core_ops { ...@@ -257,12 +253,6 @@ struct mlxsw_sp_fid_core_ops {
void (*fini)(struct mlxsw_sp *mlxsw_sp); void (*fini)(struct mlxsw_sp *mlxsw_sp);
}; };
static inline struct mlxsw_sp_upper *
mlxsw_sp_lag_get(struct mlxsw_sp *mlxsw_sp, u16 lag_id)
{
return &mlxsw_sp->lags[lag_id];
}
struct mlxsw_sp_port_pcpu_stats { struct mlxsw_sp_port_pcpu_stats {
u64 rx_packets; u64 rx_packets;
u64 rx_bytes; u64 rx_bytes;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment