History

net-timestamp: introduce SOF_TIMESTAMPING_OPT_RX_FILTER flag

introduce a new flag SOF_TIMESTAMPING_OPT_RX_FILTER in the receive path. User can set it with SOF_TIMESTAMPING_SOFTWARE to filter out rx software timestamp report, especially after a process turns on netstamp_needed_key which can time stamp every incoming skb. Previously, we found out if an application starts first which turns on netstamp_needed_key, then another one only passing SOF_TIMESTAMPING_SOFTWARE could also get rx timestamp. Now we handle this case by introducing this new flag without breaking users. Quoting Willem to explain why we need the flag: "why a process would want to request software timestamp reporting, but not receive software timestamp generation. The only use I see is when the application does request SOF_TIMESTAMPING_SOFTWARE | SOF_TIMESTAMPING_TX_SOFTWARE." Similarly, this new flag could also be used for hardware case where we can set it with SOF_TIMESTAMPING_RAW_HARDWARE, then we won't receive hardware receive timestamp. Another thing about errqueue in this patch I have a few words to say: In this case, we need to handle the egress path carefully, or else reporting the tx timestamp will fail. Egress path and ingress path will finally call sock_recv_timestamp(). We have to distinguish them. Errqueue is a good indicator to reflect the flow direction.

Jason Xing committed 2 years ago

Commit be8e9eb1 parent e503f825 files · +35 −5Browse files

Showing the changes to include/uapi (1 of 5 files). Show all

Unified · Split

include/uapi/linux/net_tstamp.h+2−1
@@ -32,8 +32,9 @@ enum { · 31 unmodified lines
3232 SOF_TIMESTAMPING_OPT_TX_SWHW = (1<<14),
3333 SOF_TIMESTAMPING_BIND_PHC = (1 << 15),
3434 SOF_TIMESTAMPING_OPT_ID_TCP = (1 << 16),
35+ SOF_TIMESTAMPING_OPT_RX_FILTER = (1 << 17),
3536
36− SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_ID_TCP,
37+ SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_RX_FILTER,
3738 SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) |
3839 SOF_TIMESTAMPING_LAST
3940 };