[fix] iperf speed test have been stable.

This commit is contained in:
liuxianliang 2021-03-31 13:37:19 +08:00
parent 6d89a9f120
commit 154d73a4e7
6 changed files with 39 additions and 15 deletions

View File

@ -27,6 +27,7 @@ struct eth_device
rt_uint16_t flags;
rt_uint8_t link_changed;
rt_uint8_t link_status;
rt_uint8_t rx_notice; /* avoid send the same mail to mailbox */
/* eth device interface */
struct pbuf* (*eth_rx)(rt_device_t dev);

View File

@ -550,9 +550,15 @@ rt_err_t eth_device_init(struct eth_device * dev, const char *name)
rt_err_t eth_device_ready(struct eth_device* dev)
{
if (dev->netif)
/* post message to Ethernet thread */
{
if(dev->rx_notice == RT_FALSE)
{
dev->rx_notice = RT_TRUE;
return rt_mb_send(&eth_rx_thread_mb, (rt_uint32_t)dev);
else
}
/* post message to Ethernet thread */
}
return ERR_OK; /* netif is not initialized yet, just return. */
}
@ -646,9 +652,10 @@ static void eth_rx_thread_entry(void* parameter)
else
netifapi_netif_set_link_down(device->netif);
}
device->rx_notice = RT_FALSE;
/* receive all of buffer */
do
while(1)
{
if(device->eth_rx == RT_NULL) break;
@ -664,7 +671,7 @@ static void eth_rx_thread_entry(void* parameter)
}
}
else break;
}while(rt_mb_recv(&eth_rx_thread_mb, (rt_ubase_t *)&device, RT_WAITING_NO) == RT_EOK);
}
}
else
{

View File

@ -27,6 +27,7 @@ struct eth_device
rt_uint16_t flags;
rt_uint8_t link_changed;
rt_uint8_t link_status;
rt_uint8_t rx_notice; /* avoid send the same mail to mailbox */
/* eth device interface */
struct pbuf* (*eth_rx)(rt_device_t dev);

View File

@ -599,9 +599,15 @@ void eth_device_deinit(struct eth_device *dev)
rt_err_t eth_device_ready(struct eth_device* dev)
{
if (dev->netif)
{
if(dev->rx_notice == RT_FALSE)
{
dev->rx_notice = RT_TRUE;
return rt_mb_send(&eth_rx_thread_mb, (rt_uint32_t)dev);
}
/* post message to Ethernet thread */
return rt_mb_send(&eth_rx_thread_mb, (rt_ubase_t)dev);
else
}
return ERR_OK; /* netif is not initialized yet, just return. */
}
@ -695,9 +701,10 @@ static void eth_rx_thread_entry(void* parameter)
else
netifapi_netif_set_link_down(device->netif);
}
device->rx_notice = RT_FALSE;
/* receive all of buffer */
do
while(1)
{
if(device->eth_rx == RT_NULL) break;
@ -713,7 +720,7 @@ static void eth_rx_thread_entry(void* parameter)
}
}
else break;
}while(rt_mb_recv(&eth_rx_thread_mb, (rt_ubase_t *)&device, RT_WAITING_NO) == RT_EOK);
}
}
else
{

View File

@ -27,6 +27,7 @@ struct eth_device
rt_uint16_t flags;
rt_uint8_t link_changed;
rt_uint8_t link_status;
rt_uint8_t rx_notice; /* avoid send the same mail to mailbox */
/* eth device interface */
struct pbuf* (*eth_rx)(rt_device_t dev);

View File

@ -601,9 +601,15 @@ void eth_device_deinit(struct eth_device *dev)
rt_err_t eth_device_ready(struct eth_device* dev)
{
if (dev->netif)
/* post message to Ethernet thread */
{
if(dev->rx_notice == RT_FALSE)
{
dev->rx_notice = RT_TRUE;
return rt_mb_send(&eth_rx_thread_mb, (rt_uint32_t)dev);
else
}
/* post message to Ethernet thread */
}
return ERR_OK; /* netif is not initialized yet, just return. */
}
@ -697,9 +703,10 @@ static void eth_rx_thread_entry(void* parameter)
else
netifapi_netif_set_link_down(device->netif);
}
device->rx_notice = RT_FALSE;
/* receive all of buffer */
do
while(1)
{
if(device->eth_rx == RT_NULL) break;
@ -715,7 +722,7 @@ static void eth_rx_thread_entry(void* parameter)
}
}
else break;
}while(rt_mb_recv(&eth_rx_thread_mb, (rt_ubase_t *)&device, RT_WAITING_NO) == RT_EOK);
}
}
else
{