From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.115]) by mail.toke.dk (Postfix) with ESMTPS id 1D580A24A32 for ; Thu, 24 Aug 2023 21:33:51 +0200 (CEST) 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=Ygkl2b87 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1692905633; x=1724441633; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=vpZrNDwG531EI/mB/TFW3JzHeD1i02TeQmZYqpldh0w=; b=Ygkl2b87yLa//GLrWEnppcRJV0AWCeBCDK9JL7LNsg5qySsRwXKdmIuF z7/ND5qUu4h4Hnb9pnftuKGDD8n9/jJY5xd9eOkU2qNbGypTFGjQlbttS xGFpM3hZ2PnYK+FPbflfdCttobOaYc7NygJPABQZxBkFECJiXsvdLIG7q Mf4i40CihW+/BBRDl0370LQbIc9VBg37mOBzZMCiFmeoD2X2kAaF4/EVN I5kyTvqG+FRiPqLCqFbNa1kMUzwrykMGwZsK+J61da6c99U35LIVyWiW4 TCOK8keLaqf3fbH+B6XtoSCkaX4s055ZwBPJcELrsbxg6IrvGY7uXom1N A==; X-IronPort-AV: E=McAfee;i="6600,9927,10812"; a="374516540" X-IronPort-AV: E=Sophos;i="6.02,195,1688454000"; d="scan'208";a="374516540" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Aug 2023 12:33:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10812"; a="802667322" X-IronPort-AV: E=Sophos;i="6.02,195,1688454000"; d="scan'208";a="802667322" Received: from irvmail002.ir.intel.com ([10.43.11.120]) by fmsmga008.fm.intel.com with ESMTP; 24 Aug 2023 12:33:40 -0700 Received: from lincoln.igk.intel.com (lincoln.igk.intel.com [10.102.21.235]) by irvmail002.ir.intel.com (Postfix) with ESMTP id D249F33EA3; Thu, 24 Aug 2023 20:33:36 +0100 (IST) From: Larysa Zaremba To: bpf@vger.kernel.org Date: Thu, 24 Aug 2023 21:26:39 +0200 Message-ID: <20230824192703.712881-1-larysa.zaremba@intel.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: PWUPIQCXGX4KXH5FKBZVCN36ZGBL2EHV X-Message-ID-Hash: PWUPIQCXGX4KXH5FKBZVCN36ZGBL2EHV 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 X-Mailman-Version: 3.3.8 Precedence: list Subject: [xdp-hints] [RFC bpf-next 00/23] 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. [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/ Aleksander Lobakin (1): net, xdp: allow metadata > 32 Larysa Zaremba (22): 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 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 | 2 + 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 | 23 + drivers/net/ethernet/intel/ice/ice_ptp.c | 27 +- drivers/net/ethernet/intel/ice/ice_ptp.h | 15 +- drivers/net/ethernet/intel/ice/ice_txrx.c | 19 +- drivers/net/ethernet/intel/ice/ice_txrx.h | 29 +- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 343 ++++++++++++--- drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 18 +- drivers/net/ethernet/intel/ice/ice_xsk.c | 26 +- .../net/ethernet/mellanox/mlx5/core/en/txrx.h | 10 + .../net/ethernet/mellanox/mlx5/core/en/xdp.c | 116 +++++ .../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 | 29 +- kernel/bpf/offload.c | 4 + net/core/xdp.c | 57 +++ .../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 +- 29 files changed, 1124 insertions(+), 459 deletions(-) -- 2.41.0