提交 adaa45ee 编写于 作者: L liuxianliang

[fix] the overflow problem of lwip rx thread mailbox.

上级 a3b12cb7
......@@ -156,16 +156,16 @@ static int lwip_netdev_set_dns_server(struct netdev *netif, uint8_t dns_num, ip_
static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled)
{
netdev_low_level_set_dhcp_status(netif, is_enabled);
if(RT_TRUE == is_enabled)
{
dhcp_start((struct netif *)netif->user_data);
}
else
{
dhcp_stop((struct netif *)netif->user_data);
dhcp_stop((struct netif *)netif->user_data);
}
return ERR_OK;
}
#endif /* RT_LWIP_DHCP */
......@@ -648,7 +648,7 @@ static void eth_rx_thread_entry(void* parameter)
}
/* receive all of buffer */
while (1)
do
{
if(device->eth_rx == RT_NULL) break;
......@@ -664,7 +664,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
{
......
......@@ -173,7 +173,7 @@ static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled)
}
else
{
dhcp_stop((struct netif *)netif->user_data);
dhcp_stop((struct netif *)netif->user_data);
}
return ERR_OK;
}
......@@ -697,7 +697,7 @@ static void eth_rx_thread_entry(void* parameter)
}
/* receive all of buffer */
while (1)
do
{
if(device->eth_rx == RT_NULL) break;
......@@ -713,7 +713,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
{
......
......@@ -163,16 +163,16 @@ static int lwip_netdev_set_dns_server(struct netdev *netif, uint8_t dns_num, ip_
static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled)
{
netdev_low_level_set_dhcp_status(netif, is_enabled);
if(RT_TRUE == is_enabled)
{
dhcp_start((struct netif *)netif->user_data);
}
else
{
dhcp_stop((struct netif *)netif->user_data);
dhcp_stop((struct netif *)netif->user_data);
}
return ERR_OK;
}
#endif /* RT_LWIP_DHCP */
......@@ -182,7 +182,7 @@ static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled)
extern int lwip_ping_recv(int s, int *ttl);
extern err_t lwip_ping_send(int s, ip_addr_t *addr, int size);
int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len,
int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len,
uint32_t timeout, struct netdev_ping_resp *ping_resp)
{
int s, ttl, recv_len, result = 0;
......@@ -197,7 +197,7 @@ int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len,
struct addrinfo hint, *res = RT_NULL;
struct sockaddr_in *h = RT_NULL;
struct in_addr ina;
RT_ASSERT(netif);
RT_ASSERT(host);
RT_ASSERT(ping_resp);
......@@ -216,7 +216,7 @@ int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len,
return -RT_ERROR;
}
rt_memcpy(&(ping_resp->ip_addr), &target_addr, sizeof(ip_addr_t));
/* new a socket */
if ((s = lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0)
{
......@@ -284,7 +284,7 @@ const struct netdev_ops lwip_netdev_ops =
lwip_netdev_set_addr_info,
#ifdef RT_LWIP_DNS
lwip_netdev_set_dns_server,
#else
#else
NULL,
#endif /* RT_LWIP_DNS */
......@@ -323,7 +323,7 @@ static int netdev_add(struct netif *lwip_netif)
{
return -ERR_IF;
}
#ifdef SAL_USING_LWIP
extern int sal_lwip_netdev_set_pf_info(struct netdev *netdev);
/* set the lwIP network interface device protocol family information */
......@@ -332,7 +332,7 @@ static int netdev_add(struct netif *lwip_netif)
rt_strncpy(name, lwip_netif->name, LWIP_NETIF_NAME_LEN);
result = netdev_register(netdev, name, (void *)lwip_netif);
/* Update netdev info after registered */
netdev->flags = lwip_netif->flags;
netdev->mtu = lwip_netif->mtu;
......@@ -375,7 +375,7 @@ static int netdev_flags_sync(struct netif *lwip_netif)
{
return -ERR_IF;
}
netdev->mtu = lwip_netif->mtu;
netdev->flags |= lwip_netif->flags;
......@@ -438,7 +438,7 @@ static err_t eth_netif_device_init(struct netif *netif)
/* copy device flags to netif flags */
netif->flags = (ethif->flags & 0xff);
netif->mtu = ETHERNET_MTU;
/* set output */
netif->output = etharp_output;
......@@ -530,7 +530,7 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_
/* set linkoutput */
netif->linkoutput = ethernetif_linkoutput;
/* get hardware MAC address */
rt_device_control(&(dev->parent), NIOCTL_GADDR, netif->hwaddr);
......@@ -550,7 +550,7 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_
ipaddr.addr = inet_addr(RT_LWIP_IPADDR);
gw.addr = inet_addr(RT_LWIP_GWADDR);
netmask.addr = inet_addr(RT_LWIP_MSKADDR);
#else
#else
IP4_ADDR(&ipaddr, 0, 0, 0, 0);
IP4_ADDR(&gw, 0, 0, 0, 0);
IP4_ADDR(&netmask, 0, 0, 0, 0);
......@@ -699,10 +699,10 @@ static void eth_rx_thread_entry(void* parameter)
}
/* receive all of buffer */
while (1)
do
{
if(device->eth_rx == RT_NULL) break;
p = device->eth_rx(&(device->parent));
if (p != RT_NULL)
{
......@@ -715,7 +715,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
{
......@@ -725,9 +725,9 @@ static void eth_rx_thread_entry(void* parameter)
}
#endif
/* this function does not need,
* use eth_system_device_init_private()
* call by lwip_system_init().
/* this function does not need,
* use eth_system_device_init_private()
* call by lwip_system_init().
*/
int eth_system_device_init(void)
{
......@@ -874,22 +874,22 @@ void list_if(void)
ip6_addr_t *addr;
int addr_state;
int i;
addr = (ip6_addr_t *)&netif->ip6_addr[0];
addr_state = netif->ip6_addr_state[0];
rt_kprintf("\nipv6 link-local: %s state:%02X %s\n", ip6addr_ntoa(addr),
rt_kprintf("\nipv6 link-local: %s state:%02X %s\n", ip6addr_ntoa(addr),
addr_state, ip6_addr_isvalid(addr_state)?"VALID":"INVALID");
for(i=1; i<LWIP_IPV6_NUM_ADDRESSES; i++)
{
addr = (ip6_addr_t *)&netif->ip6_addr[i];
addr_state = netif->ip6_addr_state[i];
rt_kprintf("ipv6[%d] address: %s state:%02X %s\n", i, ip6addr_ntoa(addr),
rt_kprintf("ipv6[%d] address: %s state:%02X %s\n", i, ip6addr_ntoa(addr),
addr_state, ip6_addr_isvalid(addr_state)?"VALID":"INVALID");
}
}
rt_kprintf("\r\n");
#endif /* LWIP_IPV6 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册