mlxsw: spectrum: qdiscs: Add priority map per qdisc
Add priority map per qdisc, to indicate which priorities are being directed through this qdisc. Signed-off-by: Nogah Frankel <nogahf@mellanox.com> Reviewed-by: Yuval Mintz <yuvalm@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2f88047ec4
commit
1631ab2e8d
|
@ -78,6 +78,7 @@ struct mlxsw_sp_qdisc_ops {
|
||||||
struct mlxsw_sp_qdisc {
|
struct mlxsw_sp_qdisc {
|
||||||
u32 handle;
|
u32 handle;
|
||||||
u8 tclass_num;
|
u8 tclass_num;
|
||||||
|
u8 prio_bitmap;
|
||||||
union {
|
union {
|
||||||
struct red_stats red;
|
struct red_stats red;
|
||||||
} xstats_base;
|
} xstats_base;
|
||||||
|
@ -467,6 +468,7 @@ mlxsw_sp_qdisc_prio_destroy(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||||
MLXSW_SP_PORT_DEFAULT_TCLASS);
|
MLXSW_SP_PORT_DEFAULT_TCLASS);
|
||||||
mlxsw_sp_qdisc_destroy(mlxsw_sp_port,
|
mlxsw_sp_qdisc_destroy(mlxsw_sp_port,
|
||||||
&mlxsw_sp_port->tclass_qdiscs[i]);
|
&mlxsw_sp_port->tclass_qdiscs[i]);
|
||||||
|
mlxsw_sp_port->tclass_qdiscs[i].prio_bitmap = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -494,11 +496,15 @@ mlxsw_sp_qdisc_prio_replace(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||||
int tclass, i;
|
int tclass, i;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++)
|
||||||
|
mlxsw_sp_port->tclass_qdiscs[i].prio_bitmap = 0;
|
||||||
|
|
||||||
for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++) {
|
for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++) {
|
||||||
tclass = MLXSW_SP_PRIO_BAND_TO_TCLASS(p->priomap[i]);
|
tclass = MLXSW_SP_PRIO_BAND_TO_TCLASS(p->priomap[i]);
|
||||||
err = mlxsw_sp_port_prio_tc_set(mlxsw_sp_port, i, tclass);
|
err = mlxsw_sp_port_prio_tc_set(mlxsw_sp_port, i, tclass);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
mlxsw_sp_port->tclass_qdiscs[tclass].prio_bitmap |= BIT(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -628,6 +634,7 @@ int mlxsw_sp_tc_qdisc_init(struct mlxsw_sp_port *mlxsw_sp_port)
|
||||||
goto err_root_qdisc_init;
|
goto err_root_qdisc_init;
|
||||||
|
|
||||||
mlxsw_sp_port->root_qdisc = mlxsw_sp_qdisc;
|
mlxsw_sp_port->root_qdisc = mlxsw_sp_qdisc;
|
||||||
|
mlxsw_sp_port->root_qdisc->prio_bitmap = 0xff;
|
||||||
mlxsw_sp_port->root_qdisc->tclass_num = MLXSW_SP_PORT_DEFAULT_TCLASS;
|
mlxsw_sp_port->root_qdisc->tclass_num = MLXSW_SP_PORT_DEFAULT_TCLASS;
|
||||||
|
|
||||||
mlxsw_sp_qdisc = kzalloc(sizeof(*mlxsw_sp_qdisc) * IEEE_8021QAZ_MAX_TCS,
|
mlxsw_sp_qdisc = kzalloc(sizeof(*mlxsw_sp_qdisc) * IEEE_8021QAZ_MAX_TCS,
|
||||||
|
|
Loading…
Reference in a new issue