Hi Jiri, Mat, On 11/07/2022 23:21, Mat Martineau wrote: > On Mon, 11 Jul 2022, Jiri Olsa wrote: > >> The btf_sock_ids array needs struct mptcp_sock BTF ID for >> the bpf_skc_to_mptcp_sock helper. >> >> When CONFIG_MPTCP is disabled, the 'struct mptcp_sock' is not >> defined and resolve_btfids will complain with: >> >> BTFIDS vmlinux >> WARN: resolve_btfids: unresolved symbol mptcp_sock >> >> Adding empty difinition for struct mptcp_sock when CONFIG_MPTCP >> is disabled. >> >> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> >> --- >> include/net/mptcp.h | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/include/net/mptcp.h b/include/net/mptcp.h >> index ac9cf7271d46..25741a52c666 100644 >> --- a/include/net/mptcp.h >> +++ b/include/net/mptcp.h >> @@ -59,6 +59,10 @@ struct mptcp_addr_info { >> }; >> }; >> >> +#if !IS_ENABLED(CONFIG_MPTCP) >> +struct mptcp_sock { }; >> +#endif > > The only use of struct mptcp_sock I see with !CONFIG_MPTCP is from this > stub at the end of mptcp.h: > > static inline struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock > *sk) { return NULL; } > > It's normally defined in net/mptcp/protocol.h for the MPTCP subsystem code. > > The conditional could be added on the line before the stub to make it > clear that the empty struct is associated with that inline stub. If this is required only for this specific BPF function, why not modifying this stub (or add a define) to return "void *" instead of "struct mptcp_sock *"? Cheers, Matt -- Tessares | Belgium | Hybrid Access Solutions www.tessares.net