[2760] in linux-net channel archive
3c590
daemon@ATHENA.MIT.EDU (Bernhard Heidegger)
Wed May 1 20:11:03 1996
Date: Mon, 29 Apr 1996 19:03:11 +0200 (MET DST)
From: Bernhard Heidegger <hdg@edvz.tu-graz.ac.at>
To: linux-net@vger.rutgers.edu
Hi!
I had great troubles with the 3c590 in a Pentium-166. I could receive
data but if I try to transmit a large packet (with ftp) I got transmit
timed out messages.
1.3.90 had a 2 line patch for 3c59x.c:
- outw(SetTxThreshold + 1536, ioaddr + EL3_CMD);
+ outw(SetTxThreshold + (1536>>2), ioaddr + EL3_CMD);
So I tried the 3c590 with 1.3.95 (I have a second 3c509 in this machine).
It works with ftp, but from time to time I got a transmit time out
message. This should be no problem, but the process which (eventually)
caused the transmit timed out will hang (and I get lots of the famous
Socket destroy delayed ;-)
Today I had a look in the 3c59x.c and found this in vortex_start_xmit:
/* Issue TX_RESET and TX_START commands. */
outw(TxReset, ioaddr + EL3_CMD);
{
int i;
for (i = 20; i >= 0 ; i--)
if ( ! inw(ioaddr + EL3_STATUS) & CmdInProgress)
break;
}
outw(TxEnable, ioaddr + EL3_CMD);
dev->trans_start = jiffies;
dev->tbusy = 0;
return 0;
I'm not a good kernel hacker, but IMHO this return 0; isn't right, or?
Especially the 3c509.c driver didn't return after resetting the transmitter;
I think we could go further transmitting the skb after the reset?
Any comments are welcome.
Thanks in advance,
Bernhard.
---
+----------------------------+-------------------------------+
| hdg@edvz.tu-graz.ac.at | bheide@iicm.tu-graz.ac.at |
+----------------------------+-------------------------------+
| Bernhard Heidegger, Graz University of Technology, Austria |
+------------------------------------------------------------+
Worst day playing is better than best day working!