selftests: net: add flag to force zerocopy mode in xdp_helper

This commit adds an optional -z flag to xdp_helper. When this flag is
provided, the XDP socket binding is forced to be in zerocopy mode.

Signed-off-by: Bui Quang Minh <minhquangbui99@gmail.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Link: https://patch.msgid.link/20250425071018.36078-3-minhquangbui99@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Bui Quang Minh
2025-04-28 15:49:10 -07:00
committed by Jakub Kicinski
parent 59dd07db92
commit 5d346179e7
+17 -2
View File
@@ -17,6 +17,12 @@
#define NUM_DESC (UMEM_SZ / 2048)
static void print_usage(const char *bin)
{
fprintf(stderr, "Usage: %s ifindex queue_id [-z]\n\n"
"where:\n\t-z: force zerocopy mode", bin);
}
/* this is a simple helper program that creates an XDP socket and does the
* minimum necessary to get bind() to succeed.
*
@@ -36,8 +42,8 @@ int main(int argc, char **argv)
int sock_fd;
int queue;
if (argc != 3) {
fprintf(stderr, "Usage: %s ifindex queue_id\n", argv[0]);
if (argc != 3 && argc != 4) {
print_usage(argv[0]);
return 1;
}
@@ -87,6 +93,15 @@ int main(int argc, char **argv)
sxdp.sxdp_queue_id = queue;
sxdp.sxdp_flags = 0;
if (argc > 3) {
if (!strcmp(argv[3], "-z")) {
sxdp.sxdp_flags = XDP_ZEROCOPY;
} else {
print_usage(argv[0]);
return 1;
}
}
if (bind(sock_fd, (struct sockaddr *)&sxdp, sizeof(sxdp)) != 0) {
munmap(umem_area, UMEM_SZ);
perror("bind failed");