From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A5CDD45895; Thu, 29 Aug 2024 11:00:35 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 46D3D42D35; Thu, 29 Aug 2024 11:00:31 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by mails.dpdk.org (Postfix) with ESMTP id 578A042B71 for ; Thu, 29 Aug 2024 11:00:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1724922029; x=1756458029; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=Nl/Fknpas0j//MpGs91FcGaKXeUgl7cU50BgLpwxLB4=; b=QMeMHuasbVkro4FwAF1GWc+tRe/ha9P9nT1pyHGHa8QfDPRB1UmPe5GA lJcolFW7t+fOWdZPjPb0iawrfrahBO//Wb/0stPtYbRzCi83W54nKlXKw ylIzfdJqWopawKuW+WDke0ZVdMB0Jy8h5PydEfncHbq8+JYIxmEEj66hz d9ElZ5OmjLKl5B0TjhRUk7P/Y/nsIk3SV2G2g7nhnVR6FzHS+L4z/Un6i wOuElC17VTDodILlbhxtVKySmjUnZkPK3XwXl4UCOyJdRV3tVP2O/ug/q 1rHrmaXGkj3iuMwR0als/sVgL8vRlU5IkDEQKUWzqq6SyQa8BVHWyzkiz Q==; X-CSE-ConnectionGUID: TkoAwRYlQXCOBr/91pYxUQ== X-CSE-MsgGUID: 7WJKBWyZSI+zGmdSZEV/EA== X-IronPort-AV: E=McAfee;i="6700,10204,11178"; a="23663419" X-IronPort-AV: E=Sophos;i="6.10,185,1719903600"; d="scan'208";a="23663419" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Aug 2024 02:00:28 -0700 X-CSE-ConnectionGUID: 1ql48wvTR1+Cvkuz+fCyIg== X-CSE-MsgGUID: G2jPeUXZTEKWnuS6KNN8tA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,185,1719903600"; d="scan'208";a="64202936" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa008.jf.intel.com with ESMTP; 29 Aug 2024 02:00:27 -0700 From: Anatoly Burakov To: dev@dpdk.org, Jedrzej Jagielski , Stefan Wegrzyn , Piotr Kwapulinski Subject: [PATCH v1 02/15] net/ixgbe/base: add missing ACI definitions Date: Thu, 29 Aug 2024 10:00:07 +0100 Message-ID: <15a202bbc980f323ee6c8b83482ad3ad7393a95c.1724921977.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org When adding Admin Command Interface and E610 device support, some ACI capabilities definition code was missed due to the way shared driver code snapshot was generated. Add missing code paths. Fixes: 25b48e569f2f ("net/ixgbe/base: add E610 Admin Command Interface") Fixes: 7c3bfffda43d ("net/ixgbe/base: detect E610 device capabilities") Signed-off-by: Anatoly Burakov --- drivers/net/ixgbe/base/ixgbe_e610.c | 49 ++++++++++++++++++++++++ drivers/net/ixgbe/base/ixgbe_type_e610.h | 4 ++ 2 files changed, 53 insertions(+) diff --git a/drivers/net/ixgbe/base/ixgbe_e610.c b/drivers/net/ixgbe/base/ixgbe_e610.c index 3e2be07731..1f3a4532da 100644 --- a/drivers/net/ixgbe/base/ixgbe_e610.c +++ b/drivers/net/ixgbe/base/ixgbe_e610.c @@ -671,6 +671,9 @@ ixgbe_parse_common_caps(struct ixgbe_hw *hw, struct ixgbe_hw_common_caps *caps, case IXGBE_ACI_CAPS_VALID_FUNCTIONS: caps->valid_functions = number; break; + case IXGBE_ACI_CAPS_SRIOV: + caps->sr_iov_1_1 = (number == 1); + break; case IXGBE_ACI_CAPS_VMDQ: caps->vmdq = (number == 1); break; @@ -833,6 +836,25 @@ ixgbe_parse_valid_functions_cap(struct ixgbe_hw *hw, hw->logical_pf_id = ixgbe_func_id_to_logical_id(number, hw->pf_id); } +/** + * ixgbe_parse_vf_dev_caps - Parse IXGBE_ACI_CAPS_VF device caps + * @hw: pointer to the HW struct + * @dev_p: pointer to device capabilities structure + * @cap: capability element to parse + * + * Parse IXGBE_ACI_CAPS_VF for device capabilities. + */ +static void ixgbe_parse_vf_dev_caps(struct ixgbe_hw *hw, + struct ixgbe_hw_dev_caps *dev_p, + struct ixgbe_aci_cmd_list_caps_elem *cap) +{ + u32 number = IXGBE_LE32_TO_CPU(cap->number); + + UNREFERENCED_1PARAMETER(hw); + + dev_p->num_vfs_exposed = number; +} + /** * ixgbe_parse_vsi_dev_caps - Parse IXGBE_ACI_CAPS_VSI device caps * @hw: pointer to the HW struct @@ -944,6 +966,9 @@ static void ixgbe_parse_dev_caps(struct ixgbe_hw *hw, ixgbe_parse_valid_functions_cap(hw, dev_p, &cap_resp[i]); break; + case IXGBE_ACI_CAPS_VF: + ixgbe_parse_vf_dev_caps(hw, dev_p, &cap_resp[i]); + break; case IXGBE_ACI_CAPS_VSI: ixgbe_parse_vsi_dev_caps(hw, dev_p, &cap_resp[i]); break; @@ -962,6 +987,27 @@ static void ixgbe_parse_dev_caps(struct ixgbe_hw *hw, } +/** + * ixgbe_parse_vf_func_caps - Parse IXGBE_ACI_CAPS_VF function caps + * @hw: pointer to the HW struct + * @func_p: pointer to function capabilities structure + * @cap: pointer to the capability element to parse + * + * Extract function capabilities for IXGBE_ACI_CAPS_VF. + */ +static void ixgbe_parse_vf_func_caps(struct ixgbe_hw *hw, + struct ixgbe_hw_func_caps *func_p, + struct ixgbe_aci_cmd_list_caps_elem *cap) +{ + u32 logical_id = IXGBE_LE32_TO_CPU(cap->logical_id); + u32 number = IXGBE_LE32_TO_CPU(cap->number); + + UNREFERENCED_1PARAMETER(hw); + + func_p->num_allocd_vfs = number; + func_p->vf_base_id = logical_id; +} + /** * ixgbe_get_num_per_func - determine number of resources per PF * @hw: pointer to the HW structure @@ -1073,6 +1119,9 @@ static void ixgbe_parse_func_caps(struct ixgbe_hw *hw, &cap_resp[i], "func caps"); switch (cap) { + case IXGBE_ACI_CAPS_VF: + ixgbe_parse_vf_func_caps(hw, func_p, &cap_resp[i]); + break; case IXGBE_ACI_CAPS_VSI: ixgbe_parse_vsi_func_caps(hw, func_p, &cap_resp[i]); break; diff --git a/drivers/net/ixgbe/base/ixgbe_type_e610.h b/drivers/net/ixgbe/base/ixgbe_type_e610.h index 9e72053e2a..dcb874e42e 100644 --- a/drivers/net/ixgbe/base/ixgbe_type_e610.h +++ b/drivers/net/ixgbe/base/ixgbe_type_e610.h @@ -672,6 +672,8 @@ struct ixgbe_aci_cmd_list_caps_elem { __le16 cap; #define IXGBE_ACI_CAPS_VALID_FUNCTIONS 0x0005 #define IXGBE_ACI_MAX_VALID_FUNCTIONS 0x8 +#define IXGBE_ACI_CAPS_SRIOV 0x0012 +#define IXGBE_ACI_CAPS_VF 0x0013 #define IXGBE_ACI_CAPS_VMDQ 0x0014 #define IXGBE_ACI_CAPS_VSI 0x0017 #define IXGBE_ACI_CAPS_DCB 0x0018 @@ -1954,6 +1956,8 @@ struct ixgbe_hw_common_caps { #define IXGBE_MAX_SUPPORTED_GPIO_SDP 8 u8 led[IXGBE_MAX_SUPPORTED_GPIO_LED]; u8 sdp[IXGBE_MAX_SUPPORTED_GPIO_SDP]; + /* SR-IOV virtualization */ + u8 sr_iov_1_1; /* SR-IOV enabled */ /* VMDQ */ u8 vmdq; /* VMDQ supported */ -- 2.43.5