Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp10494788rwr; Fri, 12 May 2023 08:51:51 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7l279jRc7rIQ5qcy0OVMroXV6KgxhEd85m/gwn93Z7n0/PnV+WAl5dKo60D9Gmxr7Chk0C X-Received: by 2002:a05:6a00:88b:b0:644:18fe:91cc with SMTP id q11-20020a056a00088b00b0064418fe91ccmr28560163pfj.12.1683906711242; Fri, 12 May 2023 08:51:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683906711; cv=none; d=google.com; s=arc-20160816; b=IDNOW61XSUP0G+B1g2P2IjLmW+Jc2jAaZGPwpmpRtc38a30my+aVvDWSkvEyXujdlV 853i8wjhDkluZarHwZVEKhBF/EDwLdIZ6BTqllptK6JdpJ6/SbTi8+HBkd01opIDsX6e 2PNTcoOejYtVLG7nVmBNWZ+PbzFkbR2wa7piJqik1scmkHE0ElLkqQ6FwE+mDRHsoejq V9gCCf3Rq1MutVbfL/xA7ZldP6ndRBW8B0fa9HjkqVwPWFQ7732eqOCsVtv7M1rPJJAg ZUg3xaLNZtLxUuJdqYU3e2UsrMxA4pgtPM6iGjIoRHBO57XVyN10NA+x5Irn/OmHNLqK 8QbA== 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=G10y+9OqRY+z/EIq9WTPwh1SZk/kzTmihh/S4kaxqdY=; b=a3q5PJLcKgbts4YDfjbXREWafpuocjqVz2EyQctcZSNU7jRykb+W6A0WWqrXE2wYaH 0a7YytqMXAmoJTazhAwIMBHzot+OsOxQVD1CTk3Jt99xGudTLaXAbBsdTEBTR/x++sBZ 6Z53gVYN5I91ptH5F37KBVZIGUY5DS2BN+0ZJaMZYQEe8jWoYpkhaN3gnRxYimjzg6vW ojU/aUF8ATDnkZpnxi9O/0CB8Unfi/XtluxZev/DaezScVAHpFBEQv4vFLSqGkvjPsP1 aqTg61KmQI+sgCU6fTUBrSiRUeHOzMWjKAn82t3bTbSl1ZAZyWnqT4qGQn2AdC6f0ncA zYkg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=mJkEkuTr; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i9-20020a636d09000000b0052c2904e37dsi9755717pgc.362.2023.05.12.08.51.39; Fri, 12 May 2023 08:51:51 -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=mJkEkuTr; 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 S231637AbjELP2m (ORCPT + 99 others); Fri, 12 May 2023 11:28:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241873AbjELP2h (ORCPT ); Fri, 12 May 2023 11:28:37 -0400 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D5CD346AB; Fri, 12 May 2023 08:28:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1683905316; x=1715441316; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=13ozT9YozZElJj9JXKreIzUvD87aIPckZkK7jKB5PsY=; b=mJkEkuTr74Cj2zyGzpRt67PPKaMZbbcK0VTV4WDVrXBkkP9Ousp2Zudv dN/NvQsG4fB9ruupXxQw9dh/C0ITXaITB7Ov8UPQ8slPUyaYmUDHo5vLN Y4Od5rJMsnAdNwqWH3ClnSHrwn533qfcEyLuwotYmQiLB5b05J+McKL7u 7v7pwMgmkT5n6UHnN4KiPMswRbJqTO5qpgfsARW2Tw4AVpwmWxr09tBWF yK6qjWmjIH3OjBYiM/3TBoiryrD1+Hee4wKMGNqxH/a1LRDp8Iq1gnTtM r8yqqfrbdm2jU+dixysfpMK256sbXKFzrMytd9MIPovtB1uxQLOMqQwhn w==; X-IronPort-AV: E=McAfee;i="6600,9927,10708"; a="349653206" X-IronPort-AV: E=Sophos;i="5.99,269,1677571200"; d="scan'208";a="349653206" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2023 08:28:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10708"; a="1030124402" X-IronPort-AV: E=Sophos;i="5.99,269,1677571200"; d="scan'208";a="1030124402" Received: from irvmail002.ir.intel.com ([10.43.11.120]) by fmsmga005.fm.intel.com with ESMTP; 12 May 2023 08:28:31 -0700 Received: from lincoln.igk.intel.com (lincoln.igk.intel.com [10.102.21.235]) by irvmail002.ir.intel.com (Postfix) with ESMTP id 2A58635FB8; Fri, 12 May 2023 16:28:30 +0100 (IST) From: Larysa Zaremba To: bpf@vger.kernel.org Cc: Larysa Zaremba , Stanislav Fomichev , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Jakub Kicinski , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Jiri Olsa , Jesse Brandeburg , Tony Nguyen , Anatoly Burakov , Jesper Dangaard Brouer , Alexander Lobakin , Magnus Karlsson , Maryam Tahhan , xdp-hints@xdp-project.net, netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-kernel@vger.kernel.org Subject: [PATCH RESEND bpf-next 01/15] ice: make RX hash reading code more reusable Date: Fri, 12 May 2023 17:25:53 +0200 Message-Id: <20230512152607.992209-2-larysa.zaremba@intel.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20230512152607.992209-1-larysa.zaremba@intel.com> References: <20230512152607.992209-1-larysa.zaremba@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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,T_SCC_BODY_TEXT_LINE,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 Previously, we only needed RX hash in skb path, hence all related code was written with skb in mind. But with the addition of XDP hints via kfuncs to the ice driver, the same logic will be needed in .xmo_() callbacks. Separate generic process of reading RX hash from a descriptor into a separate function. Signed-off-by: Larysa Zaremba --- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c index c8322fb6f2b3..fc67bbf600af 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c @@ -63,28 +63,44 @@ static enum pkt_hash_types ice_ptype_to_htype(u16 ptype) } /** - * ice_rx_hash - set the hash value in the skb + * ice_copy_rx_hash_from_desc - copy hash value from descriptor to address + * @rx_desc: specific descriptor + * @dst: address to copy hash value to + * + * Returns true, if valid hash has been copied into the destination address. + */ +static bool +ice_copy_rx_hash_from_desc(union ice_32b_rx_flex_desc *rx_desc, u32 *dst) +{ + struct ice_32b_rx_flex_desc_nic *nic_mdid; + + if (rx_desc->wb.rxdid != ICE_RXDID_FLEX_NIC) + return false; + + nic_mdid = (struct ice_32b_rx_flex_desc_nic *)rx_desc; + *dst = le32_to_cpu(nic_mdid->rss_hash); + return true; +} + +/** + * ice_rx_hash_to_skb - set the hash value in the skb * @rx_ring: descriptor ring * @rx_desc: specific descriptor * @skb: pointer to current skb * @rx_ptype: the ptype value from the descriptor */ static void -ice_rx_hash(struct ice_rx_ring *rx_ring, union ice_32b_rx_flex_desc *rx_desc, - struct sk_buff *skb, u16 rx_ptype) +ice_rx_hash_to_skb(struct ice_rx_ring *rx_ring, + union ice_32b_rx_flex_desc *rx_desc, + struct sk_buff *skb, u16 rx_ptype) { - struct ice_32b_rx_flex_desc_nic *nic_mdid; u32 hash; if (!(rx_ring->netdev->features & NETIF_F_RXHASH)) return; - if (rx_desc->wb.rxdid != ICE_RXDID_FLEX_NIC) - return; - - nic_mdid = (struct ice_32b_rx_flex_desc_nic *)rx_desc; - hash = le32_to_cpu(nic_mdid->rss_hash); - skb_set_hash(skb, hash, ice_ptype_to_htype(rx_ptype)); + if (ice_copy_rx_hash_from_desc(rx_desc, &hash)) + skb_set_hash(skb, hash, ice_ptype_to_htype(rx_ptype)); } /** @@ -186,7 +202,7 @@ ice_process_skb_fields(struct ice_rx_ring *rx_ring, union ice_32b_rx_flex_desc *rx_desc, struct sk_buff *skb, u16 ptype) { - ice_rx_hash(rx_ring, rx_desc, skb, ptype); + ice_rx_hash_to_skb(rx_ring, rx_desc, skb, ptype); /* modifies the skb - consumes the enet header */ skb->protocol = eth_type_trans(skb, rx_ring->netdev); -- 2.35.3