[vortex] 3c59x LK1.1.16 Linux-2.4 PCI bus error/Host error
Anup Pemmaiah
pemmaiah@cc.usu.edu
Sun Jul 28 03:52:02 2002
I have a similar problem as that of Eddie. I have 3c905 - 100 Base TX
Boomerang NIC. I use 3c59x driver for this. Installation works on fine. When I
start a tranmission, either the DHCP daemon to get th IP address or just try
to transmit some message I get the PCI bus error/Host error as shown below.
When the error occurs the status register will have the value 0xe803 and the
FIFO diagnostic register will have 2000.
When I went through the specifications of the driver, the first bit of the
status register says the interrupt is latched and the second bit specifies
that there is a host error.
When I checked the reason for the Host error in the FIFO doagnostic
register where the 13th bit is set, it states that the interrupt was generated
because of "rxUnderrun".Since the reason it states that the "Host is trying to
read from the receive FIFO faster than the network can fill it and therefore
the host reads invalid data", should I reduce the reading speed of the Host?
If so how to do it.
I checked the status of the bus from PktStatus (DmaCtrl) register.
According to it, the "upComplete" and the "upRxEarlyEnable" are set, from
which I could not find any problems.
It will be great if you can send me suggestions regarding this. Have a
great day.
The debug results are (The results does not vary much with differnet debug
levels)
--------------------------------------------------------------------
Jul 27 22:55:27 Anup kernel: PCI: Found IRQ 11 for device 00:11.0
Jul 27 22:55:27 Anup kernel: PCI: Sharing IRQ 11 with 00:07.2
Jul 27 22:55:27 Anup kernel: 3c59x: Donald Becker and others.
www.scyld.com/network/vortex.html
Jul 27 22:55:27 Anup kernel: 00:11.0: 3Com PCI 3c905 Boomerang 100baseTx at
0xdc80. Vers LK1.1.16
Jul 27 22:55:27 Anup kernel:
Jul 27 22:55:27 Anup kernel: --------- 3c59x ioaddr:- 56448<1>
Jul 27 22:55:27 Anup kernel: --------- 3c59x IRQ:- 11<1>
Jul 27 22:55:27 Anup kernel: --------- 3c59x base:- 128<1>
Jul 27 22:55:27 Anup kernel: ----- 00<1>
Jul 27 22:55:27 Anup kernel: -----:c0<1>
Jul 27 22:55:27 Anup kernel: -----:4f<1>
Jul 27 22:55:27 Anup kernel: -----:ae<1>
Jul 27 22:55:27 Anup kernel: -----:6c<1>
Jul 27 22:55:42 Anup kernel: -----:eb
Jul 27 22:55:42 Anup kernel: boomerang_interrupt. status=0xe803
Jul 27 22:55:42 Anup kernel: eth0: Host error, FIFO diagnostic register 2000.
Jul 27 22:55:42 Anup kernel: eth0: PCI bus error, bus status 00a00029
Jul 27 22:55:42 Anup kernel:
Jul 27 22:55:42 Anup kernel: boomerang_interrupt. status=0xe201
Jul 27 22:55:42 Anup kernel:
Jul 27 22:55:42 Anup kernel: boomerang_interrupt. status=0xe005
Jul 27 22:55:42 Anup kernel: eth0: Transmit error, Tx status register 90.
Jul 27 22:55:42 Anup kernel: Flags; bus-master 1, dirty 1(1) current 1(1)
Jul 27 22:55:42 Anup kernel: Transmit list 00000000 vs. c75e4240.
Jul 27 22:55:42 Anup kernel: 0: @c75e4200 length 8000024e status 8000024e
Jul 27 22:55:42 Anup kernel: 1: @c75e4240 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 2: @c75e4280 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 3: @c75e42c0 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 4: @c75e4300 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 5: @c75e4340 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 6: @c75e4380 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 7: @c75e43c0 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 8: @c75e4400 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 9: @c75e4440 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 10: @c75e4480 length 00000000 status 00000000
Jul 27 22:55:42 Anup kernel: 11: @c75e44c0 length 00000000 status 00000000
Jul 27 22:55:43 Anup kernel: 12: @c75e4500 length 00000000 status 00000000
Jul 27 22:55:43 Anup kernel: 13: @c75e4540 length 00000000 status 00000000
Jul 27 22:55:43 Anup kernel: 14: @c75e4580 length 00000000 status 00000000
Jul 27 22:55:43 Anup kernel: 15: @c75e45c0 length 00000000 status 00000000
Jul 27 22:55:51 Anup dhcpcd[1777]: terminating on signal 2
---------------------------------------------------------------------------
Thank you
Anup
>===== Original Message From epl@labyrinth.net.au =====
>Apologies for the delay as the original email disappeared (with no
>bounce messages). I suspect it was due to an attachment in the first
>one. Let's hope there isn't a size limit too.
>
>On Tue, 19 Jul 2002 Donald Becker wrote:
>
>> It looks as if someone broke CONFIG_DEBUG_IOVIRT on your
>
> OK, my fault, I compiled my kernel with CONFIG_DEBUG_IOVIRT. The
>kernel and modules used to produce the logs within this email has since
>been recompiled.
>
>> > Jul 18 20:52:52 localhost kernel: eth0: MII #24 status 7849, link partner
capability 0000, setting half-duplex.
>> > Jul 18 20:52:52 localhost kernel: eth0: vortex_open() irq 11 media status
8080.
>> > Jul 18 20:52:52 localhost kernel: eth0: Media selection timer tick
happened, Autonegotiate half duplex.
>> > Jul 18 20:52:52 localhost kernel: eth0: MII transceiver has status 7849.
>>
>> Still no link beat.
>> What is the debugging level?
>
> debug=7 in the previous email as well as this one.
>
>> High enough to see packet transmit attempts?
>
> I guess so, since it is the highest debug level.
>
>> Could there have been a received packet?
>>
> I doubt it, though I can't rule it out. So I've repeated the test
>with the network cable physically disconnected -- surely no packets can
>be received now! The logs are at the end of this message.
>
> Anyway, there are three phases within the logs.
>1) From 21:31:28 to 21:31:28 - I ran "modprobe 3c59x"
>2) From 21:31:44 to 21:31:49 - I ran "/etc/init.d/network start"
>3) From 21:31:52 to 21:31:52 - I ran "/etc/init.d/network stop"
>
> Before 1), the system have booted into multi-user mode without
>loading the 3c59x module beforehand. After 3), the system is fine,
>other than not being able to use the network.
>
>> > Jul 18 20:52:52 localhost kernel: eth0: Media selection timer finished,
Autonegotiate.
>> > Jul 18 20:52:52 localhost kernel: eth0: Host error, status e003, FIFO
diagnostic register 0000.
>> > Jul 18 20:52:52 localhost kernel: eth0: PCI bus error, bus status
800000a0, reset had 2000 tick left.
>>
>> OK, we had a real PCI bus error, a PCI master abort.
>> We don't know what triggered the bus transaction
>> Could there have been a received packet?
>>
> As above.
>
>> The reset succeeded immediately, so the chip is responding.
>> AFAIK, the driver is doing everything it needs to during a reset.
>>
> This driver is clearly more unstable than the standard Linux one.
>
>Eddie
>===
>Jul 21 21:31:28 localhost kernel: 3c59x.c:v0.99Xc 6/27/2002 Donald Becker,
becker@scyld.com
>Jul 21 21:31:28 localhost kernel: http://www.scyld.com/network/vortex.html
>Jul 21 21:31:28 localhost kernel: eth0: 3Com 3c905B Cyclone 100baseTx at
0xfc80, 00:10:4b:0a:19:95, IRQ 11
>Jul 21 21:31:28 localhost kernel: Internal config register is 01800000,
transceivers 0xa.
>Jul 21 21:31:28 localhost kernel: 8K buffer 5:3 Rx:Tx split,
autoselect/Autonegotiate interface.
>Jul 21 21:31:28 localhost kernel: MII transceiver found at address 24,
status 7849.
>Jul 21 21:31:28 localhost kernel: MII transceiver found at address 0,
status 7849.
>Jul 21 21:31:28 localhost kernel: Using bus-master transmits and
whole-frame receives.
>
>Jul 21 21:31:44 localhost kernel: eth0: Initial media type Autonegotiate
half-duplex.
>Jul 21 21:31:44 localhost kernel: eth0: MII #24 status 7849, link partner
capability 0000, setting half-duplex.
>Jul 21 21:31:44 localhost kernel: eth0: vortex_open() irq 11 media status
8080.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status e003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 800000a0,
reset had 2000 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:47 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:47 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Too much work in interrupt, status
8003. Temporarily disabling functions (7ffc).
>Jul 21 21:31:48 localhost kernel: eth0: Media selection timer tick happened,
Autonegotiate half duplex.
>Jul 21 21:31:48 localhost kernel: eth0: MII transceiver has status 7849.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:48 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:48 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:49 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:49 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:49 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:49 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:49 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:49 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:49 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:49 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:49 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:49 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:49 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:49 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:49 localhost kernel: eth0: Host error, status 8003, FIFO
diagnostic register 0000.
>Jul 21 21:31:49 localhost kernel: eth0: PCI bus error, bus status 80000020,
reset had 1999 tick left.
>Jul 21 21:31:49 localhost kernel: eth0: Too much work in interrupt, status
8003. Temporarily disabling functions (7ffc).
>Jul 21 21:31:49 localhost kernel: eth0: Media selection timer finished,
Autonegotiate.
>
>Jul 21 21:31:52 localhost kernel: eth0: vortex_close() status 8000, Tx status
00.
>Jul 21 21:31:52 localhost kernel: eth0: vortex close stats: rx_nocopy 0
rx_copy 0 tx_queued 2 Rx pre-checksummed 0.
>
>_______________________________________________
>vortex mailing list
>vortex@scyld.com
>http://www.scyld.com/mailman/listinfo/vortex
-------------------------------------------------
Anup Pemmaiah
435-512-0935(mobile)
pemmaiah@cc.usu.edu
-------------------------------------------------