Altera_Forum
Honored Contributor
14 years agoTSE and flow control issue
Hello,
We have an application where the Altera Triple Speed Ethernet core is connected to a bandwidth limited communication channel. All packets received are forwarded. The TSE is working in 1GbE mode. As the target communication channel is more narrow at some point the the receive buffers get full and the flow control should kick in. The issue is that under certain line loads the flow control collapses. No pause frames are sent out and packets are dropped due to rx buffer congestion. It means that the TSE either fails to send a pause frame or somehow misses to generate it, but the result is that, as the ethernet tester on upstream continues to keep line loaded with traffic, MAC buffers stay full, rx_section_empty threshold is kept passed and no further pause frames are sent out. Therefore, packets get lost. XON message by MAC will be generated again after traffic from tester is stopped. We have not been able to capture such situation in simulation - only in HW after a thousands / millions of packets - sometimes maybe hundreds. My question is, has somebody seen such anomaly before? How to work around? In case an external flow control state machine is built by utilizing the TSE xon_gen, xoff_gen inputs - how is the correct way to disable the TSE MAC internal flow control based on rx_section_empty threshold? Playing with pause quanta, rx_sction_empty threshold it is possible to find a working solution for a particular packet length/line load configuration. But, so far, we have been unable to find an always working solution - at some point it always collapses. One other observation - the TSE fails to generate a pause frame in case the incoming frames have invalid length and the length checking is enabled from config register. Thanks.