From: Geliang Tang <tanggeli...@kylinos.cn>

Although the "Segmentation fault" errors are fixed in the last commit,
run bpf_tcp_ca selftests (./test_progs -t bpf_tcp_ca) on a Loongarch
platform, still some other "ENOTSUPP" (-524) errors left since lacking
BPF trampoline on Loongarch:

'''
 test_dctcp:PASS:bpf_dctcp__open_and_load 0 nsec
 test_dctcp:FAIL:bpf_map__attach_struct_ops unexpected error: -524
 #29/1    bpf_tcp_ca/dctcp:FAIL
 test_cubic:PASS:bpf_cubic__open_and_load 0 nsec
 test_cubic:FAIL:bpf_map__attach_struct_ops unexpected error: -524
 #29/2    bpf_tcp_ca/cubic:FAIL
 #29/3    bpf_tcp_ca/invalid_license:OK
 test_dctcp_fallback:PASS:dctcp_skel 0 nsec
 test_dctcp_fallback:PASS:bpf_dctcp__load 0 nsec
 test_dctcp_fallback:FAIL:dctcp link unexpected error: -524
 #29/4    bpf_tcp_ca/dctcp_fallback:FAIL
 #29/5    bpf_tcp_ca/rel_setsockopt:OK
 test_write_sk_pacing:PASS:open_and_load 0 nsec
 test_write_sk_pacing:FAIL:attach_struct_ops unexpected error: -524
 #29/6    bpf_tcp_ca/write_sk_pacing:FAIL
 #29/7    bpf_tcp_ca/incompl_cong_ops:OK
 #29/8    bpf_tcp_ca/unsupp_cong_op:OK
 test_update_ca:PASS:open 0 nsec
 test_update_ca:FAIL:attach_struct_ops unexpected error: -524
 #29/9    bpf_tcp_ca/update_ca:FAIL
 test_update_wrong:PASS:open 0 nsec
 test_update_wrong:FAIL:attach_struct_ops unexpected error: -524
 #29/10   bpf_tcp_ca/update_wrong:FAIL
 test_mixed_links:PASS:open 0 nsec
 test_mixed_links:FAIL:attach_struct_ops_nl unexpected error: -524
 test_mixed_links:FAIL:attach_struct_ops unexpected error: -524
 #29/11   bpf_tcp_ca/mixed_links:FAIL
 test_multi_links:PASS:open 0 nsec
 test_multi_links:FAIL:attach_struct_ops_1st unexpected error: -524
 test_multi_links:FAIL:attach_struct_ops_2nd unexpected error: -524
 #29/12   bpf_tcp_ca/multi_links:FAIL
 test_link_replace:PASS:open 0 nsec
 test_link_replace:FAIL:attach_struct_ops_1st unexpected error: -524
 test_link_replace:FAIL:attach_struct_ops_2nd unexpected error: -524
 #29/13   bpf_tcp_ca/link_replace:FAIL
 #29/14   bpf_tcp_ca/tcp_ca_kfunc:OK
 test_cc_cubic:PASS:bpf_cc_cubic__open_and_load 0 nsec
 test_cc_cubic:FAIL:bpf_map__attach_struct_ops unexpected error: -524
 #29/15   bpf_tcp_ca/cc_cubic:FAIL
 #29      bpf_tcp_ca:FAIL
'''

Just like in ASSERT_OK(), this patch uses test_progs_get_error() helper
to skip ENOTSUPP (524) and ENOTSUP (95) in ASSERT_OK_PTR() too.

With this change, the new output of bpf_tcp_ca selftests look like:

'''
 #29/1    bpf_tcp_ca/dctcp:SKIP
 #29/2    bpf_tcp_ca/cubic:SKIP
 #29/3    bpf_tcp_ca/invalid_license:OK
 #29/4    bpf_tcp_ca/dctcp_fallback:SKIP
 #29/5    bpf_tcp_ca/rel_setsockopt:OK
 #29/6    bpf_tcp_ca/write_sk_pacing:SKIP
 #29/7    bpf_tcp_ca/incompl_cong_ops:OK
 #29/8    bpf_tcp_ca/unsupp_cong_op:OK
 #29/9    bpf_tcp_ca/update_ca:SKIP
 #29/10   bpf_tcp_ca/update_wrong:SKIP
 #29/11   bpf_tcp_ca/mixed_links:SKIP
 #29/12   bpf_tcp_ca/multi_links:SKIP
 #29/13   bpf_tcp_ca/link_replace:SKIP
 #29/14   bpf_tcp_ca/tcp_ca_kfunc:OK
 #29/15   bpf_tcp_ca/cc_cubic:SKIP
 #29      bpf_tcp_ca:OK (SKIP: 10/15)
'''

Signed-off-by: Geliang Tang <tanggeli...@kylinos.cn>
---
 tools/testing/selftests/bpf/test_progs.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/bpf/test_progs.h 
b/tools/testing/selftests/bpf/test_progs.h
index d1d77785b165..8ca6cd970676 100644
--- a/tools/testing/selftests/bpf/test_progs.h
+++ b/tools/testing/selftests/bpf/test_progs.h
@@ -383,7 +383,8 @@ static inline int test_progs_get_error(int error)
        const void *___res = (ptr);                                     \
        int ___err = libbpf_get_error(___res);                          \
        bool ___ok = ___err == 0;                                       \
-       CHECK(!___ok, (name), "unexpected error: %d\n", ___err);        \
+       if (test_progs_get_error(___err))                               \
+               CHECK(!___ok, (name), "unexpected error: %d\n", ___err);\
        ___ok;                                                          \
 })
 
-- 
2.43.0


Reply via email to