On Thu, Feb 20, 2025 at 3:48 AM Martin KaFai Lau <martin.lau@xxxxxxxxx> wrote: > > On 2/18/25 11:03 PM, Jason Xing wrote: > > On Tue, Feb 18, 2025 at 1:02 PM Jason Xing <kerneljasonxing@xxxxxxxxx> 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@xxxxxxxxx> > >> --- > >> 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. I learned. Thanks.