From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mail.toke.dk (Postfix) with ESMTPS id 6D12A9FE0DD for ; Fri, 14 Apr 2023 18:38:50 +0200 (CEST) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=Mq0KysC5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1681490329; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RQ7sgqQDmbwnKclLYwzzFoBdsimrT7SdVshCZK2WEYc=; b=Mq0KysC549yyMGNvMHvLvSvf4WR/5NT07xkesiJ9kNadgCFvdQgmf3ToOZzQk3F0IGjOio iPm9gPz5iYG5dpHvBdQCveeoHOSZN55GlKI4IrhAJE4iXrl4ND1jciE7YrpbBLzc0sw+n0 QVrNh3qb0fkYFrsmcha0NBttoiS4u5s= Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-586-zZT4R3VBOOyljRIx78g42g-1; Fri, 14 Apr 2023 12:38:46 -0400 X-MC-Unique: zZT4R3VBOOyljRIx78g42g-1 Received: by mail-ed1-f69.google.com with SMTP id k24-20020a508ad8000000b005068d942d3fso249816edk.2 for ; Fri, 14 Apr 2023 09:38:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681490325; x=1684082325; h=content-transfer-encoding:in-reply-to:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=RQ7sgqQDmbwnKclLYwzzFoBdsimrT7SdVshCZK2WEYc=; b=WWvI9s3wu9A++QiOPZszTLXceI+R+ou/2YsX2m44VWq666ksFYZiag68w9T7fQUhHX 2TJ+foDFqJ2N0rASpROPB6Kl1ZxbL+TDUhMSFeNg15zbqKy2GsROf/H1b2bZhuYokq7m wZFxA/7nUkKPDxEZymgKoh+wDUKONbfuCUtxxYs/y7sQv2LMI6I7YzXccMNE5NQsn/vK VCi1J46XQjfrXvm6wZY8CstV8lnqg8LNmPPjBqoVdAWSnrryS+I5iFG1gQGffTFeSgYF N8Uoh0+kIJMFlNE8MR+5ETw3K10ciMVhYSu/McUXxk+6y2fC53m3Z1XW+cAAY9fhYJ2Z B6oQ== X-Gm-Message-State: AAQBX9cFHsbENDvbPLlVK7tA4vNEh82fDLM8kqeQA8IEIjsYr1Nw/Ax2 mb06kMPsAAb2f6tq7LDNN94mY4colJn55b7y4sWMTW2AuDIuxLrcozh9RyfQCYNotHpmAD6MPtb b+DfhjAZaMUbgRAVCzUBt X-Received: by 2002:a17:906:4d1:b0:94e:8aeb:f8f3 with SMTP id g17-20020a17090604d100b0094e8aebf8f3mr7484937eja.57.1681490324939; Fri, 14 Apr 2023 09:38:44 -0700 (PDT) X-Google-Smtp-Source: AKy350ayugk3Xrac/spJG74Sa/J9mNGI+/Fz+UylpmqnwMJbWMwuvI3GN4RYzod8i4kv0xVxOUhMqQ== X-Received: by 2002:a17:906:4d1:b0:94e:8aeb:f8f3 with SMTP id g17-20020a17090604d100b0094e8aebf8f3mr7484919eja.57.1681490324603; Fri, 14 Apr 2023 09:38:44 -0700 (PDT) Received: from [192.168.42.222] (194-45-78-10.static.kviknet.net. [194.45.78.10]) by smtp.gmail.com with ESMTPSA id pg16-20020a170907205000b0094a85f6074bsm2649346ejb.33.2023.04.14.09.38.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Apr 2023 09:38:44 -0700 (PDT) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Message-ID: Date: Fri, 14 Apr 2023 18:38:42 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 To: Song Yoong Siang , Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Maxime Coquelin , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Alexander Duyck , Ong Boon Leong , Jacob Keller References: <20230414052651.1871424-1-yoong.siang.song@intel.com> <20230414052651.1871424-3-yoong.siang.song@intel.com> In-Reply-To: <20230414052651.1871424-3-yoong.siang.song@intel.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Message-ID-Hash: A4WPKTLZ2RAK4DTE6Q7OFSFDCYRWSMZL X-Message-ID-Hash: A4WPKTLZ2RAK4DTE6Q7OFSFDCYRWSMZL X-MailFrom: jbrouer@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: brouer@redhat.com, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, xdp-hints@xdp-project.net X-Mailman-Version: 3.3.8 Precedence: list Subject: [xdp-hints] Re: [PATCH net-next v5 2/3] net: stmmac: add Rx HWTS metadata to XDP receive pkt List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On 14/04/2023 07.26, Song Yoong Siang wrote: > Add receive hardware timestamp metadata support via kfunc to XDP receive > packets. > > Suggested-by: Stanislav Fomichev > Signed-off-by: Song Yoong Siang > Acked-by: Stanislav Fomichev > --- > drivers/net/ethernet/stmicro/stmmac/stmmac.h | 3 ++ > .../net/ethernet/stmicro/stmmac/stmmac_main.c | 40 ++++++++++++++++++- > 2 files changed, 42 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h > index ac8ccf851708..826ac0ec88c6 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h > @@ -94,6 +94,9 @@ struct stmmac_rx_buffer { > > struct stmmac_xdp_buff { > struct xdp_buff xdp; > + struct stmmac_priv *priv; > + struct dma_desc *p; > + struct dma_desc *np; Hmm, I don't like the naming of the descriptors as "p" and "np". If you insist on this naming, at least we need comments describing that this is. Does "desc" and "ndesc" make sense? (where "n" means "next") > }; > > struct stmmac_rx_queue { > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > index 10b9f8912bb2..74f78e5537a3 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -5313,10 +5313,15 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) > > xdp_init_buff(&ctx.xdp, buf_sz, &rx_q->xdp_rxq); > xdp_prepare_buff(&ctx.xdp, page_address(buf->page), > - buf->page_offset, buf1_len, false); > + buf->page_offset, buf1_len, true); > > pre_len = ctx.xdp.data_end - ctx.xdp.data_hard_start - > buf->page_offset; > + > + ctx.priv = priv; > + ctx.p = p; > + ctx.np = np; > + > skb = stmmac_xdp_run_prog(priv, &ctx.xdp); > /* Due xdp_adjust_tail: DMA sync for_device > * cover max len CPU touch > @@ -7060,6 +7065,37 @@ void stmmac_fpe_handshake(struct stmmac_priv *priv, bool enable) > } > } > > +static int stmmac_xdp_rx_timestamp(const struct xdp_md *_ctx, u64 *timestamp) > +{ > + const struct stmmac_xdp_buff *ctx = (void *)_ctx; > + struct stmmac_priv *priv = ctx->priv; > + struct dma_desc *desc = ctx->p; > + struct dma_desc *np = ctx->np; > + struct dma_desc *p = ctx->p; > + u64 ns = 0; > + > + if (!priv->hwts_rx_en) > + return -ENODATA; > + > + /* For GMAC4, the valid timestamp is from CTX next desc. */ > + if (priv->plat->has_gmac4 || priv->plat->has_xgmac) > + desc = np; > + > + /* Check if timestamp is available */ > + if (stmmac_get_rx_timestamp_status(priv, p, np, priv->adv_ts)) { > + stmmac_get_timestamp(priv, desc, priv->adv_ts, &ns); > + ns -= priv->plat->cdc_error_adj; > + *timestamp = ns_to_ktime(ns); > + return 0; > + } > + > + return -ENODATA; > +} > + > +static const struct xdp_metadata_ops stmmac_xdp_metadata_ops = { > + .xmo_rx_timestamp = stmmac_xdp_rx_timestamp, > +}; > + > /** > * stmmac_dvr_probe > * @device: device pointer > @@ -7167,6 +7203,8 @@ int stmmac_dvr_probe(struct device *device, > > ndev->netdev_ops = &stmmac_netdev_ops; > > + ndev->xdp_metadata_ops = &stmmac_xdp_metadata_ops; > + > ndev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | > NETIF_F_RXCSUM; > ndev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |