I faced with strange behavior of ethernet on my own designed board: sometimes it works, sometimes not. Bf516's MAC connected via RMII with micrel8021. It is not a problem of linux or uboot, because it happends any time. Main problem (as tcpdump shows) that sometimes my board cannot send packets, but always receiving them normally. I've found some workarounds - reboot with power off for a few seconds, or "ifconfig eth0 down" then "ifconfig eth0 up". Some times it helps, some times not.
But, when all packets are sending and receiving normally (I meen that ping is fine) ethernet works perfectly...until reboot
ps: ksz8021 is fully compatible with linux phy driver ksz8051 (so i even didn't change it at all). I've fixed only board file to set interface type to RMII and setup address of phy.
Any ideas, what is wrong?