From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 60594C433DB for ; Wed, 31 Mar 2021 02:43:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 31A66619E5 for ; Wed, 31 Mar 2021 02:43:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233282AbhCaCme (ORCPT ); Tue, 30 Mar 2021 22:42:34 -0400 Received: from mail.kernel.org ([198.145.29.99]:60924 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233259AbhCaCmR (ORCPT ); Tue, 30 Mar 2021 22:42:17 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5B759619CA; Wed, 31 Mar 2021 02:42:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1617158537; bh=8Ue31CU6c105fo9MV/f6yIBMpQtwspY1XPEZbBfWucU=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=EdRwlaXM3N507LgGVvVpkBDZZmfxRwODIwE3oPg2daUdkioNPdM+6rnKVLJMMrAcK hKVg/+axZBuNAGIn5W5/KSQOpQJiIHTiLB/Ba96t9mEYB/C/4r/ZbkK7ic0sdRqebq E8usJz/zahtHBUfU5RXtNNL8nwlJ6P/pm4rkT+ArCphDWdKRJs2g9SG7uMCVqQPlIJ FCLgILnnr/dOkyPHLIh8PdMzbQKsYafnwqWKIZQ3cKRImOpWuj6H+53KD2hldkTiTf +kLESK5ae3BnskcjJyS2hYCa3Sd0GdclH4t4J8ACQarqQSadRr+4Cs2IgTkmV/nwrc aZiGJhFx964ow== Date: Tue, 30 Mar 2021 19:42:15 -0700 From: Jakub Kicinski To: Ong Boon Leong Cc: Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , "David S . Miller" , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Maxime Coquelin , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , KP Singh , 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 Subject: Re: [PATCH net-next v2 4/6] net: stmmac: Add initial XDP support Message-ID: <20210330194215.0469324a@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> In-Reply-To: <20210330024949.14010-5-boon.leong.ong@intel.com> References: <20210330024949.14010-1-boon.leong.ong@intel.com> <20210330024949.14010-5-boon.leong.ong@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 30 Mar 2021 10:49:47 +0800 Ong Boon Leong wrote: > + if (!skb) { > + dma_sync_single_for_cpu(priv->device, buf->addr, > + buf1_len, dma_dir); > + > + xdp.data = page_address(buf->page) + buf->page_offset; > + xdp.data_end = xdp.data + len; > + xdp.data_hard_start = page_address(buf->page); > + xdp_set_data_meta_invalid(&xdp); > + xdp.frame_sz = buf_sz; > + > + skb = stmmac_xdp_run_prog(priv, &xdp); > + > + /* For Not XDP_PASS verdict */ > + if (IS_ERR(skb)) { > + unsigned int xdp_res = -PTR_ERR(skb); > + > + if (xdp_res & STMMAC_XDP_CONSUMED) { > + page_pool_recycle_direct(rx_q->page_pool, > + buf->page); > + buf->page = NULL; > + priv->dev->stats.rx_dropped++; > + > + /* Clear skb as it was set as > + * status by XDP program. > + */ > + skb = NULL; > + > + if (unlikely((status & rx_not_ls))) > + goto read_again; > + > + count++; > + continue; > + } > + } > + } > + > if (!skb) { > skb = napi_alloc_skb(&ch->rx_napi, buf1_len); > if (!skb) { > @@ -4322,9 +4400,8 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) > goto drain_data; > } > > - dma_sync_single_for_cpu(priv->device, buf->addr, > - buf1_len, DMA_FROM_DEVICE); > - skb_copy_to_linear_data(skb, page_address(buf->page), > + skb_copy_to_linear_data(skb, page_address(buf->page) + > + buf->page_offset, > buf1_len); XDP can prepend or remove headers (using the bpf_xdp_adjust_head() helper), so the start of data may no longer be page + HEADROOM, and the length of the frame may have changed. Are you accounting for this?