mlxsw: spectrum_qdisc: Index future FIFOs by band number

mlxsw used to hold an array of qdiscs indexed by the TC number. In the
previous patch, it was changed to allocate child qdiscs dynamically, and
they are now indexed by band number. Follow suit with the array of future
FIFOs.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Petr Machata 2021-04-20 16:53:47 +02:00 committed by David S. Miller
parent 5cbd960253
commit 7de85b0431
1 changed files with 6 additions and 7 deletions

View File

@ -962,7 +962,7 @@ static int __mlxsw_sp_setup_tc_fifo(struct mlxsw_sp_port *mlxsw_sp_port,
{
struct mlxsw_sp_qdisc_state *qdisc_state = mlxsw_sp_port->qdisc;
struct mlxsw_sp_qdisc *mlxsw_sp_qdisc;
int tclass, child_index;
unsigned int band;
u32 parent_handle;
mlxsw_sp_qdisc = mlxsw_sp_qdisc_find(mlxsw_sp_port, p->parent, false);
@ -977,13 +977,12 @@ static int __mlxsw_sp_setup_tc_fifo(struct mlxsw_sp_port *mlxsw_sp_port,
qdisc_state->future_handle = parent_handle;
}
child_index = TC_H_MIN(p->parent);
tclass = MLXSW_SP_PRIO_CHILD_TO_TCLASS(child_index);
if (tclass < IEEE_8021QAZ_MAX_TCS) {
band = TC_H_MIN(p->parent) - 1;
if (band < IEEE_8021QAZ_MAX_TCS) {
if (p->command == TC_FIFO_REPLACE)
qdisc_state->future_fifos[tclass] = true;
qdisc_state->future_fifos[band] = true;
else if (p->command == TC_FIFO_DESTROY)
qdisc_state->future_fifos[tclass] = false;
qdisc_state->future_fifos[band] = false;
}
}
if (!mlxsw_sp_qdisc)
@ -1117,7 +1116,7 @@ __mlxsw_sp_qdisc_ets_replace(struct mlxsw_sp_port *mlxsw_sp_port,
}
if (handle == qdisc_state->future_handle &&
qdisc_state->future_fifos[tclass]) {
qdisc_state->future_fifos[band]) {
err = mlxsw_sp_qdisc_replace(mlxsw_sp_port, TC_H_UNSPEC,
child_qdisc,
&mlxsw_sp_qdisc_ops_fifo,