So my first idea failed:
Stream -> SGDMA -> INiche+uCOS -> TSE -> LAN
everything up to DMA writes was correct (checked with memory content editor), but the interrupt of SGDMA in uCOS lasts too long and I get missed incoming stream packets. I suppose the logic is OK, but packets received during interrupt fills up FIFO.
So I moved to a different approach. My idea is to use avalon-st multiplexer to connect sgdma_tx used by TSE and my own stream. Here is how it looks like:
http://i51.tinypic.com/6gabeg.png Now the problem is that the stream is transferred to ethernet only a certain amount of time. Sometimes it is a few seconds, sometimes a minute, but usually no longer. If I do all the stuff with backpressure (use aso_ready signal), then ready becomes low after a few seconds after stream start. I suppose the problem could be in FIFO buffers of TSE, but I get no errors in InterNiche and my own stream is below 4mbps. Where is the problem?
I've added scfifo after stream input (dma_input is just old name, there is no dma), but that didn't help either.
P.S. Someone here in forum said that it is possible to achieve a few hundreds of mbps. How to build such interconnect? Connect stream directly to TSE_transmit? Then what to do with receive port and how to control the PHY? I suppose standard uCOS+InterNiche package will not even start without sgdma buffers. Anyone did that?