diff --git a/components/net/lwip-1.4.1/src/netif/ethernetif.c b/components/net/lwip-1.4.1/src/netif/ethernetif.c index 94d1f8d907..4565f5e528 100644 --- a/components/net/lwip-1.4.1/src/netif/ethernetif.c +++ b/components/net/lwip-1.4.1/src/netif/ethernetif.c @@ -638,6 +638,7 @@ static void eth_rx_thread_entry(void* parameter) { if (rt_mb_recv(ð_rx_thread_mb, (rt_ubase_t*)&device, RT_WAITING_FOREVER) == RT_EOK) { + rt_base_t level; struct pbuf *p; /* check link status */ @@ -657,10 +658,10 @@ static void eth_rx_thread_entry(void* parameter) netifapi_netif_set_link_down(device->netif); } - rt_enter_critical(); + level = rt_hw_interrupt_disable(); /* 'rx_notice' will be modify in the interrupt or here */ device->rx_notice = RT_FALSE; - rt_exit_critical(); + rt_hw_interrupt_enable(level); /* receive all of buffer */ while(1) diff --git a/components/net/lwip-2.0.2/src/netif/ethernetif.c b/components/net/lwip-2.0.2/src/netif/ethernetif.c index 28e3822cf7..1c0f3ca9b2 100644 --- a/components/net/lwip-2.0.2/src/netif/ethernetif.c +++ b/components/net/lwip-2.0.2/src/netif/ethernetif.c @@ -687,6 +687,7 @@ static void eth_rx_thread_entry(void* parameter) { if (rt_mb_recv(ð_rx_thread_mb, (rt_ubase_t *)&device, RT_WAITING_FOREVER) == RT_EOK) { + rt_base_t level; struct pbuf *p; /* check link status */ @@ -706,10 +707,10 @@ static void eth_rx_thread_entry(void* parameter) netifapi_netif_set_link_down(device->netif); } - rt_enter_critical(); + level = rt_hw_interrupt_disable(); /* 'rx_notice' will be modify in the interrupt or here */ device->rx_notice = RT_FALSE; - rt_exit_critical(); + rt_hw_interrupt_enable(level); /* receive all of buffer */ while(1) diff --git a/components/net/lwip-2.1.2/src/netif/ethernetif.c b/components/net/lwip-2.1.2/src/netif/ethernetif.c index 09a84f61e5..751a7bbdac 100644 --- a/components/net/lwip-2.1.2/src/netif/ethernetif.c +++ b/components/net/lwip-2.1.2/src/netif/ethernetif.c @@ -689,6 +689,7 @@ static void eth_rx_thread_entry(void* parameter) { if (rt_mb_recv(ð_rx_thread_mb, (rt_ubase_t *)&device, RT_WAITING_FOREVER) == RT_EOK) { + rt_base_t level; struct pbuf *p; /* check link status */ @@ -708,10 +709,10 @@ static void eth_rx_thread_entry(void* parameter) netifapi_netif_set_link_down(device->netif); } - rt_enter_critical(); + level = rt_hw_interrupt_disable(); /* 'rx_notice' will be modify in the interrupt or here */ device->rx_notice = RT_FALSE; - rt_exit_critical(); + rt_hw_interrupt_enable(level); /* receive all of buffer */ while(1)