|
57 | 57 | #include "NetworkInterface.h"
|
58 | 58 | #include "phyHandling.h"
|
59 | 59 |
|
60 |
| -#define BUFFER_SIZE ( ipTOTAL_ETHERNET_FRAME_SIZE + ipBUFFER_PADDING ) |
| 60 | +#define BUFFER_SIZE_WO_PADDING ( ipconfigNETWORK_MTU + ipSIZE_OF_ETH_HEADER ) |
| 61 | +#define BUFFER_SIZE ( BUFFER_SIZE_WO_PADDING + ipBUFFER_PADDING ) |
61 | 62 | #define BUFFER_SIZE_ROUNDED_UP ( ( BUFFER_SIZE + 7 ) & ~0x7UL )
|
62 | 63 | #define PHY_PHYS_ADDR 0
|
63 | 64 |
|
@@ -446,7 +447,7 @@ static BaseType_t _ethernet_mac_get( uint8_t * mac_address_bytes )
|
446 | 447 | static void _dma_descriptors_init( void )
|
447 | 448 | {
|
448 | 449 | uint32_t i;
|
449 |
| - size_t buffer_size_requested; |
| 450 | + const size_t buffer_size_requested = BUFFER_SIZE_WO_PADDING; |
450 | 451 | NetworkBufferDescriptor_t * stack_descriptor;
|
451 | 452 |
|
452 | 453 | /* Initialize the TX DMA descriptors */
|
@@ -592,6 +593,7 @@ static BaseType_t _process_received_packet( void )
|
592 | 593 | IPStackEvent_t event;
|
593 | 594 | BaseType_t result = pdTRUE;
|
594 | 595 | const TickType_t max_block_time = pdMS_TO_MIN_TICKS( 50 );
|
| 596 | + const size_t buffer_size_requested = BUFFER_SIZE_WO_PADDING; |
595 | 597 |
|
596 | 598 | /* Go through the list of RX DMA descriptors */
|
597 | 599 | for( i = 0; i < niEMAC_RX_DMA_DESC_COUNT; i++ )
|
@@ -665,7 +667,8 @@ static BaseType_t _process_received_packet( void )
|
665 | 667 | } /* end if frame had error. In this case, give the buffer back to the DMA for the next RX */
|
666 | 668 |
|
667 | 669 | /* Set up the DMA descriptor for the next receive transaction */
|
668 |
| - dma_descriptor->ui32Count = DES1_RX_CTRL_CHAINED | ipTOTAL_ETHERNET_FRAME_SIZE; |
| 670 | + dma_descriptor->ui32Count = DES1_RX_CTRL_CHAINED | ( ( buffer_size_requested << DES1_RX_CTRL_BUFF1_SIZE_S ) & DES1_RX_CTRL_BUFF1_SIZE_M ); |
| 671 | + |
669 | 672 | dma_descriptor->ui32CtrlStatus = DES0_RX_CTRL_OWN;
|
670 | 673 |
|
671 | 674 | _rx_descriptor_list.write++;
|
|
0 commit comments