Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp6949884rdb; Tue, 2 Jan 2024 22:03:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IHwc1I7rs7uvtJaDiuzPsis1GHIW2QyNa7CwA078HD35QheubAY7vZor94wZw7dPGnpOMnF X-Received: by 2002:a17:903:230a:b0:1d4:ae22:e937 with SMTP id d10-20020a170903230a00b001d4ae22e937mr832871plh.0.1704261807844; Tue, 02 Jan 2024 22:03:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704261807; cv=none; d=google.com; s=arc-20160816; b=VBkVjfht38F5KoDUWx3Fj3Rh28US9CtMuPWmG4k2yWyRVmpDUt4jkWCFrPR6Q8MnYR JnMS+Yq4CvZ1rKOApDJh9iNhccOWtMBfIXRb5p57swA3ss+uqGNHXeKVIcd+kcGxlsVD q+TIBwSV7Ws9/wDZseu3z5O1h47sQRsBk2LfE9zLYwKtpM0cW9cDyjTirzzS02QrvgMy 5a2aqdUNmZk5WCHagsTf0f9Px9Cyw5Wrm4RSwGNrh+YpQu6xdRkXT6aA2BN2Rhn/lyE8 vLvlFNFKQ0yrkiE0iNz9IOcrDH6jxN+bmtQJ24nAB5i9iEScx2C09GMe+XpORWQ/xIXK MtXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=sQ5IlZ0V3FHaUxfy2Z13jv10QMbc9LLMikTDxO1h8tE=; fh=T1k3kkzR6cxgBqwL3C3K03FT0++tDiB1lqfdpUbRLr4=; b=i5I4t+IaRfVYLrwi5F143juXdZUJPPa7Fqthm2SAkKmrEnafYbvxy2B6tOrFZ3J3t3 fprm91Kemk39qmacJAmJiCWIHy11M21YMzCKzEMFbhOBtmsYF7bMRIT53auKnKi/XMeo +Jxt6ocq63vDPBcvqVYhOOcniRMpdSRuI6VrKw7Nr9Qw+eUuveqnMzTJdzyyGUha9UtN QX0DstYMvyjdYiWwjQdUKb3LekasdW7G46cukckS3KYzft4Q9XlOnID6rrVL/fER+m6v d1HNa0EYMSyAO5/kmcP+9ATNmkW1Szp4QaAelPLPBqJYtDqBEd3kN7ktpzvB3lLZerhZ uIvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=DyIC+AF1; spf=pass (google.com: domain of linux-kernel+bounces-15192-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-15192-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id a8-20020a170902ecc800b001cfc46abb07si12516252plh.128.2024.01.02.22.03.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 22:03:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-15192-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=DyIC+AF1; spf=pass (google.com: domain of linux-kernel+bounces-15192-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-15192-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 81876284FF2 for ; Wed, 3 Jan 2024 06:03:27 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0214D179AE; Wed, 3 Jan 2024 06:03:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DyIC+AF1" X-Original-To: linux-kernel@vger.kernel.org Received: from mail-yb1-f194.google.com (mail-yb1-f194.google.com [209.85.219.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E92CC17988; Wed, 3 Jan 2024 06:03:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-yb1-f194.google.com with SMTP id 3f1490d57ef6-dbdd61d80a3so100888276.0; Tue, 02 Jan 2024 22:03:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704261794; x=1704866594; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=sQ5IlZ0V3FHaUxfy2Z13jv10QMbc9LLMikTDxO1h8tE=; b=DyIC+AF171WqM4aLiGMC76IYMmccZPtTVWw39TUWmWbz2fLUqDHyztCnPtXQOk7gDV bbXmcLBe4T1EONz3N7vd9s9NON5O40hsP5C63v+lgAFnJmHD06Ur24BrzCuAMOiilHCh GRyPI11P8A8HeR6OgRVEnAeUYRu5V6eYRTFOaCaLcGBYA9wRZTJFSrfsiIrt57zDDzTy ZYkWxV44ffJHyJreUbK6b4zMUJ14i89BNauWryNTP/1NfpBUqzcj2FUSp2B7sU1PSgh0 +JX98EI+JnQq7p84enY4bsNSCM8mIYW03Q9fuI50oKFZKGGv4lqSOAqjWmuPaLAlVyaA nrpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704261794; x=1704866594; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sQ5IlZ0V3FHaUxfy2Z13jv10QMbc9LLMikTDxO1h8tE=; b=djbNB166j2YkAClvDRVE7ozhsGAMtKviYdPWhe5SITt9izNw1L0K+tsAknGS2OztVa fXjTEJ73+TQdq05JFQ+knQjtJ3w6sjoAawt63yGOWVLOOD9GoSdGRXElj1g/2x1y73qJ e1J2MNgGVH8AzoHXeNf2eD+g1pFV8Rnir3ngaSl2JLdCJIgvTp2e+qG7ioXNdjsc4MNb uOB3S0+ecqYdmyy7+AfjlwBmf9zuas5PXxEppzf4imTZGTYNthE4W8bXdwf2J4PYQIXt UkLqf3Tj14KvqcjjnMiSDVCPKP4kAyKckS9OqRfVeOmuQFBzze0BrBNoetRz7bHXepKs LH9w== X-Gm-Message-State: AOJu0YzlEwSiT1YqP4QIpFQ4E3pmiS5E56OwozbB+dxtHGThjl528r3z 9zfzL8VR6FHXCwccquZomSplIHgKUMrD7DsIJzU= X-Received: by 2002:a05:6902:10d:b0:dbc:da55:b397 with SMTP id o13-20020a056902010d00b00dbcda55b397mr321129ybh.65.1704261793832; Tue, 02 Jan 2024 22:03:13 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20231229081409.1276386-1-menglong8.dong@gmail.com> <4fa8ae9d-11fd-4728-83bd-848cb22952e7@linux.dev> In-Reply-To: <4fa8ae9d-11fd-4728-83bd-848cb22952e7@linux.dev> From: Menglong Dong Date: Wed, 3 Jan 2024 14:03:02 +0800 Message-ID: Subject: Re: [PATCH bpf-next 0/2] bpf: add csum/ip_summed fields to __sk_buff To: Yonghong Song Cc: Martin KaFai Lau , Stanislav Fomichev , andrii@kernel.org, ast@kernel.org, daniel@iogearbox.net, song@kernel.org, john.fastabend@gmail.com, kpsingh@kernel.org, haoluo@google.com, jolsa@kernel.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mykolal@fb.com, shuah@kernel.org, horms@kernel.org, dhowells@redhat.com, linyunsheng@huawei.com, aleksander.lobakin@intel.com, joannelkoong@gmail.com, laoar.shao@gmail.com, kuifeng@meta.com, bjorn@rivosinc.com, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jan 3, 2024 at 11:55=E2=80=AFAM Yonghong Song wrote: > > > On 1/2/24 6:54 PM, Menglong Dong wrote: > > On Wed, Jan 3, 2024 at 8:52=E2=80=AFAM Martin KaFai Lau wrote: > >> On 1/2/24 10:11 AM, Stanislav Fomichev wrote: > >>> On 12/29, Menglong Dong wrote: > >>>> For now, we have to call some helpers when we need to update the csu= m, > >>>> such as bpf_l4_csum_replace, bpf_l3_csum_replace, etc. These helpers= are > >>>> not inlined, which causes poor performance. > >>>> > >>>> In fact, we can define our own csum update functions in BPF program > >>>> instead of bpf_l3_csum_replace, which is totally inlined and efficie= nt. > >>>> However, we can't do this for bpf_l4_csum_replace for now, as we can= 't > >>>> update skb->csum, which can cause skb->csum invalid in the rx path w= ith > >>>> CHECKSUM_COMPLETE mode. > >>>> > >>>> What's more, we can't use the direct data access and have to use > >>>> skb_store_bytes() with the BPF_F_RECOMPUTE_CSUM flag in some case, s= uch > >>>> as modifing the vni in the vxlan header and the underlay udp header = has > >>>> no checksum. > >> There is bpf_csum_update(), does it work? > >> A helper call should be acceptable comparing with the csum calculation= itself. > > Yeah, this helper works in this case! Now we miss the last > > piece for the tx path: ip_summed. We need to know if it is > > CHECKSUM_PARTIAL to decide if we should update the > > csum in the packet. In the tx path, the csum in the L4 is the > > pseudo header only if skb->ip_summed is CHECKSUM_PARTIAL. > > > > Maybe we can introduce a lightweight kfunc to get its > > value? Such as bpf_skb_csum_mode(). As we need only call > > it once, there shouldn't be overhead on it. > > You don't need kfunc, you can do checking like > struct sk_buff *kskb =3D bpf_cast_to_kern_ctx(skb); > if (kskb->ip_summed =3D=3D CHECKSUM_PARTIAL) ... > ... > Great, this is exactly what I need! Thanks~