1 // SPDX-License-Identifier: GPL-2.0 2 3 #include "vmlinux.h" 4 5 #include <bpf/bpf_helpers.h> 6 #include <bpf/bpf_tracing.h> 7 8 char _license[] SEC("license") = "GPL"; 9 10 int ca1_cnt = 0; 11 int ca2_cnt = 0; 12 13 static inline struct tcp_sock *tcp_sk(const struct sock *sk) 14 { 15 return (struct tcp_sock *)sk; 16 } 17 18 SEC("struct_ops/ca_update_1_init") 19 void BPF_PROG(ca_update_1_init, struct sock *sk) 20 { 21 ca1_cnt++; 22 } 23 24 SEC("struct_ops/ca_update_2_init") 25 void BPF_PROG(ca_update_2_init, struct sock *sk) 26 { 27 ca2_cnt++; 28 } 29 30 SEC("struct_ops/ca_update_cong_control") 31 void BPF_PROG(ca_update_cong_control, struct sock *sk, 32 const struct rate_sample *rs) 33 { 34 } 35 36 SEC("struct_ops/ca_update_ssthresh") 37 __u32 BPF_PROG(ca_update_ssthresh, struct sock *sk) 38 { 39 return tcp_sk(sk)->snd_ssthresh; 40 } 41 42 SEC("struct_ops/ca_update_undo_cwnd") 43 __u32 BPF_PROG(ca_update_undo_cwnd, struct sock *sk) 44 { 45 return tcp_sk(sk)->snd_cwnd; 46 } 47 48 SEC(".struct_ops.link") 49 struct tcp_congestion_ops ca_update_1 = { 50 .init = (void *)ca_update_1_init, 51 .cong_control = (void *)ca_update_cong_control, 52 .ssthresh = (void *)ca_update_ssthresh, 53 .undo_cwnd = (void *)ca_update_undo_cwnd, 54 .name = "tcp_ca_update", 55 }; 56 57 SEC(".struct_ops.link") 58 struct tcp_congestion_ops ca_update_2 = { 59 .init = (void *)ca_update_2_init, 60 .cong_control = (void *)ca_update_cong_control, 61 .ssthresh = (void *)ca_update_ssthresh, 62 .undo_cwnd = (void *)ca_update_undo_cwnd, 63 .name = "tcp_ca_update", 64 }; 65 66 SEC(".struct_ops.link") 67 struct tcp_congestion_ops ca_wrong = { 68 .cong_control = (void *)ca_update_cong_control, 69 .ssthresh = (void *)ca_update_ssthresh, 70 .undo_cwnd = (void *)ca_update_undo_cwnd, 71 .name = "tcp_ca_wrong", 72 }; 73 74 SEC(".struct_ops") 75 struct tcp_congestion_ops ca_no_link = { 76 .cong_control = (void *)ca_update_cong_control, 77 .ssthresh = (void *)ca_update_ssthresh, 78 .undo_cwnd = (void *)ca_update_undo_cwnd, 79 .name = "tcp_ca_no_link", 80 }; 81