mlxsw: spectrum_dcb: Allow setting default port priority
When APP TLV selector 1 (EtherType) is used with PID of 0, the corresponding entry specifies "default application priority [...] when application priority is not otherwise specified." mlxsw currently supports this type of APP entry, but uses it only as a fallback for unspecified DSCP rules. However non-IP traffic is prioritized according to port-default priority, not according to the DSCP-to-prio tables, and thus it's currently not possible to prioritize such traffic correctly. Extend the use of the abovementioned APP entry to also set default port priority. Signed-off-by: Petr Machata <petrm@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d8446884f8
commit
379a00dd21
@ -368,6 +368,17 @@ err_update_qrwe:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_port_dcb_app_update_qpdp(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
u8 default_prio)
|
||||
{
|
||||
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
|
||||
char qpdp_pl[MLXSW_REG_QPDP_LEN];
|
||||
|
||||
mlxsw_reg_qpdp_pack(qpdp_pl, mlxsw_sp_port->local_port, default_prio);
|
||||
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpdp), qpdp_pl);
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_port_dcb_app_update_qpdpm(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
struct dcb_ieee_app_dscp_map *map)
|
||||
@ -405,6 +416,12 @@ static int mlxsw_sp_port_dcb_app_update(struct mlxsw_sp_port *mlxsw_sp_port)
|
||||
int err;
|
||||
|
||||
default_prio = mlxsw_sp_port_dcb_app_default_prio(mlxsw_sp_port);
|
||||
err = mlxsw_sp_port_dcb_app_update_qpdp(mlxsw_sp_port, default_prio);
|
||||
if (err) {
|
||||
netdev_err(mlxsw_sp_port->dev, "Couldn't configure port default priority\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
have_dscp = mlxsw_sp_port_dcb_app_prio_dscp_map(mlxsw_sp_port,
|
||||
&prio_map);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user