]> git.baikalelectronics.ru Git - kernel.git/commit
mlxsw: spectrum: Prevent invalid ingress buffer mapping
authorIdo Schimmel <idosch@mellanox.com>
Fri, 15 Jul 2016 09:15:02 +0000 (11:15 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Jul 2016 21:49:51 +0000 (14:49 -0700)
commitace78b10de82772f454a6fdcde5b48c8345dd497
tree350eb82b62a4ca63c17e907e4130c1c3ec5a61f9
parent440752b55705402061d192ab728fae5ffe8996b8
mlxsw: spectrum: Prevent invalid ingress buffer mapping

Packets entering the switch are mapped to a Switch Priority (SP)
according to their PCP value (untagged frames are mapped to SP 0).

The packets are classified to a priority group (PG) buffer in the port's
headroom according to their SP.

The switch maintains another mapping (SP to IEEE priority), which is
used to generate PFC frames for lossless PGs. This mapping is
initialized to IEEE = SP % 8.

Therefore, when mapping SP 'x' to PG 'y' we create a situation in which
an IEEE priority is mapped to two different PGs:

IEEE 'x' ---> SP 'x' ---> PG 'y'
IEEE 'x' ---> SP 'x + 8' ---> PG '0' (default)

Which is invalid, as a flow can use only one PG buffer.

Fix this by mapping both SP 'x' and 'x + 8' to the same PG buffer.

Fixes: 772adea0a986 ("mlxsw: spectrum: Add IEEE 802.1Qaz ETS support")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/reg.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c