From patchwork Thu Jun 6 11:24:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Swiatkowski X-Patchwork-Id: 1944566 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=PCXoWAH5; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=140.211.166.136; helo=smtp3.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=patchwork.ozlabs.org) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 4Vw21T5ZFdz20Q5 for ; Thu, 6 Jun 2024 21:20:13 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id C9C6F61483; Thu, 6 Jun 2024 11:20:11 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id O8uHcZh57WL7; Thu, 6 Jun 2024 11:20:09 +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 smtp3.osuosl.org 93B2960626 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1717672809; bh=oLwthnMv+iYUwBtqPWujy43GsQlsNOY2nWOvfnnmpIQ=; h=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:Cc:From; b=PCXoWAH55uQaUhWOQVji7+npiAJJgt/SlHkPTF8HwQR3tD3UoTb8gDea5uBi5+YT4 xQDVWKhO/tfDyxno+WdOEN89sulPD77R/iiqcoRg5B94SZ61PNMVgjhnRX6Mwtl/YO 4GXdGx5Ko+LOF+5q6EvCnszl/LHH3JgE0ioh4ZTZUAMlk/OLr6IXxzdsOGkgd4rSjO ahXNKN3Y1vlkk4ML/JNYtMfwIP25KbqmVXjeq7BX0NQ63R4+5DeH+AdBdNf7s31gmj vBHkgKHu6vLbZ4n2USMS+sEbB9FNmKXKfeKgCt+xrvXIWGW8no6vV/ysU+EF60lRKi 5qHSHsU93Aa8A== Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id 93B2960626; Thu, 6 Jun 2024 11:20:09 +0000 (UTC) X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 5CC511BF591 for ; Thu, 6 Jun 2024 11:20:08 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 52F99408AD for ; Thu, 6 Jun 2024 11:20:08 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id mWH2mTKJe_2w for ; Thu, 6 Jun 2024 11:20:06 +0000 (UTC) Received-SPF: None (mailfrom) identity=mailfrom; client-ip=198.175.65.15; helo=mgamail.intel.com; envelope-from=michal.swiatkowski@linux.intel.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp2.osuosl.org 740234067B DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 740234067B Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by smtp2.osuosl.org (Postfix) with ESMTPS id 740234067B for ; Thu, 6 Jun 2024 11:20:06 +0000 (UTC) X-CSE-ConnectionGUID: p+hDPTqVRbioWqF8/xnaJg== X-CSE-MsgGUID: a3ARL+CBRyaPXtJ3iBoFig== X-IronPort-AV: E=McAfee;i="6600,9927,11094"; a="18123660" X-IronPort-AV: E=Sophos;i="6.08,219,1712646000"; d="scan'208";a="18123660" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jun 2024 04:20:06 -0700 X-CSE-ConnectionGUID: 1NP3tQa3T0yT3jMDx/eJTw== X-CSE-MsgGUID: O3rz3D60SMOGYoAWFYinSw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,219,1712646000"; d="scan'208";a="42864393" Received: from wasp.igk.intel.com (HELO GK3153-DR2-R750-36946.localdomain.com) ([10.102.20.192]) by orviesa003.jf.intel.com with ESMTP; 06 Jun 2024 04:20:02 -0700 From: Michal Swiatkowski To: intel-wired-lan@lists.osuosl.org Date: Thu, 6 Jun 2024 13:24:48 +0200 Message-ID: <20240606112503.1939759-1-michal.swiatkowski@linux.intel.com> X-Mailer: git-send-email 2.42.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=1717672806; x=1749208806; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=4vhTgu3IWT84hCQV8QinoRx6X3Qlp5ZgSdsZDhps0Ao=; b=eRqKvFyqYfNDiIkq9iB4q2SS0tu/ADEdGQT4qcqSj5AbH+tPQMpc/2+j ei1YZFYf7IAXJC7iuLSEVJtp9PR5OAxPBn8rfZi8XC07VXfMBxqHNKKft 4LqfQg/AlFEBGiPl5DH6DD6SwUIwgEGw9s0mXAt3pj1ULjAOJZqmEKI9l kotNVDSIwBXHFf9lfu9Ru9PeTeC2bzHrMgvdhqVmWjuSFd55zAZCu3swy lWuL9ERUqMyYjxshL8y2GxnXLQqZ/wxwmbS1943Qr9w+jZ2gUEa5ZQ+sC yj8oZfu2io5Kd6qWsXiNezi4J5GCZpyCzO7CrmvVFCEGYqRo4tJof7Ix3 Q==; X-Mailman-Original-Authentication-Results: smtp2.osuosl.org; dmarc=none (p=none dis=none) header.from=linux.intel.com X-Mailman-Original-Authentication-Results: smtp2.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=eRqKvFyq Subject: [Intel-wired-lan] [iwl-next v5 00/15] ice: support devlink subfunction 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: shayd@nvidia.com, maciej.fijalkowski@intel.com, horms@kernel.org, sridhar.samudrala@intel.com, mateusz.polchlopek@intel.com, netdev@vger.kernel.org, jiri@nvidia.com, kalesh-anakkur.purayil@broadcom.com, michal.kubiak@intel.com, pio.raczynski@gmail.com, przemyslaw.kitszel@intel.com, jacob.e.keller@intel.com, wojciech.drewek@intel.com Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" Hi, Currently ice driver does not allow creating more than one networking device per physical function. The only way to have more hardware backed netdev is to use SR-IOV. Following patchset adds support for devlink port API. For each new pcisf type port, driver allocates new VSI, configures all resources needed, including dynamically MSIX vectors, program rules and registers new netdev. This series supports only one Tx/Rx queue pair per subfunction. Example commands: devlink port add pci/0000:31:00.1 flavour pcisf pfnum 1 sfnum 1000 devlink port function set pci/0000:31:00.1/1 hw_addr 00:00:00:00:03:14 devlink port function set pci/0000:31:00.1/1 state active devlink port function del pci/0000:31:00.1/1 Make the port representor and eswitch code generic to support subfunction representor type. VSI configuration is slightly different between VF and SF. It needs to be reflected in the code. v4 --> v5: [7] * use devlink_alloc() instead of devlink_alloc_ns() during subfunction devlink creation v3 --> v4: [6] * fix comment in ice_allocate_sf() * return ERR_PTR instead of NULL in ice_allocate_sf() v2 --> v3: [5] * fix misspealing in commit tilte * add missing doc entries in ice_dynamic_port * drop dev_err where extack is available * fix RCT in declaration v1 --> v2: [4] * allow changing SF MAC address only when port isn't attached * split patch with port representor creation into two (first making code generic and than adding support for SF representor) * fix warning massege in case of SF device creation * remove double space * add verb in commit message Changelog for previous patchset version (not containing port representor for SF support). v3 --> v4: [3] * get rid of unnecessary checks * fix cosmetic issues (whitespaces, wording) * move unrelated chunks to separate patch * move implementing activation/deactivation to last patch v2 --> v3: [2] * fix building issue between the patches; allocating devlink for subfunction need to include base subfunction header * fix kdoc issues v1 --> v2: [1] * use correct parameters in ice_devlink_alloc() thanks to Mateusz [1] https://lore.kernel.org/netdev/20240507114516.9765-1-michal.swiatkowski@linux.intel.com/ [2] https://lore.kernel.org/netdev/20240410050809.125043-1-michal.swiatkowski@linux.intel.com/ [3] https://lore.kernel.org/netdev/20240412063053.339795-1-michal.swiatkowski@linux.intel.com/ [4] https://lore.kernel.org/netdev/20240408103049.19445-1-michal.swiatkowski@linux.intel.com/ [5] https://lore.kernel.org/netdev/20240513083735.54791-1-michal.swiatkowski@linux.intel.com/ [6] https://lore.kernel.org/netdev/20240528043813.1342483-1-michal.swiatkowski@linux.intel.com/ [7] https://lore.kernel.org/netdev/20240603095025.1395347-1-michal.swiatkowski@linux.intel.com/ Michal Swiatkowski (8): ice: treat subfunction VSI the same as PF VSI ice: make representor code generic ice: create port representor for SF ice: don't set target VSI for subfunction ice: check if SF is ready in ethtool ops ice: implement netdevice ops for SF representor ice: support subfunction devlink Tx topology ice: basic support for VLAN in subfunctions Piotr Raczynski (7): ice: add new VSI type for subfunctions ice: export ice ndo_ops functions ice: add basic devlink subfunctions support ice: allocate devlink for subfunction ice: base subfunction aux driver ice: implement netdev for subfunction ice: allow to activate and deactivate subfunction drivers/net/ethernet/intel/ice/Makefile | 2 + .../net/ethernet/intel/ice/devlink/devlink.c | 47 ++ .../net/ethernet/intel/ice/devlink/devlink.h | 1 + .../ethernet/intel/ice/devlink/devlink_port.c | 503 ++++++++++++++++++ .../ethernet/intel/ice/devlink/devlink_port.h | 46 ++ drivers/net/ethernet/intel/ice/ice.h | 19 +- drivers/net/ethernet/intel/ice/ice_base.c | 5 +- drivers/net/ethernet/intel/ice/ice_dcb_lib.c | 1 + drivers/net/ethernet/intel/ice/ice_eswitch.c | 113 +++- drivers/net/ethernet/intel/ice/ice_eswitch.h | 22 +- drivers/net/ethernet/intel/ice/ice_ethtool.c | 7 +- drivers/net/ethernet/intel/ice/ice_lib.c | 52 +- drivers/net/ethernet/intel/ice/ice_lib.h | 3 + drivers/net/ethernet/intel/ice/ice_main.c | 66 ++- drivers/net/ethernet/intel/ice/ice_repr.c | 211 ++++++-- drivers/net/ethernet/intel/ice/ice_repr.h | 22 +- drivers/net/ethernet/intel/ice/ice_sf_eth.c | 329 ++++++++++++ drivers/net/ethernet/intel/ice/ice_sf_eth.h | 33 ++ .../ethernet/intel/ice/ice_sf_vsi_vlan_ops.c | 21 + .../ethernet/intel/ice/ice_sf_vsi_vlan_ops.h | 13 + drivers/net/ethernet/intel/ice/ice_sriov.c | 4 +- drivers/net/ethernet/intel/ice/ice_txrx.c | 2 +- drivers/net/ethernet/intel/ice/ice_type.h | 1 + drivers/net/ethernet/intel/ice/ice_vf_lib.c | 4 +- .../net/ethernet/intel/ice/ice_vsi_vlan_ops.c | 4 + drivers/net/ethernet/intel/ice/ice_xsk.c | 2 +- 26 files changed, 1395 insertions(+), 138 deletions(-) create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_eth.c create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_eth.h create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_vsi_vlan_ops.c create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_vsi_vlan_ops.h