Re: EtherExpress 16 stall fix

Mark Hemment (markhe@sco.COM)
Tue, 1 Jul 1997 11:55:09 +0100 (BST)


Hi,

Apologies for the late reply....

On Fri, 27 Jun 1997, Jean Tourrilhes wrote:
> As far as I remember, I never had to insert such a kludge in
> the driver (The Wavelan is only 2 Mb/s, that could make all the
> difference). I don't have tested it with 2.1.43, but the driver was
> pretty solid in the 2.1 serie. Note that the driver implement some
> nice features (like hardware multicast) that no other i82586 driver
> was implementing last time I checked.

I still need to investigate the EtherExpress further, but it appears that
quickly enabling and disabling interrupts on the card without a udelay()
causes a bogus interrupt.
As serialised access to the cards registers is needed in the xmit routine,
even when 'tbusy' is set (it checks if the CU has become jammed), the
disabling is needed even for this case.

Personally, I feel that the "hard_start_xmit" should not be called from
net/core/dev.c unless the 'tbusy' is clear or that the 'dev.c' layer
believes the card has become wedged/stuck. I thought this was what
already happened, but it appears not.
But that area of the kernel is a bit of a black-box to me, so I'm probably
wrong. Perhaps a networking guru would care to comment?

Regards,

markhe

-----------------------------------------------------
Mark Hemment UNIX/C Software Engineer (contractor)
"Success has many fathers. Failure is a b**tard"
-----------------------------------------------------