]> git.sur5r.net Git - freertos/commitdiff
Corrected the Rx frame length mask when obtaining the length from the rx descriptor.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 25 Jul 2006 19:44:40 +0000 (19:44 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 25 Jul 2006 19:44:40 +0000 (19:44 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@20 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/lwIP_Demo_Rowley_ARM7/EMAC/SAM7_EMAC.c
Demo/uIP_Demo_IAR_ARM7/EMAC/SAM7_EMAC.c

index 81dacf5a6a136bc1ae6c30cf925c618a3748ed66..dc72d52e91c15af00f5af76fce25bfdec145bff9 100644 (file)
@@ -54,6 +54,11 @@ Changes from V4.0.1
        + Made the function vClearEMACTxBuffer() more robust by moving the index\r
          manipulation into the if() statement.  This allows the tx interrupt to\r
          execute even when there is no data to handle.\r
+\r
+Changes from V4.0.4\r
+\r
+       + Corrected the Rx frame length mask when obtaining the length from the\r
+         rx descriptor.\r
 */\r
 \r
 \r
@@ -128,6 +133,9 @@ one not be immediately available when trying to transmit a frame. */
 #define emacRESET_KEY                          ( ( unsigned portLONG ) 0xA5000000 )\r
 #define emacRESET_LENGTH                       ( ( unsigned portLONG ) ( 0x01 << 8 ) )\r
 \r
+/* The Atmel header file only defines the TX frame length mask. */\r
+#define emacRX_LENGTH_FRAME                    ( 0xfff )\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /* Buffer written to by the EMAC DMA.  Must be aligned as described by the\r
@@ -323,7 +331,7 @@ register unsigned portLONG ulIndex, ulLength = 0;
        frame.  The last buffer will give us the length of the entire frame. */\r
        while( ( xRxDescriptors[ ulIndex ].addr & AT91C_OWNERSHIP_BIT ) && !ulLength )\r
        {\r
-               ulLength = xRxDescriptors[ ulIndex ].U_Status.status & AT91C_LENGTH_FRAME;\r
+               ulLength = xRxDescriptors[ ulIndex ].U_Status.status & emacRX_LENGTH_FRAME;\r
 \r
                /* Increment to the next buffer, wrapping if necessary. */\r
                ulIndex++;\r
index a8d69b1fcf3a2955c02ddf85932da087665be193..51832e0d7a7c2995777e61c65119bb14fe2d4c80 100644 (file)
@@ -57,6 +57,12 @@ Changes from V3.2.4
        + Also read the EMAC_RSR register in the EMAC ISR as a work around the \r
          the EMAC bug that can reset the RX bit in EMAC_ISR register before the\r
          bit has been read.\r
+\r
+Changes from V4.0.4\r
+\r
+       + Corrected the Rx frame length mask when obtaining the length from the\r
+         rx descriptor.\r
+\r
 */\r
 \r
 /* Standard includes. */\r
@@ -105,6 +111,9 @@ one not be immediately available when trying to transmit a frame. */
 #define emacRESET_KEY                          ( ( unsigned portLONG ) 0xA5000000 )\r
 #define emacRESET_LENGTH                       ( ( unsigned portLONG ) ( 0x01 << 8 ) )\r
 \r
+/* The Atmel header file only defines the TX frame length mask. */\r
+#define emacRX_LENGTH_FRAME                    ( 0xfff )\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /*\r
@@ -344,7 +353,7 @@ portCHAR *pcSource;
        while( ( xRxDescriptors[ ulNextRxBuffer ].addr & AT91C_OWNERSHIP_BIT ) && !ulSectionLength )\r
        {\r
                pcSource = ( portCHAR * )( xRxDescriptors[ ulNextRxBuffer ].addr & emacADDRESS_MASK );\r
-               ulSectionLength = xRxDescriptors[ ulNextRxBuffer ].U_Status.status & AT91C_LENGTH_FRAME;\r
+               ulSectionLength = xRxDescriptors[ ulNextRxBuffer ].U_Status.status & emacRX_LENGTH_FRAME;\r
 \r
                if( ulSectionLength == 0 )\r
                {\r