We have a scenario where 12 ethernet frames are received (or attempted to be received) in 37 microseconds by the MCF52259 FEC which results in the RX interrupts to cease firing.
When in the failure state the transmit portion of the FEC works fine. I have checked all the pin assignments and they look fine, as do the interrupt enables/masks for receiving. I have tried putting the FEC into loopback mode, but when it transmits I see no receive interrupts. This makes me think its an issue with the FEC and not the PHY or external circuit. If we reduce the "packet storm" to 4-8 packets in the same window the error does not seem to occur.
- In the failure state the debugger shows that all our RX BD's are available but the CONTROL field (in MQX) of each BD still has the MCF%XXX_FEC_BD_ETHER_RX_EMPTY bit set. The FW is responsible for the setting of this bit, and the FEC is presumably responsible for clearing it when data is received into it. Again it looks like the RX portion of the FEC is hung.
The only recovery I have found is to pin-reset the chip. I am wondering:
1) other than the RX interrupt enable/mask is there any other way that the FEC could prevent the RX interrupt from firing? Possibly lack of ring buffer space or something similar?
2) Any clues on resetting just the RX portion of the FEC to attempt a recovery?