The DCMAC Independent Mode MAC employs an internal time-sliced/channelized core. When adding or removing channels, it is not applicable to perform a global reset. Instead, individual channels can be reset/flushed/cleared independently. Channel flushes does not affect other active channels.
For TX channel flush, use the following procedure:
- On startup, keep
tx_channel_flushHigh during TX data buffer linked list configuration. - Disable pause insertion for the channel that is being flushed.
- Ensure there is no pending skip response for the channel that is being flushed (clear whatever is in the client logic that tracks pending skip responses to zero), so that it does not cause underflow after the channel is active again.
- Provide at least four valid cycles (with zero data) for that channel ID on the AXI bus.
- Check that
tx_local_faultis asserted (and therefore channel context is clear).