1*c93cbdb1SMahe Tardy // SPDX-License-Identifier: GPL-2.0
2*c93cbdb1SMahe Tardy /* Copyright (c) 2026 Isovalent */
3*c93cbdb1SMahe Tardy
4*c93cbdb1SMahe Tardy #include <unistd.h>
5*c93cbdb1SMahe Tardy
6*c93cbdb1SMahe Tardy #include "test_progs.h"
7*c93cbdb1SMahe Tardy #include "ksock_wq.skel.h"
8*c93cbdb1SMahe Tardy
9*c93cbdb1SMahe Tardy #define CALLBACK_WAIT_RETRIES 1000
10*c93cbdb1SMahe Tardy #define CALLBACK_WAIT_US 1000
11*c93cbdb1SMahe Tardy
test_ksock_wq(void)12*c93cbdb1SMahe Tardy void test_ksock_wq(void)
13*c93cbdb1SMahe Tardy {
14*c93cbdb1SMahe Tardy LIBBPF_OPTS(bpf_test_run_opts, opts);
15*c93cbdb1SMahe Tardy struct ksock_wq *skel;
16*c93cbdb1SMahe Tardy u32 callback_done;
17*c93cbdb1SMahe Tardy int err, i;
18*c93cbdb1SMahe Tardy
19*c93cbdb1SMahe Tardy skel = ksock_wq__open_and_load();
20*c93cbdb1SMahe Tardy if (!ASSERT_OK_PTR(skel, "ksock_wq open and load"))
21*c93cbdb1SMahe Tardy return;
22*c93cbdb1SMahe Tardy
23*c93cbdb1SMahe Tardy err = bpf_prog_test_run_opts(bpf_program__fd(skel->progs.ksock_wq_start),
24*c93cbdb1SMahe Tardy &opts);
25*c93cbdb1SMahe Tardy if (!ASSERT_OK(err, "run ksock_wq_start"))
26*c93cbdb1SMahe Tardy goto out;
27*c93cbdb1SMahe Tardy if (!ASSERT_OK(opts.retval, "ksock_wq_start retval"))
28*c93cbdb1SMahe Tardy goto out;
29*c93cbdb1SMahe Tardy
30*c93cbdb1SMahe Tardy for (i = 0; i < CALLBACK_WAIT_RETRIES; i++) {
31*c93cbdb1SMahe Tardy if (__atomic_load_n(&skel->bss->callback_done, __ATOMIC_ACQUIRE))
32*c93cbdb1SMahe Tardy break;
33*c93cbdb1SMahe Tardy usleep(CALLBACK_WAIT_US);
34*c93cbdb1SMahe Tardy }
35*c93cbdb1SMahe Tardy callback_done = __atomic_load_n(&skel->bss->callback_done,
36*c93cbdb1SMahe Tardy __ATOMIC_ACQUIRE);
37*c93cbdb1SMahe Tardy if (!ASSERT_EQ(callback_done, 1, "workqueue callback completed"))
38*c93cbdb1SMahe Tardy goto out;
39*c93cbdb1SMahe Tardy
40*c93cbdb1SMahe Tardy ASSERT_EQ(skel->bss->create_err, -EOPNOTSUPP,
41*c93cbdb1SMahe Tardy "workqueue create rejected");
42*c93cbdb1SMahe Tardy
43*c93cbdb1SMahe Tardy out:
44*c93cbdb1SMahe Tardy ksock_wq__destroy(skel);
45*c93cbdb1SMahe Tardy }
46