|
|
@@ -344,13 +344,6 @@ static void prvDMATxDescListInit()
|
|
|
pxDMADescriptor->Buffer1Addr = (uint32_t)pxBuffer->payload;
|
|
|
dma_inv_range((uint32_t)pxDMADescriptor->Buffer1Addr, (uint32_t)pxDMADescriptor->Buffer1Addr + ETH_TX_BUF_SIZE);
|
|
|
|
|
|
- if( xETH.Init.ChecksumMode == ETH_CHECKSUM_BY_HARDWARE ) {
|
|
|
- /* Set the DMA Tx descriptors checksum insertion for TCP, UDP, and ICMP */
|
|
|
- pxDMADescriptor->Status |= ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL;
|
|
|
- } else {
|
|
|
- pxDMADescriptor->Status &= ~( ( uint32_t ) ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL );
|
|
|
- }
|
|
|
-
|
|
|
/* Initialize the next descriptor with the Next Descriptor Polling Enable */
|
|
|
if( xIndex < ETH_TXBUFNB - 1 ) {
|
|
|
/* Set next descriptor address register with next descriptor base address */
|
|
|
@@ -539,11 +532,13 @@ static int ETH_TransmitFrame(const uint8_t *Data, uint32_t Length)
|
|
|
memcpy((void *)pxDmaTxDesc->Buffer1Addr, Data, ulTransmitSize);
|
|
|
dma_flush_range((uint32_t)(pxDmaTxDesc->Buffer1Addr), (uint32_t)(pxDmaTxDesc->Buffer1Addr) + ulTransmitSize);
|
|
|
|
|
|
- /* Ask to set the IPv4 checksum.
|
|
|
- * Also need an Interrupt on Completion so that 'vClearTXBuffers()' will be called.. */
|
|
|
- {
|
|
|
- pxDmaTxDesc->Status |= ETH_DMATXDESC_CIC_TCPUDPICMP_FULL | ETH_DMATXDESC_IC;
|
|
|
+ if( xETH.Init.ChecksumMode == ETH_CHECKSUM_BY_HARDWARE ) {
|
|
|
+ pxDmaTxDesc->Status |= ETH_DMATXDESC_CIC_TCPUDPICMP_FULL;
|
|
|
+ } else {
|
|
|
+ pxDmaTxDesc->Status &= ~ETH_DMATXDESC_CIC_TCPUDPICMP_FULL;
|
|
|
}
|
|
|
+ pxDmaTxDesc->Status |= ETH_DMATXDESC_IC;
|
|
|
+
|
|
|
|
|
|
/* Prepare transmit descriptors to give to DMA. */
|
|
|
|
|
|
@@ -715,7 +710,7 @@ static err_t low_level_init(struct netif *netif)
|
|
|
#if ETH_AUTONEGOTIATION
|
|
|
xETH.Init.AutoNegotiation = ETH_AUTONEGOTIATION_ENABLE;
|
|
|
#else
|
|
|
- xETH.Init.AutoNegotiation = ETH_AUTONEGOTIATION_DISABLE;
|
|
|
+ xETH.Init.AutoNegotiation = ETH_AUTONEGOTIATION_DISABLE;
|
|
|
#endif
|
|
|
xETH.Init.Speed = ETH_SPEED_100M;
|
|
|
xETH.Init.DuplexMode = ETH_MODE_FULLDUPLEX;
|
|
|
@@ -857,6 +852,6 @@ err_t ethernetif_init(struct netif *netif)
|
|
|
netif->linkoutput = low_level_output;
|
|
|
|
|
|
ethernetif->ethaddr = (struct eth_addr *) & (netif->hwaddr[0]);
|
|
|
-
|
|
|
+
|
|
|
return low_level_init(netif);
|
|
|
}
|