Hello Ahmad, On Mon, 2024-08-05 at 18:57 +0200, Ahmad Fatoum wrote: > You can enable CONFIG_CMD_ETHLOG to capture the frames and see if > the frame that triggers the error looks odd in some way. > unfortunately ethlog cannot be used because fec_recv() -> net_receive() -> rx_monitor() is not called when the frame is invalid. So I've patched in some way fec_recv() to print out the frame in case of error: diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c index 75a6596282..d2fb617631 100644 --- a/drivers/net/fec_imx.c +++ b/drivers/net/fec_imx.c @@ -579,6 +579,10 @@ static int fec_recv(struct eth_device *dev) if (bd_status & FEC_RBD_ERR) { dev_warn(&dev->dev, "error frame: 0x%p 0x%08x\n", rbd, bd_status); + + dev_print_hex_dump(&dev->dev, KERN_DEBUG, "", + DUMP_PREFIX_OFFSET, 16, 1, rbd- >data_pointer, rbd->data_length, true); + } else if (bd_status & FEC_RBD_LAST) { const uint16_t data_length = readw(&rbd->data_length); And these are some of the frames I see: WARNING: eth0: error frame: 0x87ed50e8 0x00000886 eth0: 00000000: ff ff ff ff ff ff 00 50 56 ad 1c 33 08 06 00 01 eth0: 00000010: 08 00 06 04 00 01 00 50 56 ad 1c 33 c0 a8 d8 d0 eth0: 00000020: 00 00 00 00 00 00 c0 a8 d7 de 00 00 00 00 00 00 eth0: 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 ec 3f WARNING: eth0: error frame: 0x87ed5190 0x00000886 eth0: 00000000: ff ff ff ff ff ff 00 50 56 ad f3 d9 08 06 00 01 eth0: 00000010: 08 00 06 04 00 01 00 50 56 ad f3 d9 c0 a8 d5 42 eth0: 00000020: 00 00 00 00 00 00 WARNING: eth0: error frame: 0x87ed5198 0x00000886 eth0: 00000000: ff ff ff ff ff ff 00 1e 2a c1 b4 8c 08 00 45 00 eth0: 00000010: 00 4e 94 ec 00 00 80 11 4a 99 c0 a8 d9 c8 c0 a8 eth0: 00000020: ff ff 00 89 00 89 00 3a 1b 08 d2 c3 01 10 00 01 eth0: 00000030: 00 00 00 00 00 00 20 46 44 45 4c 46 4a 46 Focusing on the first two, they are ARP but look odd, they should be 60 byte long. Any idea? Best, Stefano