Support SCM_TSTAMP_COMPLETION case for bpf timestamping. Add a new sock_ops callback, BPF_SOCK_OPS_TSTAMP_SND_SW_CB. This callback shall occur at the same timestamping point as the user space's software SCM_TSTAMP_COMPLETION. The BPF program can use it to get the same SCM_TSTAMP_COMPLETION timestamp without modifying the user-space application. Emitting BPF completion timestamps is enabled in separate patches. Signed-off-by: Pauli Virtanen <pav@xxxxxx> --- include/uapi/linux/bpf.h | 5 +++++ net/core/skbuff.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index defa5bb881f4..6cd918febcb3 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -7054,6 +7054,11 @@ enum { * sendmsg timestamp with corresponding * tskey. */ + BPF_SOCK_OPS_TSTAMP_COMPLETION_CB, /* Called on skb completion + * report from hardware when + * SK_BPF_CB_TX_TIMESTAMPING + * feature is on. + */ }; /* List of TCP states. There is a build check in net/ipv4/tcp.c to detect diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 6cbf77bc61fc..9b2ff115eaf5 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -5552,6 +5552,9 @@ static void skb_tstamp_tx_report_bpf_timestamping(struct sk_buff *skb, case SCM_TSTAMP_ACK: op = BPF_SOCK_OPS_TSTAMP_ACK_CB; break; + case SCM_TSTAMP_COMPLETION: + op = BPF_SOCK_OPS_TSTAMP_COMPLETION_CB; + break; default: return; } -- 2.49.0