There is a mistake in the function ENET_DescriptorInit of SDK2.2:
The original order is:
- Determine, whether the RX interrupt is enabled:
intRxEnable = (base->DMA_CH[channel].DMA_CHX_INT_EN & ENET_DMA_CH_DMA_CHX_INT_EN_RIE_MASK) ? true : false; - Initialize TX descriptors:
if (ENET_TxDescriptorsInit(base, bufferConfig, intTxEnable, channel) != kStatus_Success) ... - Determine, whether the TX interrupt is enabled:
intTxEnable = (base->DMA_CH[channel].DMA_CHX_INT_EN & ENET_DMA_CH_DMA_CHX_INT_EN_TIE_MASK) ? true : false; - Initialize RX descriptors:
if (ENET_RxDescriptorsInit(base, bufferConfig, intRxEnable, channel, doubleBuffEnable) != kStatus_Success) ...
The problem is: in step 2 the variable intTxEnable is used uninitialized.
One possible order of the steps would be: 3-2-1-4
Best regards,
Holger Sachs