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