lib

Revision:
16:eb4a98a54ad0
Parent:
15:82aaaa2f4d5c
--- 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;