Re: [PATCH net-next v1 2/2] selftests: drv-net: ncdevmem: gracefully retry bind()

From: T.J. Mercier

Date: Tue Aug 04 2026 - 15:21:41 EST


On Sat, Aug 1, 2026 at 6:12 AM Mina Almasry <almasrymina@xxxxxxxxxx> wrote:
>
Hi

> In testing environments, binding to the port can transiently fail
> following a driver reset caused by the preceding queue configuration.
> The failing bind() is typically caused by DHCP/IPv6 DAD needing some
> time to resolve and assign the IP address back to the interface after
> the reset.

With EADDRNOTAVAIL? Maybe loop only for that errno?

> Retry bind() multiple times before fully failing the test
> to improve robustness.
>
> Signed-off-by: Mina Almasry <almasrymina@xxxxxxxxxx>
> ---
> tools/testing/selftests/drivers/net/hw/ncdevmem.c | 7 ++++++-
> 1 file changed, 6 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..6724f81e389fa 100644
> --- a/tools/testing/selftests/drivers/net/hw/ncdevmem.c
> +++ b/tools/testing/selftests/drivers/net/hw/ncdevmem.c
> @@ -898,7 +898,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));
> + int retries = 10;
> + 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
>