Hi.
I have custom 6678 board and network application, based on NKD demo from MCSDK 2.1.2.5. This application run from ROM at power on.
Usually, it works just fine, but I found a strange effect when interacting with another custom network device (switch): gbesw stops sending packets to the outside, even though accepts and process incoming packets.
I have kept the statistics register dump from the address 0х2090B00.
STATB shows that was transmitted only 1 packet and it was broadcast. But STATA shows that from the host received a lot of packages including 2 broadcast, ie at least 2 packages were to be transferred regardless of the settings of the lookup table. There is no marks in the error stat registers.
After the occurrence of this situation, all incoming traffic is accepted and successfully enters the NIMU ISR, but outgoing packets to the network are not given at all. Statistics of outgoing packets does not change too.
The custom switch device has a singularity: a few seconds after launch, it takes reset to all ports, ie Link down and then up. As a result, the PHY-chip restart SGMII link to the DSP (put it in not linked state and start auto-negotiation process when it sync back).
In other words, periodically occurs situation when, during the transmission of the packet SGMI link restarts.I think that strange effect comes after SGMII link down. If I connect another switch that is not interrupting connection, the effect is not observed.
How to protect yourself from this kind of effect?
Is it possible to restart something in case of problems?
Permanent link status monitoring, does not looks as a solution too. Link can fall when the package is queued for processing and software can not stop it.