my version
Fork of lwip-eth by
Diff: arch/TARGET_K64F/k64f_emac.c
- Revision:
- 16:eb4a98a54ad0
- Parent:
- 15:82aaaa2f4d5c
diff -r 82aaaa2f4d5c -r eb4a98a54ad0 arch/TARGET_K64F/k64f_emac.c --- a/arch/TARGET_K64F/k64f_emac.c Wed Jun 11 09:30:25 2014 +0100 +++ b/arch/TARGET_K64F/k64f_emac.c Wed Jul 30 16:15:16 2014 +0100 @@ -271,8 +271,7 @@ // Traverse all descriptors, looking for the ones modified by the uDMA i = k64f_enet->tx_consume_index; - while(i != k64f_enet->tx_produce_index) { - if (bdPtr[i].controlExtend2 & TX_DESC_UPDATED_MASK) { // descriptor updated by uDMA + while(i != k64f_enet->tx_produce_index && !(bdPtr[i].control & kEnetTxBdReady)) { if (k64f_enet->txb_aligned[i]) { free(k64f_enet->txb_aligned[i]); k64f_enet->txb_aligned[i] = NULL; @@ -282,8 +281,7 @@ } osSemaphoreRelease(k64f_enet->xTXDCountSem.id); bdPtr[i].controlExtend2 &= ~TX_DESC_UPDATED_MASK; - } - i = (i + 1) % ENET_TX_RING_LEN; + i = (i + 1) % ENET_TX_RING_LEN; } k64f_enet->tx_consume_index = i;