Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp10469485rwr; Fri, 12 May 2023 08:31:27 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6Gll13vyX0fgorQ8RI9LY06v2LD9yOB4yKN+7fvSlKiWuc9O0v8NoJZXK7ayt65McdgTpD X-Received: by 2002:a17:902:db08:b0:1a6:7b71:e64b with SMTP id m8-20020a170902db0800b001a67b71e64bmr40276547plx.15.1683905486543; Fri, 12 May 2023 08:31:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683905486; cv=none; d=google.com; s=arc-20160816; b=zTkS+JCwFfuwntUO7Tc2dQWTtDGoWjSXtPmDPayJtARTHxaLd3kxv+jVj25hrSVu+M BjSmg5xEnZj/FeG1MNMXVbsrgn9s21sPOJVYeMpLih6qNKzq6yVyK1IY4+89Fmz0SKAF /NjonhMwufaGy7n6cIGT1t185LfQeoJzItavjbQhlVq1HrPnCeXXOB22l7eOKU6oJ3yO uepw3rqrmMBuYlY8Co/gd5J7LxMdcvIlOfW89EahbAofOYddeqmJo5HjaSxNgNGwIvTX dDXclOEYK4W4g1L6eaWbv1DyKh7N9bXpT+obAH30qoLb2TC0CuTQM5G80oX6GShgjKgf LnDA== 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=84CdXWC1m2dCdnsKUh4q0qve21odb8jT3MYvtkIv4zE=; b=qzA8IQnxEbsjYhfUeEcbOqaUivBAIWXTfoCfQUeY32V3u6rL72nCNwqWa6lUyxe28t 1QmzvzAwMWJ21zmy0M5u71R4/HGQI92dfGU/ZxoQWGJ6NbBjpxxzOaVk4R7poCHLlfV/ +qcwZVrOQiwHfS0fLpEO6aysTG6SN5ZJUN9Y2NBhQHqJom+vzz26FgUX5D3sMcc6L5Ca KcbPdLr+Uc65kvRTuQHt/Ja8xZiHGUWOPWARn2cIwdq6PkMXCtKykmg6dsbN+kkLEm4Y rfvtfFO3cmKE0NEdtV9pvxwCaDUx69ko/1W1mgs2Y7HsSTRAAWthoG678E29HTQc7pu0 n4ZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=nkn1kchO; 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 x18-20020a170902ec9200b001a647aadbe0si9272777plg.568.2023.05.12.08.31.12; Fri, 12 May 2023 08:31:26 -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=nkn1kchO; 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 S241853AbjELPV7 (ORCPT + 99 others); Fri, 12 May 2023 11:21:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241819AbjELPVs (ORCPT ); Fri, 12 May 2023 11:21:48 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7A83125; Fri, 12 May 2023 08:21:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1683904878; x=1715440878; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HYcETTLQrd7Q2kE/D+/Vk/4DhcDrCT+MKt7UQ1PXhqI=; b=nkn1kchO6o5toaxFObrMadi4z2u/8kA24SQKzEXN0OWFlr+Z3SCkcKwO FeKEY/5E5RaoahHT3Ff3TdIsqfKKV1TH1Z+aYs0R//kcLVya4iIhdVcbj ij3q5ZPkGk+9h9kjUOKusJuiRaphTYIxi3vSU3tpPrNeVhSnqFqIE8JKq jsAsN67zP1bDcwvSzKtWTfyzO38Orz+2xhELVL5lDw/5x1FDnmdf84QrP J04+Ti7KPGLPlGz26Zg1W58qNyYUOouYrCHIYwsLWkusXf9bTle5ac7DD K88YHPgKezLwT/6QeSHce5I8dSdPNoVUvh6UGr8kcMmWkub+mV3fTW9o9 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10708"; a="353061226" X-IronPort-AV: E=Sophos;i="5.99,269,1677571200"; d="scan'208";a="353061226" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2023 08:20:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10708"; a="812114475" X-IronPort-AV: E=Sophos;i="5.99,269,1677571200"; d="scan'208";a="812114475" Received: from irvmail002.ir.intel.com ([10.43.11.120]) by fmsmga002.fm.intel.com with ESMTP; 12 May 2023 08:20:41 -0700 Received: from lincoln.igk.intel.com (lincoln.igk.intel.com [10.102.21.235]) by irvmail002.ir.intel.com (Postfix) with ESMTP id 9E44536351; Fri, 12 May 2023 16:20:38 +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 11/15] xdp: Add checksum level hint Date: Fri, 12 May 2023 17:16:35 +0200 Message-Id: <20230512151639.992033-12-larysa.zaremba@intel.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20230512151639.992033-1-larysa.zaremba@intel.com> References: <20230512151639.992033-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, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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 Implement functionality that enables drivers to expose to XDP code, whether checksums was checked and on what level. Signed-off-by: Larysa Zaremba --- Documentation/networking/xdp-rx-metadata.rst | 3 +++ include/linux/netdevice.h | 1 + include/net/xdp.h | 2 ++ kernel/bpf/offload.c | 2 ++ net/core/xdp.c | 12 ++++++++++++ 5 files changed, 20 insertions(+) diff --git a/Documentation/networking/xdp-rx-metadata.rst b/Documentation/networking/xdp-rx-metadata.rst index 73a78029c596..f74f0e283097 100644 --- a/Documentation/networking/xdp-rx-metadata.rst +++ b/Documentation/networking/xdp-rx-metadata.rst @@ -29,6 +29,9 @@ metadata is supported, this set will grow: .. kernel-doc:: net/core/xdp.c :identifiers: bpf_xdp_metadata_rx_stag +.. kernel-doc:: net/core/xdp.c + :identifiers: bpf_xdp_metadata_rx_csum_lvl + An XDP program can use these kfuncs to read the metadata into stack variables for its own consumption. Or, to pass the metadata on to other consumers, an XDP program can store it into the metadata area carried diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index fdae37fe11f5..ddade3a15366 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1657,6 +1657,7 @@ struct xdp_metadata_ops { enum xdp_rss_hash_type *rss_type); int (*xmo_rx_ctag)(const struct xdp_md *ctx, u16 *vlan_tag); int (*xmo_rx_stag)(const struct xdp_md *ctx, u16 *vlan_tag); + int (*xmo_rx_csum_lvl)(const struct xdp_md *ctx, u8 *csum_level); }; /** diff --git a/include/net/xdp.h b/include/net/xdp.h index 2db7439fc60f..0fbd25616241 100644 --- a/include/net/xdp.h +++ b/include/net/xdp.h @@ -393,6 +393,8 @@ void xdp_attachment_setup(struct xdp_attachment_info *info, bpf_xdp_metadata_rx_ctag) \ XDP_METADATA_KFUNC(XDP_METADATA_KFUNC_RX_STAG, \ bpf_xdp_metadata_rx_stag) \ + XDP_METADATA_KFUNC(XDP_METADATA_KFUNC_RX_CSUM_LVL, \ + bpf_xdp_metadata_rx_csum_lvl) \ enum { #define XDP_METADATA_KFUNC(name, _) name, diff --git a/kernel/bpf/offload.c b/kernel/bpf/offload.c index 2c6b6e82cfac..8bd54fb4ac63 100644 --- a/kernel/bpf/offload.c +++ b/kernel/bpf/offload.c @@ -852,6 +852,8 @@ void *bpf_dev_bound_resolve_kfunc(struct bpf_prog *prog, u32 func_id) p = ops->xmo_rx_ctag; else if (func_id == bpf_xdp_metadata_kfunc_id(XDP_METADATA_KFUNC_RX_STAG)) p = ops->xmo_rx_stag; + else if (func_id == bpf_xdp_metadata_kfunc_id(XDP_METADATA_KFUNC_RX_CSUM_LVL)) + p = ops->xmo_rx_csum_lvl; out: up_read(&bpf_devs_lock); diff --git a/net/core/xdp.c b/net/core/xdp.c index eff21501609f..7dd45fd62983 100644 --- a/net/core/xdp.c +++ b/net/core/xdp.c @@ -762,6 +762,18 @@ __bpf_kfunc int bpf_xdp_metadata_rx_stag(const struct xdp_md *ctx, u16 *vlan_tag return -EOPNOTSUPP; } +/** + * bpf_xdp_metadata_rx_csum_lvl - Get depth at which HW has checked the checksum. + * @ctx: XDP context pointer. + * @csum_level: Return value pointer. + * + * Returns 0 on success (HW has checked the checksum) or ``-errno`` on error. + */ +__bpf_kfunc int bpf_xdp_metadata_rx_csum_lvl(const struct xdp_md *ctx, u8 *csum_level) +{ + return -EOPNOTSUPP; +} + __diag_pop(); BTF_SET8_START(xdp_metadata_kfunc_ids) -- 2.35.3