The DCMAC Independent Mode MAC employs an internal time-sliced/channelized core. When adding or removing channels, it is usually not appropriate to do a global reset. Instead, individual channels can be reset/flushed/cleared independently. Channel flushes should not affect other active channels.
- On startup, keep tx_channel_flush high 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_fault is asserted (and therefore channel context is clear).