[fix] iperf speed test have been stable.
This commit is contained in:
parent
6d89a9f120
commit
154d73a4e7
|
@ -27,6 +27,7 @@ struct eth_device
|
||||||
rt_uint16_t flags;
|
rt_uint16_t flags;
|
||||||
rt_uint8_t link_changed;
|
rt_uint8_t link_changed;
|
||||||
rt_uint8_t link_status;
|
rt_uint8_t link_status;
|
||||||
|
rt_uint8_t rx_notice; /* avoid send the same mail to mailbox */
|
||||||
|
|
||||||
/* eth device interface */
|
/* eth device interface */
|
||||||
struct pbuf* (*eth_rx)(rt_device_t dev);
|
struct pbuf* (*eth_rx)(rt_device_t dev);
|
||||||
|
|
|
@ -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)
|
rt_err_t eth_device_ready(struct eth_device* dev)
|
||||||
{
|
{
|
||||||
if (dev->netif)
|
if (dev->netif)
|
||||||
/* post message to Ethernet thread */
|
{
|
||||||
|
if(dev->rx_notice == RT_FALSE)
|
||||||
|
{
|
||||||
|
dev->rx_notice = RT_TRUE;
|
||||||
return rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev);
|
return rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev);
|
||||||
else
|
}
|
||||||
|
/* post message to Ethernet thread */
|
||||||
|
}
|
||||||
|
|
||||||
return ERR_OK; /* netif is not initialized yet, just return. */
|
return ERR_OK; /* netif is not initialized yet, just return. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -646,9 +652,10 @@ static void eth_rx_thread_entry(void* parameter)
|
||||||
else
|
else
|
||||||
netifapi_netif_set_link_down(device->netif);
|
netifapi_netif_set_link_down(device->netif);
|
||||||
}
|
}
|
||||||
|
device->rx_notice = RT_FALSE;
|
||||||
|
|
||||||
/* receive all of buffer */
|
/* receive all of buffer */
|
||||||
do
|
while(1)
|
||||||
{
|
{
|
||||||
if(device->eth_rx == RT_NULL) break;
|
if(device->eth_rx == RT_NULL) break;
|
||||||
|
|
||||||
|
@ -664,7 +671,7 @@ static void eth_rx_thread_entry(void* parameter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else break;
|
else break;
|
||||||
}while(rt_mb_recv(ð_rx_thread_mb, (rt_ubase_t *)&device, RT_WAITING_NO) == RT_EOK);
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,6 +27,7 @@ struct eth_device
|
||||||
rt_uint16_t flags;
|
rt_uint16_t flags;
|
||||||
rt_uint8_t link_changed;
|
rt_uint8_t link_changed;
|
||||||
rt_uint8_t link_status;
|
rt_uint8_t link_status;
|
||||||
|
rt_uint8_t rx_notice; /* avoid send the same mail to mailbox */
|
||||||
|
|
||||||
/* eth device interface */
|
/* eth device interface */
|
||||||
struct pbuf* (*eth_rx)(rt_device_t dev);
|
struct pbuf* (*eth_rx)(rt_device_t dev);
|
||||||
|
|
|
@ -599,9 +599,15 @@ void eth_device_deinit(struct eth_device *dev)
|
||||||
rt_err_t eth_device_ready(struct eth_device* dev)
|
rt_err_t eth_device_ready(struct eth_device* dev)
|
||||||
{
|
{
|
||||||
if (dev->netif)
|
if (dev->netif)
|
||||||
|
{
|
||||||
|
if(dev->rx_notice == RT_FALSE)
|
||||||
|
{
|
||||||
|
dev->rx_notice = RT_TRUE;
|
||||||
|
return rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev);
|
||||||
|
}
|
||||||
/* post message to Ethernet thread */
|
/* post message to Ethernet thread */
|
||||||
return rt_mb_send(ð_rx_thread_mb, (rt_ubase_t)dev);
|
}
|
||||||
else
|
|
||||||
return ERR_OK; /* netif is not initialized yet, just return. */
|
return ERR_OK; /* netif is not initialized yet, just return. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -695,9 +701,10 @@ static void eth_rx_thread_entry(void* parameter)
|
||||||
else
|
else
|
||||||
netifapi_netif_set_link_down(device->netif);
|
netifapi_netif_set_link_down(device->netif);
|
||||||
}
|
}
|
||||||
|
device->rx_notice = RT_FALSE;
|
||||||
|
|
||||||
/* receive all of buffer */
|
/* receive all of buffer */
|
||||||
do
|
while(1)
|
||||||
{
|
{
|
||||||
if(device->eth_rx == RT_NULL) break;
|
if(device->eth_rx == RT_NULL) break;
|
||||||
|
|
||||||
|
@ -713,7 +720,7 @@ static void eth_rx_thread_entry(void* parameter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else break;
|
else break;
|
||||||
}while(rt_mb_recv(ð_rx_thread_mb, (rt_ubase_t *)&device, RT_WAITING_NO) == RT_EOK);
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,6 +27,7 @@ struct eth_device
|
||||||
rt_uint16_t flags;
|
rt_uint16_t flags;
|
||||||
rt_uint8_t link_changed;
|
rt_uint8_t link_changed;
|
||||||
rt_uint8_t link_status;
|
rt_uint8_t link_status;
|
||||||
|
rt_uint8_t rx_notice; /* avoid send the same mail to mailbox */
|
||||||
|
|
||||||
/* eth device interface */
|
/* eth device interface */
|
||||||
struct pbuf* (*eth_rx)(rt_device_t dev);
|
struct pbuf* (*eth_rx)(rt_device_t dev);
|
||||||
|
|
|
@ -601,9 +601,15 @@ void eth_device_deinit(struct eth_device *dev)
|
||||||
rt_err_t eth_device_ready(struct eth_device* dev)
|
rt_err_t eth_device_ready(struct eth_device* dev)
|
||||||
{
|
{
|
||||||
if (dev->netif)
|
if (dev->netif)
|
||||||
/* post message to Ethernet thread */
|
{
|
||||||
|
if(dev->rx_notice == RT_FALSE)
|
||||||
|
{
|
||||||
|
dev->rx_notice = RT_TRUE;
|
||||||
return rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev);
|
return rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev);
|
||||||
else
|
}
|
||||||
|
/* post message to Ethernet thread */
|
||||||
|
}
|
||||||
|
|
||||||
return ERR_OK; /* netif is not initialized yet, just return. */
|
return ERR_OK; /* netif is not initialized yet, just return. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -697,9 +703,10 @@ static void eth_rx_thread_entry(void* parameter)
|
||||||
else
|
else
|
||||||
netifapi_netif_set_link_down(device->netif);
|
netifapi_netif_set_link_down(device->netif);
|
||||||
}
|
}
|
||||||
|
device->rx_notice = RT_FALSE;
|
||||||
|
|
||||||
/* receive all of buffer */
|
/* receive all of buffer */
|
||||||
do
|
while(1)
|
||||||
{
|
{
|
||||||
if(device->eth_rx == RT_NULL) break;
|
if(device->eth_rx == RT_NULL) break;
|
||||||
|
|
||||||
|
@ -715,7 +722,7 @@ static void eth_rx_thread_entry(void* parameter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else break;
|
else break;
|
||||||
}while(rt_mb_recv(ð_rx_thread_mb, (rt_ubase_t *)&device, RT_WAITING_NO) == RT_EOK);
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue