From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 18670F4F1; Fri, 26 Sep 2025 08:59:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758877200; cv=none; b=mav6V2l/Wc8z/dnZ6WaijvW/6Fun8ng2ziD4TjTsnbW1wjbm7caJZaqBxgmtvDUL2dN5wB3ujgvtUKMeWIR6Nx5Iilpx5BOP/uwzkOgpJkz0g4OOBlkNyPlpDQ6ozMTY5W35/jgcR4e8znp5KS9cFX+3gf68bz588AMFk1L9hyY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758877200; c=relaxed/simple; bh=L0oABFhpwRrsTJJhUFzKMLEuhir4Lfkj64YL/jUGDeU=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=ag5YBmtV3Ng2K5p2fYIn3q9JesbOKHpHRRfEEFD4ItEsJ5K/q8cTpzjvcXUWteFEiEhDwNZZxpOl1YU7puGCgdYDjR/LOghghAZto8ZjbxQrLv1rARE6AqRtuPhbyf4XL56ipHcDIZRRjsA8mvtnG1Yho53heA/wjWAsW/51+cU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R/RKfhzK; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="R/RKfhzK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8CFC2C4CEF5; Fri, 26 Sep 2025 08:59:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758877199; bh=L0oABFhpwRrsTJJhUFzKMLEuhir4Lfkj64YL/jUGDeU=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=R/RKfhzKCAHUUHOUZQQWDSgUR4W9XLp4aoZd/Afp2edAjWaep1kDpOlJX2gReYj2A jKLIeyPDMVYtUt74x3sHfkfe4kqaSnD5spOFAIO0nG5UbVS9gtfc+apHJioZ/lv6s3 otvv4LEC9cu1rolLxcTo1LCKrUGNMvPwD10gBAGJ+wNRJDKkRMqu+xtphkGmB2lxrr CFHNGXW+d37fQVoc+j+rvHWaYjntwimBQ0vKZViCqawTt1pUu+0lwg/php8jyujIeu rrqzPzV8NrRogP/53UvNcGN+1SbnoIyM2u3EPKUafk7ZTG0uc2cUz/AGqreYfF+FLp MdMhUzVHxolUw== Message-ID: Date: Fri, 26 Sep 2025 10:59:51 +0200 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH RFC bpf-next v2 1/5] netlink: specs: Add XDP RX checksum capability to XDP metadata specs To: Stanislav Fomichev , Lorenzo Bianconi Cc: Donald Hunter , Jakub Kicinski , "David S. Miller" , Eric Dumazet , Paolo Abeni , Simon Horman , Alexei Starovoitov , Daniel Borkmann , John Fastabend , Stanislav Fomichev , Andrew Lunn , Tony Nguyen , Przemek Kitszel , Alexander Lobakin , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , KP Singh , Hao Luo , Jiri Olsa , Shuah Khan , Maciej Fijalkowski , netdev@vger.kernel.org, bpf@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-kselftest@vger.kernel.org References: <20250925-bpf-xdp-meta-rxcksum-v2-0-6b3fe987ce91@kernel.org> <20250925-bpf-xdp-meta-rxcksum-v2-1-6b3fe987ce91@kernel.org> Content-Language: en-US From: Jesper Dangaard Brouer In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 26/09/2025 06.20, Stanislav Fomichev wrote: > On 09/25, Lorenzo Bianconi wrote: >> Introduce XDP RX checksum capability to XDP metadata specs. XDP RX >> checksum will be use by devices capable of exposing receive checksum >> result via bpf_xdp_metadata_rx_checksum(). >> Moreover, introduce xmo_rx_checksum netdev callback in order allow the >> eBPF program bounded to the device to retrieve the RX checksum result >> computed by the hw NIC. >> >> Signed-off-by: Lorenzo Bianconi >> --- >> Documentation/netlink/specs/netdev.yaml | 5 +++++ >> include/net/xdp.h | 14 ++++++++++++++ >> net/core/xdp.c | 29 +++++++++++++++++++++++++++++ >> 3 files changed, 48 insertions(+) >> >> diff --git a/Documentation/netlink/specs/netdev.yaml b/Documentation/netlink/specs/netdev.yaml >> index e00d3fa1c152d7165e9485d6d383a2cc9cef7cfd..00699bf4a7fdb67c6b9ee3548098b0c933fd39a4 100644 >> --- a/Documentation/netlink/specs/netdev.yaml >> +++ b/Documentation/netlink/specs/netdev.yaml >> @@ -61,6 +61,11 @@ definitions: >> doc: | >> Device is capable of exposing receive packet VLAN tag via >> bpf_xdp_metadata_rx_vlan_tag(). >> + - >> + name: checksum >> + doc: | >> + Device is capable of exposing receive checksum result via >> + bpf_xdp_metadata_rx_checksum(). >> - >> type: flags >> name: xsk-flags >> diff --git a/include/net/xdp.h b/include/net/xdp.h >> index aa742f413c358575396530879af4570dc3fc18de..9ab9ac10ae2074b70618a9d4f32544d8b9a30b63 100644 >> --- a/include/net/xdp.h >> +++ b/include/net/xdp.h >> @@ -586,6 +586,10 @@ void xdp_attachment_setup(struct xdp_attachment_info *info, >> NETDEV_XDP_RX_METADATA_VLAN_TAG, \ >> bpf_xdp_metadata_rx_vlan_tag, \ >> xmo_rx_vlan_tag) \ >> + XDP_METADATA_KFUNC(XDP_METADATA_KFUNC_RX_CHECKSUM, \ >> + NETDEV_XDP_RX_METADATA_CHECKSUM, \ >> + bpf_xdp_metadata_rx_checksum, \ >> + xmo_rx_checksum) >> >> enum xdp_rx_metadata { >> #define XDP_METADATA_KFUNC(name, _, __, ___) name, >> @@ -643,12 +647,22 @@ enum xdp_rss_hash_type { >> XDP_RSS_TYPE_L4_IPV6_SCTP_EX = XDP_RSS_TYPE_L4_IPV6_SCTP | XDP_RSS_L3_DYNHDR, >> }; >> >> +enum xdp_checksum { >> + XDP_CHECKSUM_NONE = CHECKSUM_NONE, >> + XDP_CHECKSUM_UNNECESSARY = CHECKSUM_UNNECESSARY, >> + XDP_CHECKSUM_COMPLETE = CHECKSUM_COMPLETE, >> + XDP_CHECKSUM_PARTIAL = CHECKSUM_PARTIAL, >> +}; > > Btw, might be worth mentioning, awhile ago we had settled on a smaller set of > exposed types: > > https://lore.kernel.org/netdev/20230811161509.19722-13-larysa.zaremba@intel.com/ > > Maybe go through the previous postings and check if the arguments are > still relevant? (or explain why we want more checksum now) IHMO the linked proposal reduced the types too much. I think Lorenzo's suggested types are much better. One argument is of- cause that the types corresponds directly to the (time proven) types used by the SKB. I could argue, that we are lacking a type that indicate hardware "failed" to do the checksum, but that is indirectly covered by CHECKSUM_NONE case. And having BPF-developers deal with both CHECKSUM_NONE and CHECKSUM_FAIL correctly is a recipe for bugs. I will explain in another email, why we need to document what CHECKSUM_NONE actually means. --Jesper