Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp6416820pxb; Wed, 17 Feb 2021 04:07:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJw39Exf04Z+Az5RDzxky+JMZ4F4WXWzyAApjZqakt9RNltfBFWjQr67RaQoumj1FVayTF4w X-Received: by 2002:a05:6402:1398:: with SMTP id b24mr25032782edv.108.1613563673321; Wed, 17 Feb 2021 04:07:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613563673; cv=none; d=google.com; s=arc-20160816; b=tyJPLfSkzPMsZ9Fbz+wroVqSdUFovSIiya31KqnXuEELuFDYtGtc3SE/K63y1vdSBb HufP7+fLQ4x9a5SeQWD4bME0a14jmPc2XF5TqA4Bwwna689gdtWkDqLu8yg0k70fAhgl 8QSfnKxcucs6SwGAnWCjFR7xf4Z/NTK72jX2Vmd1mFtYZSTq7jjN9nMKvg2B5BVjMy6B JWA9wNyTxRcH7f4wvC1Qwa911fAvSPZu/Wz/WLmECt5KKGvnuC1SiJZ26KQOT2AwPndr jwyvXoMUsf+nF8QlCN/cH/ZAldYY+qKLp1h/vXD45PWdcxHWFtpMQEMpK8N0gxu19d/Q UYAg== 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=uvsje6kXLionjEyqOvW16bSJRxCvIh50mtSZCtnJSvo=; b=M7+Hv4Z1Ur42Vkl3Fhu+rSzBElxpCPV6bnjLUFd/PyBtmBpG/fMoqQa8Vws4obbqQn F0emS03VMC0JpXQkYV2ZvYt/+jBGnYwXUAF7UTyRqr7ZLe2NX4D42ysKMEDeCJWcF4+n glVJ7OXP2y3+WnJ5fd2Opkc3CZBjEsuqT+jXcQQvPVLxxiMfmnLBtMSPEf4DJPDeZXPX uPseyqY/XGk9od8MXkt8ywHxEd93+jhodIqZM6G3yI4ZTh0iI7i/AYJ6YDL4YEd0WOLU Q3SKjL3n9mBcnL1UkSNPu77wo0eYDXHBhZ1evT5tEiZbCOA8XcgdLLV066w9TymbeVL2 GjIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@pm.me header.s=protonmail header.b="kl/0zkCD"; 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 v7si1260465edj.572.2021.02.17.04.07.30; Wed, 17 Feb 2021 04:07:53 -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="kl/0zkCD"; 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 S232428AbhBQMDz (ORCPT + 99 others); Wed, 17 Feb 2021 07:03:55 -0500 Received: from mail-40136.protonmail.ch ([185.70.40.136]:16433 "EHLO mail-40136.protonmail.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231724AbhBQMCZ (ORCPT ); Wed, 17 Feb 2021 07:02:25 -0500 Date: Wed, 17 Feb 2021 12:01:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me; s=protonmail; t=1613563282; bh=uvsje6kXLionjEyqOvW16bSJRxCvIh50mtSZCtnJSvo=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=kl/0zkCDlZIHzDLdP/5tOn1YP0vKzpfihguDgaZk8EWz3aLwjyIeJUELieMqjCIGM StSJiu1OwQS4YKpoRsdNqv3A02k+fmOl2mKE2Q5FWECgR87zDRWXTVugtSju+qTHtZ 3aM1A9OJtge0ioCnQpDpKLx4KO5e9R/ArpWICScYzx6905sMBXVyLUsyBhp9aupr+r YZny4I8Ix59HJ3rWh22kboNLIMswzbjb/2C85/kUPt0rk083qhgQFOwBcaq9VmFxaE NxE0xFKVZXz+rWoEnfT719F74HayUYByBxGwKug0dFRB4baEuZxykwOKdPyyK8rxGx IBOSJ5UkptpFA== 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 v7 bpf-next 3/6] net: add priv_flags for allow tx skb without linear Message-ID: <20210217120003.7938-4-alobakin@pm.me> In-Reply-To: <20210217120003.7938-1-alobakin@pm.me> References: <20210217120003.7938-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 --- include/linux/netdevice.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 2c1a642ecdc0..1186ba901ad3 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1518,6 +1518,8 @@ struct net_device_ops { * @IFF_FAILOVER_SLAVE_BIT: device is lower dev of a failover master devic= e * @IFF_L3MDEV_RX_HANDLER_BIT: only invoke the rx handler of L3 master dev= ice * @IFF_LIVE_RENAME_OK_BIT: rename is allowed while device is up and runni= ng + * @IFF_TX_SKB_NO_LINEAR_BIT: device/driver is capable of xmitting frames = with + *=09skb_headlen(skb) =3D=3D 0 (data starts from frag0) * * @NETDEV_PRIV_FLAG_COUNT: total priv flags count */ @@ -1553,6 +1555,7 @@ enum netdev_priv_flags { =09IFF_FAILOVER_SLAVE_BIT, =09IFF_L3MDEV_RX_HANDLER_BIT, =09IFF_LIVE_RENAME_OK_BIT, +=09IFF_TX_SKB_NO_LINEAR_BIT, =20 =09NETDEV_PRIV_FLAG_COUNT, }; @@ -1595,6 +1598,7 @@ static_assert(sizeof(netdev_priv_flags_t) * BITS_PER_= BYTE >=3D #define IFF_FAILOVER_SLAVE=09=09__IFF(FAILOVER_SLAVE) #define IFF_L3MDEV_RX_HANDLER=09=09__IFF(L3MDEV_RX_HANDLER) #define IFF_LIVE_RENAME_OK=09=09__IFF(LIVE_RENAME_OK) +#define IFF_TX_SKB_NO_LINEAR=09=09__IFF(TX_SKB_NO_LINEAR) =20 /** *=09struct net_device - The DEVICE structure. --=20 2.30.1