]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: ks8851: Reset internal RXFC count on bad packet
authorMarek Vasut <marex@denx.de>
Wed, 6 Jan 2021 14:16:01 +0000 (15:16 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 19 Jan 2021 14:15:02 +0000 (09:15 -0500)
A sporadic condition occurs when the "bad packet" error is triggered
repeatedly, which results in "bad packet" messages scrolling on the
console during transfer. To avoid triggering this, reset the internal
RXFC count on the first occurance of the "bad packet", which forces
the code to re-read the RX packet count from the MAC, and prevents
any additional "bad packet" messages if there are no more packets in
the MAC. Also print better debug information if this condition occurs.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Eugen Hristev <eugen.hristev@microchip.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Cc: Tom Rini <trini@konsulko.com>
drivers/net/ks8851_mll.c

index 91c2d10ffc8e0315b7ddde8d87adf363c4d15851..9dd9b33955ae9b125dc66d289abbbabb82cda9a7 100644 (file)
@@ -251,7 +251,8 @@ static int ks_rcv(struct ks_net *ks, uchar *data)
        }
 
        ks_wrreg16(ks, KS_RXQCR, RXQCR_CMD_CNTL | RXQCR_RRXEF);
-       printf(DRIVERNAME ": bad packet\n");
+       printf(DRIVERNAME ": bad packet (sts=0x%04x len=0x%04x)\n", sts, len);
+       ks->rxfc = 0;
        return 0;
 }