On 20/04/2025 17:35, Marek Vasut wrote: > Correctly handle RX errors in ravb_recv() by returning 0 instead > of -EAGAIN on RX error. > > In case the RAVB driver detects an RX error in ravb_recv(), it must > not return the -EAGAIN, but instead must return 0. Both error codes > are handled in eth-uclass.c eth_rx() and -EAGAIN is rewritten to 0 > at the end of eth_rx(), but negative return code from the .recv() > callback does not trigger .free_pkt() callback, which would clean > up and re-enqueue the descriptor which holds the currently received > corrupted packet. The .free_pkt() must be called for this descriptor, > otherwise the follow up received data become corrupted too, even if > those packets are correctly received. Returning 0 from the .recv() > callback assures the corrupted packet is not processed by the network > stack, but is skipped instead. > > For TFTP loading, an RX error produces the timeout "T" output and > resumes the TFTP loading operation shortly afterward, without any > data corruption. > > Signed-off-by: Marek Vasut <marek.vasut+rene...@mailbox.org>
Reviewed-by: Paul Barker <paul.barker...@bp.renesas.com> -- Paul Barker
OpenPGP_0x27F4B3459F002257.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature