RE: ixp4xx ethernet driver issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Thanks for the response Krzysztof,

>Hi,
>
>"Mo, Vincent" <vincent.mo@xxxxxxxxxxxxxxxxxx> writes:
>
>> The problem I'm experiencing with using the 2.6.28.1 kernel is this.
>> I've been able to build it and load it onto my IXDP465 development
board
>> and have verified that the Ethernet works.
>
>Good to know. I assume IXP465 or similar (460, 455) CPU.

I'm using the IXP465 cpu.

>> But when I load it onto my
>> own board, the Ethernet does not work.  I don't suppose the
difference
>> in the PHYs would really matter that much, I'm using National's
DP83640
>> phy.  The kernel is able to detect a link since it displays the
message
>> "eth0: link up, 100Mbps, full-duplex, lpa 0x45E1" on the console.
But
>> I'm not able to ping any hosts on the network.  Issuing an "ifconfig"
>> shows that the interface has not received nor transmitted any
packets.
>> Also, when I look at the number of interrupts "IXP4xx Queue Manager"
has
>> received, it shows 0.
>
>Are you using the same firmware files and kernel sources/config?

Yes I am, I'm using the exact same sources and config.

>MDIO doesn't use the firmware, it's connected directly to the pins
>(balls actually).

Even though MDIO doesn't use the firmware, the NPE needs it right?  I
thought it can't work with out 
the microcode/firmware.

>> Does the ixp4xx_eth/ixp4xx_npe/ixp4xx_qmgr driver expect a board
layout
>> similar to the ixdp465?
>
>No.
>I'm told it works on NSLU2 (IXP425). I'm using it on a different
>machine also based on IXP425.
>
>> Or should it just work if the phy's connected
>> to the "ETHB" module of the CPU.
>
>If you get valid MDIO link then MDIO works. It's not interrupt-driven
>(simple timer), only packet TX/RX is.
>
>The driver in 2.6.29-rc* uses PHYLIB instead of MII. Probably
>irrelevant but you may want to try it.
>
>Can you show the "platform" (Ethernet) structure(s)?

Could you please explain what you mean by "platform" structure?

>Perhaps the queue manager is at fault?
>
>There are certain #define DEBUG* near the top of relevant .c files
>(ixp4xx_eth and _qmgr + _npe), you may try to enable them, perhaps the
>logs will have some clues?

I did enable the log and this is what I got:

