eth frame error on imx6ul
Stefano Manni
stefano.manni at gmail.com
Tue Aug 6 00:59:21 PDT 2024
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
More information about the barebox
mailing list