Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.7-rc6 80 lines 1.9 kB view raw
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 8char _license[] SEC("license") = "GPL"; 9 10int ca1_cnt = 0; 11int ca2_cnt = 0; 12 13static inline struct tcp_sock *tcp_sk(const struct sock *sk) 14{ 15 return (struct tcp_sock *)sk; 16} 17 18SEC("struct_ops/ca_update_1_init") 19void BPF_PROG(ca_update_1_init, struct sock *sk) 20{ 21 ca1_cnt++; 22} 23 24SEC("struct_ops/ca_update_2_init") 25void BPF_PROG(ca_update_2_init, struct sock *sk) 26{ 27 ca2_cnt++; 28} 29 30SEC("struct_ops/ca_update_cong_control") 31void BPF_PROG(ca_update_cong_control, struct sock *sk, 32 const struct rate_sample *rs) 33{ 34} 35 36SEC("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 42SEC("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 48SEC(".struct_ops.link") 49struct 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 57SEC(".struct_ops.link") 58struct 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 66SEC(".struct_ops.link") 67struct 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 74SEC(".struct_ops") 75struct 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};