Re: [PATCH net-next v2 5/6] bpf: enable bpf timestamping rx in TCP layer
From: Jason Xing <hidden>
Date: 2026-05-28 00:50:56
Also in:
bpf
On Sat, May 23, 2026 at 11:45 AM Kuniyuki Iwashima [off-list ref] wrote:
On Thu, May 21, 2026 at 6:53 AM Jason Xing [off-list ref] wrote:quoted
From: Jason Xing <kernelxing@tencent.com> Add two if statements to accurately isolate bpf timestamping and so timestamping. They can work respectively. As to so_timestamping, only add a loose condition via report flags to avoid duplicate strict checks that is done in tcp_recv_timestamp() and performance impact. If the loose condition is hit, tcp_recv_timestamp() is able to handle the exact case and doesn't hamper the existing timestamping feature. Make it work in TCP protocol. Signed-off-by: Jason Xing <kernelxing@tencent.com> --- net/ipv4/tcp.c | 10 ++++++++++ 1 file changed, 10 insertions(+)diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 21ece4c71612..7ad3561dc8cd 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c@@ -2353,6 +2353,16 @@ void tcp_recv_timestamp(struct msghdr *msg, const struct sock *sk,Simply drop const from here rather than casting to non-const for bpf_skops_rx_timestamping(). sk in all callers of tcp_recv_timestamp() is not const.
Will do that. Thanks.
quoted
int new_tstamp = sock_flag(sk, SOCK_TSTAMP_NEW); u32 tsflags = READ_ONCE(sk->sk_tsflags); + if (cgroup_bpf_enabled(CGROUP_SOCK_OPS) && + SK_BPF_CB_FLAG_TEST(sk, SK_BPF_CB_RX_TIMESTAMPING)) + bpf_skops_rx_timestamping((struct sock *)sk, tss, + BPF_SOCK_OPS_TSTAMP_RCV_CB); + + if (!sock_flag(sk, SOCK_RCVTSTAMP) && + !(tsflags & SOF_TIMESTAMPING_SOFTWARE) && + !(tsflags & SOF_TIMESTAMPING_RAW_HARDWARE)) + return; + if (tss->ts[0]) { if (sock_flag(sk, SOCK_RCVTSTAMP)) { struct timespec64 tv = ktime_to_timespec64(tss->ts[0]); -- 2.43.7