diff options
author | Vladimir Oltean <vladimir.oltean@nxp.com> | 2021-04-17 02:42:25 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-04-19 15:31:45 -0700 |
commit | a8648887880f90137f0893aeb1a0abef30858c01 (patch) | |
tree | ff00a4812020d256d59ec89643d0cb91c5dfcafb /drivers/net/pcs | |
parent | b764dc6cc1ba8b82d844bbcfe97e1d432a2dca5b (diff) |
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>
Diffstat (limited to 'drivers/net/pcs')
0 files changed, 0 insertions, 0 deletions