[U-Boot] U-boot 2010.12 Ping failed on DP83849C

I have a custom MPC8313ERD board loaded with u-boot 1.1.6 and the network PHY is NetSemi DP83849C. The PHY info is copied from DP83865 and the network works fine.
Recently I am trying to upgrade u-boot to 2010.12 but I got Ping failed and host is not alive message when I ping the same host. After enabling debug, it shows: Trying TSEC0 Speed: 10, half duplex Using TSEC0 device sending ARP for 0a350275 ARP broadcast 1 TSEC0: tsec: tx error ARP broadcast 2 TSEC0: tsec: tx buffers full ping failed; host 10.53.2.117 is not alive
After googling the problem, I learned this may be related to the some kind of bus conflict when DMA move ip packet to transmit bugger. My question is what caused this error in 2010.12 version and not in 1.1.6?

On Fri, 6 May 2011 08:05:18 -0700 Jerry Wang wang3522@yahoo.com wrote:
I have a custom MPC8313ERD board loaded with u-boot 1.1.6 and the network PHY is NetSemi DP83849C. The PHY info is copied from DP83865 and the network works fine.
Recently I am trying to upgrade u-boot to 2010.12 but I got Ping failed and host is not alive message when I ping the same host. After enabling debug, it shows: Trying TSEC0 Speed: 10, half duplex Using TSEC0 device sending ARP for 0a350275 ARP broadcast 1 TSEC0: tsec: tx error ARP broadcast 2 TSEC0: tsec: tx buffers full ping failed; host 10.53.2.117 is not alive
After googling the problem, I learned this may be related to the some kind
of bus conflict when DMA move ip packet to transmit bugger. My question is what caused this error in 2010.12 version and not in 1.1.6?
there are almost 10,000 commits between those two revisions, not to mention any local changes in your tree...git bisecting that might take some time.
A more direct approach would be to try the top of tree, which has the new phy lib that includes mdio commands for peeking and poking phys. You'd need to fill in the .uid, .mask, and .features values when adding the DP83849C driver though.
Kim
diff --git a/drivers/net/phy/natsemi.c b/drivers/net/phy/natsemi.c index ea60ac1..8900292 100644 --- a/drivers/net/phy/natsemi.c +++ b/drivers/net/phy/natsemi.c @@ -88,9 +88,20 @@ static struct phy_driver DP83865_driver = { .shutdown = &genphy_shutdown, };
+static struct phy_driver DP83849C_driver = { + .name = "NatSemi DP83849C", + .uid = 0xXXXXXXXX, + .mask = 0xYYYYYYYY, + .features = PHY_GBIT_FEATURES, + .config = &dp83865_config, + .startup = &dp83865_startup, + .shutdown = &genphy_shutdown, +}; + int phy_natsemi_init(void) { phy_register(&DP83865_driver); + phy_register(&DP83849C_driver);
return 0; }

Hi Jerry,
I have a custom MPC8313ERD board loaded with u-boot 1.1.6 and the network PHY is NetSemi DP83849C. The PHY info is copied from DP83865 and the network works fine.
Recently I am trying to upgrade u-boot to 2010.12 but I got Ping failed and host is not alive message when I ping the same host. After enabling debug, it shows: Trying TSEC0 Speed: 10, half duplex Using TSEC0 device sending ARP for 0a350275 ARP broadcast 1 TSEC0: tsec: tx error ARP broadcast 2 TSEC0: tsec: tx buffers full ping failed; host 10.53.2.117 is not alive
After googling the problem, I learned this may be related to the some kind
of bus conflict when DMA move ip packet to transmit bugger. My question is what caused this error in 2010.12 version and not in 1.1.6?
Those versions are so far away codewise, that I there surely is no easy answer. _If_ your code was in mainline all the way from 1.1.6 to 2010.12 you could have used "git bisect", but as this is (very likely) not the case, this will not work for you. So the "easiest" way is to start debugging the problem yourself.
Best wishes Detlev Zundel
participants (3)
-
Detlev Zundel
-
Jerry Wang
-
Kim Phillips