mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-20 05:21:59 -04:00
Make SAM4E network driver a little more robust.
This commit is contained in:
parent
c2bfac68b3
commit
8cd71348be
|
@ -216,6 +216,7 @@ static void prvGMACDeferredInterruptHandlerTask( void *pvParameters )
|
||||||
{
|
{
|
||||||
xNetworkBufferDescriptor_t *pxNetworkBuffer;
|
xNetworkBufferDescriptor_t *pxNetworkBuffer;
|
||||||
xIPStackEvent_t xRxEvent = { eEthernetRxEvent, NULL };
|
xIPStackEvent_t xRxEvent = { eEthernetRxEvent, NULL };
|
||||||
|
static const portTickType xBufferWaitDelay = 500UL / portTICK_RATE_MS;
|
||||||
|
|
||||||
( void ) pvParameters;
|
( void ) pvParameters;
|
||||||
configASSERT( xGMACRxEventSemaphore );
|
configASSERT( xGMACRxEventSemaphore );
|
||||||
|
@ -232,7 +233,7 @@ xIPStackEvent_t xRxEvent = { eEthernetRxEvent, NULL };
|
||||||
|
|
||||||
/* The buffer filled by the DMA is going to be passed into the IP
|
/* The buffer filled by the DMA is going to be passed into the IP
|
||||||
stack. Allocate another buffer for the DMA descriptor. */
|
stack. Allocate another buffer for the DMA descriptor. */
|
||||||
pxNetworkBuffer = pxNetworkBufferGet( ipTOTAL_ETHERNET_FRAME_SIZE, portMAX_DELAY );
|
pxNetworkBuffer = pxNetworkBufferGet( ipTOTAL_ETHERNET_FRAME_SIZE, xBufferWaitDelay );
|
||||||
|
|
||||||
if( pxNetworkBuffer != NULL )
|
if( pxNetworkBuffer != NULL )
|
||||||
{
|
{
|
||||||
|
@ -287,9 +288,15 @@ xIPStackEvent_t xRxEvent = { eEthernetRxEvent, NULL };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
vNetworkBufferRelease( pxNetworkBuffer );
|
||||||
iptraceETHERNET_RX_EVENT_LOST();
|
iptraceETHERNET_RX_EVENT_LOST();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Left a frame in the driver as a buffer was not available. */
|
||||||
|
gmac_dev_reset( &xGMACStruct );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
Loading…
Reference in a new issue