[realtek] Oversize ethernet frame causes chip to hang?

Lynn Winebarger lynn@freespeech.org
Tue, 15 May 2001 12:35:51 -0600 (MDT)


On Tue, 15 May 2001, Donald Becker wrote:
> The BSD driver tries to avoid reading a register on the chip, which
> costs a PCI transaction.  Instead it polls the receive ring in main
> memory.  Of course the datasheet makes no mention of this -- it is not
> the documented way to use the chip!
> 
> The Linux rtl8139 driver should never progress to an not-yet-complete
> receive header, and thus should never see the 0xfff0 value.
> 
    Hmm.   I have no particular reason to believe this isn't the case.  On
the other hand, if it never sees 0xfff0, then the added code won't get
executed and does no harm (other than the performance penalty for
an added "if").  What happens if (for some reason), the driver
does get in a state where it sees this value?
    
> This code _is_ immediately after Alan Cox's ("A.C.") comment.
> 
    So it is. Well, it doesn't seem to be enough, given the behaviour I've
seen.  I'll see if I can track down exactly what's happening on a test
machine.

> >    Is there any way to track down what's putting in an oversize frame?
> 
> It's usually a duplex mismatch combining two packets, although it might
> be a machine trying to do VLAN things.

    I'll check my network.  Is there any way to induce such frames short
of deliberately misconfiguring a NIC (for the purposes of tracking down
the problem as above)?

Lynn