From patchwork Mon May 27 18:57:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Ahmed Zaki X-Patchwork-Id: 1940071 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=pYJTJMLo; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=patchwork.ozlabs.org) Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Vp4g60Yj0z20KL for ; Tue, 28 May 2024 04:58:41 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 0449681E39; Mon, 27 May 2024 18:58:40 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id UUZDsQ8FWgm1; Mon, 27 May 2024 18:58:39 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=140.211.166.34; helo=ash.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org EBDEB81E1A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1716836319; bh=BUbepeShUAYsjyGYNzi9UJx213VOSaow57EKJYNAZrA=; h=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:Cc:From; b=pYJTJMLoLrvU42rVHeGcy3njvOJsonq67Y0hOz0Mdfecj71E98EH1FEngW90N+Zqp gv6G3pIewfBTik6f/T6iEJu/eL1DpGxsxxb4p4XUCYsau4aFPYPHTgJkIqox6j7cTe XZSvt6/39tDegAWxiGvXCKd5nwwRkpxuhm1R0dXzuwh0yI7ABbJ1aj6iJGOoVM1EhP UTwuXoiJ6Ba7wx+5Z6JnThLgzjW8uXJ33bQhD67XGCc2YQNVDgrxNQ1pc73LQbICmf WaBWAn/UYwwdwwd45LL0JOnPIo1XT2uX3rpixdjmwj8LA9qS7St+kt0iQvekVz3id/ X0YwMsOKsP/Jg== Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp1.osuosl.org (Postfix) with ESMTP id EBDEB81E1A; Mon, 27 May 2024 18:58:38 +0000 (UTC) X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 83B0F1D1FEE for ; Mon, 27 May 2024 18:58:37 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 7BAEE81E1A for ; Mon, 27 May 2024 18:58:37 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id EANC0ze5RQy3 for ; Mon, 27 May 2024 18:58:36 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.198.163.15; helo=mgamail.intel.com; envelope-from=ahmed.zaki@intel.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp1.osuosl.org 2307080E83 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 2307080E83 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) by smtp1.osuosl.org (Postfix) with ESMTPS id 2307080E83 for ; Mon, 27 May 2024 18:58:34 +0000 (UTC) X-CSE-ConnectionGUID: y9Ww1uh4TJa6/H8D5LYLNw== X-CSE-MsgGUID: O43GfZBOT8+Zajh259uWKQ== X-IronPort-AV: E=McAfee;i="6600,9927,11085"; a="13353914" X-IronPort-AV: E=Sophos;i="6.08,193,1712646000"; d="scan'208";a="13353914" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2024 11:58:34 -0700 X-CSE-ConnectionGUID: zBfRQOdJRUuZMQzD2UgsWA== X-CSE-MsgGUID: ou97szs1Tzy+zjMkMfpaGw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,193,1712646000"; d="scan'208";a="34910002" Received: from rfrazer-mobl3.amr.corp.intel.com (HELO azaki-desk1.intel.com) ([10.125.110.208]) by fmviesa009-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2024 11:58:31 -0700 From: Ahmed Zaki To: intel-wired-lan@lists.osuosl.org Date: Mon, 27 May 2024 12:57:57 -0600 Message-ID: <20240527185810.3077299-1-ahmed.zaki@intel.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1716836316; x=1748372316; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=KlcpWklQ5ACkWuplTx/6ZWYFd3VezVk6vhnqFjWNih8=; b=KZiRZs9fOQK46kx8/hOOfrRjBl7lHZCzLYhWAUl0da1IIBMsJFooKINq DqZwZfzu/XBuCCLpHnyiwrHBnlNzxdAnyw7HKEXBo67Wv3yjnfM9bU5vR 7IEdxV9nGZkhUeLRN455krnCWf8UaibhgdtdjBl7mTU25rSJhsG/US2jX R8xwnS2WpO34jyG1DPLxomjk3ayb3Vck1kqSPpLhWCNhE8MTeSjDY/BrW 5PohIGn2JPLRwe+X6dXBMLxqmzPz4tSi6nddy12+uY2F8atrmX7CFVUDB 5fzJc+kOt9OSW/xFnBYgPKyDSnZda19ul4G9b1Uh9eQe3fzNTsgH63GhU Q==; X-Mailman-Original-Authentication-Results: smtp1.osuosl.org; dmarc=pass (p=none dis=none) header.from=intel.com X-Mailman-Original-Authentication-Results: smtp1.osuosl.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=KZiRZs9f Subject: [Intel-wired-lan] [PATCH iwl-next v2 00/13] ice: iavf: add support for TC U32 filters on VFs X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jacob.e.keller@intel.com, netdev@vger.kernel.org, anthony.l.nguyen@intel.com, Ahmed Zaki Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" The IntelĀ® Ethernet 800 Series is designed with a pipeline that has an on-chip programmable capability called Dynamic Device Personalization (DDP). A DDP package is loaded by the driver during probe time. The DDP package programs functionality in both the parser and switching blocks in the pipeline, allowing dynamic support for new and existing protocols. Once the pipeline is configured, the driver can identify the protocol and apply any HW action in different stages, for example, direct packets to desired hardware queues (flow director), queue groups or drop. Patches 1-8 introduce a DDP package parser API that enables different pipeline stages in the driver to learn the HW parser capabilities from the DDP package that is downloaded to HW. The parser library takes raw packet patterns and masks (in binary) indicating the packet protocol fields to be matched and generates the final HW profiles that can be applied at the required stage. With this API, raw flow filtering for FDIR or RSS could be done on new protocols or headers without any driver or Kernel updates (only need to update the DDP package). These patches were submitted before [1] but were not accepted mainly due to lack of a user. Patches 9-11 extend the virtchnl support to allow the VF to request raw flow director filters. Upon receiving the raw FDIR filter request, the PF driver allocates and runs a parser lib instance and generates the hardware profile definitions required to program the FDIR stage. These were also submitted before [2]. Finally, patches 12 and 13 add TC U32 filter support to the iavf driver. Using the parser API, the ice driver runs the raw patterns sent by the user and then adds a new profile to the FDIR stage associated with the VF's VSI. Refer to examples in patch 13 commit message. [1]: Link: https://lore.kernel.org/netdev/20230904021455.3944605-1-junfeng.guo@intel.com/ [2]: Link: https://lists.osuosl.org/pipermail/intel-wired-lan/Week-of-Mon-20230814/036333.html Tested-by: Rafal Romanowski --- v2: - No changes, just cc netdev Ahmed Zaki (2): iavf: refactor add/del FDIR filters iavf: add support for offloading tc U32 cls filters Junfeng Guo (11): ice: add parser create and destroy skeleton ice: parse and init various DDP parser sections ice: add debugging functions for the parser sections ice: add parser internal helper functions ice: add parser execution main loop ice: support turning on/off the parser's double vlan mode ice: add UDP tunnels support to the parser ice: add API for parser profile initialization virtchnl: support raw packet in protocol header ice: add method to disable FDIR SWAP option ice: enable FDIR filters from raw binary patterns for VFs drivers/net/ethernet/intel/iavf/iavf.h | 30 + .../net/ethernet/intel/iavf/iavf_ethtool.c | 59 +- drivers/net/ethernet/intel/iavf/iavf_fdir.c | 85 +- drivers/net/ethernet/intel/iavf/iavf_fdir.h | 13 +- drivers/net/ethernet/intel/iavf/iavf_main.c | 148 +- .../net/ethernet/intel/iavf/iavf_virtchnl.c | 25 +- drivers/net/ethernet/intel/ice/Makefile | 2 + drivers/net/ethernet/intel/ice/ice_common.h | 1 + drivers/net/ethernet/intel/ice/ice_ddp.c | 10 +- drivers/net/ethernet/intel/ice/ice_ddp.h | 13 + .../net/ethernet/intel/ice/ice_flex_pipe.c | 96 +- .../net/ethernet/intel/ice/ice_flex_pipe.h | 7 +- drivers/net/ethernet/intel/ice/ice_flow.c | 106 +- drivers/net/ethernet/intel/ice/ice_flow.h | 4 + drivers/net/ethernet/intel/ice/ice_parser.c | 2389 +++++++++++++++++ drivers/net/ethernet/intel/ice/ice_parser.h | 540 ++++ .../net/ethernet/intel/ice/ice_parser_rt.c | 860 ++++++ drivers/net/ethernet/intel/ice/ice_type.h | 1 + drivers/net/ethernet/intel/ice/ice_vf_lib.c | 2 +- drivers/net/ethernet/intel/ice/ice_vf_lib.h | 8 + drivers/net/ethernet/intel/ice/ice_virtchnl.c | 6 +- .../ethernet/intel/ice/ice_virtchnl_fdir.c | 400 ++- include/linux/avf/virtchnl.h | 13 +- 23 files changed, 4726 insertions(+), 92 deletions(-) create mode 100644 drivers/net/ethernet/intel/ice/ice_parser.c create mode 100644 drivers/net/ethernet/intel/ice/ice_parser.h create mode 100644 drivers/net/ethernet/intel/ice/ice_parser_rt.c