From: Stanislav Fomichev <sdf@google.com>
To: Jesper Dangaard Brouer <hawk@kernel.org>
Cc: bpf@vger.kernel.org, ast@kernel.org, daniel@iogearbox.net,
andrii@kernel.org, martin.lau@linux.dev, song@kernel.org,
yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org,
haoluo@google.com, jolsa@kernel.org, kuba@kernel.org,
toke@kernel.org, willemb@google.com, dsahern@kernel.org,
magnus.karlsson@intel.com, bjorn@kernel.org,
maciej.fijalkowski@intel.com, yoong.siang.song@intel.com,
netdev@vger.kernel.org, xdp-hints@xdp-project.net
Subject: [xdp-hints] Re: [PATCH bpf-next v5 02/13] xsk: Add TX timestamp and TX checksum offload support
Date: Mon, 13 Nov 2023 06:10:45 -0800 [thread overview]
Message-ID: <CAKH8qBtiv8ArtbbMW9+c75y+NfkX-Tk-rcPuHBVdKDMmmFdtdA@mail.gmail.com> (raw)
In-Reply-To: <c9bfe356-1942-4e49-b025-115faeec39dd@kernel.org>
On Mon, Nov 13, 2023 at 5:16 AM Jesper Dangaard Brouer <hawk@kernel.org> wrote:
>
>
>
> On 11/2/23 23:58, Stanislav Fomichev wrote:
> > diff --git a/include/uapi/linux/if_xdp.h b/include/uapi/linux/if_xdp.h
> > index 2ecf79282c26..b0ee7ad19b51 100644
> > --- a/include/uapi/linux/if_xdp.h
> > +++ b/include/uapi/linux/if_xdp.h
> > @@ -106,6 +106,41 @@ struct xdp_options {
> > #define XSK_UNALIGNED_BUF_ADDR_MASK \
> > ((1ULL << XSK_UNALIGNED_BUF_OFFSET_SHIFT) - 1)
> >
> > +/* Request transmit timestamp. Upon completion, put it into tx_timestamp
> > + * field of struct xsk_tx_metadata.
> > + */
> > +#define XDP_TXMD_FLAGS_TIMESTAMP (1 << 0)
> > +
> > +/* Request transmit checksum offload. Checksum start position and offset
> > + * are communicated via csum_start and csum_offset fields of struct
> > + * xsk_tx_metadata.
> > + */
> > +#define XDP_TXMD_FLAGS_CHECKSUM (1 << 1)
> > +
> > +/* AF_XDP offloads request. 'request' union member is consumed by the driver
> > + * when the packet is being transmitted. 'completion' union member is
> > + * filled by the driver when the transmit completion arrives.
> > + */
> > +struct xsk_tx_metadata {
> > + union {
> > + struct {
> > + __u32 flags;
> > +
> > + /* XDP_TXMD_FLAGS_CHECKSUM */
> > +
> > + /* Offset from desc->addr where checksumming should start. */
> > + __u16 csum_start;
> > + /* Offset from csum_start where checksum should be stored. */
> > + __u16 csum_offset;
> > + } request;
> > +
> > + struct {
> > + /* XDP_TXMD_FLAGS_TIMESTAMP */
> > + __u64 tx_timestamp;
> > + } completion;
> > + };
> > +};
>
> This looks wrong to me. It looks like member @flags is not avail at
> completion time. At completion time, I assume we also want to know if
> someone requested to get the timestamp for this packet (else we could
> read garbage).
I've moved the parts that are preserved across tx and tx completion
into xsk_tx_metadata_compl.
This is to address Magnus/Maciej feedback where userspace might race
with the kernel.
See: https://lore.kernel.org/bpf/ZNoJenzKXW5QSR3E@boxer/
> Another thing (I've raised this before): It would be really practical to
> store an u64 opaque value at TX and then read it at Completion time.
> One use-case is a forwarding application storing HW RX-time and
> comparing this to TX completion time to deduce the time spend processing
> the packet.
This can be another member, right? But note that extending
xsk_tx_metadata_compl might be a bit complicated because drivers have
to carry this info somewhere. So we have to balance the amount of
passed data between the tx and the completion.
next prev parent reply other threads:[~2023-11-13 14:11 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-02 22:58 [xdp-hints] [PATCH bpf-next v5 00/13] xsk: TX metadata Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 01/13] xsk: Support tx_metadata_len Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 02/13] xsk: Add TX timestamp and TX checksum offload support Stanislav Fomichev
2023-11-13 13:16 ` [xdp-hints] " Jesper Dangaard Brouer
2023-11-13 14:10 ` Stanislav Fomichev [this message]
2023-11-13 16:29 ` Jesper Dangaard Brouer
2023-11-13 17:02 ` Stanislav Fomichev
2023-11-15 10:05 ` Jesper Dangaard Brouer
2023-11-15 13:37 ` Stanislav Fomichev
2023-11-16 14:30 ` Jesper Dangaard Brouer
2023-11-20 20:45 ` Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 03/13] tools: ynl: Print xsk-features from the sample Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 04/13] net/mlx5e: Implement AF_XDP TX timestamp and checksum offload Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 05/13] net: stmmac: Add Tx HWTS support to XDP ZC Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 06/13] xsk: Document tx_metadata_len layout Stanislav Fomichev
2023-11-05 12:45 ` [xdp-hints] " Simon Horman
2023-11-06 16:47 ` Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 07/13] xsk: Validate xsk_tx_metadata flags Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 08/13] xsk: Add option to calculate TX checksum in SW Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 09/13] selftests/xsk: Support tx_metadata_len Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 10/13] selftests/bpf: Add csum helpers Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 11/13] selftests/bpf: Add TX side to xdp_metadata Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 12/13] selftests/bpf: Convert xdp_hw_metadata to XDP_USE_NEED_WAKEUP Stanislav Fomichev
2023-11-02 22:58 ` [xdp-hints] [PATCH bpf-next v5 13/13] selftests/bpf: Add TX side to xdp_hw_metadata Stanislav Fomichev
2023-11-06 23:31 ` [xdp-hints] Re: [PATCH bpf-next v5 00/13] xsk: TX metadata Jakub Kicinski
2023-11-09 18:03 ` Alexei Starovoitov
2023-11-09 18:07 ` Stanislav Fomichev
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
List information: https://lists.xdp-project.net/postorius/lists/xdp-hints.xdp-project.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAKH8qBtiv8ArtbbMW9+c75y+NfkX-Tk-rcPuHBVdKDMmmFdtdA@mail.gmail.com \
--to=sdf@google.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bjorn@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=dsahern@kernel.org \
--cc=haoluo@google.com \
--cc=hawk@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=kuba@kernel.org \
--cc=maciej.fijalkowski@intel.com \
--cc=magnus.karlsson@intel.com \
--cc=martin.lau@linux.dev \
--cc=netdev@vger.kernel.org \
--cc=song@kernel.org \
--cc=toke@kernel.org \
--cc=willemb@google.com \
--cc=xdp-hints@xdp-project.net \
--cc=yhs@fb.com \
--cc=yoong.siang.song@intel.com \
/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