[tulip] Tulip and PowerPC endian issue?

Jim Rowe rowejames@acmsystems.com
Fri Feb 14 08:35:01 2003


On Fri, 2003-02-07 at 13:32, Donald Becker wrote:
> On 7 Feb 2003, Jim Rowe wrote:
> 
> > I still haven't had any luck with tulip driver on the PowerPC. I'm
> > willing to put forth some programming effor to track down the problem.
> > Do you have any ideas about where I should start? Do you think this is
> > in the client driver or elsewhere?
> 
> I believe that this is now only a problem with the interrupt routing.

Hello,

I've tracked down the interrupt problem. There was an error in the way
we had routed the interrupt line from the Ricoh bridge to the CPU.

I am now seeing interrupts when packets come in, however the interface
is still not working properly. When I bring the tulip interface up, it
will respond to pings for approximately 6 packets, then it stops. Of
those 6 packets that responds to, the latency is around 2-4 seconds
round trip. I remember another user having a similar problem with this
same card in January of 2003 (topic was something like "Not getting much
at all" - the archives seem to be down for the moment). 

I also wasn't able to transmit any packets (as shown by /proc/net/dev ) 
when trying to ping hosts on the network.

Here is the log from my `dmesg`:
[ snip ]

 In tulip_rx(), entry 19 00076600.
eth1: In tulip_rx(), entry 19 00660700.
eth1: In tulip_rx(), entry 20 00660300.
eth1: In tulip_rx(), entry 21 00600700.
eth1: In tulip_rx(), entry 22 01210700.
eth1: In tulip_rx(), entry 23 00660700.
eth1: In tulip_rx(), entry 24 00400720.
eth1: In tulip_rx(), entry 25 00660300.
eth1: In tulip_rx(), entry 26 00660700.
eth1: In tulip_rx(), entry 27 00400720.
eth1: In tulip_rx(), entry 28 00660300.
eth1: In tulip_rx(), entry 29 00660700.
eth1: In tulip_rx(), entry 30 00660300.
eth1: In tulip_rx(), entry 31 00660700.
eth1: In tulip_rx(), entry 0 00660300.
eth1: In tulip_rx(), entry 1 00530700.
eth1: In tulip_rx(), entry 2 00660700.
eth1: In tulip_rx(), entry 3 00660300.
eth1: In tulip_rx(), entry 4 00660700.
eth1: In tulip_rx(), entry 5 004f0700.
eth1: In tulip_rx(), entry 6 00400320.
eth1: In tulip_rx(), entry 7 00660300.
eth1: In tulip_rx(), entry 8 00660700.
eth1: In tulip_rx(), entry 9 00400320.
eth1: In tulip_rx(), entry 10 00660300.
eth1: In tulip_rx(), entry 11 00660700.
eth1: In tulip_rx(), entry 12 00400320.
eth1: In tulip_rx(), entry 13 00660300.
eth1: In tulip_rx(), entry 14 00660700.
eth1: In tulip_rx(), entry 15 01210700.
eth1: In tulip_rx(), entry 16 00400720.
eth1: In tulip_rx(), entry 17 00400720.
eth1: In tulip_rx(), entry 18 00660300.
eth1: In tulip_rx(), entry 19 00660700.
 In tulip_rx(), entry 19 00000080.
eth1: Too much work during an interrupt, csr5=0xfc69c0d0.
eth1: exiting interrupt, csr5=0xfc684010.
eth1: interrupt  csr5=0xfc68c810 new csr5=0xfc68c810.
 In tulip_rx(), entry 19 00000080.
eth1: Restarted Rx at 115 / 115.
eth1: Re-enabling interrupts, fc68c810.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.

[ snip ]

 In tulip_rx(), entry 19 00000080.
eth1: Too much work during an interrupt, csr5=0xfc69c0d0.
eth1: exiting interrupt, csr5=0xfc684010.
eth1: interrupt  csr5=0xfc68c810 new csr5=0xfc68c810.
 In tulip_rx(), entry 19 00000080.
eth1: Restarted Rx at 147 / 147.
eth1: Re-enabling interrupts, fc68c810.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 In tulip_rx(), entry 19 00000080.
eth1: exiting interrupt, csr5=0xfc664010.
eth1: interrupt  csr5=0xfc674050 new csr5=0xfc674050.
 
[ snip ]


And here is my /var/log/messages:


Nov 30 00:01:22 eth0 kernel: Linux Kernel Card Services 3.1.22
Nov 30 00:01:22 eth0 kernel:   options:  [pci] [cardbus]
Nov 30 00:01:27 eth0 kernel: Mapped memory. Virtual base address is
c901a000
Nov 30 00:01:27 eth0 kernel: Mapped memory. Virtual base address is
c901c000
Nov 30 00:01:27 eth0 kernel: yenta_open_bh requesting IRQ number 26
Nov 30 00:01:27 eth0 kernel: Status variable from request_irq returned 0
Nov 30 00:01:27 eth0 kernel: Yenta IRQ list 0000, PCI irq26
Nov 30 00:01:27 eth0 kernel: Socket status: 30000006
Nov 30 00:01:27 eth0 kernel: yenta_open_bh requesting IRQ number 26
Nov 30 00:01:27 eth0 kernel: Status variable from request_irq returned 0
Nov 30 00:01:27 eth0 kernel: Yenta IRQ list 0000, PCI irq26
Nov 30 00:01:27 eth0 kernel: Socket status: 30000820
Nov 30 00:01:39 eth0 kernel: cs: cb_alloc(bus 2): vendor 0x1317, device
0x1985
Nov 30 00:01:39 eth0 kernel: PCI: moved device 02:00.0 resource 0 (101)
to 8000
Nov 30 00:01:39 eth0 kernel: PCI: moved device 02:00.0 resource 1 (200)
to 80400000
Nov 30 00:01:39 eth0 kernel: PCI: moved device 02:00.0 resource 6 (7201)
to bf800000
Nov 30 00:01:39 eth0 kernel: PCI: Enabling device 02:00.0 (0000 -> 0003)
Nov 30 00:01:56 eth0 kernel: pci-scan.c:v1.11 8/31/2002  Donald Becker
<becker@scyld.com> http://www.scyld.com/linux/drivers.html
Nov 30 00:02:09 eth0 kernel: tulip.c:v0.95f 11/17/2002  Written by
Donald Becker <becker@scyld.com>
Nov 30 00:02:09 eth0 kernel:   http://www.scyld.com/network/tulip.html
Nov 30 00:02:09 eth0 kernel:   The PCI BIOS has not enabled the device
at 2/0!  Updating PCI command 0003->0007.
Nov 30 00:02:09 eth0 kernel: eth1: ADMtek Centaur-C rev 17 at
0xc902f000, 00:10:7A:69:F0:79, IRQ 26.
Nov 30 00:02:09 eth0 kernel: eth1:  MII transceiver #1 config 3100
status 7869 advertising 05e1.
Nov 30 00:02:09 eth0 kernel:   PCI latency timer (CFLT) is unreasonably
low at 0.  Setting to 32 clocks.
Nov 30 00:02:44 eth0 kernel: eth1: MII link partner 45e1, negotiated
05e1.
Nov 30 00:02:44 eth0 kernel: eth1: Setting full-duplex based on MII #1
link partner capability of 45e1.
Nov 30 00:02:47 eth0 kernel: eth1: MII link partner 45e1, negotiated
05e1.
Nov 30 00:02:59 eth0 kernel: eth1: Too much work during an interrupt,
csr5=0xfc69c0d0.
Nov 30 00:03:34 eth0 last message repeated 3 times


 
-- 
Jim Rowe
Advanced CounterMeasure Systems
Email: jrowe@acmsystems.com