Hi Mark,
I have been sort of ignoring this topic while working on other things. Yet I anticipate having to deal with this issue fairly soon.
We already have enough devices with this issue where we will have to deal with it somehow. So I am inclined to agree with your last paragraph below. In fact we have another 5223x-based project based on the Interniche tasker/stack, and the Freescale workaround was successfully integrated into that. (I did not work on that project myself.)
While I am not quite at a point where I can delve into this now, I just did a quick experiment that has me concerned about this link issue:
- With ethernet configured for auto-negotiation, plug into 10/100 hub, link LED lights up and I can ping the board.
- Now plug into 10M hub, the link LED lights up, but I cannot ping the board.
- Plug it back into 10/100 hub, link LED lights up, and I can ping the board again.
- With ethernet configured for NO auto-negotiation, 10M full duplex, I can move back and forth between the two hubs and can always ping it whichever hub it is connected to.
- With ethernet configured for NO auto-negotiation, 100M full duplex, the link LED lights and the board can be pinged when plugged into 10/100 hub, and when plugged into the 10M hub the link LED *does not* light up and of course the board cannot be pinged.
This was with LAN_REPORT_ACTIVITY defined; I tried a few scenarios with that undefined, and the results were the same with regard to the link LED. Note that I am always referring to the link LED which is tied to the LNKLED signal on the 52235 part.
An odd thing is that I have also seen the situation where it is configured for auto-negotiation and *sometimes* works (i.e. can be pinged) when moved back and forth between the two hubs.
But the really concerning thing is that when set to auto-negotiation, the link LED *always* lights up when it's plugged into either hub (and goes out when you unplug of course), and is lit even if the unit is not pingable. So if this indeed the "auto-negotiation" bug with the 5223x part, it seems like the workaround could not rely on the link status as it is currently determined.
Curiously, while typing some stuff here and leaving the board alone, set for auto-negotiation and plugged into the 10M hub, it had not been responding to pings for several minutes and then just started responding without any intervention.
How much of this is consistent with the auto-negotiation issue as you understand it?
Regards,
Dan