On Wed, 23 Apr 2025 22:20:41 +0700 Bui Quang Minh wrote:
I've tried to make the setup_xsk into each test. However, I've an issueInteresting :S What errno does the kernel return? EBUSY?
that the XDP socket destruct waits for an RCU grace period as I see this
sock's flag SOCK_RCU_FREE is set. So if we start the next test right
away, we can have the error when setting up XDP socket again because
previous XDP socket has not unbound the network interface's queue yet. I
can resolve the issue by putting the sleep(1) after closing the socket
in xdp_helper:
diff --git a/tools/testing/selftests/net/lib/xdp_helper.c
b/tools/testing/selftests/net/lib/xdp_helper.c
index f21536ab95ba..e882bb22877f 100644
--- a/tools/testing/selftests/net/lib/xdp_helper.c
+++ b/tools/testing/selftests/net/lib/xdp_helper.c
@@ -162,5 +162,6 @@ int main(int argc, char **argv)
*/
close(sock_fd);
+ sleep(1);
return 0;
}
Do you think it's enough or do you have a better suggestion here?
Perhaps we could loop for a second retrying the bind()
if kernel returns EBUSY in case it's just a socket waiting
to be cleaned up?