From patchwork Wed Apr 12 09:42:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Yoong Siang X-Patchwork-Id: 82357 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp202308vqo; Wed, 12 Apr 2023 03:02:14 -0700 (PDT) X-Google-Smtp-Source: AKy350YzfODw2kXeq1irt7VtOpQrxb3Z6lXthNUGayc5hXThYtRBATRcPwYe9JhNuuWbjOXg6iX8 X-Received: by 2002:a17:906:6c93:b0:94a:5503:e919 with SMTP id s19-20020a1709066c9300b0094a5503e919mr12409912ejr.35.1681293733743; Wed, 12 Apr 2023 03:02:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681293733; cv=none; d=google.com; s=arc-20160816; b=rodx5WMfxjDnL/MCf2sN7jx5BxONzKtLjT8dP87GC/Z35DBDe+9Zp4UXNg8NRcdkYw +YlJUq0tQVr6pTH+bkMaImHonSnRZ8sI9a+qJpNqyoirqEvetj+P2TZ0ho9Zk2DRx+1Y VG6Z9Qf7JRGZbs/FM8qLo4rBGNkJ/rGe7iIvJeruYsRwNIH75qH3xD7AqMviIah4+rAt 13Rnz6YJeZd6m3iGLTq/Yjgnj1j9CWFIrVJbA3P3Y+EJTfjLpCWBa/WzY9Tcy80xIR8N PGeMrAoQivlEpXvyVzCiaDHZAlk/b/0T0Qu9w7ATq9/4NPc07ckpanE/4pmnv5dyLSCs IEBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=/Y6eWEc5CsYDgq9fhIp3p8rcHVvYty3BqNJISl8jxOQ=; b=N9WtInt6+ilYvyYbiY2IrRPqz5LlUsLUHRDqpmTqWT70qQx1daLXuHNyHeXQnQcdX2 1L5C8cTJWLgcK/DYOkrQgh1kdJlVEmawaKOGxNug87nExs+jxo9dWORYcFoeADa5vzQC xC5Qy51VBHpcocWBtRkIUbtHECLSMK1w9yZgpmZoAswN5txFKR4F4FIfG/54TXXFXDq/ NlVGL1qfp3q/4dgBqJ7H1StjoMyL49/aG/HOjnAYefmbbQO6a3TNb4Mena7O+CxPXpX1 UenvkC9NAm0bq0wNG7/Dcx3UPD8SKpREc0+z3UvQ4L85vgJiuC3ZGAMEpvThfT4MBnG3 9vsg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="mZmuqB3/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gb4-20020a170907960400b00948aae5e3d2si15654171ejc.122.2023.04.12.03.01.49; Wed, 12 Apr 2023 03:02:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="mZmuqB3/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231622AbjDLJna (ORCPT + 99 others); Wed, 12 Apr 2023 05:43:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231452AbjDLJn2 (ORCPT ); Wed, 12 Apr 2023 05:43:28 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A54A8269F; Wed, 12 Apr 2023 02:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681292601; x=1712828601; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=M9jRW3+HhGvO5QbLOE/WrixZZSlVBopsf2U3mliQfB8=; b=mZmuqB3/4pXj0z9JgTjoljXrrWzUkiKI3K7QhvU9w5fgGxytbB/zGBv2 YiN2+x50xz24/O3H15kvuIo16rvL4G+b0DwUPwV+9G40OPjA5qi1umg9k YfVjmUugvRbipHEYEHVGrVyahiZsst1J4sOvjhFfJng7XPrDFYzeN2aaL 56GIIoVK9qASIGBm4kHf6Av6Zj8i43kdIE/dUt6+TEMeGTOzGHLfqLqZ9 q7ey6Sw+MxK1OldNrSFg9IIXwi4mh0Y7o57S9IRf8v6Lq+iIMx0QZ/+VE iD1f2REn6UB87FXMsWreZ0CX2CaEawwZ2pEwJWcEm8yPIunTlK/V2rx3s w==; X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="346526354" X-IronPort-AV: E=Sophos;i="5.98,338,1673942400"; d="scan'208";a="346526354" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 02:43:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="682430920" X-IronPort-AV: E=Sophos;i="5.98,338,1673942400"; d="scan'208";a="682430920" Received: from p12ill20yoongsia.png.intel.com ([10.88.227.28]) by orsmga007.jf.intel.com with ESMTP; 12 Apr 2023 02:43:15 -0700 From: Song Yoong Siang To: 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 Cc: 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, Song Yoong Siang Subject: [PATCH net-next v3 1/4] net: stmmac: restructure Rx hardware timestamping function Date: Wed, 12 Apr 2023 17:42:32 +0800 Message-Id: <20230412094235.589089-2-yoong.siang.song@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230412094235.589089-1-yoong.siang.song@intel.com> References: <20230412094235.589089-1-yoong.siang.song@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762964258016952550?= X-GMAIL-MSGID: =?utf-8?q?1762964258016952550?= From: Ong Boon Leong Rearrange the function of getting Rx hardware timestamp for skb so that it can be reused for XDP later. Signed-off-by: Ong Boon Leong Signed-off-by: Song Yoong Siang Reviewed-by: Jacob Keller --- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 04fbb7770618..2cc6237a9c28 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -570,15 +570,14 @@ static void stmmac_get_tx_hwtstamp(struct stmmac_priv *priv, * @priv: driver private structure * @p : descriptor pointer * @np : next descriptor pointer - * @skb : the socket buffer + * @hwtstamp : hardware timestamp * Description : * This function will read received packet's timestamp from the descriptor * and pass it to stack. It also perform some sanity checks. */ static void stmmac_get_rx_hwtstamp(struct stmmac_priv *priv, struct dma_desc *p, - struct dma_desc *np, struct sk_buff *skb) + struct dma_desc *np, ktime_t *hwtstamp) { - struct skb_shared_hwtstamps *shhwtstamp = NULL; struct dma_desc *desc = p; u64 ns = 0; @@ -595,9 +594,7 @@ static void stmmac_get_rx_hwtstamp(struct stmmac_priv *priv, struct dma_desc *p, ns -= priv->plat->cdc_error_adj; netdev_dbg(priv->dev, "get valid RX hw timestamp %llu\n", ns); - shhwtstamp = skb_hwtstamps(skb); - memset(shhwtstamp, 0, sizeof(struct skb_shared_hwtstamps)); - shhwtstamp->hwtstamp = ns_to_ktime(ns); + *hwtstamp = ns_to_ktime(ns); } else { netdev_dbg(priv->dev, "cannot get RX hw timestamp\n"); } @@ -4909,6 +4906,7 @@ static void stmmac_dispatch_skb_zc(struct stmmac_priv *priv, u32 queue, struct xdp_buff *xdp) { struct stmmac_channel *ch = &priv->channel[queue]; + struct skb_shared_hwtstamps *shhwtstamp = NULL; unsigned int len = xdp->data_end - xdp->data; enum pkt_hash_types hash_type; int coe = priv->hw->rx_csum; @@ -4921,7 +4919,10 @@ static void stmmac_dispatch_skb_zc(struct stmmac_priv *priv, u32 queue, return; } - stmmac_get_rx_hwtstamp(priv, p, np, skb); + shhwtstamp = skb_hwtstamps(skb); + memset(shhwtstamp, 0, sizeof(struct skb_shared_hwtstamps)); + stmmac_get_rx_hwtstamp(priv, p, np, &shhwtstamp->hwtstamp); + stmmac_rx_vlan(priv->dev, skb); skb->protocol = eth_type_trans(skb, priv->dev); @@ -5213,6 +5214,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) rx_q->dma_rx_phy, desc_size); } while (count < limit) { + struct skb_shared_hwtstamps *shhwtstamp = NULL; unsigned int buf1_len = 0, buf2_len = 0; enum pkt_hash_types hash_type; struct stmmac_rx_buffer *buf; @@ -5407,7 +5409,10 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) /* Got entire packet into SKB. Finish it. */ - stmmac_get_rx_hwtstamp(priv, p, np, skb); + shhwtstamp = skb_hwtstamps(skb); + memset(shhwtstamp, 0, sizeof(struct skb_shared_hwtstamps)); + stmmac_get_rx_hwtstamp(priv, p, np, &shhwtstamp->hwtstamp); + stmmac_rx_vlan(priv->dev, skb); skb->protocol = eth_type_trans(skb, priv->dev); From patchwork Wed Apr 12 09:42:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Yoong Siang X-Patchwork-Id: 82358 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp202333vqo; Wed, 12 Apr 2023 03:02:16 -0700 (PDT) X-Google-Smtp-Source: AKy350ZlCX7SR1erYmWuxEQOOBcGjnS3h8Khtks51ANHudHeF/0VZA3foCF/7A2QuPTk9VpDR92l X-Received: by 2002:a17:906:fe4b:b0:94a:6b4b:6b52 with SMTP id wz11-20020a170906fe4b00b0094a6b4b6b52mr10247891ejb.76.1681293735985; Wed, 12 Apr 2023 03:02:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681293735; cv=none; d=google.com; s=arc-20160816; b=tQAeInAZ4o5Zum+Qy+ZyaaaDzWUPJq/RKnbnikY+7hYRcPfN6ZR5ZzYbFSxRyU0Wjg OCdd7CFP3t3eDvD2Gt1Auu4+2QOFpKOCsf24fF4J+kWHFTqksWxfmWgNUDsMMy7ASbtj ALbckBrf6SZrfisyzZLZTX1Zkg0SGh/XSS1xV1LC2j5iJU0fsfxEqyf4u4TmosRIdLEq 4BFJATsUoa/KQrgh1BdGsjLbc98vTWmh56cKvWxaUyCoBSoQZF7bIm0HD8d70owEkVHc JlVFUQaFgR/oMl4M64WXIO/4mMh3aotLokP3IGME9Q/Opmb5W5LxALZQm25P4kZ8jfDi Ht1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=QCx9hgLcSgp3SXlERbpYtGZXuDz2eKYdWPPdHAse8Og=; b=vVJKKtcF1EFZt4jooJrtMzMgNQVRllbzlOIMm25PvT1NProRiGfNb+9b1m5EtJo5hN 1wOprXLdNQaRaQZlqcW4hbYqIHpr9DiPF4A41PiRgbE4pPzA1HveDMMijvkdbICng/tc sJ57THptx4nX5RBOaOe+QLXRuxPBBLQOV7hUfCINELeVDJqczpfOpUN8KKqKg7ReoGl1 KMagAsRsx53O3s+QZi3/TEAmXonOLHgQYlhlOvVbw1c0r51vhlilAJChsyPEx0sH/fzT virIVRJDN7uuybLCFdx9pJBW7vziEEgH+ksPvjZHyBodL4V46sa+dRWahCZNRDoMUltc CnJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=beua4jA4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z18-20020a1709063ad200b00947bf51effbsi11324938ejd.580.2023.04.12.03.01.52; Wed, 12 Apr 2023 03:02:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=beua4jA4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231602AbjDLJnr (ORCPT + 99 others); Wed, 12 Apr 2023 05:43:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231235AbjDLJnd (ORCPT ); Wed, 12 Apr 2023 05:43:33 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2607D61A7; Wed, 12 Apr 2023 02:43:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681292609; x=1712828609; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Cpc+vWCiVUmsOySpGlMg+6/vKyP6bVmouafrvWfaSpU=; b=beua4jA4s1Mf/lsblZ2BXvVEpuIZ72Q4iiYBAn+CK52WbIkCoTQ9nWQn g7qvCEdxgD/pmITVGras+3zB+JnQ9ApuZagzj7ogkZc/I3lBAwNgapMfU JWl3ibdjC98EUMEMRg3vPv8YU3LXs20YZ0wvhzn6mSYK6gk3zUHiRtVMC 0PL1BLexkF+siEVWTy3qnqF8gSRtFZY7TU/lOD3f7GqXL3m5SgzVy60o6 I6pwslO0cn2bBfkfHmfhmOLtnb1BCApvgk8FYbdWwgt9+oAg7vdbIcjhJ SZhYxDZ+9iUl/bI/kfa1pl3lsC/uT7gDS6tQYfvcArIgTFW3rdXNRJwjF A==; X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="346526388" X-IronPort-AV: E=Sophos;i="5.98,338,1673942400"; d="scan'208";a="346526388" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 02:43:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="682430937" X-IronPort-AV: E=Sophos;i="5.98,338,1673942400"; d="scan'208";a="682430937" Received: from p12ill20yoongsia.png.intel.com ([10.88.227.28]) by orsmga007.jf.intel.com with ESMTP; 12 Apr 2023 02:43:22 -0700 From: Song Yoong Siang To: 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 Cc: 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, Song Yoong Siang Subject: [PATCH net-next v3 2/4] net: stmmac: introduce wrapper for struct xdp_buff Date: Wed, 12 Apr 2023 17:42:33 +0800 Message-Id: <20230412094235.589089-3-yoong.siang.song@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230412094235.589089-1-yoong.siang.song@intel.com> References: <20230412094235.589089-1-yoong.siang.song@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762964260706054399?= X-GMAIL-MSGID: =?utf-8?q?1762964260706054399?= Introduce struct stmmac_xdp_buff as a preparation to support XDP Rx metadata via kfuncs. Signed-off-by: Song Yoong Siang Reviewed-by: Jacob Keller --- drivers/net/ethernet/stmicro/stmmac/stmmac.h | 4 ++++ .../net/ethernet/stmicro/stmmac/stmmac_main.c | 18 +++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h index 3d15e1e92e18..ac8ccf851708 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h @@ -92,6 +92,10 @@ struct stmmac_rx_buffer { dma_addr_t sec_addr; }; +struct stmmac_xdp_buff { + struct xdp_buff xdp; +}; + struct stmmac_rx_queue { u32 rx_count_frames; u32 queue_index; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 2cc6237a9c28..f7bbdf04d20c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -5189,9 +5189,9 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) int status = 0, coe = priv->hw->rx_csum; unsigned int next_entry = rx_q->cur_rx; enum dma_data_direction dma_dir; + struct stmmac_xdp_buff ctx = {}; unsigned int desc_size; struct sk_buff *skb = NULL; - struct xdp_buff xdp; int xdp_status = 0; int buf_sz; @@ -5313,17 +5313,17 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) dma_sync_single_for_cpu(priv->device, buf->addr, buf1_len, dma_dir); - xdp_init_buff(&xdp, buf_sz, &rx_q->xdp_rxq); - xdp_prepare_buff(&xdp, page_address(buf->page), + 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); - pre_len = xdp.data_end - xdp.data_hard_start - + pre_len = ctx.xdp.data_end - ctx.xdp.data_hard_start - buf->page_offset; - skb = stmmac_xdp_run_prog(priv, &xdp); + skb = stmmac_xdp_run_prog(priv, &ctx.xdp); /* Due xdp_adjust_tail: DMA sync for_device * cover max len CPU touch */ - sync_len = xdp.data_end - xdp.data_hard_start - + sync_len = ctx.xdp.data_end - ctx.xdp.data_hard_start - buf->page_offset; sync_len = max(sync_len, pre_len); @@ -5333,7 +5333,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) if (xdp_res & STMMAC_XDP_CONSUMED) { page_pool_put_page(rx_q->page_pool, - virt_to_head_page(xdp.data), + virt_to_head_page(ctx.xdp.data), sync_len, true); buf->page = NULL; priv->dev->stats.rx_dropped++; @@ -5361,7 +5361,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) if (!skb) { /* XDP program may expand or reduce tail */ - buf1_len = xdp.data_end - xdp.data; + buf1_len = ctx.xdp.data_end - ctx.xdp.data; skb = napi_alloc_skb(&ch->rx_napi, buf1_len); if (!skb) { @@ -5371,7 +5371,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) } /* XDP program may adjust header */ - skb_copy_to_linear_data(skb, xdp.data, buf1_len); + skb_copy_to_linear_data(skb, ctx.xdp.data, buf1_len); skb_put(skb, buf1_len); /* Data payload copied into SKB, page ready for recycle */ From patchwork Wed Apr 12 09:42:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Yoong Siang X-Patchwork-Id: 82359 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp202466vqo; Wed, 12 Apr 2023 03:02:27 -0700 (PDT) X-Google-Smtp-Source: AKy350Z54OFQPVqAUo9Roaqf4r1tmmtyT6Bm5UKx2BwMZgHhp/t5sq35lcDLSds4VlUYI1VQ0LmQ X-Received: by 2002:a05:6402:489:b0:4fb:2296:30af with SMTP id k9-20020a056402048900b004fb229630afmr13862027edv.20.1681293747161; Wed, 12 Apr 2023 03:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681293747; cv=none; d=google.com; s=arc-20160816; b=CqJ5t+LuiEX0/stBI1J7K3nynED1KGTjzWlQp1nIokRtUntVCZH9ZzenBR190QDMO1 acAjNxqnfJwrMrHl/SQqkdfYCgcL425FoCF5t4aQtSxTN6HGIfJJXGsjUsKBMmdMiaxs a7O0T2wn390NR9aKmA8v/CD9idoL84hIm0THZy2IGeqHB55mbakOwFWdOUUIXyB2UfDs Y6+GB2jjZO0abMNYAYbO9Y+qdvWGn2rvvCaU7pLFnK0+IDDbp7scYRge0zRyeK95Y/Jc 7RHr/lyPjDbzYVi0g0XrM/uZLErwDbq2o2TkyzoxgewBX1h0B+bM/riOSowUq/mLhy1P wW3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=jYo017QjIxazGMHsmZKMLdqv8fXlOO9WGIDbRWqWgNs=; b=nHmpX6wyZL0ssNCVJrlB0iXuHjFYJ0T25nPSf+agBdhooVzVKJdFWwa3+u9EePfSrk JGCEoWeeEyUQSS7hco7Ld13c4U9zUH9t0McHoCugxypF2sVGsU5N7jlA8O8FcjN3ClkD gdIkBlJAfGdBHf/sRCOjX/xvo7xg1TxkynvRADd2sNJv9qmbGtmEcVX5iQVC0S/IUeiL F4ynhx94j6ELmRwuw9A1+JxB0/SJXG4voYtRvWBaySSS5tzh0qaLVhN6jflHEPsszHvF SL9EoeUhWHNxI0XiCF1pEKbG/Xw8XoBoQ0w6AL0Px45kYK3jEwWZbwOXgAqfzeMR/Jf8 4oaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BSyv0eOE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u8-20020a50eac8000000b0050229538ebcsi121509edp.509.2023.04.12.03.01.59; Wed, 12 Apr 2023 03:02:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BSyv0eOE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231652AbjDLJoB (ORCPT + 99 others); Wed, 12 Apr 2023 05:44:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59752 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231624AbjDLJns (ORCPT ); Wed, 12 Apr 2023 05:43:48 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF1278691; Wed, 12 Apr 2023 02:43:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681292616; x=1712828616; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mhGhk0aFNDU+nvi/Zr0WQsY6I/0lnGV4GKGpzNN0N7A=; b=BSyv0eOEt3UXL2jf3IBcc9FBTfPmmjHBAqOuptMPOHxhWNnDIp2NtxnW db7eNNM6PCOH+qhyAuaWJaY4ijjVtwlODFa+JnzFxnKwAitamWhTNS12Y QY7meXqSoJa1Yvtz0BKCsEAk/HVzpqk4Fz8yRnoA7DUrd7GVVWFaxoSBO mbRhoeEJaC271MpPNTeQSztZAOorXjeqfvYNsyR1ticWucFlpPdrImfON Ux5uWaazbC99GjMC57/N2sSpmBUhx6oJjB2DFoZWxQWZAmGjnD3h/LDaz YCHBtKUvmnAPeA9WoS9LCC6+9lgIJtaZLazPlAo21pyDsQ/OxAO1DHptm w==; X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="346526426" X-IronPort-AV: E=Sophos;i="5.98,338,1673942400"; d="scan'208";a="346526426" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 02:43:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="682430956" X-IronPort-AV: E=Sophos;i="5.98,338,1673942400"; d="scan'208";a="682430956" Received: from p12ill20yoongsia.png.intel.com ([10.88.227.28]) by orsmga007.jf.intel.com with ESMTP; 12 Apr 2023 02:43:30 -0700 From: Song Yoong Siang To: 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 Cc: 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, Song Yoong Siang Subject: [PATCH net-next v3 3/4] net: stmmac: add Rx HWTS metadata to XDP receive pkt Date: Wed, 12 Apr 2023 17:42:34 +0800 Message-Id: <20230412094235.589089-4-yoong.siang.song@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230412094235.589089-1-yoong.siang.song@intel.com> References: <20230412094235.589089-1-yoong.siang.song@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762964271913687983?= X-GMAIL-MSGID: =?utf-8?q?1762964271913687983?= Add receive hardware timestamp metadata support via kfunc to XDP receive packets. Suggested-by: Stanislav Fomichev Signed-off-by: Song Yoong Siang --- drivers/net/ethernet/stmicro/stmmac/stmmac.h | 3 +++ .../net/ethernet/stmicro/stmmac/stmmac_main.c | 26 ++++++++++++++++++- 2 files changed, 28 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; }; 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 f7bbdf04d20c..ed660927b628 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -5315,10 +5315,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 @@ -7071,6 +7076,23 @@ 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; + + *timestamp = 0; + stmmac_get_rx_hwtstamp(ctx->priv, ctx->p, ctx->np, timestamp); + + if (*timestamp) + 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 @@ -7178,6 +7200,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 | From patchwork Wed Apr 12 09:42:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Yoong Siang X-Patchwork-Id: 82370 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp217344vqo; Wed, 12 Apr 2023 03:31:25 -0700 (PDT) X-Google-Smtp-Source: AKy350Z6x2F9mLtiBveJpB2E5ER84sACzLhWqexUPPuGPtJk1Az8FPoP6DL7azTVqCEW8sapi3jj X-Received: by 2002:a17:902:e392:b0:1a3:d5af:9b73 with SMTP id g18-20020a170902e39200b001a3d5af9b73mr5360634ple.58.1681295484756; Wed, 12 Apr 2023 03:31:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681295484; cv=none; d=google.com; s=arc-20160816; b=Y5YvVwTETRkdjOrMYaBLqk6x3okjIodyr5nNBp5wDryt/jyD5zoZTgmKogrMKCzStU oc+UKYAAy/OMeKI7iTPO1DNv2xTbzY/XpDyLW4kZ3JaL7yCi/YYFbUDROGvKw1wpXBkm stQd35L3VxWqWsECCunEdhD4xU0OAbo3j/WiIj4x9FZBy8aQCJVP42Dlu5uvkycqD8h0 batJyoiXkTOT/XSCd+UdX2HIj9C281h14BIH2nPfGQWqaTnKjI+2IgMGSlJ0U4yCHMpT mt106YgNgJmGZYfsBuVvVZpUgNp59wPYKIEFebd65I+6ab6r1XISAZ7eSE3jUefU67oE fVQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=tKEhjyiGJNPJyq53tSiTPTazDR37uV2sqEL2PtH4PVo=; b=f9JpGr5QYNVhOZiZaPaTehODn8kDd/0884+foEF1KpAm6+YrPgeT+XmdZvGpGDhcaY 9V9ScIwdxmwV/T2eIgq+D7CNygJqemO0wRMT/RGNzagV9oGvdtpTjH/EUrD9s0StDCOL Be2CIIO9xPOL2AJk2Gyu1ZtK7FRKB7e647UzMCNKzmasdnueMkFrtu4qWyVjv+l3Lydp MpX6OMCuoz2KHHDLpepL1HmqEZ7tpS29AYkeC2p4owqjP95kbOmKizNWLh/m7+n9kdGA xJ6fccpCNArv5VZEN2UIWZstu7Zg/z2gVzhcsES4q3BOBo6DHDFYNF68tv5hetFzAB6D C9ZA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=fcIBJlSu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b12-20020a170902d50c00b001a5d5b97c74si9883779plg.259.2023.04.12.03.31.12; Wed, 12 Apr 2023 03:31:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=fcIBJlSu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231599AbjDLJoU (ORCPT + 99 others); Wed, 12 Apr 2023 05:44:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231590AbjDLJoN (ORCPT ); Wed, 12 Apr 2023 05:44:13 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 611DA6A78; Wed, 12 Apr 2023 02:43:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681292626; x=1712828626; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LwEHEzc7bD+80SZfiRcNMHZOLAyRIwPq6TVR/GpsF7s=; b=fcIBJlSuCcMeU2IKjtOhoATQ3OWgvWyDB5mBmmQNqb34JADJoFvHbpFB E+dzHsEadE/78GxW15s2gainU8BB2payTNEoszrjH4T5OYBS5hTW1Oi7a 1m7dZRhGw5vadcDaHVCjCNcjOcc5fcRxokfhc8dYwLJ66NtGYKIzfa+z3 LyRt9e00YhZYbEE2sAtNdT8hnbh3cqaAojg++XSxeO8rOBZOs2p7qoDHv Ujo00W+0xzs0qiu++4OFMBThfs5VLW1iRfmttow5uAcT9fzAatRyyI99O Ns6eFs6n4dx2VmFqhtKezypMFpjWVSFzhATbVYUQ837CXjr6Jw3nuYQcJ A==; X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="346526472" X-IronPort-AV: E=Sophos;i="5.98,338,1673942400"; d="scan'208";a="346526472" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 02:43:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="682430970" X-IronPort-AV: E=Sophos;i="5.98,338,1673942400"; d="scan'208";a="682430970" Received: from p12ill20yoongsia.png.intel.com ([10.88.227.28]) by orsmga007.jf.intel.com with ESMTP; 12 Apr 2023 02:43:38 -0700 From: Song Yoong Siang To: 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 Cc: 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, Song Yoong Siang Subject: [PATCH net-next v3 4/4] net: stmmac: add Rx HWTS metadata to XDP ZC receive pkt Date: Wed, 12 Apr 2023 17:42:35 +0800 Message-Id: <20230412094235.589089-5-yoong.siang.song@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230412094235.589089-1-yoong.siang.song@intel.com> References: <20230412094235.589089-1-yoong.siang.song@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762966094286694310?= X-GMAIL-MSGID: =?utf-8?q?1762966094286694310?= Add receive hardware timestamp metadata support via kfunc to XDP Zero Copy receive packets. Signed-off-by: Song Yoong Siang --- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index ed660927b628..1c4dbac90717 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1611,6 +1611,12 @@ static int stmmac_alloc_rx_buffers_zc(struct stmmac_priv *priv, struct stmmac_rx_queue *rx_q = &dma_conf->rx_queue[queue]; int i; + /* struct stmmac_xdp_buff is using cb field (maximum size of 24 bytes) + * in struct xdp_buff_xsk to stash driver specific information. Thus, + * use this macro to make sure no size violations. + */ + XSK_CHECK_PRIV_TYPE(struct stmmac_xdp_buff); + for (i = 0; i < dma_conf->dma_rx_size; i++) { struct stmmac_rx_buffer *buf; dma_addr_t dma_addr; @@ -4999,6 +5005,16 @@ static bool stmmac_rx_refill_zc(struct stmmac_priv *priv, u32 queue, u32 budget) return ret; } +static struct stmmac_xdp_buff *xsk_buff_to_stmmac_ctx(struct xdp_buff *xdp) +{ + /* In XDP zero copy data path, xdp field in struct xdp_buff_xsk is used + * to represent incoming packet, whereas cb field in the same structure + * is used to store driver specific info. Thus, struct stmmac_xdp_buff + * is laid on top of xdp and cb fields of struct xdp_buff_xsk. + */ + return (struct stmmac_xdp_buff *)xdp; +} + static int stmmac_rx_zc(struct stmmac_priv *priv, int limit, u32 queue) { struct stmmac_rx_queue *rx_q = &priv->dma_conf.rx_queue[queue]; @@ -5028,6 +5044,7 @@ static int stmmac_rx_zc(struct stmmac_priv *priv, int limit, u32 queue) } while (count < limit) { struct stmmac_rx_buffer *buf; + struct stmmac_xdp_buff *ctx; unsigned int buf1_len = 0; struct dma_desc *np, *p; int entry; @@ -5113,6 +5130,11 @@ static int stmmac_rx_zc(struct stmmac_priv *priv, int limit, u32 queue) goto read_again; } + ctx = xsk_buff_to_stmmac_ctx(buf->xdp); + ctx->priv = priv; + ctx->p = p; + ctx->np = np; + /* XDP ZC Frame only support primary buffers for now */ buf1_len = stmmac_rx_buf1_len(priv, p, status, len); len += buf1_len;