bpf: Compute bpf_skc_to_*() helper socket btf ids at build time
authorYonghong Song <yhs@fb.com>
Mon, 20 Jul 2020 16:33:58 +0000 (09:33 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 21 Jul 2020 20:26:26 +0000 (13:26 -0700)
commitbc4f0548f683a3d53359cef15f088d2d5bb4bc39
treef2537b237c573ed4d8316b26adeee72e0b0a4b65
parente4d9c2320716ea0e9ef59f503ddd8f253a642ddd
bpf: Compute bpf_skc_to_*() helper socket btf ids at build time

Currently, socket types (struct tcp_sock, udp_sock, etc.)
used by bpf_skc_to_*() helpers are computed when vmlinux_btf
is first built in the kernel.

Commit 5a2798ab32ba
("bpf: Add BTF_ID_LIST/BTF_ID/BTF_ID_UNUSED macros")
implemented a mechanism to compute btf_ids at kernel build
time which can simplify kernel implementation and reduce
runtime overhead by removing in-kernel btf_id calculation.
This patch did exactly this, removing in-kernel btf_id
computation and utilizing build-time btf_id computation.

If CONFIG_DEBUG_INFO_BTF is not defined, BTF_ID_LIST will
define an array with size of 5, which is not enough for
btf_sock_ids. So define its own static array if
CONFIG_DEBUG_INFO_BTF is not defined.

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200720163358.1393023-1-yhs@fb.com
include/linux/bpf.h
kernel/bpf/btf.c
net/core/filter.c