[vortex] Problems with 3c59x

Donald Becker becker@scyld.com
Fri Dec 13 14:26:02 2002


On Fri, 13 Dec 2002, Bogdan Costescu wrote:
> On Fri, 13 Dec 2002, Donald Becker wrote:
> 
> > I think that you missed "eth0" vs "eth1".
> 
> No, I missed the part where the interface goes down :-)
> 
> > I believe that this is a different bug, although that fix might have
> > addressed both.
> 
> Well, I don't want to contradict you, but I am proud of my memory 
> (when I'm sure that it functions :-)). This is from the kernel driver:
> 
>    LK1.1.9 12 Sep 2000 andrewm
>     .....
>     - Fixed a bug where, if vp->tx_full is set when the interface
>       is downed, it remains set when the interface is upped.  Bad
>       things happen.
> So I was right about the fix, but wrong about the time :-)

Doh!  Yes, that is clearly the bug here.
I believed that this was the race with the Tx queue going from full to
completely empty when the interrupt handler ran at exactly the wrong
time.  That can leave the tx_full flag set if not properly handled.

All of the other drivers cleared the tx_full flag in init_ring(), while
the 3c59x driver uses in-line code to do the ring initialization only
for the 3c905 series. This would have been avoided if I had converted
3c59x.c to use an init_rings() function that matched  pci-skeleton.c

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