[vortex] Slow thoughput / failed downloading large files from win hosts using linux 2.2.18/3c59x.c
lmonin@metaconcept.com
lmonin@metaconcept.com
Wed, 21 Feb 2001 16:05:46 +0100 (CET)
Hi all,
I've got some problems with 3c905B Cyclone 100baseTx adapter :
This network adapter is running on a i686/linux-2.2.18 host,
when downloading using ftp or http from this host to a window$ host on same local network
i've got very slow transfer rate, and downloading files with large sizes ( > 50Mbytes) it often failed
with network errors ( sometimes tx82 errors are produced ).
Win host use a ne2000 pci card under win98.
I noticed this problem since 2.2.12, and mailed Donald Becker about this a long time ago.
I think this problem was fixed in last kernels but it seems not.
Note that i use the driver provided in 2.2.18 :
"3c59x.c 15Sep00 Donald Becker and others http://www.scyld.com/network/vortex.html\n";
Searching mail archives i found an old patch solving this problem ( it works here ), but i need
to apply it to all new kernels.
vortex-diag -a returns that :
8<--------------------------------------------
vortex-diag.c:v1.09 7/28/99 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Index #1: Found a 3c905B Cyclone 100baseTx adapter at 0xd000.
The Vortex chip may be active, so FIFO registers will not be read.
To see all register values use the '-f' flag.
Initial window 7, registers values by window:
Window 0: 0000 0000 0000 0000 0000 00bf 0000 0000.
Window 1: FIFO FIFO 0000 0000 0000 0000 0000 2000.
Window 2: 1000 555a bdfa 0000 0000 0000 000a 4000.
Window 3: 0000 0380 05ea 0000 000a 0800 0800 6000.
Window 4: 0000 0000 0000 0cd8 0001 8880 0000 8000.
Window 5: 1ffc 0000 0000 0600 6007 06ce 06c6 a000.
Window 6: 0000 0000 0000 0100 0000 0202 0000 c000.
Window 7: 0000 0000 0000 0000 0000 0000 0000 e000.
Vortex chip registers at 0xd000
0xD010: **FIFO** 00000000 0000009d *STATUS*
0xD020: 00000020 00000000 00080000 00000004
0xD030: 00000000 1f99e067 07170060 00080004
Indication enable is 06c6, interrupt enable is 06ce.
No interrupt sources are pending.
Transceiver/media interfaces available: 100baseTx 10baseT.
Transceiver type in use: Autonegotiate.
MAC settings: half-duplex.
Station address set to 00:10:5a:55:fa:bd.
Configuration options 4000.
8<-----------------------------------------
This is the patch i'm using :
8<---------------------------------------
--- 3c59x.c Wed Feb 21 14:40:51 2001
+++ 3c59x.c Wed Feb 21 14:49:58 2001
@@ -1247,6 +1247,12 @@
if (vp->full_bus_master_tx) { /* Boomerang bus master Tx. */
vp->cur_tx = vp->dirty_tx = 0;
outb(PKT_BUF_SZ>>8, ioaddr + TxFreeThreshold); /* Room for a packet. */
+/* patch proposed at http://www.tux.org/hypermail/linux-vortex-bug/1999-Oct/0004.html for
+ eth0: Transmit error, Tx status register 82.
+*/
+#define XL_CMD_SET_TX_RECLAIM 0xC000
+outw(XL_CMD_SET_TX_RECLAIM|(PKT_BUF_SZ>>4), ioaddr + EL3_CMD);
+/* End of patch */
/* Clear the Tx ring. */
for (i = 0; i < TX_RING_SIZE; i++)
vp->tx_skbuff[i] = 0;
8<-----------------------------------------------------------
Is it a configuration problem ( and is there a mean to get it to works without patch ) ?
Is anybody having the same or similar problem ?
Is this solution doesnt break anything ?
Why are not driver provided with last 2.2 kernel fixed ?
Laurent MONIN
Systèmes & Réseaux
Metaconcept Sarl
http://www.metaconcept.com