Subject: 8360 custom board, ucc_geth TX errors on longer(?) packets

From: Steven Hein <[email-masked]>
Date: Fri, 01 Feb 2008 12:52:25 -0600

Hi All:

For our custom 8360-based board that is based fairly closely
on the MPC8360-MDS board, I'm working on moving from a 2.6.16
kernel (Timesys distro) to 2.6.24.   I didn't use the device
tree in my old kernel, so I've had the learning experience
of tweaking the dts file for my custom board.  I've got it 99%
working  (I think!).   But I'm running into a really odd ethernet
problem that I don't understand.

I have two boards:  our custom 8360 board, and a MPC8360E-MDS
dev board.    I can build a kernel for the MDS board and
ethernet works perfectly.    When I build that kernel using the
same config, but changing the platform to my custom board
(and not changing any other options), everything works right
except for ethernet:    it won't get an IP address using DHCP
(udhcpc)...    I check the ifconfig output, and I see that
the TX error count is increasing, and there are very few TX
packets being sent.   I verified that this isn't a timeout--
it's being caused by the UCCE[TXE] bit being set   (I don't see
any other error indications in dmesg).

As another test, I configured the address manually.   When I do
that, I can ping the board with a normal ping; but if I use
the -s option to increase the packet size, then the pings will
fail when I use a size of about 250 or greater, and with a size
of about 300 or greater I get no successful ping packets.

The one main difference in this board is how eth0 is wired.
We have a Broadcom GbE switch part, and UCC1 eth is wired
directly to that switch (no PHY).   (This where I needed to
use the fixed-link option that I had asked about a couple of
days ago!).   In my 2.6.16-based kernel, I had created a
dummy "null" PHY to force the link speed to 1000, and that
worked well.    I am using the same Broadcom network
switch software with both kernels, so the switch side of the
config should be the same.

I created my custom board config from the MPC8360E-MDS board
configs (starting with that defconfig, dts, and platform .c
file), and matched my GPIO pin configs in the dtb file to what
I had used in the 2.6.16 kernel......  I'm not sure where to
look for this problem, as I've never seen UCCE[TXE] set
before.    Based on my experience in this move so far, I'd
guess that I've got something configured wrong somewhere,
but I just don't know where to look.

Does anyone have any ideas/suggestions?
Any help would be MUCH appreciated!!

Thanks,
Steve

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Steve Hein ([email-masked])              Engineering Diagnostics/Software
Silicon Graphics, Inc.                          
1168 Industrial Blvd.                 Phone: (715) 726-8410
Chippewa Falls, WI 54729              Fax:   (715) 726-6715
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~