[PATCH net-next 0/2] net: fec: support RX flushing via fsl,rx-flush-queues
From: A. Sverdlin
Date: Fri Aug 14 2026 - 05:09:56 EST
From: Alexander Sverdlin <alexander.sverdlin@xxxxxxxxxxx>
The FEC/ENET controller can flush frames that get stuck at the head of the
RX FIFO because their destination ring has no empty buffer descriptor
(RxBD[E] clear or ENET_RDARn not set). Without flushing, such a frame blocks
the FIFO and stalls reception on all queues; with flushing enabled the
offending frame is discarded instead. Flushing is configured per RX queue
through the RX_FLUSHn bits of the QOS Scheme register (FEC_QOS_SCHEME).
This series adds a device tree property, fsl,rx-flush-queues, listing the RX
queues for which flushing should be enabled, and programs the corresponding
RX_FLUSHn bits.
Erratum ERR050395 (e.g. i.MX8QXP) can lock up the RX path when flushing is
enabled on more than one queue at the same time; recovery requires a full
ENET reset. Rather than encoding that hardware limitation in the binding,
the DT property is kept generic and the single-queue restriction is enforced
in the driver: a configuration enabling flushing on multiple queues is
rejected unless the controller advertises FEC_QUIRK_HAS_MULTI_RX_FLUSH.
Future parts with the erratum fixed can set that quirk to allow flushing on
several queues.
Example:
&fec {
fsl,num-rx-queues = <3>;
fsl,rx-flush-queues = <1>;
};
Alexander Sverdlin (2):
dt-bindings: net: fsl,fec: add fsl,rx-flush-queues
net: fec: support receive flushing via fsl,rx-flush-queues
.../devicetree/bindings/net/fsl,fec.yaml | 14 ++++++++
drivers/net/ethernet/freescale/fec.h | 14 ++++++++
drivers/net/ethernet/freescale/fec_main.c | 34 +++++++++++++++++++
3 files changed, 63 insertions(+)
--
2.55.0