On 10/8/24 2:51 AM, Jason Xing wrote:
From: Jason Xing <kernelxing@xxxxxxxxxxx> Now we allow users to set tsflags through bpf_setsockopt. What I want to do is passing SOF_TIMESTAMPING_RX_SOFTWARE flag, so that we can generate rx timestamps the moment the skb traverses through driver. Here is an example: case BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB: case BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB: sock_opt = SOF_TIMESTAMPING_RX_SOFTWARE; bpf_setsockopt(skops, SOL_SOCKET, SO_TIMESTAMPING, &sock_opt, sizeof(sock_opt)); break; In this way, we can use bpf program that help us generate and report rx timestamp. Signed-off-by: Jason Xing <kernelxing@xxxxxxxxxxx> --- net/core/filter.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/core/filter.c b/net/core/filter.c index bd0d08bf76bb..9ce99d320571 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -5225,6 +5225,9 @@ static int sol_socket_sockopt(struct sock *sk, int optname, break; case SO_BINDTODEVICE: break; + case SO_TIMESTAMPING_NEW: + case SO_TIMESTAMPING_OLD:
I believe this change was proposed before. It will change the user expectation on the sk_error_queue. It needs some bits/fields/knobs for bpf. I think this point is similar to other's earlier comments in this thread.
I only have a chance to briefly look at it. I think it is useful. This bpf/timestamp feature request has come up before.
A high level comment. The current timestamp should work for non tcp sock? The bpf/timestamp solution should be able to also.
sockops is tcp centric. From looking at patch 9 that needs to initialize 4 args, this interface feels old and not sure we want to extend to other sock types.
This needs some thoughts.
+ break; default: return -EINVAL; }