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.foriss...@linaro.org>
Reviewed-by: Simon Glass <s...@chromium.org>
---

(no changes since v1)

 net/lwip/ping.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

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;
 }
-- 
2.43.0

Reply via email to