Re: 3c59x driver 0.25 falls off network

Dr. Werner Fink (werner@suse.de)
Wed, 17 Jul 1996 14:01:54 +0200


>
> >> I'd recommend that 0.13, the version that came with 2.0.0, be put back
> >> into 2.0.6 until this problem can be found.
> >
> >Extreme load makes them fall off. You are just lucky I think as 0.13 falls
> >off the network for us too, and 0.13 doesnt work with most of the 3com 3c59x
> >cards (by volume of sale).
> >I think we have a slight no win situation here till someone can pin down the
> >bug
>
>
> Well, after removing the tbusy-optimization from the 0.25 driver things
> have worked very well for me (all in all 5 different 3c595 on 4
> machines).
> The machines have been up under severe, albeit synthetic, network abuse
> for
> past 24 hours. The tests was with 2.0.6.
> Two card ran in 100 Mb/s mode.
>
> Hope this is not due to the phase of the moon!
>
> Ove
>

I've found two cpp defines in 3c59x.c:

------------
/* "Knobs" that turn on special features. */
/* Enable the experimental automatic media selection code. */
#define AUTOMEDIA 1

/* Allow the use of bus master transfers instead of programmed-I/O for the
Tx process. Bus master transfers are always disabled by default, but
iff this is set they may be turned on using 'options'. */
#define VORTEX_BUS_MASTER
------------

First one switch on vortex_timer() ... but the second one overwrites
the PCI latency timer to 255! The comment in 3c59x.c is speaking about a bug

------------
/* Get and check the bus-master and latency values.
Some PCI BIOSes fail to set the master-enable bit, and
the latency timer must be set to the maximum value to avoid
data corruption that occurs when the timer expires during
a transfer. Yes, it's a bug. */
------------

If the called bug is a hardware bug --- is there a way to test it?
If the called bug is a race condition -- is there a way to avoid it?
(Setting TX_TIMEOUT to a bigger value?)

Next point: in /proc/pci I found:

------------
Bus 0, device 10, function 0:
Ethernet controller: 3Com 3C595 100bTX (rev 0).
Medium devsel. IRQ 10. Master Capable. Latency=248. Min Gnt=3.Max Lat=8.
I/O at 0x6100.
------------

the PCI latency timer is set to 248.

Werner