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