]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/portable/NetworkInterface/Zynq/x_emacpsif_dma.c
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2822 1d2547de-c912-0410...
[freertos] / FreeRTOS-Plus / Source / FreeRTOS-Plus-TCP / portable / NetworkInterface / Zynq / x_emacpsif_dma.c
index b81841dcfbd70e9ce4f0fd3a1a766d71ccc47822..fc09d218335022fd0750a72d6ceb635138ca90e7 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-FreeRTOS+TCP V2.0.7\r
+FreeRTOS+TCP V2.0.11\r
 Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
 \r
 Permission is hereby granted, free of charge, to any person obtaining a copy of\r
@@ -56,6 +56,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #endif\r
 #define TX_OFFSET                              ipconfigPACKET_FILLER_SIZE\r
 \r
+#define RX_BUFFER_ALIGNMENT    14\r
+\r
 /* Defined in NetworkInterface.c */\r
 extern TaskHandle_t xEMACTaskHandle;\r
 \r
@@ -201,7 +203,6 @@ BaseType_t xReturn;
 XStatus emacps_send_message(xemacpsif_s *xemacpsif, NetworkBufferDescriptor_t *pxBuffer, int iReleaseAfterSend )\r
 {\r
 int head = xemacpsif->txHead;\r
-int tail = xemacpsif->txTail;\r
 int iHasSent = 0;\r
 uint32_t ulBaseAddress = xemacpsif->emacps.Config.BaseAddress;\r
 TickType_t xBlockTimeTicks = pdMS_TO_TICKS( 5000u );\r
@@ -363,7 +364,7 @@ int head = xemacpsif->rxHead;
                        break;\r
                }\r
 \r
-               pxNewBuffer = pxGetNetworkBufferWithDescriptor( ipTOTAL_ETHERNET_FRAME_SIZE, ( TickType_t ) 0 );\r
+               pxNewBuffer = pxGetNetworkBufferWithDescriptor( ipTOTAL_ETHERNET_FRAME_SIZE + RX_BUFFER_ALIGNMENT, ( TickType_t ) 0 );\r
                if( pxNewBuffer == NULL )\r
                {\r
                        /* A packet has been received, but there is no replacement for this Network Buffer.\r
@@ -412,7 +413,7 @@ int head = xemacpsif->rxHead;
                {\r
                        if( ucIsCachedMemory( pxNewBuffer->pucEthernetBuffer ) != 0 )\r
                        {\r
-                               Xil_DCacheInvalidateRange( ( ( uint32_t )pxNewBuffer->pucEthernetBuffer ) - ipconfigPACKET_FILLER_SIZE, (unsigned)ipTOTAL_ETHERNET_FRAME_SIZE );\r
+                               Xil_DCacheInvalidateRange( ( ( uint32_t )pxNewBuffer->pucEthernetBuffer ) - ipconfigPACKET_FILLER_SIZE, (unsigned)ipTOTAL_ETHERNET_FRAME_SIZE + RX_BUFFER_ALIGNMENT);\r
                        }\r
                        {\r
                                uint32_t addr = ( ( uint32_t )pxNewBuffer->pucEthernetBuffer ) & XEMACPS_RXBUF_ADD_MASK;\r
@@ -506,7 +507,7 @@ XStatus init_dma(xemacpsif_s *xemacpsif)
                pxBuffer = pxDMA_rx_buffers[ iIndex ];\r
                if( pxBuffer == NULL )\r
                {\r
-                       pxBuffer = pxGetNetworkBufferWithDescriptor( ipTOTAL_ETHERNET_FRAME_SIZE, ( TickType_t ) 0 );\r
+                       pxBuffer = pxGetNetworkBufferWithDescriptor( ipTOTAL_ETHERNET_FRAME_SIZE + RX_BUFFER_ALIGNMENT, ( TickType_t ) 0 );\r
                        if( pxBuffer == NULL )\r
                        {\r
                                FreeRTOS_printf( ("Unable to allocate a network buffer in recv_handler\n" ) );\r
@@ -522,7 +523,7 @@ XStatus init_dma(xemacpsif_s *xemacpsif)
                if( ucIsCachedMemory( pxBuffer->pucEthernetBuffer ) != 0 )\r
                {\r
                        Xil_DCacheInvalidateRange( ( ( uint32_t )pxBuffer->pucEthernetBuffer ) - ipconfigPACKET_FILLER_SIZE,\r
-                               (unsigned)ipTOTAL_ETHERNET_FRAME_SIZE );\r
+                               (unsigned)ipTOTAL_ETHERNET_FRAME_SIZE + RX_BUFFER_ALIGNMENT);\r
                }\r
        }\r
 \r