diff options
author | Jason Xing <kerneljasonxing@gmail.com> | 2025-02-20 15:29:30 +0800 |
---|---|---|
committer | Martin KaFai Lau <martin.lau@kernel.org> | 2025-02-20 14:28:54 -0800 |
commit | df600f3b1d7963e2203ebf0987f564946a2647f1 (patch) | |
tree | 403a9725375a9c1910f7cea84e065b7dd2db5b08 /net/core/sock.c | |
parent | 24e82b7c045ba5afde5bd81f691b7a72283de35e (diff) | |
download | linux-df600f3b1d7963e2203ebf0987f564946a2647f1.tar.gz linux-df600f3b1d7963e2203ebf0987f564946a2647f1.tar.bz2 linux-df600f3b1d7963e2203ebf0987f564946a2647f1.zip |
bpf: Prepare the sock_ops ctx and call bpf prog for TX timestamping
This patch introduces a new bpf_skops_tx_timestamping() function
that prepares the "struct bpf_sock_ops" ctx and then executes the
sockops BPF program.
The subsequent patch will utilize bpf_skops_tx_timestamping() at
the existing TX timestamping kernel callbacks (__sk_tstamp_tx
specifically) to call the sockops BPF program. Later, four callback
points to report information to user space based on this patch will
be introduced.
Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://patch.msgid.link/20250220072940.99994-3-kerneljasonxing@gmail.com
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index a197f0a0b878..ba653c6a1229 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -949,6 +949,20 @@ int sock_set_timestamping(struct sock *sk, int optname, return 0; } +#if defined(CONFIG_CGROUP_BPF) +void bpf_skops_tx_timestamping(struct sock *sk, struct sk_buff *skb, int op) +{ + struct bpf_sock_ops_kern sock_ops; + + memset(&sock_ops, 0, offsetof(struct bpf_sock_ops_kern, temp)); + sock_ops.op = op; + sock_ops.is_fullsock = 1; + sock_ops.sk = sk; + bpf_skops_init_skb(&sock_ops, skb, 0); + __cgroup_bpf_run_filter_sock_ops(sk, &sock_ops, CGROUP_SOCK_OPS); +} +#endif + void sock_set_keepalive(struct sock *sk) { lock_sock(sk); |