linux/drivers/net/ethernet/mellanox/mlxsw
Ido Schimmel 11719a58bd 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: 8e8dfe9fdf ("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>
2016-07-15 14:49:51 -07:00
..
cmd.h mlxsw: cmd: Introduce FID-offset flooding tables 2015-10-16 07:15:10 -07:00
core_hwmon.c mlxsw: core: remove an unnecessary condition 2016-01-06 15:07:47 -05:00
core.c mlxsw: core: Introduce support for asynchronous EMAD register access 2016-04-14 16:22:06 -04:00
core.h mlxsw: core: Introduce support for asynchronous EMAD register access 2016-04-14 16:22:06 -04:00
emad.h mlxsw: Add interface to access registers and process events 2015-07-30 00:05:00 -07:00
item.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-10-20 06:08:27 -07:00
Kconfig mlxsw: spectrum: Introduce support for Data Center Bridging (DCB) 2016-04-06 17:24:18 -04:00
Makefile mlxsw: spectrum: Introduce support for Data Center Bridging (DCB) 2016-04-06 17:24:18 -04:00
pci.c mlxsw: pci: Implement reset done check 2016-03-13 22:30:01 -04:00
pci.h mlxsw: pci: Implement reset done check 2016-03-13 22:30:01 -04:00
port.h mlxsw: spectrum: Introduce port splitting 2016-03-01 16:07:31 -05:00
reg.h mlxsw: spectrum: Prevent invalid ingress buffer mapping 2016-07-15 14:49:51 -07:00
spectrum_buffers.c mlxsw: spectrum: Prevent invalid ingress buffer mapping 2016-07-15 14:49:51 -07:00
spectrum_dcb.c mlxsw: spectrum: Prevent invalid ingress buffer mapping 2016-07-15 14:49:51 -07:00
spectrum_switchdev.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-05-09 15:59:24 -04:00
spectrum.c mlxsw: spectrum: Indicate support for autonegotiation 2016-07-15 14:49:50 -07:00
spectrum.h mlxsw: spectrum: Don't sleep during ndo_get_phys_port_name() 2016-06-09 11:20:05 -07:00
switchx2.c mlxsw: switchx2: Don't count internal TX header bytes to stats 2016-06-17 21:57:53 -07:00
trap.h
txheader.h mlxsw: spectrum: Add initial support for Spectrum ASIC 2015-10-16 07:15:23 -07:00