net: lwip: call sys_check_timeouts and schedule on rx

Call schedule() in net_lwip_rx() to service U-Boot tasks and
actions during packet rx.

As a cleanup also move sys_check_timeouts() here and remove it from the
functions that call net_lwip_rx().

This resolves the issue of an active watchdog resetting the board on
long network activities.

Suggested-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
diff --git a/net/lwip/dhcp.c b/net/lwip/dhcp.c
index 043d2ab..4c9cb0e 100644
--- a/net/lwip/dhcp.c
+++ b/net/lwip/dhcp.c
@@ -58,7 +58,6 @@
 	/* Wait for DHCP to complete */
 	do {
 		net_lwip_rx(udev, netif);
-		sys_check_timeouts();
 		bound = dhcp_supplied_address(netif);
 		if (bound)
 			break;
diff --git a/net/lwip/dns.c b/net/lwip/dns.c
index 6862869..3c98679 100644
--- a/net/lwip/dns.c
+++ b/net/lwip/dns.c
@@ -92,7 +92,6 @@
 			net_lwip_rx(udev, netif);
 			if (dns_cb_arg.done)
 				break;
-			sys_check_timeouts();
 			if (ctrlc()) {
 				printf("\nAbort\n");
 				break;
diff --git a/net/lwip/net-lwip.c b/net/lwip/net-lwip.c
index abc52b3..ff4d634 100644
--- a/net/lwip/net-lwip.c
+++ b/net/lwip/net-lwip.c
@@ -14,8 +14,10 @@
 #include <lwip/etharp.h>
 #include <lwip/init.h>
 #include <lwip/prot/etharp.h>
+#include <lwip/timeouts.h>
 #include <net.h>
 #include <timer.h>
+#include <u-boot/schedule.h>
 
 /* xx:xx:xx:xx:xx:xx\0 */
 #define MAC_ADDR_STRLEN 18
@@ -285,6 +287,11 @@
 	int len;
 	int i;
 
+	/* lwIP timers */
+	sys_check_timeouts();
+	/* Other tasks and actions */
+	schedule();
+
 	if (!eth_is_active(udev))
 		return -EINVAL;
 
diff --git a/net/lwip/ping.c b/net/lwip/ping.c
index d8042ce..1390b91 100644
--- a/net/lwip/ping.c
+++ b/net/lwip/ping.c
@@ -136,7 +136,6 @@
 	ping_send(&ctx);
 
 	do {
-		sys_check_timeouts();
 		net_lwip_rx(udev, netif);
 		if (ctx.alive)
 			break;
diff --git a/net/lwip/tftp.c b/net/lwip/tftp.c
index b7eb486..2791452 100644
--- a/net/lwip/tftp.c
+++ b/net/lwip/tftp.c
@@ -201,7 +201,6 @@
 	sys_timeout(NO_RSP_TIMEOUT_MS, no_response, &ctx);
 	while (!ctx.done) {
 		net_lwip_rx(udev, netif);
-		sys_check_timeouts();
 		if (ctrlc()) {
 			printf("\nAbort\n");
 			ctx.done = ABORTED;
diff --git a/net/lwip/wget.c b/net/lwip/wget.c
index f4fd971..3c39a1b 100644
--- a/net/lwip/wget.c
+++ b/net/lwip/wget.c
@@ -526,7 +526,6 @@
 
 	while (!ctx.done) {
 		net_lwip_rx(udev, netif);
-		sys_check_timeouts();
 		if (ctrlc())
 			break;
 	}