diff mbox series

[04/12] net: lwip: add restart support to ping

Message ID 20250314215525.579655-5-jerome.forissier@linaro.org
State New
Headers show
Series lwIP sandbox tests | expand

Commit Message

Jerome Forissier March 14, 2025, 9:55 p.m. UTC
Use net_start_again() in do_ping() to determine if a failed ping should
be restarted on a different interface.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
---
 net/lwip/ping.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/net/lwip/ping.c b/net/lwip/ping.c
index 542ef2cb148..d8042ceecf9 100644
--- a/net/lwip/ping.c
+++ b/net/lwip/ping.c
@@ -168,11 +168,13 @@  int do_ping(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 	if (!ipaddr_aton(argv[1], &addr))
 		return CMD_RET_USAGE;
 
-	if (net_lwip_eth_start() < 0)
-		return CMD_RET_FAILURE;
-
-	if (ping_loop(eth_get_dev(), &addr) < 0)
-		return CMD_RET_FAILURE;
+restart:
+	if (net_lwip_eth_start() < 0 || ping_loop(eth_get_dev(), &addr) < 0) {
+		if (net_start_again() == 0)
+			goto restart;
+		else
+			return CMD_RET_FAILURE;
+	}
 
 	return CMD_RET_SUCCESS;
 }