[realtek] Oversize ethernet frame causes chip to hang?

Donald Becker becker@scyld.com
Tue, 15 May 2001 11:01:14 -0400 (EDT)

On Mon, 14 May 2001, Lynn Winebarger wrote:

>    I've been having problems with oversize ethernet frames, and noticed
> this code in the driver:

What driver version are you using?

> if (rx_status & RxTooLong) {
>     if (debug > 0)
>        printk(KERN_NOTICE"%s: Oversized Ethernet frame, status %4.4x!\n",
>               dev->name, rx_status);
>     /* A.C.: The chip hangs here. */
>    Is there any safe way to reset the chip inside the driver?

Yes.  The code immediately below resets the receiver:

	/* Reset the receiver, based on RealTek recommendation. (Bug?) */
	tp->cur_rx = 0;
	outb(CmdTxEnb, ioaddr + ChipCmd);
	/* A.C.: Reset the multicast list. */
	outb(CmdRxEnb | CmdTxEnb, ioaddr + ChipCmd);
The reason for the comment is that the documentation implies that the
chip should continue operation without a reset.

Donald Becker				becker@scyld.com
Scyld Computing Corporation		http://www.scyld.com
410 Severn Ave. Suite 210		Second Generation Beowulf Clusters
Annapolis MD 21403			410-990-9993