linux/drivers/net/ethernet/freescale
Vladimir Oltean a864888788 net: enetc: add support for flow control
In the ENETC receive path, a frame received by the MAC is first stored
in a 256KB 'FIFO' memory, then transferred to DRAM when enqueuing it to
the RX ring. The FIFO is a shared resource for all ENETC ports, but
every port keeps track of its own memory utilization, on RX and on TX.

There is a setting for RX rings through which they can either operate in
'lossy' mode (where the lack of a free buffer causes an immediate
discard of the frame) or in 'lossless' mode (where the lack of a free
buffer in the ring makes the frame stay longer in the FIFO).

In turn, when the memory utilization of the FIFO exceeds a certain
margin, the MAC can be configured to emit PAUSE frames.

There is enough FIFO memory to buffer up to 3 MTU-sized frames per RX
port while not jeopardizing the other use cases (jumbo frames), and
also not consume bytes from the port TX allocations. Also, 3 MTU-sized
frames worth of memory is enough to ensure zero loss for 64 byte packets
at 1G line rate.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-04-19 15:31:45 -07:00
..
dpaa bpf, devmap: Move drop error path to devmap for XDP_REDIRECT 2021-03-18 16:38:51 +01:00
dpaa2 net: bridge: switchdev: include local flag in FDB notifications 2021-04-16 15:15:45 -07:00
enetc net: enetc: add support for flow control 2021-04-19 15:31:45 -07:00
fman of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
fs_enet of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
fec_main.c of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
fec_mpc52xx_phy.c
fec_mpc52xx.c of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
fec_mpc52xx.h
fec_ptp.c net: fec: ptp: avoid register access when ipg clock is disabled 2021-02-26 15:45:18 -08:00
fec.h net: fec: Fix temporary RMII clock reset on link up 2021-01-26 18:24:39 -08:00
fsl_pq_mdio.c net: freescale: convert comma to semicolon 2020-12-09 16:23:08 -08:00
gianfar_ethtool.c net: gianfar: reject unsupported coalescing params 2020-03-12 11:32:35 -07:00
gianfar.c gianfar: Drop GFAR_MQ_POLLING support 2021-04-16 15:46:15 -07:00
gianfar.h gianfar: Drop GFAR_MQ_POLLING support 2021-04-16 15:46:15 -07:00
Kconfig ethernet: select CONFIG_CRC32 as needed 2020-12-04 14:42:21 -08:00
Makefile net: dsa: felix: fix link error 2020-01-08 16:05:54 -08:00
ucc_geth_ethtool.c net/freescale: Don't set zero if FW not-available in ucc_geth 2020-03-03 17:54:55 -08:00
ucc_geth.c of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
ucc_geth.h ethernet: ucc_geth: simplify rx/tx allocations 2021-01-21 12:19:56 -08:00
xgmac_mdio.c net/fsl: quieten expected MDIO access failures 2020-09-24 20:13:26 -07:00