Re: Further on P4R800-VM and 3c59x

Bogdan Costescu <[email protected]> Thu, 8 Jan 2004 01:33:40 +0100 (CET)
Newsgroups gmane.linux.drivers.vortex.devel
Message-ID <Pine.LNX.4.44.0401080053120.20035-100000@kenzo.iwr.uni-heidelberg.de>
On Thu, 8 Jan 2004, Andrej Prsa wrote:

> when ifconfig'ing the card, I get:

Please "ifconfig eth0 down", then "rmmod 3c59x", then "ifconfig eth0 up" 
(which should automatically insmod if /etc/modules.conf is set up 
properly); I'm also interested in the messages that are printed from the 
vortex_probe1() routine, which is only exercised once when the module is 
inserted.

Also, I just went through all the postings on this subject and I couldn't 
found any EEPROM dump. Could you please run "vortex-diag -ee eth0" and 
post the output ?

> 	{"3c920 series Tornado",{ 0x920010B7, 0xfff0ffff },
> 	 PCI_IOTYPE, CYCLONE_SIZE, FEATURE_TORNADO, },

And here is called "Tornado", while the vortex-diag output posted a few 
days ago called it "920-2 Cyclone" :-)
The 0xfff0ffff is the mask that is applied to 0x920010B7 for wildcard 
matching.

Another thing that was not clear in your previous postings: when you tried 
to ping from the desktop computer and interrupt rate increased with 1 per 
second (actually per ping packet), did you try to send more than 32
packets ? If so, did you observe any anomaly in increasing the interrupts 
count once you hit 32 packets ? I'm thinking of a transmission error which 
happens if the Tx FIFO gets full. The DMA engine obviously thinks that the 
packet is sent as it raises the interrupt; 32 is 2048 (Tx FIFO size for 
other Cyclone and Tornado cards - hopefully it's the same here) divided by 
64 (ping packet size).

Another idea is that maybe Tx reset doesn't finish in time, just as Rx 
reset did not for 905CX cards. So maybe in start_operation() function, you 
could make the beginning look like:

	outw(TxReset, ioaddr + EL3_CMD);
	for (i = 2000; i >= 0 ; i--)
		if ( ! (inw(ioaddr + EL3_STATUS) & CmdInProgress))
			break;
+	if (i < 200)
+		printk(KERN_DEBUG "%s: Tx Reset took an unexpectedly long time"
+		   " to finish, %d ticks.\n", dev->name, 2000 - i);

	outw(RxReset | 0x04, ioaddr + EL3_CMD);

(the lines marked with + were added). Then recompile the driver, ifconfig 
down, rmmod and insmod the new one, then ifconfig up. If the message 
"Tx Reset took an unexpectedly long time..." appears in the logs, you 
could play with the "i" value in the previous "for" cycle until you get 
one which doesn't print the message; then you tell it to us, of course :-)

-- 
Bogdan Costescu

IWR - Interdisziplinaeres Zentrum fuer Wissenschaftliches Rechnen
Universitaet Heidelberg, INF 368, D-69120 Heidelberg, GERMANY
Telephone: +49 6221 54 8869, Telefax: +49 6221 54 8868
E-mail: [email protected]

_______________________________________________
vortex mailing list
[email protected]
http://www.scyld.com/mailman/listinfo/vortex