mlxsw: spectrum: qdiscs: Remove qdisc before setting a new one
If a qdisc is being replaced by another qdisc of the same type, it can simply override over its configuration. However, if it replaces a qdisc of another type, it needs to be removed before setting the new 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
9cf6c9c758
commit
56202ca4ed
|
@ -115,6 +115,13 @@ mlxsw_sp_qdisc_replace(struct mlxsw_sp_port *mlxsw_sp_port, u32 handle,
|
|||
{
|
||||
int err;
|
||||
|
||||
if (mlxsw_sp_qdisc->ops && mlxsw_sp_qdisc->ops->type != ops->type)
|
||||
/* In case this location contained a different qdisc of the
|
||||
* same type we can override the old qdisc configuration.
|
||||
* Otherwise, we need to remove the old qdisc before setting the
|
||||
* new one.
|
||||
*/
|
||||
mlxsw_sp_qdisc_destroy(mlxsw_sp_port, mlxsw_sp_qdisc);
|
||||
err = ops->check_params(mlxsw_sp_port, mlxsw_sp_qdisc, params);
|
||||
if (err)
|
||||
goto err_bad_param;
|
||||
|
|
Loading…
Reference in New Issue