netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] bpf, net: Allow setting SO_TIMESTAMPING* from BPF
@ 2023-07-03 17:50 Jörn-Thorben Hinz
  2023-07-03 17:50 ` [PATCH 1/2] net: Implement missing getsockopt(SO_TIMESTAMPING_NEW) Jörn-Thorben Hinz
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Jörn-Thorben Hinz @ 2023-07-03 17:50 UTC (permalink / raw)
  To: bpf, linux-kernel, netdev, linux-kselftest
  Cc: Jörn-Thorben Hinz, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin KaFai Lau, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Shuah Khan, Willem de Bruijn,
	Deepa Dinamani

BPF applications, e.g., a TCP congestion control, might benefit from
precise packet timestamps. These timestamps are already available in
__sk_buff and bpf_sock_ops, but could not be requested: A BPF program
was not allowed to set SO_TIMESTAMPING* on a socket. This change enables
BPF programs to actively request the generation of timestamps from a
stream socket.

To reuse the setget_sockopt BPF prog test for
bpf_{get,set}sockopt(SO_TIMESTAMPING_NEW), also implement the missing
getsockopt(SO_TIMESTAMPING_NEW) in the network stack.

I reckon the way I added getsockopt(SO_TIMESTAMPING_NEW) causes an API
change: For existing users that set SO_TIMESTAMPING_NEW but queried
SO_TIMESTAMPING_OLD afterwards, it would now look as if no timestamping
flags have been set. Is this an acceptable change? If not, I’m happy to
change getsockopt() to only be strict about the newly-implemented
getsockopt(SO_TIMESTAMPING_NEW), or not distinguish between
SO_TIMESTAMPING_NEW and SO_TIMESTAMPING_OLD at all.

Jörn-Thorben Hinz (2):
  net: Implement missing getsockopt(SO_TIMESTAMPING_NEW)
  bpf: Allow setting SO_TIMESTAMPING* with bpf_setsockopt()

 include/uapi/linux/bpf.h                            | 3 ++-
 net/core/filter.c                                   | 2 ++
 net/core/sock.c                                     | 9 +++++++--
 tools/include/uapi/linux/bpf.h                      | 3 ++-
 tools/testing/selftests/bpf/progs/bpf_tracing_net.h | 2 ++
 tools/testing/selftests/bpf/progs/setget_sockopt.c  | 4 ++++
 6 files changed, 19 insertions(+), 4 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-07-04 20:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-03 17:50 [PATCH 0/2] bpf, net: Allow setting SO_TIMESTAMPING* from BPF Jörn-Thorben Hinz
2023-07-03 17:50 ` [PATCH 1/2] net: Implement missing getsockopt(SO_TIMESTAMPING_NEW) Jörn-Thorben Hinz
2023-07-03 17:50 ` [PATCH 2/2] bpf: Allow setting SO_TIMESTAMPING* with bpf_setsockopt() Jörn-Thorben Hinz
2023-07-03 21:25 ` [PATCH 0/2] bpf, net: Allow setting SO_TIMESTAMPING* from BPF John Fastabend
2023-07-04 16:11   ` Jörn-Thorben Hinz
2023-07-04 19:36     ` Willem de Bruijn
2023-07-04 20:26       ` Arnd Bergmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).