diff options
author | Petr Machata <petrm@mellanox.com> | 2019-04-18 07:14:13 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-04-18 10:37:30 -0700 |
commit | f476b3f809fa02f47af6333ed63715058c3fc348 (patch) | |
tree | fb219336c9f88548fa3503ba61a367ed28ac7136 /drivers | |
parent | 27b141fc234a3670d21bd742c35d7205d03cbb3a (diff) | |
download | linux-stable-f476b3f809fa02f47af6333ed63715058c3fc348.tar.gz linux-stable-f476b3f809fa02f47af6333ed63715058c3fc348.tar.bz2 linux-stable-f476b3f809fa02f47af6333ed63715058c3fc348.zip |
mlxsw: spectrum: Put MC TCs into DWRR mode
Both Spectrum-1 and Spectrum-2 chips are currently configured such that
pairs of TC n (which is used for UC traffic) and TC n+8 (which is used
for MC traffic) are feeding into the same subgroup. Strict
prioritization is configured between the two TCs, and by enabling
MC-aware mode on the switch, the lower-numbered (UC) TCs are favored
over the higher-numbered (MC) TCs.
On Spectrum-2 however, there is an issue in configuration of the
MC-aware mode. As a result, MC traffic is prioritized over UC traffic.
To work around the issue, configure the MC TCs with DWRR mode (while
keeping the UC TCs in strict mode).
With this patch, the multicast-unicast arbitration results in the same
behavior on both Spectrum-1 and Spectrum-2 chips.
Fixes: 7b8195306694 ("mlxsw: spectrum: Configure MC-aware mode on mlxsw ports")
Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 9eb63300c1d3..3745ea194632 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -3316,7 +3316,7 @@ static int mlxsw_sp_port_ets_init(struct mlxsw_sp_port *mlxsw_sp_port) err = mlxsw_sp_port_ets_set(mlxsw_sp_port, MLXSW_REG_QEEC_HIERARCY_TC, i + 8, i, - false, 0); + true, 100); if (err) return err; } |