Re: Further on P4R800-VM and 3c59x

Andrej Prsa <[email protected]> Thu, 8 Jan 2004 02:46:14 +0100
Newsgroups gmane.linux.drivers.vortex.devel
Organization Faculty of Mathematics and Physics
Message-ID <[email protected]>
Hi!

> 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.

I did that. I rmmod'd pci-scan as well, just to be sure, and ifconfig'ing
eth0 in fact loaded both pci-scan and 3c59x. However, no messages with
vortex_probe1() are present in any of the logs (I grepped through the
whole /var/log directory and nothing of the kind is present.). 

> 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 ?

Sure, here it goes:

vortex-diag.c:v2.15a 12/16/2003 Donald Becker ([email protected])
 http://www.scyld.com/diag/index.html
Index #1: Found a 3c920 (Type 920-2) Cyclone adapter at 0xdc00.
 Station address 00:0e:a6:0d:d7:65.
  Receive mode is 0x15: Normal unicast and hashed multicast.
EEPROM format 64x16, configuration table at offset 0:
    00: 000e a60d d765 9202 0404 5532 00f8 6d50
  0x08: 2940 0000 000e a60d d765 0010 0000 00aa
  0x10: 72a2 0000 0000 0160 0000 0005 0000 1043
  0x18: 8108 0040 0000 6300 ffb7 b7b7 0000 0000
  0x20: 00e4 0000 0000 0000 0000 0000 0000 0000
  0x28: 0000 0000 0000 0000 0000 0000 0000 0000
  0x30: 00ff 00ff ffff ffff ffff ffff ffff ffff
  0x38: ffff ffff ffff ffff ffff ffff ffff ffff

 The word-wide EEPROM checksum is 0xa14e.
Saved EEPROM settings of a 3Com Vortex/Boomerang:
 3Com Node Address 00:0E:A6:0D:D7:65 (used as a unique ID only).
 OEM Station address 00:0E:A6:0D:D7:65 (used as the ethernet address).
  Device ID 9202,  Manufacturer ID 6d50.
  Manufacture date (MM/DD/YYYY) 0/4/2002, division 2, product ΓΈ

> 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 just sent 84 packets. For all the number of interrupts increased by 1.
No anomalies as far as I can tell. I also tried flooding the ping (with
-f) and it still grows slowly (much slower than the points on my screen).
;-)

> 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 :-)

Recompiled and re-insmod'd 3c59x debug=31:

3c59x.c:v0.99Za 4/17/2003 Donald Becker, [email protected]
  http://www.scyld.com/network/vortex.html
eth0: 3Com 3c920 series Tornado at 0xdc00,  00:0e:a6:0d:d7:65, IRQ 3
  Internal config register is 01800000, transceivers 0x40.
  8K buffer 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
  MII transceiver found at address 1, status 786d.
  Using bus-master transmits and whole-frame receives.

ifconfig'd eth0:

eth0: Initial media type Autonegotiate half-duplex.
eth0: MII #1 status 786d, link partner capability 41e1, setting
full-duplex.
eth0: vortex_open() irq 3 media status 8080.
eth0: Media selection timer tick happened, Autonegotiate full duplex.
eth0: MII transceiver has status 786d.
eth0: Media selection timer finished, Autonegotiate.

Started pinging:

eth0: Queuing Tx packet, index 0.
eth0: interrupt, status e201, latency 1 ticks.
eth0: In interrupt loop, status e201.
eth0: Transmit done, Tx status 90010000.
eth0: exiting interrupt, status e000.
eth0: Queuing Tx packet, index 1.
eth0: interrupt, status e201, latency 1 ticks.
eth0: In interrupt loop, status e201.
eth0: Transmit done, Tx status 90010004.
eth0: exiting interrupt, status e000.
eth0: Queuing Tx packet, index 2.
eth0: interrupt, status e201, latency 1 ticks.
eth0: In interrupt loop, status e201.
eth0: Transmit done, Tx status 90010008.
eth0: exiting interrupt, status e000.
eth0: Queuing Tx packet, index 3.

                      ...

Stopped pinging after cca. 40 ping attempts:

eth0: Media selection timer tick happened, Autonegotiate full duplex.
eth0: MII transceiver has status 786d.
eth0: Media selection timer finished, Autonegotiate.

Nothing of the kind happened as far as I can tell.

Thanks a lot you guys! I'm really grateful for all the effort!

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