platform_kernel-5.15/drivers/net/ethernet/mellanox/mlxsw
Ido Schimmel d81a6bdb87 mlxsw: spectrum: Add IEEE 802.1Qbb PFC support
Implement the appropriate DCB ops and allow a user to configure certain
traffic classes as lossless.

The operation configures PFC for both the egress (respecting PFC frames)
and ingress (sending PFC frames) parts of the port.

At egress, when a PFC frame is received for a PFC enabled priority, then
all the priorities mapped to the same TC are stopped.

At ingress, the priority group (PG) buffers to which the enabled PFC
priorities are mapped are configured to be lossless. PFC frames will be
transmitted when the Xoff threshold is crossed.

The user-supplied delay parameter is used to determine the PG's size
according to the following formula:

PG_SIZE = PG_SIZE_LOSSY + delay * CELL_FACTOR + MTU

In the worst case scenario the delay will be made up of packets that
are all of size CELL_SIZE + 1, which means each packet will require
almost twice its true size when buffered in the switch. We therefore
multiply this value by the "cell factor", which is close to 2.

Another MTU is added in case the transmitting host already started
transmitting a maximum length frame when the PFC packet was received.

As with PAUSE enabled ports, when the port's MTU is changed both the
PGs' size and threshold are adjusted accordingly.

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-04-06 17:24:20 -04: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
cmd.h mlxsw: cmd: Introduce FID-offset flooding tables 2015-10-16 07:15:10 -07:00
core.c mlxsw: core: Add devlink port splitter callbacks 2016-03-01 16:07:30 -05:00
core.h mlxsw: core: Add devlink port splitter callbacks 2016-03-01 16:07:30 -05:00
core_hwmon.c mlxsw: core: remove an unnecessary condition 2016-01-06 15:07:47 -05: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
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: Add IEEE 802.1Qbb PFC support 2016-04-06 17:24:20 -04:00
spectrum.c mlxsw: spectrum: Add IEEE 802.1Qbb PFC support 2016-04-06 17:24:20 -04:00
spectrum.h mlxsw: spectrum: Add IEEE 802.1Qbb PFC support 2016-04-06 17:24:20 -04:00
spectrum_buffers.c mlxsw: spectrum: Set port's shared buffer size to 0 2016-04-06 17:24:17 -04:00
spectrum_dcb.c mlxsw: spectrum: Add IEEE 802.1Qbb PFC support 2016-04-06 17:24:20 -04:00
spectrum_switchdev.c mlxsw: spectrum: Check requested ageing time is valid 2016-03-11 14:47:58 -05:00
switchx2.c mlxsw: reg: Introduce per priority counters 2016-04-06 17:24:20 -04:00
trap.h
txheader.h mlxsw: spectrum: Add initial support for Spectrum ASIC 2015-10-16 07:15:23 -07:00