bpf: selftest: Test batching and bpf_(get|set)sockopt in bpf tcp iter
authorMartin KaFai Lau <kafai@fb.com>
Thu, 1 Jul 2021 20:06:25 +0000 (13:06 -0700)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 23 Jul 2021 23:45:17 +0000 (16:45 -0700)
commiteed92afdd14c26b1e319fbe9eaa80e62ffa97a2c
treed8dafb16faa4c368d550a3e0ab5166c0b1cbc8b9
parent3cee6fb8e69ecd79be891c89a94974c48a25a437
bpf: selftest: Test batching and bpf_(get|set)sockopt in bpf tcp iter

This patch adds tests for the batching and bpf_(get|set)sockopt in
bpf tcp iter.

It first creates:
a) 1 non SO_REUSEPORT listener in lhash2.
b) 256 passive and active fds connected to the listener in (a).
c) 256 SO_REUSEPORT listeners in one of the lhash2 bucket.

The test sets all listeners and connections to bpf_cubic before
running the bpf iter.

The bpf iter then calls setsockopt(TCP_CONGESTION) to switch
each listener and connection from bpf_cubic to bpf_dctcp.

The bpf iter has a random_retry mode such that it can return EAGAIN
to the usespace in the middle of a batch.

Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20210701200625.1036874-1-kafai@fb.com
tools/testing/selftests/bpf/network_helpers.c
tools/testing/selftests/bpf/network_helpers.h
tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/bpf_iter_setsockopt.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/bpf_tracing_net.h