1 // SPDX-License-Identifier: GPL-2.0
3 #include "bpf_tracing_net.h"
4 #include <bpf/bpf_helpers.h>
5 #include <bpf/bpf_tracing.h>
7 char _license[] SEC("license") = "GPL";
13 void BPF_PROG(ca_update_1_init, struct sock *sk)
19 void BPF_PROG(ca_update_2_init, struct sock *sk)
25 void BPF_PROG(ca_update_cong_control, struct sock *sk,
26 const struct rate_sample *rs)
31 __u32 BPF_PROG(ca_update_ssthresh, struct sock *sk)
33 return tcp_sk(sk)->snd_ssthresh;
37 __u32 BPF_PROG(ca_update_undo_cwnd, struct sock *sk)
39 return tcp_sk(sk)->snd_cwnd;
42 SEC(".struct_ops.link")
43 struct tcp_congestion_ops ca_update_1 = {
44 .init = (void *)ca_update_1_init,
45 .cong_control = (void *)ca_update_cong_control,
46 .ssthresh = (void *)ca_update_ssthresh,
47 .undo_cwnd = (void *)ca_update_undo_cwnd,
48 .name = "tcp_ca_update",
51 SEC(".struct_ops.link")
52 struct tcp_congestion_ops ca_update_2 = {
53 .init = (void *)ca_update_2_init,
54 .cong_control = (void *)ca_update_cong_control,
55 .ssthresh = (void *)ca_update_ssthresh,
56 .undo_cwnd = (void *)ca_update_undo_cwnd,
57 .name = "tcp_ca_update",
60 SEC(".struct_ops.link")
61 struct tcp_congestion_ops ca_wrong = {
62 .cong_control = (void *)ca_update_cong_control,
63 .ssthresh = (void *)ca_update_ssthresh,
64 .undo_cwnd = (void *)ca_update_undo_cwnd,
65 .name = "tcp_ca_wrong",
69 struct tcp_congestion_ops ca_no_link = {
70 .cong_control = (void *)ca_update_cong_control,
71 .ssthresh = (void *)ca_update_ssthresh,
72 .undo_cwnd = (void *)ca_update_undo_cwnd,
73 .name = "tcp_ca_no_link",