net eth0: firmware: requesting NPE-B
NPE-B: firmware: FEEDF00D 01000201 00000BAC (0x2EB0 bytes)
NPE-B: firmware functionality 0x0, revision 0x2:1
NPE-B: 5 firmware blocks found
NPE-B: Trying to receive message ETH_GET_STATUS
NPE-B: Received [00000000:01000201]
eth0: mdio_write()
eth0: mdio_cmd() took 31 cycles
NPE-B: Trying to send message ETH_SET_RXQ [0B100000:00830030]
NPE-B: Trying to receive message ETH_SET_RXQ
NPE-B: Received [0B100000:00830030]
NPE-B: Trying to send message ETH_SET_RXQ [0B100001:00830030]
NPE-B: Trying to receive message ETH_SET_RXQ
NPE-B: Received [0B100001:00830030]
NPE-B: Trying to send message ETH_SET_RXQ [0B100002:00830030]
NPE-B: Trying to receive message ETH_SET_RXQ
NPE-B: Received [0B100002:00830030]
NPE-B: Trying to send message ETH_SET_RXQ [0B100003:00830030]
NPE-B: Trying to receive message ETH_SET_RXQ
NPE-B: Received [0B100003:00830030]
NPE-B: Trying to send message ETH_SET_RXQ [0B100004:00830030]
NPE-B: Trying to receive message ETH_SET_RXQ
NPE-B: Received [0B100004:00830030]
NPE-B: Trying to send message ETH_SET_RXQ [0B100005:00830030]
NPE-B: Trying to receive message ETH_SET_RXQ
NPE-B: Received [0B100005:00830030]
NPE-B: Trying to send message ETH_SET_RXQ [0B100006:00830030]
NPE-B: Trying to receive message ETH_SET_RXQ
NPE-B: Received [0B100006:00830030]
NPE-B: Trying to send message ETH_SET_RXQ [0B100007:00830030]
NPE-B: Trying to receive message ETH_SET_RXQ
NPE-B: Received [0B100007:00830030]
NPE-B: Trying to send message ETH_SET_MAC [01000011:22334455]
NPE-B: Trying to receive message ETH_SET_MAC
NPE-B: Received [01000011:22334455]
NPE-B: Trying to send message ETH_SET_FIREWALL_MODE [0E100000:00000000]
NPE-B: Trying to receive message ETH_SET_FIREWALL_MODE
NPE-B: Received [0E100000:00000000]
qmgr: requested queue 27, addr = 0x04
qmgr: requested queue 3, addr = 0x08
qmgr: requested queue 24, addr = 0x0C
qmgr: requested queue 20, addr = 0x0D
qmgr: requested queue 31, addr = 0x0E
Queue 20 <- 2497800
2497800: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497820
2497820: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497840
2497840: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497860
2497860: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497880
2497880: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 24978A0
24978A0: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 24978C0
24978C0: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 24978E0
24978E0: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497900
2497900: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497920
2497920: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497940
2497940: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497960
2497960: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 2497980
2497980: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 24979A0
24979A0: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 24979C0
24979C0: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 20 <- 24979E0
24979E0: 0   0   0 00000000  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497000
2497000: 0 600   0 02BA0812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497020
2497020: 0 600   0 02BA1012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497040
2497040: 0 600   0 02BA1812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497060
2497060: 0 600   0 02BA2012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497080
2497080: 0 600   0 02BA2812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24970A0
24970A0: 0 600   0 02BA3012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24970C0
24970C0: 0 600   0 02BA3812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24970E0
24970E0: 0 600   0 01104012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497100
2497100: 0 600   0 01104812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497120
2497120: 0 600   0 01105012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497140
2497140: 0 600   0 01105812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497160
2497160: 0 600   0 01106012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497180
2497180: 0 600   0 01106812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24971A0
24971A0: 0 600   0 01107012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24971C0
24971C0: 0 600   0 01107812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24971E0
24971E0: 0 600   0 01114012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497200
2497200: 0 600   0 01114812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497220
2497220: 0 600   0 01115012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497240
2497240: 0 600   0 01115812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497260
2497260: 0 600   0 01116012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497280
2497280: 0 600   0 01116812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24972A0
24972A0: 0 600   0 01117012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24972C0
24972C0: 0 600   0 01117812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24972E0
24972E0: 0 600   0 01118012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497300
2497300: 0 600   0 01118812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497320
2497320: 0 600   0 01119012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497340
2497340: 0 600   0 01119812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497360
2497360: 0 600   0 0111A012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497380
2497380: 0 600   0 0111A812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24973A0
24973A0: 0 600   0 0111B012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24973C0
24973C0: 0 600   0 0111B812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24973E0
24973E0: 0 600   0 0111C012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497400
2497400: 0 600   0 0111C812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497420
2497420: 0 600   0 0111D012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497440
2497440: 0 600   0 0111D812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497460
2497460: 0 600   0 0111E012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497480
2497480: 0 600   0 0111E812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24974A0
24974A0: 0 600   0 0111F012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24974C0
24974C0: 0 600   0 0111F812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24974E0
24974E0: 0 600   0 02B00012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497500
2497500: 0 600   0 02B00812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497520
2497520: 0 600   0 02B01012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497540
2497540: 0 600   0 02B01812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497560
2497560: 0 600   0 02B02012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497580
2497580: 0 600   0 02B02812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24975A0
24975A0: 0 600   0 02B03012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24975C0
24975C0: 0 600   0 02B03812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24975E0
24975E0: 0 600   0 02B04012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497600
2497600: 0 600   0 02B04812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497620
2497620: 0 600   0 02B05012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497640
2497640: 0 600   0 02B05812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497660
2497660: 0 600   0 02B06012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497680
2497680: 0 600   0 02B06812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24976A0
24976A0: 0 600   0 02B07012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24976C0
24976C0: 0 600   0 02B07812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24976E0
24976E0: 0 600   0 02B08012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497700
2497700: 0 600   0 02B08812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497720
2497720: 0 600   0 02B09012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497740
2497740: 0 600   0 02B09812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497760
2497760: 0 600   0 02B0A012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 2497780
2497780: 0 600   0 02B0A812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24977A0
24977A0: 0 600   0 02B0B012  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24977C0
24977C0: 0 600   0 02B0B812  0 <  0    0 0 0 0 000000000000 <
000000000000
Queue 27 RX-free#0 <- 24977E0
24977E0: 0 600   0 02B0C012  0 <  0    0 0 0 0 000000000000 <
000000000000
eth0: mdio_cmd() took 32 cycles
eth0: mdio_cmd() took 32 cycles
eth0: link down
eth0: mdio_cmd() took 32 cycles
*eth0: MII PHY register 0x00 reads 0x3500
eth0: mdio_cmd() took 32 cycles
*eth0: MII PHY register 0x01 reads 0x78c9
eth0: eth_poll
Queue 3 -> 0
eth0: eth_poll netif_rx_complete
eth0: eth_poll all done
eth0: mdio_cmd() took 32 cycles
*eth0: MII PHY register 0x10 reads 0x0
eth0: mdio_cmd() took 32 cycles
*eth0: MII PHY register 0x11 reads 0x1
eth0: mdio_cmd() took 32 cycles
eth0: MII PHY register 0x19 reads 0x8000
Empty flash at 0x0000108c ends at 0x0001f400
CLEANMARKER node found at 0x0001f400, not first node in block
(0x00000000)
eth0: mdio_cmd() took 31 cycles
eth0: mdio_cmd() took 32 cycles
eth0: mdio_cmd() took 32 cycles
eth0: mdio_cmd() took 32 cycles
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
eth0: mdio_cmd() took 32 cycles
...this goes on and on

>> The microcode I'm trying to use is version 2.4.  When I try to use
3.0
>> even on the IXDP465 board, the Ethernet doesn't work.
>
>I'm not surprised. 3.0 doesn't work on IXP425.
>--
>Krzysztof Halasa

Another thing I want to point out, the IXP465 is not outputting the
ETHB_RXCLK to the phy.  This is strange, the phy is clearly receiving
packets and is toggling its' link/activity line, but it's not able to
transmit the received packets to the CPU because there is no receive
clock.

-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php

[Linux ARM]     [Linux ARM MSM]     [Linux ARM Kernel]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

Add to Google Follow linuxarm on Twitter