Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp7539885pxb; Thu, 18 Feb 2021 12:53:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJxNAXg3OTPCXaFz2foCVfUrBU789WmYSoo4Pjt95rZuqcaKuEfM8Aj5du4SFiEdrkqLgNDd X-Received: by 2002:a17:906:36cc:: with SMTP id b12mr5793993ejc.323.1613681593471; Thu, 18 Feb 2021 12:53:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613681593; cv=none; d=google.com; s=arc-20160816; b=AK+aXcweEurbVXJmyd9bi7ouExeGc6vidOJhLpC+dkk+ICGD/OuD9hVMc3EoNZxhEw lPotGRrk77fKW2dxO5duyqhyf4FDTAIyinassI9MZBQ+HdPGrjzv4HjJXG3KrwWoId8I 8WF6sFRmpnLkR4tS+77XEk9+IxWj8j+lB8Ldsc9nAyXLVmfE6OE4ASr4RXCnJ8R95KC5 Ym9hQ5tNN65N3mJlmTKUCl/Mu2AlWiztjwdyRCrTxfzpdQslzZPlAwqzUOpF9o6enfMv uq4nhBNGv+ggdRziikBXIHcQq2JrFshluGsv0z1+U6PudX7PVAy/7NM0+63CWKff+d09 1a8A== 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:subject:reply-to:cc:from:to :dkim-signature:date; bh=UT5dqOxXemXMBrQO9+qpLgvawJH5qOALCJiqi4jXfPQ=; b=dlLjq2VLKM0Xqz72VsP5VRM165mT8wOSY8uJGsoaD17S3gBMQJLrFkEAT+ah/dKQXQ ojcS+ryhkfKjiNSgb4uz7EcOd6pmdvDaAkrXzmG7ERIC+MLXzOaQWpKH66O8srv8o5yU sVJ3EBAch0Wnu1eblMHaDj1b3SmCBoI57YOR+qUu/a3PHgc54VJErOZA9T7Dd+yb86/v 6VDwPsTAG/7+n+smpPk+uRZD1n1tGSjriMo+w4uKZV4KgEW7O1UqF0tmUsS6y00+OPlk BY4RseikWQz9HHpIlnIgYlBZ8QmfQ3X+6j5YSa+FR1jL8ipZpAMQadzcI8nHivCVzCDm BhSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@pm.me header.s=protonmail header.b=ZzPhaU1U; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=pm.me Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v16si4475835ejy.232.2021.02.18.12.52.49; Thu, 18 Feb 2021 12:53:13 -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=@pm.me header.s=protonmail header.b=ZzPhaU1U; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=pm.me Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230152AbhBRUvb (ORCPT + 99 others); Thu, 18 Feb 2021 15:51:31 -0500 Received: from mail2.protonmail.ch ([185.70.40.22]:52007 "EHLO mail2.protonmail.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229953AbhBRUux (ORCPT ); Thu, 18 Feb 2021 15:50:53 -0500 Date: Thu, 18 Feb 2021 20:50:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me; s=protonmail; t=1613681403; bh=UT5dqOxXemXMBrQO9+qpLgvawJH5qOALCJiqi4jXfPQ=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=ZzPhaU1Um8KKnztCWdjI7U1gntZ54rIbwLoyG7z7JO3++LUhiAORy0MgqXE/++yRk gBTBajl4Kw+vw+g+fNl3uQ8uOaSdtOL3wWa6H1BirrmQ79QJeQINP6Y5tWT8pOd6Qa DalmENxYUoppmXBC22JeA1fzilIOKF9HLjjHxP9zpv2M4z9XHggpcu1r3cAsTZnKVS rMOV7DQNcbsVP7P7z7+p4p2gNmg2+8ODetnUuCQzveJ5BJPdSY6uh3GJp14Aqkq8AG G/GKp35+v2K8Zz8j2nkQPpgw1O2d+zI2K7JTnG9803cnqeuIA9qFz44X+VSE3iLusm f2Wse1HssAk2g== To: Daniel Borkmann , Magnus Karlsson From: Alexander Lobakin Cc: "Michael S. Tsirkin" , Jason Wang , "David S. Miller" , Jakub Kicinski , Jonathan Lemon , Alexei Starovoitov , =?utf-8?Q?Bj=C3=B6rn_T=C3=B6pel?= , Jesper Dangaard Brouer , John Fastabend , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , KP Singh , Paolo Abeni , Eric Dumazet , Xuan Zhuo , Dust Li , Alexander Lobakin , virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Reply-To: Alexander Lobakin Subject: [PATCH v8 bpf-next 2/5] net: add priv_flags for allow tx skb without linear Message-ID: <20210218204908.5455-3-alobakin@pm.me> In-Reply-To: <20210218204908.5455-1-alobakin@pm.me> References: <20210218204908.5455-1-alobakin@pm.me> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xuan Zhuo In some cases, we hope to construct skb directly based on the existing memory without copying data. In this case, the page will be placed directly in the skb, and the linear space of skb is empty. But unfortunately, many the network card does not support this operation. For example Mellanox Technologies MT27710 Family [ConnectX-4 Lx] will get the following error message: mlx5_core 0000:3b:00.1 eth1: Error cqe on cqn 0x817, ci 0x8, qn 0x1dbb, opcode 0xd, syndrome 0x1, vendor syndrome 0x68 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000030: 00 00 00 00 60 10 68 01 0a 00 1d bb 00 0f 9f d2 WQE DUMP: WQ size 1024 WQ cur size 0, WQE index 0xf, len: 64 00000000: 00 00 0f 0a 00 1d bb 03 00 00 00 08 00 00 00 00 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000020: 00 00 00 2b 00 08 00 00 00 00 00 05 9e e3 08 00 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 mlx5_core 0000:3b:00.1 eth1: ERR CQE on SQ: 0x1dbb So a priv_flag is added here to indicate whether the network card supports this feature. Signed-off-by: Xuan Zhuo Suggested-by: Alexander Lobakin [ alobakin: give a new flag more detailed description ] Signed-off-by: Alexander Lobakin Acked-by: John Fastabend --- include/linux/netdevice.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 3b6f82c2c271..6cef47b76cc6 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1518,6 +1518,8 @@ struct net_device_ops { * @IFF_FAILOVER_SLAVE: device is lower dev of a failover master device * @IFF_L3MDEV_RX_HANDLER: only invoke the rx handler of L3 master device * @IFF_LIVE_RENAME_OK: rename is allowed while device is up and running + * @IFF_TX_SKB_NO_LINEAR: device/driver is capable of xmitting frames with + *=09skb_headlen(skb) =3D=3D 0 (data starts from frag0) */ enum netdev_priv_flags { =09IFF_802_1Q_VLAN=09=09=09=3D 1<<0, @@ -1551,6 +1553,7 @@ enum netdev_priv_flags { =09IFF_FAILOVER_SLAVE=09=09=3D 1<<28, =09IFF_L3MDEV_RX_HANDLER=09=09=3D 1<<29, =09IFF_LIVE_RENAME_OK=09=09=3D 1<<30, +=09IFF_TX_SKB_NO_LINEAR=09=09=3D 1<<31, }; #define IFF_802_1Q_VLAN=09=09=09IFF_802_1Q_VLAN @@ -1584,6 +1587,7 @@ enum netdev_priv_flags { #define IFF_FAILOVER_SLAVE=09=09IFF_FAILOVER_SLAVE #define IFF_L3MDEV_RX_HANDLER=09=09IFF_L3MDEV_RX_HANDLER #define IFF_LIVE_RENAME_OK=09=09IFF_LIVE_RENAME_OK +#define IFF_TX_SKB_NO_LINEAR=09=09IFF_TX_SKB_NO_LINEAR /** *=09struct net_device - The DEVICE structure. -- 2.30.1