From: Jason Xing <kerneljasonxing@gmail.com>
To: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Cc: Martin KaFai Lau <martin.lau@linux.dev>,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, dsahern@kernel.org, willemb@google.com,
ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev,
john.fastabend@gmail.com, kpsingh@kernel.org, sdf@fomichev.me,
haoluo@google.com, jolsa@kernel.org, horms@kernel.org,
bpf@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH bpf-next v11 08/12] bpf: add BPF_SOCK_OPS_TS_HW_OPT_CB callback
Date: Tue, 18 Feb 2025 12:51:55 +0800 [thread overview]
Message-ID: <CAL+tcoDufxA0KvLPBf37f=MGUnL0YWSLsT+v9dFEa=0tTrTDqA@mail.gmail.com> (raw)
In-Reply-To: <67b3dac192f76_c0e25294c8@willemb.c.googlers.com.notmuch>
On Tue, Feb 18, 2025 at 8:56 AM Willem de Bruijn
<willemdebruijn.kernel@gmail.com> wrote:
>
> Jason Xing wrote:
> > On Sun, Feb 16, 2025 at 10:45 PM Jason Xing <kerneljasonxing@gmail.com> wrote:
> > >
> > > On Sun, Feb 16, 2025 at 10:36 PM Willem de Bruijn
> > > <willemdebruijn.kernel@gmail.com> wrote:
> > > >
> > > > Jason Xing wrote:
> > > > > On Sun, Feb 16, 2025 at 6:58 AM Martin KaFai Lau <martin.lau@linux.dev> wrote:
> > > > > >
> > > > > > On 2/15/25 2:23 PM, Jason Xing wrote:
> > > > > > > On Sun, Feb 16, 2025 at 2:08 AM Willem de Bruijn
> > > > > > > <willemdebruijn.kernel@gmail.com> wrote:
> > > > > > >>
> > > > > > >> Jason Xing wrote:
> > > > > > >>> On Sat, Feb 15, 2025 at 11:06 PM Willem de Bruijn
> > > > > > >>> <willemdebruijn.kernel@gmail.com> wrote:
> > > > > > >>>>
> > > > > > >>>> Jason Xing wrote:
> > > > > > >>>>> Support hw SCM_TSTAMP_SND case for bpf timestamping.
> > > > > > >>>>>
> > > > > > >>>>> Add a new sock_ops callback, BPF_SOCK_OPS_TS_HW_OPT_CB. This
> > > > > > >>>>> callback will occur at the same timestamping point as the user
> > > > > > >>>>> space's hardware SCM_TSTAMP_SND. The BPF program can use it to
> > > > > > >>>>> get the same SCM_TSTAMP_SND timestamp without modifying the
> > > > > > >>>>> user-space application.
> > > > > > >>>>>
> > > > > > >>>>> To avoid increasing the code complexity, replace SKBTX_HW_TSTAMP
> > > > > > >>>>> with SKBTX_HW_TSTAMP_NOBPF instead of changing numerous callers
> > > > > > >>>>> from driver side using SKBTX_HW_TSTAMP. The new definition of
> > > > > > >>>>> SKBTX_HW_TSTAMP means the combination tests of socket timestamping
> > > > > > >>>>> and bpf timestamping. After this patch, drivers can work under the
> > > > > > >>>>> bpf timestamping.
> > > > > > >>>>>
> > > > > > >>>>> Considering some drivers doesn't assign the skb with hardware
> > > > > > >>>>> timestamp,
> > > > > > >>>>
> > > > > > >>>> This is not for a real technical limitation, like the skb perhaps
> > > > > > >>>> being cloned or shared?
> > > > > > >>>
> > > > > > >>> Agreed on this point. I'm kind of familiar with I40E, so I dare to say
> > > > > > >>> the reason why it doesn't assign the hwtstamp is because the skb will
> > > > > > >>> soon be destroyed, that is to say, it's pointless to assign the
> > > > > > >>> timestamp.
> > > > > > >>
> > > > > > >> Makes sense.
> > > > > > >>
> > > > > > >> But that does not ensure that the skb is exclusively owned. Nor that
> > > > > > >> the same is true for all drivers using this API (which is not small,
> > > > > > >> but small enough to manually review if need be).
> > > > > > >>
> > > > > > >> The first two examples I happened to look at, i40e and bnx2x, both use
> > > > > > >> skb_get() to get a non-exclusive skb reference for their ptp_tx_skb.
> > > > > >
> > > > > > I think the existing __skb_tstamp_tx() function is also assigning to
> > > > > > skb_hwtstamps(skb). The skb may be cloned from the orig_skb first, but they
> > > > > > still share the same shinfo. My understanding is that this patch is assigning to
> > > > > > the shinfo earlier, so it should not have changed the driver's expectation on
> > > > > > the skb_hwtstamps(skb) after calling __skb_tstamp_tx(). If there are drivers
> > > > > > assuming exclusive access to the skb_hwtstamps(skb), probably it is something
> > > > > > that needs to be addressed regardless and should not be the common case?
> > > > >
> > > > > Right, it's also what I was trying to say but missed. Thanks for the
> > > > > supplementary info:)
> > > >
> > > > That existing behavior looks dodgy then, too.
> > > >
> > > > I don't have time to look into it deeply right now. But it seems to go
> > > > back all the way to the introduction of hw timestamping in commit
> > > > ac45f602ee3d in 2009.
> > >
> > > Right. And hardware timestamping has been used for many years, I presume.
> > >
> > > >
> > > > I can see how it works in that nothing else holding a clone will
> > > > likely have a reason to touch those fields. But that does not make it
> > > > correct.
> > > >
> > > > Your point that the new code is no worse than today probably is true.
> > >
> > > Right.
> > >
> > > > But when we spot something we prefer to fix it probably. Will need a
> > > > deeper look..
> > >
> > > Got it. I added it to my to-do list. If you don't mind, I plan to take
> > > a deep look in March and then get back to you because recently I'm
> > > occupied by many things. I need to study some of the drivers that
> > > don't use skb_get() there.
> > >
> >
> > Oh, sorry, I forgot to ask: what should we do next regarding this series ?
>
> Please resubmit with the two remaining small issues addressed:
>
> - Martin's point about moving code to patch 8
> - Remove unused variable
Sure, the v12 is coming soon :)
Thanks,
Jason
next prev parent reply other threads:[~2025-02-18 4:52 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-14 1:00 [PATCH bpf-next v11 00/12] net-timestamp: bpf extension to equip applications transparently Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 01/12] bpf: add networking timestamping support to bpf_get/setsockopt() Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 02/12] bpf: prepare the sock_ops ctx and call bpf prog for TX timestamping Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 03/12] bpf: prevent unsafe access to the sock fields in the BPF timestamping callback Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 04/12] bpf: disable unsafe helpers in TX timestamping callbacks Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 05/12] net-timestamp: prepare for isolating two modes of SO_TIMESTAMPING Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 06/12] bpf: add BPF_SOCK_OPS_TS_SCHED_OPT_CB callback Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 07/12] bpf: add BPF_SOCK_OPS_TS_SW_OPT_CB callback Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 08/12] bpf: add BPF_SOCK_OPS_TS_HW_OPT_CB callback Jason Xing
2025-02-15 15:06 ` Willem de Bruijn
2025-02-15 16:20 ` Jason Xing
2025-02-15 18:08 ` Willem de Bruijn
2025-02-15 22:23 ` Jason Xing
2025-02-15 22:58 ` Martin KaFai Lau
2025-02-15 23:10 ` Jason Xing
2025-02-16 14:36 ` Willem de Bruijn
2025-02-16 14:45 ` Jason Xing
2025-02-16 14:48 ` Jason Xing
2025-02-16 16:17 ` Jason Xing
2025-02-18 0:56 ` Willem de Bruijn
2025-02-18 4:51 ` Jason Xing [this message]
2025-02-18 0:55 ` Willem de Bruijn
2025-02-14 1:00 ` [PATCH bpf-next v11 09/12] bpf: add BPF_SOCK_OPS_TS_ACK_OPT_CB callback Jason Xing
2025-02-14 20:33 ` Martin KaFai Lau
2025-02-14 23:16 ` Jason Xing
2025-02-14 23:41 ` Martin KaFai Lau
2025-02-15 15:16 ` Willem de Bruijn
2025-02-14 1:00 ` [PATCH bpf-next v11 10/12] bpf: add BPF_SOCK_OPS_TS_SND_CB callback Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 11/12] bpf: support selective sampling for bpf timestamping Jason Xing
2025-02-15 15:10 ` Willem de Bruijn
2025-02-15 16:17 ` Jason Xing
2025-02-15 18:01 ` Willem de Bruijn
2025-02-15 21:11 ` Jason Xing
2025-02-14 1:00 ` [PATCH bpf-next v11 12/12] selftests/bpf: add simple bpf tests in the tx path for timestamping feature Jason Xing
2025-02-14 20:40 ` Martin KaFai Lau
2025-02-14 23:18 ` Jason Xing
2025-02-15 15:15 ` Willem de Bruijn
2025-02-15 16:17 ` Jason Xing
2025-02-15 18:01 ` Willem de Bruijn
2025-02-14 20:42 ` [PATCH bpf-next v11 00/12] net-timestamp: bpf extension to equip applications transparently Martin KaFai Lau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAL+tcoDufxA0KvLPBf37f=MGUnL0YWSLsT+v9dFEa=0tTrTDqA@mail.gmail.com' \
--to=kerneljasonxing@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=eddyz87@gmail.com \
--cc=edumazet@google.com \
--cc=haoluo@google.com \
--cc=horms@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=kuba@kernel.org \
--cc=martin.lau@linux.dev \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
--cc=song@kernel.org \
--cc=willemb@google.com \
--cc=willemdebruijn.kernel@gmail.com \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).