xref: /linux/tools/testing/selftests/bpf/progs/tcp_ca_incompl_cong_ops.c (revision 36ec807b627b4c0a0a382f0ae48eac7187d14b2b)
10735627dSJörn-Thorben Hinz // SPDX-License-Identifier: GPL-2.0
20735627dSJörn-Thorben Hinz 
3cc5b18ceSMartin KaFai Lau #include "bpf_tracing_net.h"
40735627dSJörn-Thorben Hinz #include <bpf/bpf_helpers.h>
50735627dSJörn-Thorben Hinz #include <bpf/bpf_tracing.h>
60735627dSJörn-Thorben Hinz 
70735627dSJörn-Thorben Hinz char _license[] SEC("license") = "GPL";
80735627dSJörn-Thorben Hinz 
9*7d3851a3SMartin KaFai Lau SEC("struct_ops")
BPF_PROG(incompl_cong_ops_ssthresh,struct sock * sk)100735627dSJörn-Thorben Hinz __u32 BPF_PROG(incompl_cong_ops_ssthresh, struct sock *sk)
110735627dSJörn-Thorben Hinz {
120735627dSJörn-Thorben Hinz 	return tcp_sk(sk)->snd_ssthresh;
130735627dSJörn-Thorben Hinz }
140735627dSJörn-Thorben Hinz 
15*7d3851a3SMartin KaFai Lau SEC("struct_ops")
BPF_PROG(incompl_cong_ops_undo_cwnd,struct sock * sk)160735627dSJörn-Thorben Hinz __u32 BPF_PROG(incompl_cong_ops_undo_cwnd, struct sock *sk)
170735627dSJörn-Thorben Hinz {
180735627dSJörn-Thorben Hinz 	return tcp_sk(sk)->snd_cwnd;
190735627dSJörn-Thorben Hinz }
200735627dSJörn-Thorben Hinz 
210735627dSJörn-Thorben Hinz SEC(".struct_ops")
220735627dSJörn-Thorben Hinz struct tcp_congestion_ops incompl_cong_ops = {
230735627dSJörn-Thorben Hinz 	/* Intentionally leaving out any of the required cong_avoid() and
240735627dSJörn-Thorben Hinz 	 * cong_control() here.
250735627dSJörn-Thorben Hinz 	 */
260735627dSJörn-Thorben Hinz 	.ssthresh = (void *)incompl_cong_ops_ssthresh,
270735627dSJörn-Thorben Hinz 	.undo_cwnd = (void *)incompl_cong_ops_undo_cwnd,
280735627dSJörn-Thorben Hinz 	.name = "bpf_incompl_ops",
290735627dSJörn-Thorben Hinz };
30