During tests, ethnl_rings_set randomly bounces the link causing a transient IPv6 Duplicate Address Detection "tentative" race, resulting in spurious -EADDRNOTAVAIL aborts inside the ncdevmem server.
Add a simple 10 second retry loop around bind() to absorb the link bounce. Signed-off-by: Mina Almasry <[email protected]> --- v2: - Refactored C99 mid-scope variables to strictly adhere to C89 styling. - Dropped single-line curly brace avoidance syntax. v1: https://patchwork.kernel.org/project/netdevbpf/patch/[email protected]/ --- tools/testing/selftests/drivers/net/hw/ncdevmem.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/drivers/net/hw/ncdevmem.c b/tools/testing/selftests/drivers/net/hw/ncdevmem.c index ffe1d5c1fa4e1..67901a0123e8c 100644 --- a/tools/testing/selftests/drivers/net/hw/ncdevmem.c +++ b/tools/testing/selftests/drivers/net/hw/ncdevmem.c @@ -843,6 +843,7 @@ static int do_server(struct memory_buffer *mem) char iobuf[819200]; int ret, err = -1; char buffer[256]; + int retries = 10; int socket_fd; int client_fd; @@ -898,7 +899,12 @@ static int do_server(struct memory_buffer *mem) fprintf(stderr, "binding to address %s:%d\n", server_ip, ntohs(server_sin.sin6_port)); - ret = bind(socket_fd, &server_sin, sizeof(server_sin)); + while (retries--) { + ret = bind(socket_fd, &server_sin, sizeof(server_sin)); + if (!ret) + break; + sleep(1); + } if (ret) { pr_err("Failed to bind"); goto err_close_socket; -- 2.55.0.571.g244d577d93-goog

