From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=intel.com (client-ip=134.134.136.126; helo=mgamail.intel.com; envelope-from=larysa.zaremba@intel.com; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=ZmECidK3 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.126]) by mail.toke.dk (Postfix) with ESMTPS id AE884A2CA5A for ; Wed, 27 Sep 2023 09:57:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1695801458; x=1727337458; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=+sMo3K8VEzjw6/6fyalMby3hEJHRRhqPjbbn9wZxKRQ=; b=ZmECidK3lgMjICRbhg7La+CRAEkOZGwWzHYsrQJhOZoiCnttCAd6ZRT3 wWVZ+b4FrtDOYL3qnIriTdADXRiiMGEFPw/VpXePtk314Zn524ugJcDoV dAlB/igyP2ubB+iPuighYvTCy5rjqSaUhGDnlAfMkaiNP4uqUkCb8qKkn 73uxZBEiA+Kh+g4TBJ/7vgYZcxT52UbhX8hsrM3UYK4pXSoAnGiJT3InU J9RM6m8zYGklSswvMiKC5sLwJR3UMR7L9zKIizukUhi6TeuKbyHiJqmCO 4pMYrhDkYb5VErZRAP+0u5UxwFb8tyh0Rv9k8cllFofX8XfWIX22Pi4nJ Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10845"; a="366817798" X-IronPort-AV: E=Sophos;i="6.03,179,1694761200"; d="scan'208";a="366817798" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Sep 2023 00:57:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10845"; a="1080039365" X-IronPort-AV: E=Sophos;i="6.03,179,1694761200"; d="scan'208";a="1080039365" Received: from irvmail002.ir.intel.com ([10.43.11.120]) by fmsmga005.fm.intel.com with ESMTP; 27 Sep 2023 00:57:28 -0700 Received: from lincoln.igk.intel.com (lincoln.igk.intel.com [10.102.21.235]) by irvmail002.ir.intel.com (Postfix) with ESMTP id 0B6097EAC3; Wed, 27 Sep 2023 08:57:26 +0100 (IST) From: Larysa Zaremba To: bpf@vger.kernel.org Date: Wed, 27 Sep 2023 09:51:00 +0200 Message-ID: <20230927075124.23941-1-larysa.zaremba@intel.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: IY2FOHMYU36LUVQJFY33LP7XIDEZV3QT X-Message-ID-Hash: IY2FOHMYU36LUVQJFY33LP7XIDEZV3QT X-MailFrom: larysa.zaremba@intel.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address CC: Larysa Zaremba , ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com, haoluo@google.com, jolsa@kernel.org, David Ahern , Jakub Kicinski , Willem de Bruijn , Jesper Dangaard Brouer , Anatoly Burakov , Alexander Lobakin , Magnus Karlsson , Maryam Tahhan , xdp-hints@xdp-project.net, netdev@vger.kernel.org, Willem de Bruijn , Alexei Starovoitov , Simon Horman , Tariq Toukan , Saeed Mahameed , Maciej Fijalkowski X-Mailman-Version: 3.3.8 Precedence: list Subject: [xdp-hints] [RFC bpf-next v2 00/24] XDP metadata via kfuncs for ice + mlx5 List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Alexei has requested an implementation of VLAN and checksum XDP hints for one more driver [0]. This series is exactly the v5 of "XDP metadata via kfuncs for ice" [1] with 2 additional patches for mlx5. Firstly, there is a VLAN hint implementation. I am pretty sure this one works and would not object adding it to the main series, if someone from nvidia ACKs it. The second patch is a checksum hint implementation and it is very rough. There is logic duplication and some missing features, but I am sure it captures the main points of the potential end implementation. I think it is unrealistic for me to provide a fully working mlx5 checksum hint implementation (complex logic, no HW), so would much rather prefer not having it in my main series. My main intension with this RFC is to prove proposed hints functions are suitable for non-intel HW. On Maciej's request, I provide some numbers about impact of these patches on ice performance. ZC: * Full hints implementation before addition of the static key decreases pps in ZC mode by 6% * Adding a static key eliminates this drop. Overall performce difference compared to a clean tree in inconsequential. skb (packets with invalid IP, dropped by stack): * Overall, patchset improves performance in skb mode by 2% [0] https://lore.kernel.org/bpf/CAADnVQLNeO81zc4f_z_UDCi+tJ2LS4dj2E1+au5TbXM+CPSyXQ@mail.gmail.com/ [1] https://lore.kernel.org/bpf/20230811161509.19722-1-larysa.zaremba@intel.com/ Changes since RFC v1: * new patch: hide some ice hints code behind a static key * fixed several bugs in ZC mode (ice) * change argument order in VLAN hint kfunc (tci, proto -> proto, tci) * cosmetic changes * analyze performance impact Aleksander Lobakin (1): net, xdp: allow metadata > 32 Larysa Zaremba (23): ice: make RX hash reading code more reusable ice: make RX HW timestamp reading code more reusable ice: make RX checksum checking code more reusable ice: Make ptype internal to descriptor info processing ice: Introduce ice_xdp_buff ice: Support HW timestamp hint ice: Support RX hash XDP hint ice: Support XDP hints in AF_XDP ZC mode xdp: Add VLAN tag hint ice: Implement VLAN tag hint ice: use VLAN proto from ring packet context in skb path xdp: Add checksum hint ice: Implement checksum hint ice: put XDP meta sources assignment under a static key condition selftests/bpf: Allow VLAN packets in xdp_hw_metadata selftests/bpf: Add flags and new hints to xdp_hw_metadata veth: Implement VLAN tag and checksum XDP hint net: make vlan_get_tag() return -ENODATA instead of -EINVAL selftests/bpf: Use AF_INET for TX in xdp_metadata selftests/bpf: Check VLAN tag and proto in xdp_metadata selftests/bpf: check checksum state in xdp_metadata mlx5: implement VLAN tag XDP hint mlx5: implement RX checksum XDP hint Documentation/networking/xdp-rx-metadata.rst | 11 +- drivers/net/ethernet/intel/ice/ice.h | 3 + drivers/net/ethernet/intel/ice/ice_ethtool.c | 2 +- .../net/ethernet/intel/ice/ice_lan_tx_rx.h | 412 +++++++++--------- drivers/net/ethernet/intel/ice/ice_lib.c | 2 +- drivers/net/ethernet/intel/ice/ice_main.c | 35 ++ drivers/net/ethernet/intel/ice/ice_ptp.c | 25 +- drivers/net/ethernet/intel/ice/ice_ptp.h | 16 +- drivers/net/ethernet/intel/ice/ice_txrx.c | 20 +- drivers/net/ethernet/intel/ice/ice_txrx.h | 29 +- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 330 +++++++++++--- drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 18 +- drivers/net/ethernet/intel/ice/ice_xsk.c | 49 ++- .../net/ethernet/mellanox/mlx5/core/en/txrx.h | 10 + .../net/ethernet/mellanox/mlx5/core/en/xdp.c | 115 +++++ .../net/ethernet/mellanox/mlx5/core/en_rx.c | 12 +- drivers/net/veth.c | 42 ++ include/linux/if_vlan.h | 4 +- include/linux/mlx5/device.h | 4 +- include/linux/skbuff.h | 13 +- include/net/xdp.h | 33 +- include/uapi/linux/netdev.h | 8 +- net/core/xdp.c | 56 +++ tools/include/uapi/linux/netdev.h | 8 +- .../selftests/bpf/prog_tests/xdp_metadata.c | 187 ++++---- .../selftests/bpf/progs/xdp_hw_metadata.c | 48 +- .../selftests/bpf/progs/xdp_metadata.c | 16 + tools/testing/selftests/bpf/testing_helpers.h | 3 + tools/testing/selftests/bpf/xdp_hw_metadata.c | 67 ++- tools/testing/selftests/bpf/xdp_metadata.h | 42 +- 30 files changed, 1161 insertions(+), 459 deletions(-) -- 2.41.0