Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3977218pxb; Mon, 8 Feb 2021 05:10:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJwg6HME4H+1un1qk7gQkBCGtnaqwVK4FmUjyPwLETxYyjusgwpTIKBIlzzIRWgkNYvdarn9 X-Received: by 2002:a17:906:c446:: with SMTP id ck6mr16254637ejb.491.1612789840705; Mon, 08 Feb 2021 05:10:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612789840; cv=none; d=google.com; s=arc-20160816; b=wUNlfc8Tnt1ivAv/AL+VlQRdw6jB+dodEZ4ZP7NDXRbUchY91WiWZIXnZdIXcaPj9c JnLiedC2vAZdDKM5/ujjVHeGXljINyXqFq6vRZG2svf7z5Degnz/aRcp4QyL7yQpVoao IlEVE0uJj0+bzy+rPZYbNXR+JrUrTkLKodjeYMEjYluQ3ZgA827CZRLaK8QngeCZSaEs x/zwBafzGwMxTEPFieQIdBnDRPUebzdmBNtRs+L0keuVKIHRHpA35cHOx7/Osn/WmGNp GYwgaIrBReFSauV2H8J24Io5viMvIOCQziSj8VOuRavlMVWJfGST8zXOKHiYEcr353+l nvrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=q9Lnou6eX+Zd+gwTwesC/efPmGOGWWLzMGlqwzv2rt0=; b=SAGPZaHSNdZiodpA4Xbit69+KOWRCdKApzoOMRIl2VBDcyD8MfELYmKVGhzLaenwgf fBVKW3sU5HKgojGTNTi/BSgQ8wdNIXYsJT2w99sj2g2Ms/dJN7p4zqZC3xmHBsISgmAj IYoqzVdOKPVIXWVjwWUrLh5XxQ648ZcCNhU9ePP8ED/PO2QAFrADT+aubhb8qNhA9A+s AsN9gLhUfex1zXIThfxjSrusFZ2P9G7/lx/2zafKY47/56kANxIw2O7yQmJqHT4wU6Zj Cwfw1cJO8Wma7ZkBpoSJ7FOs6j9UKc5YUqBVehWjruUG8khqbXO7aTzNLEE7dV5aT/9A oBsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=oePKnSNf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w16si11578487edi.602.2021.02.08.05.10.12; Mon, 08 Feb 2021 05:10:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=oePKnSNf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230328AbhBHNIb (ORCPT + 99 others); Mon, 8 Feb 2021 08:08:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229707AbhBHNIT (ORCPT ); Mon, 8 Feb 2021 08:08:19 -0500 Received: from mail-ua1-x92b.google.com (mail-ua1-x92b.google.com [IPv6:2607:f8b0:4864:20::92b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6CB7FC061786 for ; Mon, 8 Feb 2021 05:07:39 -0800 (PST) Received: by mail-ua1-x92b.google.com with SMTP id c8so4618132uae.13 for ; Mon, 08 Feb 2021 05:07:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=q9Lnou6eX+Zd+gwTwesC/efPmGOGWWLzMGlqwzv2rt0=; b=oePKnSNfeI0UK4muyPGY/ru0jUlhoYs+j5TVlGjCaYRXsVX+kVQyxqjnC/dwx+VtIG QGx3zO/4twrhLUQSzhQ5Em1+sCforUN8PxIJ9UXTIP/JxSH0FsMvmqEDuohqjPxMWLS1 sWFro9vkIq3Ur3ReeY5F4U6sdA4+ex8ydYWli+DdHx0EzMIKmOBSDsYMBCXrOW+oJZQk K0aF0H06loyA1bhgHPAENrCptWQDxnen4qEjbTcrghHsYojYHFlphwoL48XM1vQvr6Ws SoWLm8rizbQpFfKSWT3f1dIr3xOzH+5eye0bqf27FJBMNJtoz68oQzyYVHtLe3FQhXpJ gJTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=q9Lnou6eX+Zd+gwTwesC/efPmGOGWWLzMGlqwzv2rt0=; b=b8g+g5d4C2wjG1DlX/BhskyOwVThy3TtszQmi/D5R1V8sNlHW09QtpLaeR3kuAM0r2 oFbVjJPgWjILYXc4mAcwVX3ywR7QQb8yVyIqmJaxyKaRcsTqm3/oep4q7ECo7QnkbegF v9PYFFUBRnQU1X3oUQi9ZJ9hqPpJMYB9Wr75e9QikRIGWmCsUj67QFu3Y8NztMAlZIAx 8FquNUqlsgBokO1On0buQZJbZijEh7XBLaqWCLsgWyL8GxlP7/wacTpJvJf9oWX3m5AP qvx68APmTcSSA8C7qqht2VAHjrheAnUcAxlMzbpW6NK3WjOc7UtTnIjXZFMOyvTcOvZB h9Jg== X-Gm-Message-State: AOAM531SFUsAALlc9Junge6f2l+uYivjLoPlJk0SxCBPnF318vqQBBW1 PoSBJpP5PrYBafVbwezQF5FX/U0qsl8= X-Received: by 2002:a9f:2985:: with SMTP id s5mr9952672uas.13.1612789658267; Mon, 08 Feb 2021 05:07:38 -0800 (PST) Received: from mail-vs1-f50.google.com (mail-vs1-f50.google.com. [209.85.217.50]) by smtp.gmail.com with ESMTPSA id h62sm2094570uad.15.2021.02.08.05.07.36 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 08 Feb 2021 05:07:37 -0800 (PST) Received: by mail-vs1-f50.google.com with SMTP id x13so495144vsl.8 for ; Mon, 08 Feb 2021 05:07:36 -0800 (PST) X-Received: by 2002:a67:581:: with SMTP id 123mr10048669vsf.14.1612789656311; Mon, 08 Feb 2021 05:07:36 -0800 (PST) MIME-Version: 1.0 References: <20210208113810.11118-1-hxseverything@gmail.com> In-Reply-To: <20210208113810.11118-1-hxseverything@gmail.com> From: Willem de Bruijn Date: Mon, 8 Feb 2021 08:06:59 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] bpf: in bpf_skb_adjust_room correct inner protocol for vxlan To: huangxuesen Cc: David Miller , bpf , Daniel Borkmann , Network Development , linux-kernel , huangxuesen , chengzhiyong , wangli Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 8, 2021 at 7:16 AM huangxuesen wrote: > > From: huangxuesen > > When pushing vxlan tunnel header, set inner protocol as ETH_P_TEB in skb > to avoid HW device disabling udp tunnel segmentation offload, just like > vxlan_build_skb does. > > Drivers for NIC may invoke vxlan_features_check to check the > inner_protocol in skb for vxlan packets to decide whether to disable > NETIF_F_GSO_MASK. Currently it sets inner_protocol as the original > skb->protocol, that will make mlx5_core disable TSO and lead to huge > performance degradation. > > Signed-off-by: huangxuesen > Signed-off-by: chengzhiyong > Signed-off-by: wangli > --- > net/core/filter.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/net/core/filter.c b/net/core/filter.c > index 255aeee72402..f8d3ba3fe10f 100644 > --- a/net/core/filter.c > +++ b/net/core/filter.c > @@ -3466,7 +3466,12 @@ static int bpf_skb_net_grow(struct sk_buff *skb, u32 off, u32 len_diff, > skb->inner_mac_header = inner_net - inner_mac_len; > skb->inner_network_header = inner_net; > skb->inner_transport_header = inner_trans; > - skb_set_inner_protocol(skb, skb->protocol); > + > + if (flags & BPF_F_ADJ_ROOM_ENCAP_L4_UDP && > + inner_mac_len == ETH_HLEN) > + skb_set_inner_protocol(skb, htons(ETH_P_TEB)); This may be used by vxlan, but it does not imply it. Adding ETH_HLEN bytes likely means pushing an Ethernet header, but same point. Conversely, pushing an Ethernet header is not limited to UDP encap. This probably needs a new explicit BPF_F_ADJ_ROOM_.. flag, rather than trying to infer from imprecise heuristics.