[2760] in linux-net channel archive

home help back first fref pref prev next nref lref last post

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!




home help back first fref pref prev next nref lref last post