On Mon, Sep 9, 2024 at 10:54 AM Willem de Bruijn <willemdebruijn.kernel@xxxxxxxxx> wrote: > > Jason Xing wrote: > > From: Jason Xing <kernelxing@xxxxxxxxxxx> > > > > 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. > > > > Suggested-by: Willem de Bruijn <willemb@xxxxxxxxxx> > > Signed-off-by: Jason Xing <kernelxing@xxxxxxxxxxx> > > Reviewed-by: Willem de Bruijn <willemb@xxxxxxxxxx> > > I really only suggested making this a new flag, not the main idea of > filtering. You provided a good alternative solution, so I was trying to give enough credit for your help and guidance :) > > +SOF_TIMESTAMPING_OPT_RX_FILTER: > > + Filter out spurious receive timestamps: report a receive timestamp > > + only if the matching timestamp generation flag is enabled. > > + > > + Receive timestamps are generated early in the ingress path, before a > > + packet's destination socket is known. If any socket enables receive > > + timestamps, packets for all socket will receive timestamped packets. > > nit: s/packets for all socket/all sockets/ > > My error in my suggestion. > > Not important enough to respin. Got it. Thanks, Jason