[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <24e9b1d8-ed6c-4053-8d27-185bcb840f87@linux.dev>
Date: Wed, 19 Feb 2025 11:48:28 -0800
From: Martin KaFai Lau <martin.lau@...ux.dev>
To: Jason Xing <kerneljasonxing@...il.com>
Cc: davem@...emloft.net, edumazet@...gle.com, kuba@...nel.org,
pabeni@...hat.com, dsahern@...nel.org, willemdebruijn.kernel@...il.com,
willemb@...gle.com, ast@...nel.org, daniel@...earbox.net, andrii@...nel.org,
eddyz87@...il.com, song@...nel.org, yonghong.song@...ux.dev,
john.fastabend@...il.com, kpsingh@...nel.org, sdf@...ichev.me,
haoluo@...gle.com, jolsa@...nel.org, shuah@...nel.org, ykolal@...com,
bpf@...r.kernel.org, netdev@...r.kernel.org
Subject: Re: [PATCH bpf-next v12 01/12] bpf: add networking timestamping
support to bpf_get/setsockopt()
On 2/18/25 11:03 PM, Jason Xing wrote:
> On Tue, Feb 18, 2025 at 1:02 PM Jason Xing <kerneljasonxing@...il.com> wrote:
>>
>> The new SK_BPF_CB_FLAGS and new SK_BPF_CB_TX_TIMESTAMPING are
>> added to bpf_get/setsockopt. The later patches will implement the
>> BPF networking timestamping. The BPF program will use
>> bpf_setsockopt(SK_BPF_CB_FLAGS, SK_BPF_CB_TX_TIMESTAMPING) to
>> enable the BPF networking timestamping on a socket.
>>
>> Signed-off-by: Jason Xing <kerneljasonxing@...il.com>
>> ---
>> include/net/sock.h | 3 +++
>> include/uapi/linux/bpf.h | 8 ++++++++
>> net/core/filter.c | 23 +++++++++++++++++++++++
>> tools/include/uapi/linux/bpf.h | 1 +
>> 4 files changed, 35 insertions(+)
>>
>> diff --git a/include/net/sock.h b/include/net/sock.h
>> index 8036b3b79cd8..7916982343c6 100644
>> --- a/include/net/sock.h
>> +++ b/include/net/sock.h
>> @@ -303,6 +303,7 @@ struct sk_filter;
>> * @sk_stamp: time stamp of last packet received
>> * @sk_stamp_seq: lock for accessing sk_stamp on 32 bit architectures only
>> * @sk_tsflags: SO_TIMESTAMPING flags
>> + * @sk_bpf_cb_flags: used in bpf_setsockopt()
>> * @sk_use_task_frag: allow sk_page_frag() to use current->task_frag.
>> * Sockets that can be used under memory reclaim should
>> * set this to false.
>> @@ -445,6 +446,8 @@ struct sock {
>> u32 sk_reserved_mem;
>> int sk_forward_alloc;
>> u32 sk_tsflags;
>> +#define SK_BPF_CB_FLAG_TEST(SK, FLAG) ((SK)->sk_bpf_cb_flags & (FLAG))
>> + u32 sk_bpf_cb_flags;
>> __cacheline_group_end(sock_write_rxtx);
>>
>> __cacheline_group_begin(sock_write_tx);
>> diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
>> index fff6cdb8d11a..fa666d51dffe 100644
>> --- a/include/uapi/linux/bpf.h
>> +++ b/include/uapi/linux/bpf.h
>> @@ -6916,6 +6916,13 @@ enum {
>> BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7F,
>> };
>>
>> +/* Definitions for bpf_sk_cb_flags */
>
> nit: s/bpf_sk_cb_flags/sk_bpf_cb_flags
>
> I will correct it.
>
>> +enum {
>> + SK_BPF_CB_TX_TIMESTAMPING = 1<<0,
>> + SK_BPF_CB_MASK = (SK_BPF_CB_TX_TIMESTAMPING - 1) |
>> + SK_BPF_CB_TX_TIMESTAMPING
>> +};
>
> Martin, I would like to know if it's necessary to update the above new
> enum in tools/include/uapi/linux/bpf.h as well?
Yes, the tools/include/uapi/linux/bpf.h should be updated. If you diff them, two
of them should be exactly the same. This patch should do the same to keep the
tools bpf.h up-to-date.
For other headers in tools/include/uapi, I guess it depends. e.g. the tcp.h in
your another RTO patch, the two tcp.h files are very different already and the
selftest does not need the new macro either.
Powered by blists - more mailing lists