From patchwork Thu Apr 24 12:38:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 885463 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5932A23816F for ; Thu, 24 Apr 2025 12:38:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498330; cv=none; b=NRRAO4TbXbKuFdOe2MIR8irnwaWF0DQh2uKor7TfmFf8UZVi51+ugTLhOfqPrNmzXnXbueWH7JH/FnzDFbR9xGhcFmsDAhkMQO2dQQpsSJ3gavJwC4XbI4UAIz9XmYMyUy6FOPDvgnZVbABpgSotOlw94US+kXOOaGybKliPKxk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498330; c=relaxed/simple; bh=Xm5L/rdGOp0lvC/4RkafHF8hE5ECIYrXjCGtOLoUx3w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yk/1t3HEBhj4ZNsflLJOL5m1s+mOUia37na3UVuWo7Tk+GKliv6DZI5G5HFvDxfU2js6ZHEsDLdRiykzBgvEJorjMBKvFeoA2L3S/hy+dAyQncwPo50bUSWowbJvA4x7DCgQYiQfPAecYnUWSZfCJkLNqvHk2FgiZ66E5yHWQos= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=mWKuTMaP; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="mWKuTMaP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498328; x=1777034328; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Xm5L/rdGOp0lvC/4RkafHF8hE5ECIYrXjCGtOLoUx3w=; b=mWKuTMaPSy7tC0XOFCnL9wPs9bI8L7tf3ZFOy2mn/KrJQVTy8L1/41kK e+rjMVxLExRj4LT4+A0HoIbUdCXp1zfPGJbEt0eHikQBOK41DzrGBdRrT WXBBqSjmwlWVhxatvljgVxojeA9Sqvfwx/IX6RWd6rAmg8DQT4GtHtVo6 qwpxdpOrpHUPj+KpB+vN2JW/FAEpUaWCwcodfesDwdeFC9CUChU0eXSVa lBjrUfmJpUC+qEyTZoXwUSUJaRuNhXH+gZV4iwivk53uOhN/qJij86nk1 NjTZTKS41n77yIo/L1HhurkuFyy9HQrwW8fjKZLLeZfaXCOolwRcVVoms Q==; X-CSE-ConnectionGUID: eK4gZIb2RTq8KUzZd+1g8A== X-CSE-MsgGUID: aK83RUObQD+bg8VJCSryYQ== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302402" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302402" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:47 -0700 X-CSE-ConnectionGUID: qIE9IUgdSb65J4r+MfS6IQ== X-CSE-MsgGUID: J5SLzKaLSTqCZxfaQrImsQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137375" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:46 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Emmanuel Grumbach Subject: [PATCH wireless-next 01/14] wifi: iwlwifi: pcie: add support for the reset handshake in MSI Date: Thu, 24 Apr 2025 15:38:18 +0300 Message-Id: <20250424153620.758cdfbb78dc.Ia359071e6148218c26f18e783a8130c681d77df7@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Emmanuel Grumbach Add the proper case in the MSI interrupt handler and read the non-MSIx interrupt cause register in case of timeout. Signed-off-by: Emmanuel Grumbach Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/iwl-csr.h | 20 ++++++++++--------- drivers/net/wireless/intel/iwlwifi/pcie/rx.c | 14 ++++++++++++- .../wireless/intel/iwlwifi/pcie/trans-gen2.c | 18 +++++++++++++---- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-csr.h b/drivers/net/wireless/intel/iwlwifi/iwl-csr.h index be9e464c9b7b..f259747e21b3 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-csr.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-csr.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* - * Copyright (C) 2005-2014, 2018-2024 Intel Corporation + * Copyright (C) 2005-2014, 2018-2025 Intel Corporation * Copyright (C) 2013-2014 Intel Mobile Communications GmbH * Copyright (C) 2016 Intel Deutschland GmbH */ @@ -193,17 +193,19 @@ #define CSR_INT_BIT_RF_KILL (1 << 7) /* HW RFKILL switch GP_CNTRL[27] toggled */ #define CSR_INT_BIT_CT_KILL (1 << 6) /* Critical temp (chip too hot) rfkill */ #define CSR_INT_BIT_SW_RX (1 << 3) /* Rx, command responses */ +#define CSR_INT_BIT_RESET_DONE (1 << 2) /* reset handshake with firmware is done */ #define CSR_INT_BIT_WAKEUP (1 << 1) /* NIC controller waking up (pwr mgmt) */ #define CSR_INT_BIT_ALIVE (1 << 0) /* uCode interrupts once it initializes */ -#define CSR_INI_SET_MASK (CSR_INT_BIT_FH_RX | \ - CSR_INT_BIT_HW_ERR | \ - CSR_INT_BIT_FH_TX | \ - CSR_INT_BIT_SW_ERR | \ - CSR_INT_BIT_RF_KILL | \ - CSR_INT_BIT_SW_RX | \ - CSR_INT_BIT_WAKEUP | \ - CSR_INT_BIT_ALIVE | \ +#define CSR_INI_SET_MASK (CSR_INT_BIT_FH_RX | \ + CSR_INT_BIT_HW_ERR | \ + CSR_INT_BIT_FH_TX | \ + CSR_INT_BIT_SW_ERR | \ + CSR_INT_BIT_RF_KILL | \ + CSR_INT_BIT_SW_RX | \ + CSR_INT_BIT_WAKEUP | \ + CSR_INT_BIT_RESET_DONE | \ + CSR_INT_BIT_ALIVE | \ CSR_INT_BIT_RX_PERIODIC) /* interrupt flags in FH (flow handler) (PCI busmaster DMA) */ diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c index 4a4f8de4efe2..337324eea1a1 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c @@ -1947,6 +1947,13 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id) handled |= CSR_INT_BIT_ALIVE; } + if (inta & CSR_INT_BIT_RESET_DONE) { + IWL_DEBUG_ISR(trans, "Reset flow completed\n"); + trans_pcie->fw_reset_state = FW_RESET_OK; + handled |= CSR_INT_BIT_RESET_DONE; + wake_up(&trans_pcie->fw_reset_waitq); + } + /* Safely ignore these bits for debug checks below */ inta &= ~(CSR_INT_BIT_SCD | CSR_INT_BIT_ALIVE); @@ -1968,7 +1975,12 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id) IWL_ERR(trans, "Microcode SW error detected. " " Restarting 0x%X.\n", inta); isr_stats->sw++; - iwl_pcie_irq_handle_error(trans); + if (trans_pcie->fw_reset_state == FW_RESET_REQUESTED) { + trans_pcie->fw_reset_state = FW_RESET_ERROR; + wake_up(&trans_pcie->fw_reset_waitq); + } else { + iwl_pcie_irq_handle_error(trans); + } handled |= CSR_INT_BIT_SW_ERR; } diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c index cfd94205be49..08409e24aed6 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c @@ -117,13 +117,23 @@ void iwl_trans_pcie_fw_reset_handshake(struct iwl_trans *trans) trans_pcie->fw_reset_state != FW_RESET_REQUESTED, FW_RESET_TIMEOUT); if (!ret || trans_pcie->fw_reset_state == FW_RESET_ERROR) { - u32 inta_hw = iwl_read32(trans, CSR_MSIX_HW_INT_CAUSES_AD); + bool reset_done; + u32 inta_hw; + + if (trans_pcie->msix_enabled) { + inta_hw = iwl_read32(trans, CSR_MSIX_HW_INT_CAUSES_AD); + reset_done = + inta_hw & MSIX_HW_INT_CAUSES_REG_RESET_DONE; + } else { + inta_hw = iwl_read32(trans, CSR_INT_MASK); + reset_done = inta_hw & CSR_INT_BIT_RESET_DONE; + } IWL_ERR(trans, - "timeout waiting for FW reset ACK (inta_hw=0x%x)\n", - inta_hw); + "timeout waiting for FW reset ACK (inta_hw=0x%x, reset_done %d)\n", + inta_hw, reset_done); - if (!(inta_hw & MSIX_HW_INT_CAUSES_REG_RESET_DONE)) { + if (!reset_done) { struct iwl_fw_error_dump_mode mode = { .type = IWL_ERR_TYPE_RESET_HS_TIMEOUT, .context = IWL_ERR_CONTEXT_FROM_OPMODE, From patchwork Thu Apr 24 12:38:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 884322 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 729D827A91D for ; Thu, 24 Apr 2025 12:38:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498330; cv=none; b=MwtM+nDwBP3xFV43xBO6wnIusPZlBNEeff65NJCs2nC0tZQtRIuSJXLCwrFXmK7FQmyXXAGxjUPlWvfYpIMTATh7hxwwApB0BQgk251CDKtr2dGZcSo9FiNTaZjsVeuiE6crtFNk76mA8kGNc8ZufZTQUSdeGLhWRelIfSxmT+Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498330; c=relaxed/simple; bh=c/V2aRHqPEAfrppj7F21Qr3t8qAwhyhUigfJ3ebJt+s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mghiXSBqOgO3VQyVMOIjIz+FkzHvyxGEcKJX6T8Gz0/lPUTjCiLi46uTMWY2Gl+LBjHsnWHpEmym5dnVQNh7Fsz5doY9FNlQJ17zAJfwGt6oIg4FvRM2lP9An3VlRXQ89j/ZJoWz9wD09vOVNLSBCWAvTWu+YlC3qz0fLrIxuyA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=l40zfhR+; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="l40zfhR+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498329; x=1777034329; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=c/V2aRHqPEAfrppj7F21Qr3t8qAwhyhUigfJ3ebJt+s=; b=l40zfhR+8JFcQcQelzPOFDhyP6YkQlmcZfaZ9NBG4ilbCre88z8kGiHo cRxde80mTuHYsv+ziQPnGbfzEZqEL441X3/bv4aqZevR17QZ7fOiqLL3F 9ze/XFmxb11+9BEWy948ecNtBToJP9sVIRjOvf5a0ZYl/+lg08CHABIOw wGgYVtfgM2oKtcOeQuULK0wme2T9cDibXF6xqiqGUfD/pgvTU8YvM6rCR we6e98D3ZdQSmntwcZQnI8Qh9lqb6P7XNoyb6KApsSIqNQetxqFxbURVd nYKf0ed9rPEwv/3Dxn7rOCJpCDqLEPbs8Xv4yDUMflYtY68asEo/JESmM g==; X-CSE-ConnectionGUID: xlDEK1BhTJ6udQfL2EmMVA== X-CSE-MsgGUID: VamUtIeARZuIEXn4CBgMBg== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302406" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302406" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:49 -0700 X-CSE-ConnectionGUID: na9sHWbuQOa5rLFzu3cqIA== X-CSE-MsgGUID: I2T6SyhiTj6oRw//SZosLg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137383" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:48 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 02/14] wifi: iwlwifi: mld: clarify variable type Date: Thu, 24 Apr 2025 15:38:19 +0300 Message-Id: <20250424153620.ddf54a728ec0.Ie2e8de150f67369c4e034452c5f1a15f85d2931c@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg In iwl_mld_emlsr_disallowed_with_link() the code uses an enum for a bitmap of values from it, which doesn't really make sense.Use u32 for the variable just like the return value. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/mlo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c index a870e169e265..bf158af5f6f3 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c @@ -643,7 +643,7 @@ iwl_mld_emlsr_disallowed_with_link(struct iwl_mld *mld, { struct wiphy *wiphy = mld->wiphy; struct ieee80211_bss_conf *conf; - enum iwl_mld_emlsr_exit ret = 0; + u32 ret = 0; conf = wiphy_dereference(wiphy, vif->link_conf[link->link_id]); if (WARN_ON_ONCE(!conf)) From patchwork Thu Apr 24 12:38:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 885462 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D28C627B4E2 for ; Thu, 24 Apr 2025 12:38:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498333; cv=none; b=OVF7fdXDyNldMibQMXcmoSA8spAuq6SdddSsZvWkOmmUyk8Zxn2/Kv7JH8n7AIAZXPyVV8ZuO2ioaALWKo4KYM2hogpNCyFW7XPLn4+58NDV4j6lSJVLWb1AGEriamk149NZwVEykJdCHMOQ8XJ1kHxW9ykbOZBlkb4wzNMnFWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498333; c=relaxed/simple; bh=xP4HLQHDlDtsi/sp4+jUtFNz3qqpFfcL3OUGC7G0ukY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VlGu16UKxdbJlsMv1HlHa667+kK6ixYQ88Y5S49y7S92Y4bM6AjHKnIpaClffHAeGtLC3gJ3OHnF+iOLIJqzLyTKhVAVDqt5C3ROsn+eGfIQg+ule8y1CAFxLmywuk9WL5s50BC38x9N5Fi6uVT+2zHATYChJvc8D4hMw6Vf1uM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=IFEGO0st; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="IFEGO0st" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498332; x=1777034332; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xP4HLQHDlDtsi/sp4+jUtFNz3qqpFfcL3OUGC7G0ukY=; b=IFEGO0stXyoS0FdzqDuuKx6cHYMDhqwHQr2HWsqAof4M+a3n0Ya4+shk J9vFKmFYpxap9MyXEjIIddoYISXJu6WEmBVXPncFqBB6ZlGAmPCWJ3X+E EvqrNoe6nJIIiVUHY0otEiD8rrmJAXq5E3Xr2cWvc32MD59QzQ6Tk6urs BvgKNtVYGQLftjlCs5MTyB7FlljTS5hjntrKUyRu2oiWuGHsuewHA6Cky 92vlp/CjjqRdHw0IYHBIzL1T4QMR3EIFk1DybPi4mvAN0W7jw8/q2LFiD 2j2L9R28qOVhj6833dMgdnXMrKO9GnYKq2tRgTqo1rkUSfTBLJ51YwbEa A==; X-CSE-ConnectionGUID: xZ73jNdHQgyr8fWs1hLQLA== X-CSE-MsgGUID: gXHVUeLRSPeNM9YZjRxegQ== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302408" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302408" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:51 -0700 X-CSE-ConnectionGUID: TOKRb5XuSJSAU6pIQsZ78Q== X-CSE-MsgGUID: geQ+nwMRRiSxhFw7Gc0ZFQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137393" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:49 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Benjamin Berg Subject: [PATCH wireless-next 03/14] wifi: iwlwifi: mld: fix iwl_mld_emlsr_disallowed_with_link() return Date: Thu, 24 Apr 2025 15:38:20 +0300 Message-Id: <20250424153620.d1f8465e2b5e.I58c463c70801231a79b04c1ff600f41afcbb04f5@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg The return type of iwl_mld_emlsr_disallowed_with_link() is a u32 bitmap of exit reasons, but in the data structure confusion case where the warning triggers, it returns false. Add a new reason bit for this case so it doesn't return that EMLSR is possible. Signed-off-by: Johannes Berg Reviewed-by: Benjamin Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/iface.h | 2 ++ drivers/net/wireless/intel/iwlwifi/mld/mlo.c | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/iface.h b/drivers/net/wireless/intel/iwlwifi/mld/iface.h index ec14d0736cee..1ae522431f3f 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/iface.h +++ b/drivers/net/wireless/intel/iwlwifi/mld/iface.h @@ -59,6 +59,7 @@ enum iwl_mld_emlsr_blocked { * loaded enough to justify EMLSR. * @IWL_MLD_EMLSR_EXIT_RFI: Exit EMLSR due to RFI * @IWL_MLD_EMLSR_EXIT_FW_REQUEST: Exit EMLSR because the FW requested it + * @IWL_MLD_EMLSR_EXIT_INVALID: internal exit reason due to invalid data */ enum iwl_mld_emlsr_exit { IWL_MLD_EMLSR_EXIT_BLOCK = 0x1, @@ -72,6 +73,7 @@ enum iwl_mld_emlsr_exit { IWL_MLD_EMLSR_EXIT_CHAN_LOAD = 0x100, IWL_MLD_EMLSR_EXIT_RFI = 0x200, IWL_MLD_EMLSR_EXIT_FW_REQUEST = 0x400, + IWL_MLD_EMLSR_EXIT_INVALID = 0x800, }; /** diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c index bf158af5f6f3..5c92c0a6818d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c @@ -52,7 +52,8 @@ static void iwl_mld_print_emlsr_blocked(struct iwl_mld *mld, u32 mask) HOW(BT_COEX) \ HOW(CHAN_LOAD) \ HOW(RFI) \ - HOW(FW_REQUEST) + HOW(FW_REQUEST) \ + HOW(INVALID) static const char * iwl_mld_get_emlsr_exit_string(enum iwl_mld_emlsr_exit exit) @@ -647,7 +648,7 @@ iwl_mld_emlsr_disallowed_with_link(struct iwl_mld *mld, conf = wiphy_dereference(wiphy, vif->link_conf[link->link_id]); if (WARN_ON_ONCE(!conf)) - return false; + return IWL_MLD_EMLSR_EXIT_INVALID; if (link->chandef->chan->band == NL80211_BAND_2GHZ && mld->bt_is_active) ret |= IWL_MLD_EMLSR_EXIT_BT_COEX; From patchwork Thu Apr 24 12:38:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 884321 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8FA6727A93A for ; Thu, 24 Apr 2025 12:38:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498335; cv=none; b=nO4a9YTz7ccn6lh8vqesle++w6JsA3f/ANSjyuGlK5RrBpUyZmg4UkZ6UHUPB0tk/0eGU6qjtXq8PqDe+jT7umSqu55y41pzC+AdhsPO0JamC1zET4g+I04HJMVv7uTBe6+kkYPr9uU6NUD1wHvvxEK5rqe8xEv0NGrlW70FTTs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498335; c=relaxed/simple; bh=Dqnu8398QCxua+iNJ2/9Luu/Syu+fAOjE/VGOBGL9Cc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Y4BPkqgAEgFUMK6PSmOnSkq7xCmpMdXY656WKZqiXzCpExUbzb9OVTruKClo7mgu94Wa05vQyNrM3DOpgdkke0VaEPpZSoScTpy0n9Qje0ytouqJ8LY6+4NgOL/wcXjaRcrrf0g58a2onRMrdUZkzHsfArxKJDntNbAPQd8MLd4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=WHRSDOzz; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="WHRSDOzz" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498334; x=1777034334; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Dqnu8398QCxua+iNJ2/9Luu/Syu+fAOjE/VGOBGL9Cc=; b=WHRSDOzzNts7Z0rCnAMXwdofHyF1rxzH4ftKfXeKRQOl8HUI8LL2OXfv jeZFKD3OVo+diJMY4nHUrXtine3z+bJ3Ctzq8Y6srjWPT6mdnf858j3vI bZ0DFXSYRoIzEWowam8QbbCo57IiSgXQn/kXGKSVdHJ380vvC3fbqZk83 RdcC0+ChjEAhKiKu5lDvR8W+zcPPX+mOexQxa9B09ldVA08+i/+umH7Jj 4/t2okt+GOZdDD3T0X2Lx1miF/5Azqy9/Zg62rfmk03DZbjBBn9s2x+A4 yPicBktW/mhoMwSN4lAhChgGCyYO7y/qnquR15DZmLAf/nkN4pWHKBY4B A==; X-CSE-ConnectionGUID: hlErq/+sRWK7du83VkcGcg== X-CSE-MsgGUID: uEuXY0eCTUqlonQvEkP2+w== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302411" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302411" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:53 -0700 X-CSE-ConnectionGUID: JMEr9KQBT4i2kll6GhLfEA== X-CSE-MsgGUID: 8McFQ1fLROS9JkMBzzPFOg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137402" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:51 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 04/14] wifi: iwlwifi: mld: use cfg80211_chandef_get_width() Date: Thu, 24 Apr 2025 15:38:21 +0300 Message-Id: <20250424153620.586e12d3d07c.Idc27c446d00a7f7925ee76b356f53b72dafc5745@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg We can use this helper now to simplify some code. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/mlo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c index 5c92c0a6818d..8f7578bc46b1 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c @@ -773,8 +773,8 @@ iwl_mld_channel_load_allows_emlsr(struct iwl_mld *mld, if (a->chandef->width <= b->chandef->width) return true; - bw_a = nl80211_chan_width_to_mhz(a->chandef->width); - bw_b = nl80211_chan_width_to_mhz(b->chandef->width); + bw_a = cfg80211_chandef_get_width(a->chandef); + bw_b = cfg80211_chandef_get_width(b->chandef); ratio = bw_a / bw_b; switch (ratio) { From patchwork Thu Apr 24 12:38:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 885461 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9848327B4E2 for ; Thu, 24 Apr 2025 12:38:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498336; cv=none; b=COosK+rEqugYZcMIFDVaDp4VCB/0THUTkyrpkuG3Z33yq23Pq2v0tUZOTX8/2V/Bvap4+feO6sT6XSxtSXtdnD3iJjmA8hKOKb3sU59DFFGqk03DwWN6SfJd7gvk3qYoDzPla0ZYYqsN1LYhU+zE8fnDV461BufskXmOzjd4vVw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498336; c=relaxed/simple; bh=3k8ks/oz01L3vE3YfjSBVbSPUQPh1nVov/5doyocysI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=C3oJ4CX4dHOsH0ho8c75silMsuRVrry7t56qOrt47cS484P9mQ8ZpDRv+9v3EP1cTHX0qhk03ZjEf+KAAO1KCFMyZFLjdh1+EjH4F1kb6Rzl+V5kuh6KZ7WgWt40KC9rz34mBaFtQDFhs94Q+XL4nlq43r5AAoony/+vWmcrC/k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=by2OMU4I; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="by2OMU4I" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498335; x=1777034335; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3k8ks/oz01L3vE3YfjSBVbSPUQPh1nVov/5doyocysI=; b=by2OMU4I/hI2hvh0Ya/LR+BJIGEj+YBhQW1gVKcJG+xZZj5cPGsR3Umb M21Ey5m46+En63B7nd8xXghnPyZidNiN9l9Mv2+Yw407t/qewG8hJtzbt /nA+2OqSBvlNAiozc6YxfgveVynCycFslwC2OAFfU3C7a5ky7UzsFA2m8 dOJAm7FdDatLHWWrjEG1LVFX0s7taQXwHcjNw2/sq64VRB7y8cHr3HPvG ev4Ns0LM/YiGv7GIEMVJtYPoz7DA6Eb1eM+thVJfoQHqN/nI/9tc3nFjy J1LZ2aIFQyOIXPHEGC3OYPIHtvtwcVa62r5Wn8xim2aBSCmCflDH7wgsN g==; X-CSE-ConnectionGUID: gM6Qp7dlRJ2llkSOS3hKFg== X-CSE-MsgGUID: 4WepgQPJQramTaLZw3ILMQ== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302416" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302416" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:54 -0700 X-CSE-ConnectionGUID: 8KzgU+oXRsmauSsy3eNUkA== X-CSE-MsgGUID: Jj+03PEnSGqb7734EF8C2g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137408" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:53 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 05/14] wifi: iwlwifi: mld: allow EMLSR on separated 5 GHz subbands Date: Thu, 24 Apr 2025 15:38:22 +0300 Message-Id: <20250424153620.d568a26661d5.Ie4277945272c5bbf637957704fda34ea03ef28d2@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg If there are two links on 5 GHz subbands that are separated enough (using channels 36-64 and 100+) then we can support EMLSR across those two links. Allow that in the logic. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/mlo.c | 24 ++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c index 8f7578bc46b1..da16fff1ce86 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c @@ -805,8 +805,28 @@ iwl_mld_valid_emlsr_pair(struct ieee80211_vif *vif, iwl_mld_emlsr_disallowed_with_link(mld, vif, b, false)) return false; - if (a->chandef->chan->band == b->chandef->chan->band) - reason_mask |= IWL_MLD_EMLSR_EXIT_EQUAL_BAND; + if (a->chandef->chan->band == b->chandef->chan->band) { + const struct cfg80211_chan_def *c_low = a->chandef; + const struct cfg80211_chan_def *c_high = b->chandef; + u32 c_low_upper_edge, c_high_lower_edge; + + if (c_low->chan->center_freq > c_high->chan->center_freq) + swap(c_low, c_high); + + c_low_upper_edge = c_low->chan->center_freq + + cfg80211_chandef_get_width(c_low) / 2; + c_high_lower_edge = c_high->chan->center_freq - + cfg80211_chandef_get_width(c_high) / 2; + + if (a->chandef->chan->band == NL80211_BAND_5GHZ && + c_low_upper_edge <= 5330 && c_high_lower_edge >= 5490) { + /* This case is fine - HW/FW can deal with it, there's + * enough separation between the two channels. + */ + } else { + reason_mask |= IWL_MLD_EMLSR_EXIT_EQUAL_BAND; + } + } if (!iwl_mld_channel_load_allows_emlsr(mld, vif, a, b)) reason_mask |= IWL_MLD_EMLSR_EXIT_CHAN_LOAD; From patchwork Thu Apr 24 12:38:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 884320 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19F1827B4FB for ; Thu, 24 Apr 2025 12:38:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498338; cv=none; b=LWo071YEPUQgaFjT7vTCx5RpUqVGRWb7IT6iunh9fIvbPjuh1HrvKCzlptQ2E2v2BIDtMC35rayxxd0LfYVxVSsvDsgr7SzvpipsHvIFQQTM6yj8fd+eulnC3bZBQo/uMe0zPTWnsm3PABaozJUp34qz3vRpKGSZ7Zc+7CzQWUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498338; c=relaxed/simple; bh=MfG5Dt0Fd0HDMoXWvuciPNLzEjdXxo1ycXE1kdx+agQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=riIeStFqNtlMESpHi+FzteVrMf3sD5ZgJwxug6zijUFh2yXs0QSQdouzLOI9rv7bSGWAyB+xgYu75epwp0w5iPfCmFV3QauLsvxb4SIbEyRuFzTohCaxCn4qJtC3tim7kVPAO3ZvRzhPxPEyErRkOIZx4779JyzrB8s13dtu7T0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=QpW9f6+x; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="QpW9f6+x" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498337; x=1777034337; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MfG5Dt0Fd0HDMoXWvuciPNLzEjdXxo1ycXE1kdx+agQ=; b=QpW9f6+xHRa+qVvvtLxa5zTldY6Y8+bG/4lZvnjUlQDVUCrosbtoCa2G Oi+eeTtUEZKEUngDS721YMROJZFxwL8e9FPz3G/Ef/HnDY84lsSdRmjqI UMRnSpdZce1UzreiPksYvxUih9guOSZmL05Kj443BIC0CqbbLi70djNuj T2gyzqL1ffR1Rfu/JKKj+tGxS49kOfES0AdmYbBwlK8srJcKLmEL02i+E 15y2VD2BLSroiusExAAdFTndwFweJHYaBIxtt50eQ42T82EAHRIegE30g fUQDo37s3bJJEqM6tcOe0JDMozyuLvWXjOAO7pANe47FqTrk2KyV26AJA Q==; X-CSE-ConnectionGUID: /N+8e4YvRQWdUMdcg7/Nog== X-CSE-MsgGUID: 5+Xvdam3SU2/XmyfFE71mQ== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302418" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302418" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:56 -0700 X-CSE-ConnectionGUID: +u0douGXR6i7bl+AkPaCBQ== X-CSE-MsgGUID: h3W1RtpmR26riVdgQYNDjA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137418" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:54 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 06/14] wifi: iwlwifi: define API for external FSEQ images Date: Thu, 24 Apr 2025 15:38:23 +0300 Message-Id: <20250424153620.4f5acc3dff6c.Ic559d90376945c78495352a0d24b1d44ef887f2d@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg The firmware will support external FSEQ images, define the necessary API for that. We're not yet using/shipping such, so don't add code to load them for now. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/fw/file.h | 21 +++++++++++++++++++ .../intel/iwlwifi/iwl-context-info-gen3.h | 17 ++++++++++++++- .../wireless/intel/iwlwifi/iwl-context-info.h | 10 ++++----- .../intel/iwlwifi/pcie/ctxt-info-gen3.c | 21 ++++++++++++++++--- .../wireless/intel/iwlwifi/pcie/ctxt-info.c | 4 ++-- 5 files changed, 62 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/fw/file.h b/drivers/net/wireless/intel/iwlwifi/fw/file.h index 9155d64c4a58..5a1ec880ed72 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/file.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/file.h @@ -102,6 +102,7 @@ enum iwl_ucode_tlv_type { IWL_UCODE_TLV_SEC_TABLE_ADDR = 66, IWL_UCODE_TLV_D3_KEK_KCK_ADDR = 67, IWL_UCODE_TLV_CURRENT_PC = 68, + IWL_UCODE_TLV_FSEQ_BIN_VERSION = 72, IWL_UCODE_TLV_FW_NUM_STATIONS = IWL_UCODE_TLV_CONST_BASE + 0, IWL_UCODE_TLV_FW_NUM_LINKS = IWL_UCODE_TLV_CONST_BASE + 1, @@ -402,6 +403,7 @@ typedef unsigned int __bitwise iwl_ucode_tlv_capa_t; * @IWL_UCODE_TLV_CAPA_BIOS_OVERRIDE_5G9_FOR_CA: supports (de)activating 5G9 * for CA from BIOS. * @IWL_UCODE_TLV_CAPA_UHB_CANADA_TAS_SUPPORT: supports %TAS_UHB_ALLOWED_CANADA + * @IWL_UCODE_TLV_CAPA_EXT_FSEQ_IMAGE_SUPPORT: external FSEQ image support * * @NUM_IWL_UCODE_TLV_CAPA: number of bits used */ @@ -504,6 +506,7 @@ enum iwl_ucode_tlv_capa { IWL_UCODE_TLV_CAPA_MONITOR_PASSIVE_CHANS = (__force iwl_ucode_tlv_capa_t)122, IWL_UCODE_TLV_CAPA_BIOS_OVERRIDE_5G9_FOR_CA = (__force iwl_ucode_tlv_capa_t)123, IWL_UCODE_TLV_CAPA_UHB_CANADA_TAS_SUPPORT = (__force iwl_ucode_tlv_capa_t)124, + IWL_UCODE_TLV_CAPA_EXT_FSEQ_IMAGE_SUPPORT = (__force iwl_ucode_tlv_capa_t)125, /* set 4 */ /** @@ -1001,6 +1004,10 @@ struct iwl_fw_dump_exclude { __le32 addr, size; }; +struct iwl_fw_fseq_bin_version { + __le32 major, minor; +}; /* FW_TLV_FSEQ_BIN_VERSION_S */ + static inline size_t _iwl_tlv_array_len(const struct iwl_ucode_tlv *tlv, size_t fixed_size, size_t var_size) { @@ -1018,4 +1025,18 @@ static inline size_t _iwl_tlv_array_len(const struct iwl_ucode_tlv *tlv, #define iwl_tlv_array_len_with_size(_tlv_ptr, _struct_ptr, _size) \ _iwl_tlv_array_len((_tlv_ptr), sizeof(*(_struct_ptr)), _size) + +/* external FSEQ file */ +#define IWL_FSEQ_FILE "intel/fseq-%04x-%04x" +#define IWL_FSEQ_MAGIC "INTEL-CNV-FSEQ\n\0" + +struct iwl_fseq_file { + char magic[16]; + char version[16]; + __le32 bt_len; + __le32 wifi_len; + u8 reserved[8]; + u8 data[]; +} __packed; + #endif /* __iwl_fw_file_h__ */ diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-context-info-gen3.h b/drivers/net/wireless/intel/iwlwifi/iwl-context-info-gen3.h index 20563a32a21a..6111ca970ed2 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-context-info-gen3.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-context-info-gen3.h @@ -78,11 +78,13 @@ enum iwl_prph_scratch_flags { /** * enum iwl_prph_scratch_ext_flags - PRPH scratch control ext flags + * @IWL_PRPH_SCRATCH_EXT_EXT_FSEQ: external FSEQ image provided * @IWL_PRPH_SCRATCH_EXT_URM_FW: switch to URM mode based on fw setting * @IWL_PRPH_SCRATCH_EXT_URM_PERM: switch to permanent URM mode * @IWL_PRPH_SCRATCH_EXT_32KHZ_CLK_VALID: use external 32 KHz clock */ enum iwl_prph_scratch_ext_flags { + IWL_PRPH_SCRATCH_EXT_EXT_FSEQ = BIT(0), IWL_PRPH_SCRATCH_EXT_URM_FW = BIT(4), IWL_PRPH_SCRATCH_EXT_URM_PERM = BIT(5), IWL_PRPH_SCRATCH_EXT_32KHZ_CLK_VALID = BIT(8), @@ -202,6 +204,19 @@ struct iwl_prph_scratch_ctrl_cfg { struct iwl_prph_scratch_step_cfg step_cfg; } __packed; /* PERIPH_SCRATCH_CTRL_CFG_S */ +#define IWL_NUM_DRAM_FSEQ_ENTRIES 8 + +/** + * struct iwl_context_info_dram_fseq - images DRAM map (with fseq) + * each entry in the map represents a DRAM chunk of up to 32 KB + * @common: UMAC/LMAC/virtual images + * @fseq_img: FSEQ image DRAM map + */ +struct iwl_context_info_dram_fseq { + struct iwl_context_info_dram_nonfseq common; + __le64 fseq_img[IWL_NUM_DRAM_FSEQ_ENTRIES]; +} __packed; /* PERIPH_SCRATCH_DRAM_MAP_S */ + /** * struct iwl_prph_scratch - peripheral scratch mapping * @ctrl_cfg: control and configuration of prph scratch @@ -215,7 +230,7 @@ struct iwl_prph_scratch { __le32 fseq_override; __le32 step_analog_params; __le32 reserved[8]; - struct iwl_context_info_dram dram; + struct iwl_context_info_dram_fseq dram; } __packed; /* PERIPH_SCRATCH_S */ /** diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-context-info.h b/drivers/net/wireless/intel/iwlwifi/iwl-context-info.h index dfd44fabf237..b495eb94d126 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-context-info.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-context-info.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* * Copyright (C) 2017 Intel Deutschland GmbH - * Copyright (C) 2018-2020, 2022, 2024 Intel Corporation + * Copyright (C) 2018-2020, 2022, 2024-2025 Intel Corporation */ #ifndef __iwl_context_info_file_h__ #define __iwl_context_info_file_h__ @@ -78,13 +78,13 @@ struct iwl_context_info_control { } __packed; /** - * struct iwl_context_info_dram - images DRAM map + * struct iwl_context_info_dram_nonfseq - images DRAM map * each entry in the map represents a DRAM chunk of up to 32 KB * @umac_img: UMAC image DRAM map * @lmac_img: LMAC image DRAM map * @virtual_img: paged image DRAM map */ -struct iwl_context_info_dram { +struct iwl_context_info_dram_nonfseq { __le64 umac_img[IWL_MAX_DRAM_ENTRY]; __le64 lmac_img[IWL_MAX_DRAM_ENTRY]; __le64 virtual_img[IWL_MAX_DRAM_ENTRY]; @@ -177,7 +177,7 @@ struct iwl_context_info { struct iwl_context_info_early_dbg_cfg edbg_cfg; struct iwl_context_info_pnvm_cfg pnvm_cfg; __le32 reserved2[16]; - struct iwl_context_info_dram dram; + struct iwl_context_info_dram_nonfseq dram; __le32 reserved3[16]; } __packed; @@ -186,7 +186,7 @@ void iwl_pcie_ctxt_info_free(struct iwl_trans *trans); void iwl_pcie_ctxt_info_free_paging(struct iwl_trans *trans); int iwl_pcie_init_fw_sec(struct iwl_trans *trans, const struct fw_img *fw, - struct iwl_context_info_dram *ctxt_dram); + struct iwl_context_info_dram_nonfseq *ctxt_dram); void *iwl_pcie_ctxt_info_dma_alloc_coherent(struct iwl_trans *trans, size_t size, dma_addr_t *phys); diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c index 8aa7c455bdee..4f367c7fce25 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c @@ -182,7 +182,7 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans, prph_sc_ctrl->step_cfg.mbx_addr_1 = cpu_to_le32(trans->mbx_addr_1_step); /* allocate ucode sections in dram and set addresses */ - ret = iwl_pcie_init_fw_sec(trans, fw, &prph_scratch->dram); + ret = iwl_pcie_init_fw_sec(trans, fw, &prph_scratch->dram.common); if (ret) goto err_free_prph_scratch; @@ -219,8 +219,23 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans, cpu_to_le64(trans_pcie->prph_info_dma_addr); ctxt_info_gen3->prph_scratch_base_addr = cpu_to_le64(trans_pcie->prph_scratch_dma_addr); - ctxt_info_gen3->prph_scratch_size = - cpu_to_le32(sizeof(*prph_scratch)); + + /* + * This code assumes the FSEQ is last and we can make that + * optional; old devices _should_ be fine with a bigger size, + * but in simulation we check the size more precisely. + */ + BUILD_BUG_ON(offsetofend(typeof(*prph_scratch), dram.common) + + sizeof(prph_scratch->dram.fseq_img) != + sizeof(*prph_scratch)); + if (control_flags_ext & IWL_PRPH_SCRATCH_EXT_EXT_FSEQ) + ctxt_info_gen3->prph_scratch_size = + cpu_to_le32(sizeof(*prph_scratch)); + else + ctxt_info_gen3->prph_scratch_size = + cpu_to_le32(offsetofend(typeof(*prph_scratch), + dram.common)); + ctxt_info_gen3->cr_head_idx_arr_base_addr = cpu_to_le64(trans_pcie->rxq->rb_stts_dma); ctxt_info_gen3->tr_tail_idx_arr_base_addr = diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info.c b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info.c index 344e4d5a1c6e..3f0256b3565d 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* * Copyright (C) 2017 Intel Deutschland GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #include "iwl-trans.h" #include "iwl-fh.h" @@ -83,7 +83,7 @@ void iwl_pcie_ctxt_info_free_paging(struct iwl_trans *trans) int iwl_pcie_init_fw_sec(struct iwl_trans *trans, const struct fw_img *fw, - struct iwl_context_info_dram *ctxt_dram) + struct iwl_context_info_dram_nonfseq *ctxt_dram) { struct iwl_self_init_dram *dram = &trans->init_dram; int i, ret, lmac_cnt, umac_cnt, paging_cnt; From patchwork Thu Apr 24 12:38:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 885460 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 685341DEFC8 for ; Thu, 24 Apr 2025 12:38:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498341; cv=none; b=Gt2E3i7PdmfVvcdzBEBaqdrwUMYcOyr6vJMKWowkuPivPRVvGa3lvhJYdgah+UQ0UuP6gROtkY9Nf7R2122EVhQjM7eQhX1k9B+32K2qv7niXQSNoNJ7/8BQxaBp/t+J/Hc801sVk0Is1CooF2Ic94MHR8334OoyrOJodShj9ZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498341; c=relaxed/simple; bh=GBnpKikvvq+tCE0STbQdHm9/hk+ccq2DGtsV4gZroYY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nuqEuNxwp3Sxo975+AH2DZ+3JAlFu/2YQRFt2ow9i4Q1Xb05KskZLyMUO/SKvUtFOhxTSbBg+S8Ir84q7y9LAsPOkqVI5vy6Ki/wo9VnYHwWpkGGI2+2KqJLWj/J6/uOVWSc1iqANCM3eXUt1ZvdMzZN5jLLOr79M4czQBKwnSg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Fpc60JCQ; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Fpc60JCQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498338; x=1777034338; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GBnpKikvvq+tCE0STbQdHm9/hk+ccq2DGtsV4gZroYY=; b=Fpc60JCQyaCRq1EAPxHD7ibwYAKWC0ypEEN8wuYSK0PnYztRNF/xRGV8 RGXTWVmOptVetSTaJ35adeCKt/sFNZXCDvoiMYxOHCWn+RETsDnAnQB4P gih694l5giBleFTUMtULZHuRD+QPeLkETC7yLZ58g5lZdL2qsTOh0XMuY j1So+yz8FpLh1HSmiaUlhtmfm/VeAwY/qFG10W5p6RhU4kuTribPomdDf 0xQqQdPT67VaT8CYXOoNifPEOT/LrZHpgpS2epEPkKljucSwzWctLjRPk eFAtL3fBr1Te+mdDdL3B8OtVYGOw+o5MVk2yKIRMcsvlvj1zcO66fXub0 g==; X-CSE-ConnectionGUID: 0mXy9hvdQ76uGbeNoslgDA== X-CSE-MsgGUID: 7crZPF7WTDOqQpdd820F7g== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302421" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302421" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:58 -0700 X-CSE-ConnectionGUID: tDksnUZYQzuFqRVzhsRhAg== X-CSE-MsgGUID: KQrvglfwT++O/T4J+PL7Rg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137428" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:56 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 07/14] wifi: iwlwifi: mld: skip unknown FW channel load values Date: Thu, 24 Apr 2025 15:38:24 +0300 Message-Id: <20250424153620.db5410318642.I4d2981f68b915ad335bb02c926e9289c2a60ea6c@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg The firmware statistics were previously reporting bogus/old channel load values if the device hadn't been active on a given channel; it'll report an unknown value now for those statistics affected (channel_load and channel_load_not_by_us.) Handle that by simply skipping the value, the averaging would result in the exact same value as before. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/fw/api/stats.h | 5 ++++- drivers/net/wireless/intel/iwlwifi/mld/stats.c | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/stats.h b/drivers/net/wireless/intel/iwlwifi/fw/api/stats.h index 0a9f14fb04be..00713a991879 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/stats.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/stats.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* - * Copyright (C) 2012-2014, 2018, 2020 - 2021, 2023 - 2024 Intel Corporation + * Copyright (C) 2012-2014, 2018, 2020-2021, 2023-2025 Intel Corporation * Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2016-2017 Intel Deutschland GmbH */ @@ -584,6 +584,9 @@ struct iwl_stats_ntfy_per_phy { __le32 last_tx_ch_width_indx; } __packed; /* STATISTICS_NTFY_PER_PHY_API_S_VER_1 */ +/* unknown channel load (due to not being active on channel) */ +#define IWL_STATS_UNKNOWN_CHANNEL_LOAD 0xffffffff + /** * struct iwl_stats_ntfy_per_sta * diff --git a/drivers/net/wireless/intel/iwlwifi/mld/stats.c b/drivers/net/wireless/intel/iwlwifi/mld/stats.c index 0715bbc31031..360a6bfbbfb2 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/stats.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/stats.c @@ -467,12 +467,18 @@ static void iwl_mld_fill_chanctx_stats(struct ieee80211_hw *hw, old_load = phy->avg_channel_load_not_by_us; new_load = le32_to_cpu(per_phy[phy->fw_id].channel_load_not_by_us); - if (IWL_FW_CHECK(phy->mld, new_load > 100, "Invalid channel load %u\n", - new_load)) + + if (IWL_FW_CHECK(phy->mld, + new_load != IWL_STATS_UNKNOWN_CHANNEL_LOAD && + new_load > 100, + "Invalid channel load %u\n", new_load)) return; - /* give a weight of 0.5 for the old value */ - phy->avg_channel_load_not_by_us = (new_load >> 1) + (old_load >> 1); + if (new_load != IWL_STATS_UNKNOWN_CHANNEL_LOAD) { + /* update giving a weight of 0.5 for the old value */ + phy->avg_channel_load_not_by_us = (new_load >> 1) + + (old_load >> 1); + } iwl_mld_emlsr_check_chan_load(hw, phy, old_load); } From patchwork Thu Apr 24 12:38:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 884319 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C117C27B500 for ; Thu, 24 Apr 2025 12:38:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498342; cv=none; b=Nnwgc3FoQx2sE3kAaQZ4Y98ZWyIdztjymp97Q64Fqx5W5bWf8e8S5esJUL6+GJfKx4mCRSKe5axzD/WjkL7zk02Mham3Nc6FQRNBaFGqrprVny7jxGhdEJ2JkdFNXR10w4JtFxqd61/XZiJ+IEof7p1W6ahSqjwj2Ns0lkWT4WI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498342; c=relaxed/simple; bh=y2sm5bgQxC+v4pQNZPBKguGJWNjbVNxn4b9QFLppdiI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BG3iAw0JfQCkJ+5rB4VabvibbXd+CyHwHScApTO4MszozMKyI7gvOc5Ml9+5RNbAX8iq/JIRp1ts7nflbgo+8AYwBL1GyiM+aURZYhkishnwPDTzmTVqx5rf6kZWXuf9dmcM8lf1fWQ+eqg5rRXhrBMSgMDCVIK6LPumnAS43mE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=hWXpJjIV; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="hWXpJjIV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498340; x=1777034340; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=y2sm5bgQxC+v4pQNZPBKguGJWNjbVNxn4b9QFLppdiI=; b=hWXpJjIVG6eUE1hg2qOY3MVReaYGN8L0yrlNUNq/u3sakDcKgr3Fy3BZ kEllODRyaOEUq7MZbwHNXHFTRh8SnGOGFh9Zr/qblmggz1RNvd7Aeejqp 8V+q7aqK2kCVg9R1LZz1pEg4UteKo3ORJf9U3k8DJXiXwRqDiMISO8nIY FejgjxZ5Q+Dwxi94eKxhcZT28xXPUEbN3IjUJempMWHq9JoOoDFczj4S1 eOVMJJhwm6mJ29AscgsIE/PwoI3M2jFuYf1y+yCvHU0ffTd5WRVUVRb9B 1WVb1mLPRZE3BfRcYbhL3l2BJNfYootwm90vxP3VePTJSbPmGoLsSrXbh A==; X-CSE-ConnectionGUID: OsCjqOu1TNamPmCbIIjzVw== X-CSE-MsgGUID: WGbkMblBR9Oj8P2vKbhJaw== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302424" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302424" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:59 -0700 X-CSE-ConnectionGUID: wxTdCS1aSgu70wL+7vMKdQ== X-CSE-MsgGUID: fcehO+C5S4i9rxZcmGEjVw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137436" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:38:58 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 08/14] wifi: iwlwifi: clean up band in RX metadata Date: Thu, 24 Apr 2025 15:38:25 +0300 Message-Id: <20250424153620.c41058510800.Ic3f16ce2f0c991fde2cfe7bcd58ee3b875575fce@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg Use u8_get_bits() instead of open-coding, and adjust the name as well. Also don't use enum nl80211_band for the variable holding an entirely different type. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/fw/api/rx.h | 16 +++++++++------- drivers/net/wireless/intel/iwlwifi/mld/rx.c | 4 ++-- drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 5 +++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h b/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h index 691c879cb90d..42ddd03c1c65 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* - * Copyright (C) 2012-2014, 2018-2024 Intel Corporation + * Copyright (C) 2012-2014, 2018-2025 Intel Corporation * Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2015-2017 Intel Deutschland GmbH */ @@ -193,10 +193,11 @@ enum iwl_rx_mpdu_amsdu_info { IWL_RX_MPDU_AMSDU_LAST_SUBFRAME = 0x80, }; -#define RX_MPDU_BAND_POS 6 -#define RX_MPDU_BAND_MASK 0xC0 -#define BAND_IN_RX_STATUS(_val) \ - (((_val) & RX_MPDU_BAND_MASK) >> RX_MPDU_BAND_POS) +enum iwl_rx_mpdu_mac_phy_band { + IWL_RX_MPDU_MAC_PHY_BAND_MAC_MASK = 0x0f, + IWL_RX_MPDU_MAC_PHY_BAND_PHY_MASK = 0x30, + IWL_RX_MPDU_MAC_PHY_BAND_BAND_MASK = 0xc0, +}; enum iwl_rx_l3_proto_values { IWL_RX_L3_TYPE_NONE, @@ -668,9 +669,10 @@ struct iwl_rx_mpdu_desc { */ __le16 phy_info; /** - * @mac_phy_idx: MAC/PHY index + * @mac_phy_band: MAC ID, PHY ID, band; + * see &enum iwl_rx_mpdu_mac_phy_band */ - u8 mac_phy_idx; + u8 mac_phy_band; /* DW4 */ union { struct { diff --git a/drivers/net/wireless/intel/iwlwifi/mld/rx.c b/drivers/net/wireless/intel/iwlwifi/mld/rx.c index c4f189bcece2..c04097b1c825 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/rx.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/rx.c @@ -1739,9 +1739,9 @@ iwl_mld_fill_rx_status_band_freq(struct iwl_mld_rx_phy_data *phy_data, struct iwl_rx_mpdu_desc *mpdu_desc, struct ieee80211_rx_status *rx_status) { - enum nl80211_band band; + u8 band = u8_get_bits(mpdu_desc->mac_phy_band, + IWL_RX_MPDU_MAC_PHY_BAND_BAND_MASK); - band = BAND_IN_RX_STATUS(mpdu_desc->mac_phy_idx); rx_status->band = iwl_mld_phy_band_to_nl80211(band); rx_status->freq = ieee80211_channel_to_frequency(phy_data->channel, rx_status->band); diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c index 14ea89f931bb..358643ae0e42 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* - * Copyright (C) 2012-2014, 2018-2024 Intel Corporation + * Copyright (C) 2012-2014, 2018-2025 Intel Corporation * Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2015-2017 Intel Deutschland GmbH */ @@ -2157,7 +2157,8 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi, } if (iwl_mvm_is_band_in_rx_supported(mvm)) { - u8 band = BAND_IN_RX_STATUS(desc->mac_phy_idx); + u8 band = u8_get_bits(desc->mac_phy_band, + IWL_RX_MPDU_MAC_PHY_BAND_BAND_MASK); rx_status->band = iwl_mvm_nl80211_band_from_phy(band); } else { From patchwork Thu Apr 24 12:38:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 885459 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B63027A936 for ; Thu, 24 Apr 2025 12:39:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498343; cv=none; b=ExeQN12cEWaRdFcM7XEGTrCJjSvSPVd6r1Pyruzx4gcymxYjUdrdaGWbcdPDTMTdz45M4bqYYvLLjlzMv5hFMgMkMvFYcpOWQKHcjQAk+HRq3+7lsv/SBHW7bkPivfyW7r8TkdcQRzmJX/Hwlw+T9fvUL16E7OuvwLZpLpkkR3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498343; c=relaxed/simple; bh=KCGhGY749hNCgVIaYl7iifAn2zfHgXR/iqVmbfUFQag=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rcT8HMV7aOxyERIdtYO6i33B2JGuS+v3wCdMG80AYOAFLdzlG8PRXRIh+KqXs1xlmJRSDSK+S6C8wJVAVyJ9Mj6z+2CJVqM+qCzZoIRIFzhMQMusVF1L1AxeBWhRsx4yllHAu4+dlBmq5LI41Vn7rSxASeJdGajcsirEnNwK1gs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=YYjBTrKx; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="YYjBTrKx" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498342; x=1777034342; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KCGhGY749hNCgVIaYl7iifAn2zfHgXR/iqVmbfUFQag=; b=YYjBTrKxJwGRNVcb9JXqIjwowGwikzMAvOkfW7KhC7+Tkw1Ef9R2HMap TtNgMttaatZh8YPf8iuBpRWIcj6AcT0prLaUb0HwJBiKCwtg0jeqypLuF 1Z6hu44A97TABUH1lY/dviut4Ro5t2hlSHK/0Pn6k8UQIwd1qKz4AzLNb GHYxISM/1KAE/XKTcpnA0EDE1pvj+kWgfD/OHo0iud5SBxI4BfkghHaRc EaF8L+Hzn4Ryu1E97OaP6rFiRhyjoisu8OHhzFE+xBcYswsvkz0fDDEaM ENoWdopA0GGxsM3mWq8brNmidPScQVyPfSNT+vJTwzfuX+TnXfa8O8Jqi w==; X-CSE-ConnectionGUID: KLGSIYiCT+KriFeW2cE2HQ== X-CSE-MsgGUID: XX02qyl1QJaxV56Vw0+i2g== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302431" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302431" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:01 -0700 X-CSE-ConnectionGUID: LWqL1BWARUy/dGWYz+TCpQ== X-CSE-MsgGUID: ECf6NBrXR2WO7DYeK6L/4g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137442" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:00 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 09/14] wifi: iwlwifi: mld: rx: simplify channel handling Date: Thu, 24 Apr 2025 15:38:26 +0300 Message-Id: <20250424153620.409c2f4ecbcc.I1735cd773ed07ad9fae44bdfc46261fa9a8fd0e0@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg There's no need to have the channel in phy_data, this code only supports one descriptor format so can use it directly from there. Signed-off-by: Johannes Berg --- drivers/net/wireless/intel/iwlwifi/mld/rx.c | 28 ++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/rx.c b/drivers/net/wireless/intel/iwlwifi/mld/rx.c index c04097b1c825..ef366b7a20d1 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/rx.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/rx.c @@ -33,7 +33,6 @@ struct iwl_mld_rx_phy_data { u32 gp2_on_air_rise; u16 phy_info; u8 energy_a, energy_b; - u8 channel; }; static void @@ -43,7 +42,6 @@ iwl_mld_fill_phy_data(struct iwl_rx_mpdu_desc *desc, phy_data->phy_info = le16_to_cpu(desc->phy_info); phy_data->rate_n_flags = le32_to_cpu(desc->v3.rate_n_flags); phy_data->gp2_on_air_rise = le32_to_cpu(desc->v3.gp2_on_air_rise); - phy_data->channel = desc->v3.channel; phy_data->energy_a = desc->v3.energy_a; phy_data->energy_b = desc->v3.energy_b; phy_data->data0 = desc->v3.phy_data0; @@ -1735,15 +1733,11 @@ static void iwl_mld_rx_update_ampdu_ref(struct iwl_mld *mld, } static void -iwl_mld_fill_rx_status_band_freq(struct iwl_mld_rx_phy_data *phy_data, - struct iwl_rx_mpdu_desc *mpdu_desc, - struct ieee80211_rx_status *rx_status) +iwl_mld_fill_rx_status_band_freq(struct ieee80211_rx_status *rx_status, + u8 band, u8 channel) { - u8 band = u8_get_bits(mpdu_desc->mac_phy_band, - IWL_RX_MPDU_MAC_PHY_BAND_BAND_MASK); - rx_status->band = iwl_mld_phy_band_to_nl80211(band); - rx_status->freq = ieee80211_channel_to_frequency(phy_data->channel, + rx_status->freq = ieee80211_channel_to_frequency(channel, rx_status->band); } @@ -1758,7 +1752,7 @@ void iwl_mld_rx_mpdu(struct iwl_mld *mld, struct napi_struct *napi, struct sk_buff *skb; size_t mpdu_desc_size = sizeof(*mpdu_desc); bool drop = false; - u8 crypto_len = 0; + u8 crypto_len = 0, band; u32 pkt_len = iwl_rx_packet_payload_len(pkt); u32 mpdu_len; enum iwl_mld_reorder_result reorder_res; @@ -1802,7 +1796,11 @@ void iwl_mld_rx_mpdu(struct iwl_mld *mld, struct napi_struct *napi, rx_status = IEEE80211_SKB_RXCB(skb); /* this is needed early */ - iwl_mld_fill_rx_status_band_freq(&phy_data, mpdu_desc, rx_status); + band = u8_get_bits(mpdu_desc->mac_phy_band, + IWL_RX_MPDU_MAC_PHY_BAND_BAND_MASK); + iwl_mld_fill_rx_status_band_freq(rx_status, band, + mpdu_desc->v3.channel); + rcu_read_lock(); @@ -1956,6 +1954,7 @@ void iwl_mld_rx_monitor_no_data(struct iwl_mld *mld, struct napi_struct *napi, struct ieee80211_rx_status *rx_status; struct sk_buff *skb; u32 format, rssi; + u8 channel; if (unlikely(mld->fw_status.in_hw_restart)) return; @@ -1968,9 +1967,10 @@ void iwl_mld_rx_monitor_no_data(struct iwl_mld *mld, struct napi_struct *napi, desc = (void *)pkt->data; rssi = le32_to_cpu(desc->rssi); + channel = u32_get_bits(rssi, RX_NO_DATA_CHANNEL_MSK); + phy_data.energy_a = u32_get_bits(rssi, RX_NO_DATA_CHAIN_A_MSK); phy_data.energy_b = u32_get_bits(rssi, RX_NO_DATA_CHAIN_B_MSK); - phy_data.channel = u32_get_bits(rssi, RX_NO_DATA_CHANNEL_MSK); phy_data.data0 = desc->phy_info[0]; phy_data.data1 = desc->phy_info[1]; phy_data.phy_info = IWL_RX_MPDU_PHY_TSF_OVERLOAD; @@ -2018,10 +2018,10 @@ void iwl_mld_rx_monitor_no_data(struct iwl_mld *mld, struct napi_struct *napi, break; } - rx_status->band = phy_data.channel > 14 ? NL80211_BAND_5GHZ : + rx_status->band = channel > 14 ? NL80211_BAND_5GHZ : NL80211_BAND_2GHZ; - rx_status->freq = ieee80211_channel_to_frequency(phy_data.channel, + rx_status->freq = ieee80211_channel_to_frequency(channel, rx_status->band); iwl_mld_rx_fill_status(mld, skb, &phy_data, NULL, NULL, queue); From patchwork Thu Apr 24 12:38:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 884318 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6EAE27B50F for ; Thu, 24 Apr 2025 12:39:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498345; cv=none; b=kReH8hJL4U97QxW1OoXchQxijP6WEJu7oM49aRyCjFUQtmODxhCbE+VyCSGjVim8snIxuRm6mbiAsutvivWCrJcE88XjKzsHikPJOVshR53d0IuR/AxdevO67WmFDF7lkJll1tqB/LACL1v6lG1oZ2ef1VOI15CXfIGEStK5+8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498345; c=relaxed/simple; bh=P8ZyrSFC5VaHD7aMrfocJ2J6MpWYpIimGitEkE6E/N4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AqBPtF1naNu+QZHJKlLnJncGe+AZOka6NvEvoSCEb9x5xTKLi611HTIwhvkiYzxLUQKc2+bhe17en+Vh6nrnPsf4gXUj3XxMpHbe/0JBJ+ce/udmTwQBhFLWZI15RCR1Qr1HScE3qQPI0rcZ/JdAr6FEoMF5lCQFMl9aCsItuX4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=mFBaWjOJ; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="mFBaWjOJ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498344; x=1777034344; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=P8ZyrSFC5VaHD7aMrfocJ2J6MpWYpIimGitEkE6E/N4=; b=mFBaWjOJ8jtxJP1pBQkq3gfdXhveCRmcxDX2GYbggjfw0zinXWAv63NQ ocs5+a5NME/ZBrIxdhESpn/b8X+N2vFHgdzu5EpFAqp8DoWMFOoYK5SnR QEbfEYfpdZ09Bov76O/Ssyw/GjKUNl8K0lB+KlJwVTSzeWXTlSKVeLEef XHR0/5hXG5CV4EH/DptzDCquQYsPZnLighBfFFuQBBUPW7Tk77HqlvOUF JpU66L1zJj62psKVfvaSEIhD+pdzyKi2QcWWygkKNaQl0lKMi87M7IjOO BjptfiPMvrOegaHpja0UMIkAIQx1whq/s7JOHDi5v6wV56aGuODcqqj6M g==; X-CSE-ConnectionGUID: eGpW1x1KRpGN7Q2VoJrL/A== X-CSE-MsgGUID: OVHe7FLEQ9qnPci07X+M5A== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302435" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302435" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:03 -0700 X-CSE-ConnectionGUID: PVkUoo28TwGZis197IUcuQ== X-CSE-MsgGUID: YwkKF6ByQTiUPeHI350Kjg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137449" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:01 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 10/14] wifi: iwlwifi: mld: simplify iwl_mld_rx_fill_status() Date: Thu, 24 Apr 2025 15:38:27 +0300 Message-Id: <20250424153620.77010d6a6694.I2fd06b073460717d324245482110cb0381218526@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg Move some code that's only done when having received data out of iwl_mld_rx_fill_status() and remove the two arguments that are related to that. This simplifies the function for the no- data case. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/rx.c | 69 ++++++++++----------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/rx.c b/drivers/net/wireless/intel/iwlwifi/mld/rx.c index ef366b7a20d1..3e69f2a4fa81 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/rx.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/rx.c @@ -1160,8 +1160,6 @@ static void iwl_mld_add_rtap_sniffer_config(struct iwl_mld *mld, static void iwl_mld_rx_fill_status(struct iwl_mld *mld, struct sk_buff *skb, struct iwl_mld_rx_phy_data *phy_data, - struct iwl_rx_mpdu_desc *mpdu_desc, - struct ieee80211_hdr *hdr, int queue) { struct ieee80211_rx_status *rx_status = IEEE80211_SKB_RXCB(skb); @@ -1170,44 +1168,12 @@ static void iwl_mld_rx_fill_status(struct iwl_mld *mld, struct sk_buff *skb, u8 stbc = u32_get_bits(rate_n_flags, RATE_MCS_STBC_MSK); bool is_sgi = rate_n_flags & RATE_MCS_SGI_MSK; - if (WARN_ON_ONCE(phy_data->with_data && (!mpdu_desc || !hdr))) - return; - - /* Keep packets with CRC errors (and with overrun) for monitor mode - * (otherwise the firmware discards them) but mark them as bad. - */ - if (phy_data->with_data && - (!(mpdu_desc->status & cpu_to_le32(IWL_RX_MPDU_STATUS_CRC_OK)) || - !(mpdu_desc->status & cpu_to_le32(IWL_RX_MPDU_STATUS_OVERRUN_OK)))) { - IWL_DEBUG_RX(mld, "Bad CRC or FIFO: 0x%08X.\n", - le32_to_cpu(mpdu_desc->status)); - rx_status->flag |= RX_FLAG_FAILED_FCS_CRC; - } - phy_data->info_type = IWL_RX_PHY_INFO_TYPE_NONE; - if (phy_data->with_data && - likely(!(phy_data->phy_info & IWL_RX_MPDU_PHY_TSF_OVERLOAD))) { - rx_status->mactime = - le64_to_cpu(mpdu_desc->v3.tsf_on_air_rise); - - /* TSF as indicated by the firmware is at INA time */ - rx_status->flag |= RX_FLAG_MACTIME_PLCP_START; - } else { + if (phy_data->phy_info & IWL_RX_MPDU_PHY_TSF_OVERLOAD) phy_data->info_type = le32_get_bits(phy_data->data1, IWL_RX_PHY_DATA1_INFO_TYPE_MASK); - } - - /* management stuff on default queue */ - if (!queue && phy_data->with_data && - unlikely(ieee80211_is_beacon(hdr->frame_control) || - ieee80211_is_probe_resp(hdr->frame_control))) { - rx_status->boottime_ns = ktime_get_boottime_ns(); - - if (mld->scan.pass_all_sched_res == SCHED_SCAN_PASS_ALL_STATE_ENABLED) - mld->scan.pass_all_sched_res = SCHED_SCAN_PASS_ALL_STATE_FOUND; - } /* set the preamble flag if appropriate */ if (format == RATE_MCS_CCK_MSK && @@ -1812,7 +1778,36 @@ void iwl_mld_rx_mpdu(struct iwl_mld *mld, struct napi_struct *napi, if (!queue && (phy_data.phy_info & IWL_RX_MPDU_PHY_AMPDU)) iwl_mld_rx_update_ampdu_ref(mld, &phy_data, rx_status); - iwl_mld_rx_fill_status(mld, skb, &phy_data, mpdu_desc, hdr, queue); + /* Keep packets with CRC errors (and with overrun) for monitor mode + * (otherwise the firmware discards them) but mark them as bad. + */ + if (!(mpdu_desc->status & cpu_to_le32(IWL_RX_MPDU_STATUS_CRC_OK)) || + !(mpdu_desc->status & cpu_to_le32(IWL_RX_MPDU_STATUS_OVERRUN_OK))) { + IWL_DEBUG_RX(mld, "Bad CRC or FIFO: 0x%08X.\n", + le32_to_cpu(mpdu_desc->status)); + rx_status->flag |= RX_FLAG_FAILED_FCS_CRC; + } + + if (likely(!(phy_data.phy_info & IWL_RX_MPDU_PHY_TSF_OVERLOAD))) { + rx_status->mactime = + le64_to_cpu(mpdu_desc->v3.tsf_on_air_rise); + + /* TSF as indicated by the firmware is at INA time */ + rx_status->flag |= RX_FLAG_MACTIME_PLCP_START; + } + + /* management stuff on default queue */ + if (!queue && unlikely(ieee80211_is_beacon(hdr->frame_control) || + ieee80211_is_probe_resp(hdr->frame_control))) { + rx_status->boottime_ns = ktime_get_boottime_ns(); + + if (mld->scan.pass_all_sched_res == + SCHED_SCAN_PASS_ALL_STATE_ENABLED) + mld->scan.pass_all_sched_res = + SCHED_SCAN_PASS_ALL_STATE_FOUND; + } + + iwl_mld_rx_fill_status(mld, skb, &phy_data, queue); if (iwl_mld_rx_crypto(mld, sta, hdr, rx_status, mpdu_desc, queue, le32_to_cpu(pkt->len_n_flags), &crypto_len)) @@ -2024,7 +2019,7 @@ void iwl_mld_rx_monitor_no_data(struct iwl_mld *mld, struct napi_struct *napi, rx_status->freq = ieee80211_channel_to_frequency(channel, rx_status->band); - iwl_mld_rx_fill_status(mld, skb, &phy_data, NULL, NULL, queue); + iwl_mld_rx_fill_status(mld, skb, &phy_data, queue); /* No more radiotap info should be added after this point. * Mark it as mac header for upper layers to know where From patchwork Thu Apr 24 12:38:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 884317 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E92427A936 for ; Thu, 24 Apr 2025 12:39:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498349; cv=none; b=Z2fAy4jUp5v6/CiIptYFp6vNuSU0NcRcSf1NvNsVBo5MQke3IGOUtMwaDDRvq9u6PkiqKPCYJu6R98lIvXXraRnrW9iCcDQTfDubRNaU4meh063KqrgXBiv0erDUjiZvX/r85kHvIzFqGLH6NauiB0f1o+mJo9aCBj+2GbgeN7g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498349; c=relaxed/simple; bh=dMTero5D3KXjDgYEZFhN46KWw5R8xEaNogH3vI1OeLg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ie/JNpMSPMmaeZyEDJXFRQ1iCTK+mEPBUQSC8oGyWa1ftpV5ZYm3aj/7BQBUJnqb8kztSg7vhPOCaavyaj7YV73aBSXD2x7GmAkCnNIMcXRPMkS7t7OIQJYRAAqjnywOL3rnOGVngePmL54cArzB7DhJ/zXBXtEpKc74LRFo6eU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=hUJGsZy6; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="hUJGsZy6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498346; x=1777034346; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dMTero5D3KXjDgYEZFhN46KWw5R8xEaNogH3vI1OeLg=; b=hUJGsZy63m1JU78Al+abjzyR4gwBG6TU864qWE/STaVZP+3Y9OK4KVSZ tcm0doP9itnP/ltt4F0SRza8rb1BDCPse0Tsxn63kNCl4AsmrqXB3hPvz kOlQU+MEfswnD8PO/2qZLt8rcN4S7g0WXWnCPp4PM5NnYAVnRGaDt9yDZ 7KyC4B6r2IGMgpKlDWOJnBWXASrjpifnIjjIfd53iFQBMZ84B07YiWwkF P0evVMJdQ0Fn0ZhdXK/8v6N8ElqSv1L9Up9TkP2w5OgnjNX39yTgjCFqG VdBOs+jMCqVJhSi0pKOjjLEWxJUT1EoAG/u2KRH3KWBZUoVR0o55C67t2 A==; X-CSE-ConnectionGUID: nsznUIU3RpqtFmdxZHhyzw== X-CSE-MsgGUID: b/ZqY3VLRPm/gyukyUboeg== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302439" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302439" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:05 -0700 X-CSE-ConnectionGUID: 3RBNcyIgQEqNqpXsw2aVEA== X-CSE-MsgGUID: Qt1w4cizTwiM53GHt/ZTrA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137458" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:03 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 11/14] wifi: iwlwifi: clean up config macro Date: Thu, 24 Apr 2025 15:38:28 +0300 Message-Id: <20250424153620.877b65b940b5.Ic3a40afcd182b6e1802bb8f8a1a845b20608e328@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg The IWL_DEV_INFO() macro has far too many arguments, and most of the time they're just "ANY". Use C99 initializers in the macro to clean that up. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/Makefile | 2 + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 1175 ++++++++--------- 2 files changed, 540 insertions(+), 637 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/Makefile b/drivers/net/wireless/intel/iwlwifi/Makefile index 9546ceeaf5e3..88c05f651209 100644 --- a/drivers/net/wireless/intel/iwlwifi/Makefile +++ b/drivers/net/wireless/intel/iwlwifi/Makefile @@ -26,6 +26,8 @@ iwlwifi-$(CONFIG_ACPI) += fw/acpi.o iwlwifi-$(CONFIG_EFI) += fw/uefi.o iwlwifi-$(CONFIG_IWLWIFI_DEBUGFS) += fw/debugfs.o +CFLAGS_pcie/drv.o += -Wno-override-init + iwlwifi-objs += $(iwlwifi-m) iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TRACING) += iwl-devtrace.o diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 93446c374008..0330e55e8480 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -551,703 +551,604 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct pci_device_id iwl_hw_card_ids[] = { MODULE_DEVICE_TABLE(pci, iwl_hw_card_ids); EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); -#define _IWL_DEV_INFO(_device, _subdevice, _mac_type, _mac_step, _rf_type, \ - _rf_id, _rf_step, _bw_limit, _cores, _cdb, _cfg, _name) \ - { .device = (_device), .subdevice = (_subdevice), .cfg = &(_cfg), \ - .name = _name, .mac_type = _mac_type, .rf_type = _rf_type, .rf_step = _rf_step, \ - .bw_limit = _bw_limit, .cores = _cores, .rf_id = _rf_id, \ - .mac_step = _mac_step, .cdb = _cdb, .jacket = IWL_CFG_ANY } - -#define IWL_DEV_INFO(_device, _subdevice, _cfg, _name) \ - _IWL_DEV_INFO(_device, _subdevice, IWL_CFG_ANY, IWL_CFG_ANY, \ - IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, \ - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_ANY, \ - _cfg, _name) +#define _IWL_DEV_INFO(_cfg, _name, ...) { \ + .cfg = &_cfg, \ + .name = _name, \ + .device = IWL_CFG_ANY, \ + .subdevice = IWL_CFG_ANY, \ + .mac_type = IWL_CFG_ANY, \ + .mac_step = IWL_CFG_ANY, \ + .rf_type = IWL_CFG_ANY, \ + .rf_step = IWL_CFG_ANY, \ + .bw_limit = IWL_CFG_BW_ANY, \ + .jacket = IWL_CFG_ANY, \ + .cores = IWL_CFG_ANY, \ + .rf_id = IWL_CFG_ANY, \ + .cdb = IWL_CFG_ANY, \ + __VA_ARGS__ \ +} +#define IWL_DEV_INFO(_cfg, _name, ...) \ + _IWL_DEV_INFO(_cfg, _name, __VA_ARGS__) + +#define DEVICE(n) .device = (n) +#define SUBDEV(n) .subdevice = (n) +#define MAC_TYPE(n) .mac_type = IWL_CFG_MAC_TYPE_##n +#define MAC_STEP(n) .mac_step = SILICON_##n##_STEP +#define RF_TYPE(n) .rf_type = IWL_CFG_RF_TYPE_##n +#define RF_STEP(n) .rf_step = SILICON_##n##_STEP +#define CORES(n) .cores = IWL_CFG_CORES_##n +#define RF_ID(n) .rf_id = IWL_CFG_RF_ID_##n +#define NO_CDB .cdb = IWL_CFG_NO_CDB +#define CDB .cdb = IWL_CFG_CDB +#define BW_NO_LIMIT .bw_limit = IWL_CFG_BW_NO_LIM +#define BW_LIMIT(n) .bw_limit = (n) VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { #if IS_ENABLED(CONFIG_IWLMVM) /* 9000 */ - IWL_DEV_INFO(0x2526, 0x1550, iwl9260_2ac_cfg, iwl9260_killer_1550_name), - IWL_DEV_INFO(0x2526, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), - IWL_DEV_INFO(0x2526, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), - IWL_DEV_INFO(0x30DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), - IWL_DEV_INFO(0x30DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), - IWL_DEV_INFO(0x31DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), - IWL_DEV_INFO(0x31DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), - IWL_DEV_INFO(0xA370, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), - IWL_DEV_INFO(0xA370, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), - IWL_DEV_INFO(0x54F0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), - IWL_DEV_INFO(0x54F0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), - IWL_DEV_INFO(0x51F0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), - IWL_DEV_INFO(0x51F0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), - IWL_DEV_INFO(0x51F0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), - IWL_DEV_INFO(0x51F0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), - IWL_DEV_INFO(0x51F1, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), - IWL_DEV_INFO(0x54F0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), - IWL_DEV_INFO(0x54F0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), - IWL_DEV_INFO(0x7A70, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), - IWL_DEV_INFO(0x7A70, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), - IWL_DEV_INFO(0x7AF0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), - IWL_DEV_INFO(0x7AF0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), - - IWL_DEV_INFO(0x271C, 0x0214, iwl9260_2ac_cfg, iwl9260_1_name), - IWL_DEV_INFO(0x7E40, 0x1691, iwl_cfg_ma, iwl_ax411_killer_1690s_name), - IWL_DEV_INFO(0x7E40, 0x1692, iwl_cfg_ma, iwl_ax411_killer_1690i_name), + IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_killer_1550_name, + DEVICE(0x2526), SUBDEV(0x1550), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name, + DEVICE(0x2526), SUBDEV(0x1551), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, + DEVICE(0x2526), SUBDEV(0x1552), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name, + DEVICE(0x30DC), SUBDEV(0x1551), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, + DEVICE(0x30DC), SUBDEV(0x1552), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name, + DEVICE(0x31DC), SUBDEV(0x1551), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, + DEVICE(0x31DC), SUBDEV(0x1552), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name, + DEVICE(0xA370), SUBDEV(0x1551), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, + DEVICE(0xA370), SUBDEV(0x1552), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name, + DEVICE(0x54F0), SUBDEV(0x1551), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, + DEVICE(0x54F0), SUBDEV(0x1552), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name, + DEVICE(0x51F0), SUBDEV(0x1552), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name, + DEVICE(0x51F0), SUBDEV(0x1551), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name, + DEVICE(0x51F0), SUBDEV(0x1691), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, + DEVICE(0x51F0), SUBDEV(0x1692), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, + DEVICE(0x51F1), SUBDEV(0x1692), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name, + DEVICE(0x54F0), SUBDEV(0x1691), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, + DEVICE(0x54F0), SUBDEV(0x1692), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name, + DEVICE(0x7A70), SUBDEV(0x1691), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, + DEVICE(0x7A70), SUBDEV(0x1692), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name, + DEVICE(0x7AF0), SUBDEV(0x1691), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, + DEVICE(0x7AF0), SUBDEV(0x1692), BW_NO_LIMIT), + + IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_1_name, + DEVICE(0x271C), SUBDEV(0x0214), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_cfg_ma, iwl_ax411_killer_1690s_name, + DEVICE(0x7E40), SUBDEV(0x1691), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_cfg_ma, iwl_ax411_killer_1690i_name, + DEVICE(0x7E40), SUBDEV(0x1692), BW_NO_LIMIT), /* AX200 */ - IWL_DEV_INFO(0x2723, IWL_CFG_ANY, iwl_ax200_cfg_cc, iwl_ax200_name), - IWL_DEV_INFO(0x2723, 0x1653, iwl_ax200_cfg_cc, iwl_ax200_killer_1650w_name), - IWL_DEV_INFO(0x2723, 0x1654, iwl_ax200_cfg_cc, iwl_ax200_killer_1650x_name), + IWL_DEV_INFO(iwl_ax200_cfg_cc, iwl_ax200_name, + DEVICE(0x2723), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax200_cfg_cc, iwl_ax200_killer_1650w_name, + DEVICE(0x2723), SUBDEV(0x1653), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax200_cfg_cc, iwl_ax200_killer_1650x_name, + DEVICE(0x2723), SUBDEV(0x1654), BW_NO_LIMIT), /* Qu with Hr */ - IWL_DEV_INFO(0x43F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x43F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x43F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x43F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650s_name), - IWL_DEV_INFO(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650i_name), - IWL_DEV_INFO(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x43F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0xA0F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0xA0F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0xA0F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0xA0F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0xA0F0, 0x0A10, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0xA0F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), - IWL_DEV_INFO(0xA0F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), - IWL_DEV_INFO(0xA0F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0xA0F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0xA0F0, 0x6074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x6074, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x06F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL), - IWL_DEV_INFO(0x34F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x34F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x34F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x34F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x34F0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x34F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), - IWL_DEV_INFO(0x34F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), - IWL_DEV_INFO(0x34F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x34F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), - - IWL_DEV_INFO(0x3DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x3DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x3DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x3DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x3DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x3DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), - IWL_DEV_INFO(0x3DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), - IWL_DEV_INFO(0x3DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x3DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), - - IWL_DEV_INFO(0x4DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x4DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x4DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x4DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x4DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x4DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), - IWL_DEV_INFO(0x4DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), - IWL_DEV_INFO(0x4DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x4DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), - IWL_DEV_INFO(0x4DF0, 0x6074, iwl_ax201_cfg_qu_hr, NULL), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x43F0), SUBDEV(0x0070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x43F0), SUBDEV(0x0074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x43F0), SUBDEV(0x0078), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x43F0), SUBDEV(0x007C), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650s_2ax_cfg_qu_b0_hr_b0, + iwl_ax201_killer_1650s_name, + DEVICE(0x43F0), SUBDEV(0x1651), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650i_2ax_cfg_qu_b0_hr_b0, + iwl_ax201_killer_1650i_name, + DEVICE(0x43F0), SUBDEV(0x1652), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x43F0), SUBDEV(0x2074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x43F0), SUBDEV(0x4070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0xA0F0), SUBDEV(0x0070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0xA0F0), SUBDEV(0x0074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0xA0F0), SUBDEV(0x0078), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0xA0F0), SUBDEV(0x007C), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0xA0F0), SUBDEV(0x0A10), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650s_2ax_cfg_qu_b0_hr_b0, NULL, + DEVICE(0xA0F0), SUBDEV(0x1651), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650i_2ax_cfg_qu_b0_hr_b0, NULL, + DEVICE(0xA0F0), SUBDEV(0x1652), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0xA0F0), SUBDEV(0x2074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0xA0F0), SUBDEV(0x4070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0xA0F0), SUBDEV(0x6074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x0070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x0074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x6074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x0078), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x007C), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x0310), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax1650s_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x1651), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax1650i_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x1652), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x2074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x02F0), SUBDEV(0x4070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x0070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x0074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x0078), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x007C), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x0310), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax1650s_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x1651), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax1650i_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x1652), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x2074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_quz_hr, NULL, + DEVICE(0x06F0), SUBDEV(0x4070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x34F0), SUBDEV(0x0070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x34F0), SUBDEV(0x0074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x34F0), SUBDEV(0x0078), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x34F0), SUBDEV(0x007C), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x34F0), SUBDEV(0x0310), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650s_2ax_cfg_qu_b0_hr_b0, NULL, + DEVICE(0x34F0), SUBDEV(0x1651), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650i_2ax_cfg_qu_b0_hr_b0, NULL, + DEVICE(0x34F0), SUBDEV(0x1652), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x34F0), SUBDEV(0x2074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x34F0), SUBDEV(0x4070), BW_NO_LIMIT), + + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x3DF0), SUBDEV(0x0070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x3DF0), SUBDEV(0x0074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x3DF0), SUBDEV(0x0078), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x3DF0), SUBDEV(0x007C), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x3DF0), SUBDEV(0x0310), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650s_2ax_cfg_qu_b0_hr_b0, NULL, + DEVICE(0x3DF0), SUBDEV(0x1651), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650i_2ax_cfg_qu_b0_hr_b0, NULL, + DEVICE(0x3DF0), SUBDEV(0x1652), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x3DF0), SUBDEV(0x2074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x3DF0), SUBDEV(0x4070), BW_NO_LIMIT), + + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x4DF0), SUBDEV(0x0070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x4DF0), SUBDEV(0x0074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x4DF0), SUBDEV(0x0078), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x4DF0), SUBDEV(0x007C), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x4DF0), SUBDEV(0x0310), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650s_2ax_cfg_qu_b0_hr_b0, NULL, + DEVICE(0x4DF0), SUBDEV(0x1651), BW_NO_LIMIT), + IWL_DEV_INFO(killer1650i_2ax_cfg_qu_b0_hr_b0, NULL, + DEVICE(0x4DF0), SUBDEV(0x1652), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x4DF0), SUBDEV(0x2074), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x4DF0), SUBDEV(0x4070), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_ax201_cfg_qu_hr, NULL, + DEVICE(0x4DF0), SUBDEV(0x6074), BW_NO_LIMIT), /* So with HR */ - IWL_DEV_INFO(0x2725, 0x0090, iwlax211_2ax_cfg_so_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x0020, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x2020, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x0024, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x0310, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x0510, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x0A10, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0xE020, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0xE024, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x4020, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x6020, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x6024, iwlax210_2ax_cfg_ty_gf_a0, NULL), - IWL_DEV_INFO(0x2725, 0x1673, iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675w_name), - IWL_DEV_INFO(0x2725, 0x1674, iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675x_name), - IWL_DEV_INFO(0x7A70, 0x0090, iwlax211_2ax_cfg_so_gf_a0_long, NULL), - IWL_DEV_INFO(0x7A70, 0x0098, iwlax211_2ax_cfg_so_gf_a0_long, NULL), - IWL_DEV_INFO(0x7A70, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0_long, NULL), - IWL_DEV_INFO(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0_long, NULL), - IWL_DEV_INFO(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0_long, NULL), - IWL_DEV_INFO(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0_long, NULL), - IWL_DEV_INFO(0x7AF0, 0x0090, iwlax211_2ax_cfg_so_gf_a0, NULL), - IWL_DEV_INFO(0x7AF0, 0x0098, iwlax211_2ax_cfg_so_gf_a0, NULL), - IWL_DEV_INFO(0x7AF0, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0, NULL), - IWL_DEV_INFO(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0, NULL), - IWL_DEV_INFO(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0, NULL), - IWL_DEV_INFO(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0, NULL), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x0090), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x0020), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x2020), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x0024), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x0310), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x0510), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x0A10), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0xE020), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0xE024), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x4020), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x6020), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + DEVICE(0x2725), SUBDEV(0x6024), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675w_name, + DEVICE(0x2725), SUBDEV(0x1673), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675x_name, + DEVICE(0x2725), SUBDEV(0x1674), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + DEVICE(0x7A70), SUBDEV(0x0090), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + DEVICE(0x7A70), SUBDEV(0x0098), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0_long, NULL, + DEVICE(0x7A70), SUBDEV(0x00B0), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + DEVICE(0x7A70), SUBDEV(0x0310), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + DEVICE(0x7A70), SUBDEV(0x0510), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + DEVICE(0x7A70), SUBDEV(0x0A10), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + DEVICE(0x7AF0), SUBDEV(0x0090), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + DEVICE(0x7AF0), SUBDEV(0x0098), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, NULL, + DEVICE(0x7AF0), SUBDEV(0x00B0), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + DEVICE(0x7AF0), SUBDEV(0x0310), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + DEVICE(0x7AF0), SUBDEV(0x0510), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + DEVICE(0x7AF0), SUBDEV(0x0A10), BW_NO_LIMIT), /* So with JF */ - IWL_DEV_INFO(0x7A70, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), - IWL_DEV_INFO(0x7A70, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), - IWL_DEV_INFO(0x7AF0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), - IWL_DEV_INFO(0x7AF0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name, + DEVICE(0x7A70), SUBDEV(0x1551), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name, + DEVICE(0x7A70), SUBDEV(0x1552), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name, + DEVICE(0x7AF0), SUBDEV(0x1551), BW_NO_LIMIT), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name, + DEVICE(0x7AF0), SUBDEV(0x1552), BW_NO_LIMIT), /* SO with GF2 */ - IWL_DEV_INFO(0x2726, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), - IWL_DEV_INFO(0x2726, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), - IWL_DEV_INFO(0x51F0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), - IWL_DEV_INFO(0x51F0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), - IWL_DEV_INFO(0x51F1, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), - IWL_DEV_INFO(0x51F1, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), - IWL_DEV_INFO(0x54F0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), - IWL_DEV_INFO(0x54F0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), - IWL_DEV_INFO(0x7A70, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), - IWL_DEV_INFO(0x7A70, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), - IWL_DEV_INFO(0x7AF0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), - IWL_DEV_INFO(0x7AF0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), - IWL_DEV_INFO(0x7F70, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), - IWL_DEV_INFO(0x7F70, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, + DEVICE(0x2726), SUBDEV(0x1671), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, + DEVICE(0x2726), SUBDEV(0x1672), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, + DEVICE(0x51F0), SUBDEV(0x1671), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, + DEVICE(0x51F0), SUBDEV(0x1672), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, + DEVICE(0x51F1), SUBDEV(0x1671), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, + DEVICE(0x51F1), SUBDEV(0x1672), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, + DEVICE(0x54F0), SUBDEV(0x1671), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, + DEVICE(0x54F0), SUBDEV(0x1672), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, + DEVICE(0x7A70), SUBDEV(0x1671), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, + DEVICE(0x7A70), SUBDEV(0x1672), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, + DEVICE(0x7AF0), SUBDEV(0x1671), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, + DEVICE(0x7AF0), SUBDEV(0x1672), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, + DEVICE(0x7F70), SUBDEV(0x1671), BW_NO_LIMIT), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, + DEVICE(0x7F70), SUBDEV(0x1672), BW_NO_LIMIT), /* MA with GF2 */ - IWL_DEV_INFO(0x7E40, 0x1671, iwl_cfg_ma, iwl_ax211_killer_1675s_name), - IWL_DEV_INFO(0x7E40, 0x1672, iwl_cfg_ma, iwl_ax211_killer_1675i_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_2ac_cfg_soc, iwl9461_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_2ac_cfg_soc, iwl9461_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_2ac_cfg_soc, iwl9462_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_2ac_cfg_soc, iwl9462_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_2ac_cfg_soc, iwl9560_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_2ac_cfg_soc, iwl9560_name), - - _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT_GNSS, IWL_CFG_NO_CDB, - iwl9260_2ac_cfg, iwl9270_160_name), - _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT_GNSS, IWL_CFG_NO_CDB, - iwl9260_2ac_cfg, iwl9270_name), - - _IWL_DEV_INFO(0x271B, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9260_2ac_cfg, iwl9162_160_name), - _IWL_DEV_INFO(0x271B, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9260_2ac_cfg, iwl9162_name), - - _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9260_2ac_cfg, iwl9260_160_name), - _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9260_2ac_cfg, iwl9260_name), + IWL_DEV_INFO(iwl_cfg_ma, iwl_ax211_killer_1675s_name, + DEVICE(0x7E40), SUBDEV(0x1671), BW_NO_LIMIT), + IWL_DEV_INFO(iwl_cfg_ma, iwl_ax211_killer_1675i_name, + DEVICE(0x7E40), SUBDEV(0x1672), BW_NO_LIMIT), + + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9461_160_name, MAC_TYPE(PU), + RF_TYPE(JF1), RF_ID(JF1), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9461_name, MAC_TYPE(PU), + RF_TYPE(JF1), RF_ID(JF1), + BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9462_160_name, MAC_TYPE(PU), + RF_TYPE(JF1), RF_ID(JF1_DIV), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9462_name, MAC_TYPE(PU), + RF_TYPE(JF1), RF_ID(JF1_DIV), + BW_LIMIT(80), CORES(BT), NO_CDB), + + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_160_name, MAC_TYPE(PU), + RF_TYPE(JF2), RF_ID(JF), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_name, MAC_TYPE(PU), + RF_TYPE(JF2), RF_ID(JF), + BW_LIMIT(80), CORES(BT), NO_CDB), + + IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9270_160_name, DEVICE(0x2526), + MAC_TYPE(TH), RF_TYPE(TH), + BW_NO_LIMIT, CORES(BT_GNSS), NO_CDB), + IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9270_name, DEVICE(0x2526), + MAC_TYPE(TH), RF_TYPE(TH), + BW_LIMIT(80), CORES(BT_GNSS), NO_CDB), + + IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9162_160_name, DEVICE(0x271B), + MAC_TYPE(TH), RF_TYPE(TH1), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9162_name, DEVICE(0x271B), + MAC_TYPE(TH), RF_TYPE(TH1), + BW_LIMIT(80), CORES(BT), NO_CDB), + + IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_160_name, DEVICE(0x2526), + MAC_TYPE(TH), RF_TYPE(TH), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_name, DEVICE(0x2526), + MAC_TYPE(TH), RF_TYPE(TH), + BW_LIMIT(80), CORES(BT), NO_CDB), /* Qu with Jf */ /* Qu B step */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_b0_jf_b0_cfg, iwl9461_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_b0_jf_b0_cfg, iwl9461_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_b0_jf_b0_cfg, iwl9462_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_b0_jf_b0_cfg, iwl9462_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_b0_jf_b0_cfg, iwl9560_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_b0_jf_b0_cfg, iwl9560_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550s_name), - _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550i_name), + IWL_DEV_INFO(iwl9560_qu_b0_jf_b0_cfg, iwl9461_160_name, + MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_b0_jf_b0_cfg, iwl9461_name, + MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1), + BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_b0_jf_b0_cfg, iwl9462_160_name, + MAC_TYPE(QU), MAC_STEP(B), + RF_TYPE(JF1), RF_ID(JF1_DIV), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_b0_jf_b0_cfg, iwl9462_name, + MAC_TYPE(QU), MAC_STEP(B), + RF_TYPE(JF1), RF_ID(JF1_DIV), + BW_LIMIT(80), CORES(BT), NO_CDB), + + IWL_DEV_INFO(iwl9560_qu_b0_jf_b0_cfg, iwl9560_160_name, + MAC_TYPE(QU), MAC_STEP(B), + RF_TYPE(JF2), RF_ID(JF), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_b0_jf_b0_cfg, iwl9560_name, + MAC_TYPE(QU), MAC_STEP(B), + RF_TYPE(JF2), RF_ID(JF), + BW_LIMIT(80), CORES(BT), NO_CDB), + + IWL_DEV_INFO(iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550s_name, + SUBDEV(0x1551), MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2), + RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550i_name, + SUBDEV(0x1552), MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2), + RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), /* Qu C step */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_c0_jf_b0_cfg, iwl9461_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_c0_jf_b0_cfg, iwl9461_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_c0_jf_b0_cfg, iwl9462_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_c0_jf_b0_cfg, iwl9462_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_c0_jf_b0_cfg, iwl9560_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_c0_jf_b0_cfg, iwl9560_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550s_name), - _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550i_name), + IWL_DEV_INFO(iwl9560_qu_c0_jf_b0_cfg, iwl9461_160_name, + MAC_TYPE(QU), MAC_STEP(C), + RF_TYPE(JF1), RF_ID(JF1), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_c0_jf_b0_cfg, iwl9461_name, + MAC_TYPE(QU), MAC_STEP(C), + RF_TYPE(JF1), RF_ID(JF1), + BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_c0_jf_b0_cfg, iwl9462_160_name, + MAC_TYPE(QU), MAC_STEP(C), + RF_TYPE(JF1), RF_ID(JF1_DIV), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_c0_jf_b0_cfg, iwl9462_name, + MAC_TYPE(QU), MAC_STEP(C), + RF_TYPE(JF1), RF_ID(JF1_DIV), + BW_LIMIT(80), CORES(BT), NO_CDB), + + IWL_DEV_INFO(iwl9560_qu_c0_jf_b0_cfg, iwl9560_160_name, MAC_TYPE(QU), + MAC_STEP(C), RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_c0_jf_b0_cfg, iwl9560_name, MAC_TYPE(QU), + MAC_STEP(C), RF_TYPE(JF2), RF_ID(JF), BW_LIMIT(80), CORES(BT), + NO_CDB), + + IWL_DEV_INFO(iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550s_name, + SUBDEV(0x1551), MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF2), + RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550i_name, + SUBDEV(0x1552), MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF2), + RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), /* QuZ */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_quz_a0_jf_b0_cfg, iwl9461_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_quz_a0_jf_b0_cfg, iwl9461_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_quz_a0_jf_b0_cfg, iwl9462_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_quz_a0_jf_b0_cfg, iwl9462_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_quz_a0_jf_b0_cfg, iwl9560_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_quz_a0_jf_b0_cfg, iwl9560_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550s_name), - _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550i_name), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9461_160_name, MAC_TYPE(QUZ), + RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9461_name, MAC_TYPE(QUZ), + RF_TYPE(JF1), RF_ID(JF1), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9462_160_name, MAC_TYPE(QUZ), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9462_name, MAC_TYPE(QUZ), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMIT(80), CORES(BT), NO_CDB), + + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_160_name, MAC_TYPE(QUZ), + RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_name, MAC_TYPE(QUZ), + RF_TYPE(JF2), RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), + + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550s_name, + SUBDEV(0x1551), MAC_TYPE(QUZ), RF_TYPE(JF2), RF_ID(JF), + BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550i_name, + SUBDEV(0x1552), MAC_TYPE(QUZ), RF_TYPE(JF2), RF_ID(JF), + BW_LIMIT(80), CORES(BT), NO_CDB), /* Qu with Hr */ /* Qu B step */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_qu_b0_hr1_b0, iwl_ax101_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_qu_b0_hr_b0, iwl_ax203_name), + IWL_DEV_INFO(iwl_qu_b0_hr1_b0, iwl_ax101_name, MAC_TYPE(QU), + MAC_STEP(B), RF_TYPE(HR1), NO_CDB), + IWL_DEV_INFO(iwl_qu_b0_hr_b0, iwl_ax203_name, MAC_TYPE(QU), MAC_STEP(B), + RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), /* Qu C step */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_qu_c0_hr1_b0, iwl_ax101_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_qu_c0_hr_b0, iwl_ax203_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_qu_c0_hr_b0, iwl_ax201_name), + IWL_DEV_INFO(iwl_qu_c0_hr1_b0, iwl_ax101_name, MAC_TYPE(QU), + MAC_STEP(C), RF_TYPE(HR1), NO_CDB), + IWL_DEV_INFO(iwl_qu_c0_hr_b0, iwl_ax203_name, MAC_TYPE(QU), MAC_STEP(C), + RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_qu_c0_hr_b0, iwl_ax201_name, MAC_TYPE(QU), MAC_STEP(C), + RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), /* QuZ */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_quz_a0_hr1_b0, iwl_ax101_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, SILICON_B_STEP, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_quz_a0_hr_b0, iwl_ax203_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_QUZ, SILICON_B_STEP, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_quz_a0_hr_b0, iwl_ax201_name), + IWL_DEV_INFO(iwl_quz_a0_hr1_b0, iwl_ax101_name, MAC_TYPE(QUZ), + RF_TYPE(HR1), NO_CDB), + IWL_DEV_INFO(iwl_cfg_quz_a0_hr_b0, iwl_ax203_name, MAC_TYPE(QUZ), + MAC_STEP(B), RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_cfg_quz_a0_hr_b0, iwl_ax201_name, MAC_TYPE(QUZ), + MAC_STEP(B), RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), /* Ma */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_ma, iwl_ax201_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_ma, iwl_ax211_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_ma, iwl_ax231_name), + IWL_DEV_INFO(iwl_cfg_ma, iwl_ax201_name, MAC_TYPE(MA), RF_TYPE(HR2), + NO_CDB), + IWL_DEV_INFO(iwl_cfg_ma, iwl_ax211_name, MAC_TYPE(MA), RF_TYPE(GF)), + IWL_DEV_INFO(iwl_cfg_ma, iwl_ax231_name, MAC_TYPE(MA), RF_TYPE(FM), + NO_CDB), /* So with Hr */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_so_a0_hr_a0, iwl_ax203_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_so_a0_hr_a0, iwl_ax101_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_so_a0_hr_a0, iwl_ax201_name), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax203_name, MAC_TYPE(SO), + RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax101_name, MAC_TYPE(SO), + RF_TYPE(HR1), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax201_name, MAC_TYPE(SO), + RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), /* So-F with Hr */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_so_a0_hr_a0, iwl_ax203_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, - 80, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_so_a0_hr_a0, iwl_ax101_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_so_a0_hr_a0, iwl_ax201_name), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax203_name, MAC_TYPE(SOF), + RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax101_name, MAC_TYPE(SOF), + RF_TYPE(HR1), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax201_name, MAC_TYPE(SOF), + RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), /* So-F with Gf */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_CDB, - iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, MAC_TYPE(SOF), + RF_TYPE(GF), BW_NO_LIMIT, NO_CDB), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name, MAC_TYPE(SOF), + RF_TYPE(GF), BW_NO_LIMIT, CDB), /* SoF with JF2 */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9560_name), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name, MAC_TYPE(SOF), + RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_name, MAC_TYPE(SOF), + RF_TYPE(JF2), RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), /* SoF with JF */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9461_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9462_name), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name, MAC_TYPE(SOF), + RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name, MAC_TYPE(SOF), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_name, MAC_TYPE(SOF), + RF_TYPE(JF1), RF_ID(JF1), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_name, MAC_TYPE(SOF), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMIT(80), CORES(BT), NO_CDB), /* So with GF */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_CDB, - iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name), + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, MAC_TYPE(SO), + RF_TYPE(GF), BW_NO_LIMIT, NO_CDB), + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name, MAC_TYPE(SO), + RF_TYPE(GF), BW_NO_LIMIT, CDB), /* So with JF2 */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9560_name), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name, MAC_TYPE(SO), + RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_name, MAC_TYPE(SO), + RF_TYPE(JF2), RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), /* So with JF */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9461_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, - 80, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, - iwlax210_2ax_cfg_so_jf_b0, iwl9462_name), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name, MAC_TYPE(SO), + RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name, MAC_TYPE(SO), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_name, MAC_TYPE(SO), + RF_TYPE(JF1), RF_ID(JF1), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_name, MAC_TYPE(SO), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMIT(80), CORES(BT), NO_CDB), #endif /* CONFIG_IWLMVM */ #if IS_ENABLED(CONFIG_IWLMLD) /* Bz */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_bz, iwl_ax201_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_bz, iwl_ax211_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_bz, iwl_fm_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_bz, iwl_wh_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BZ_W, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_bz, iwl_ax201_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BZ_W, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_bz, iwl_ax211_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BZ_W, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_bz, iwl_fm_name), - - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BZ_W, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_bz, iwl_wh_name), + IWL_DEV_INFO(iwl_cfg_bz, iwl_ax201_name, MAC_TYPE(BZ), RF_TYPE(HR2)), + + IWL_DEV_INFO(iwl_cfg_bz, iwl_ax211_name, MAC_TYPE(BZ), RF_TYPE(GF)), + + IWL_DEV_INFO(iwl_cfg_bz, iwl_fm_name, MAC_TYPE(BZ), RF_TYPE(FM)), + + IWL_DEV_INFO(iwl_cfg_bz, iwl_wh_name, MAC_TYPE(BZ), RF_TYPE(WH)), + + IWL_DEV_INFO(iwl_cfg_bz, iwl_ax201_name, MAC_TYPE(BZ_W), RF_TYPE(HR2)), + + IWL_DEV_INFO(iwl_cfg_bz, iwl_ax211_name, MAC_TYPE(BZ_W), RF_TYPE(GF)), + + IWL_DEV_INFO(iwl_cfg_bz, iwl_fm_name, MAC_TYPE(BZ_W), RF_TYPE(FM)), + + IWL_DEV_INFO(iwl_cfg_bz, iwl_wh_name, MAC_TYPE(BZ_W), RF_TYPE(WH)), /* Ga (Gl) */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_gl, iwl_gl_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, - 160, IWL_CFG_ANY, IWL_CFG_NO_CDB, - iwl_cfg_gl, iwl_mtp_name), + IWL_DEV_INFO(iwl_cfg_gl, iwl_gl_name, MAC_TYPE(GL), RF_TYPE(FM), + BW_NO_LIMIT, NO_CDB), + IWL_DEV_INFO(iwl_cfg_gl, iwl_mtp_name, MAC_TYPE(GL), RF_TYPE(FM), + BW_LIMIT(160), NO_CDB), /* Sc */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc, iwl_ax211_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc, iwl_fm_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc, iwl_wh_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY, - 160, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc, iwl_sp_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC2, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc2, iwl_ax211_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC2, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc2, iwl_fm_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC2, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc2, iwl_wh_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC2, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY, - 160, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc2, iwl_sp_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC2F, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc2f, iwl_ax211_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC2F, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc2f, iwl_fm_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC2F, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc2f, iwl_wh_name), - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_SC2F, IWL_CFG_ANY, - IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY, - 160, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_sc2f, iwl_sp_name), + IWL_DEV_INFO(iwl_cfg_sc, iwl_ax211_name, MAC_TYPE(SC), RF_TYPE(GF)), + IWL_DEV_INFO(iwl_cfg_sc, iwl_fm_name, MAC_TYPE(SC), RF_TYPE(FM)), + IWL_DEV_INFO(iwl_cfg_sc, iwl_wh_name, MAC_TYPE(SC), RF_TYPE(WH), + BW_NO_LIMIT), + IWL_DEV_INFO(iwl_cfg_sc, iwl_sp_name, MAC_TYPE(SC), RF_TYPE(WH), + BW_LIMIT(160)), + IWL_DEV_INFO(iwl_cfg_sc2, iwl_ax211_name, MAC_TYPE(SC2), RF_TYPE(GF)), + IWL_DEV_INFO(iwl_cfg_sc2, iwl_fm_name, MAC_TYPE(SC2), RF_TYPE(FM)), + IWL_DEV_INFO(iwl_cfg_sc2, iwl_wh_name, MAC_TYPE(SC2), RF_TYPE(WH), + BW_NO_LIMIT), + IWL_DEV_INFO(iwl_cfg_sc2, iwl_sp_name, MAC_TYPE(SC2), RF_TYPE(WH), + BW_LIMIT(160)), + IWL_DEV_INFO(iwl_cfg_sc2f, iwl_ax211_name, MAC_TYPE(SC2F), RF_TYPE(GF)), + IWL_DEV_INFO(iwl_cfg_sc2f, iwl_fm_name, MAC_TYPE(SC2F), RF_TYPE(FM)), + IWL_DEV_INFO(iwl_cfg_sc2f, iwl_wh_name, MAC_TYPE(SC2F), RF_TYPE(WH), + BW_NO_LIMIT), + IWL_DEV_INFO(iwl_cfg_sc2f, iwl_sp_name, MAC_TYPE(SC2F), RF_TYPE(WH), + BW_LIMIT(160)), /* Dr */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_DR, IWL_CFG_ANY, - IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_dr, iwl_dr_name), + IWL_DEV_INFO(iwl_cfg_dr, iwl_dr_name, MAC_TYPE(DR)), /* Br */ - _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_MAC_TYPE_BR, IWL_CFG_ANY, - IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY, - iwl_cfg_br, iwl_br_name), + IWL_DEV_INFO(iwl_cfg_br, iwl_br_name, MAC_TYPE(BR)), #endif /* CONFIG_IWLMLD */ }; EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_dev_info_table); From patchwork Thu Apr 24 12:38:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 885458 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C55C027B4F1 for ; Thu, 24 Apr 2025 12:39:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498348; cv=none; b=D66yFFB4TnEJXBu9u03ASgVfnGgUU/5taSbkZ2W8oZMFGC34yqbXvRYxhRD3RC6NH2uR3kZrgNaXGvzagy1PWb1wE26O77ch+pjR+ExWxHgfPtCcUsA9YO7DnnIE9xyeRsFVGV17xcXFlySyIBJ2K12PN6SYkiD+iCo5aybFtBs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498348; c=relaxed/simple; bh=0QHQr0qt7DIQqhpsui2TxuCQFKPSM0Nl7PJ7GzLIpFk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XFilvMuvh2/qVQdfgXawmOJPqn+84hChXRMGxlg1Pn0Qe5EqYU/2zUMwpCd375iZOAuinAu6K6Jp+UOOWc6WcSUwRMrDnTcnWalxBelUkcIlSnAL3FeY25PgVcTKyoOKMUqiYAUyK7PkjeVFSD/RCQvqQcoAr4ZuAHGvkJQpdrI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=U2vWnTh3; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="U2vWnTh3" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498347; x=1777034347; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0QHQr0qt7DIQqhpsui2TxuCQFKPSM0Nl7PJ7GzLIpFk=; b=U2vWnTh3QtsyAl3iHxplo4UtYS80U8KlD3MIBienhaYCiaTS+0NTMvc5 i8TwRqzdgTQYgXu6v2ZcOJ3IUzZwvDb7aUHlaFFmKwhrsb96Ro5XXNAXB lsiIeXq4v+Wy+pKngHQauzH6zg8kw+OME+1t+69yJwDzUrp0jEZuoEOz3 cfbc7Y4IKQiN3aXdK81TmZLXC69cNxfyyw4i4vPxgXEoh1lgOjn5n93aa etqXBLBb/2ALp7Y4yCk1fo8saI6MDg2MrvfJ6OrsT+PCuOF/r6bTvB5h3 8TLWeFFEdzIlkgOHVVMBjFP5CaYMa86ZLan4hqKHMJNDsfZJbxiEFpPCf A==; X-CSE-ConnectionGUID: GZYknH6fSVSzQ8r9oPcL/w== X-CSE-MsgGUID: JDzZaxu4TbKUfX3ZKF9Yfg== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302446" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302446" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:06 -0700 X-CSE-ConnectionGUID: 1gnGHeOxQ6eJ3OYieW2Eag== X-CSE-MsgGUID: WNg/ee6kS1CxaSIP+BRMkg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137463" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:05 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Emmanuel Grumbach Subject: [PATCH wireless-next 12/14] wifi: iwlwifi: add definitions for iwl_mac_power_cmd version 2 Date: Thu, 24 Apr 2025 15:38:29 +0300 Message-Id: <20250424153620.991ff01b8d16.Id0aa4061d7926753b03a13bf94ec1ac9e1d18745@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited This version has a new flag bit that indicates whether or not SMPS is allowed for the MAC. This only adds the API, the actual support will be done in other patches. Signed-off-by: Miri Korenblit Reviewed-by: Emmanuel Grumbach --- drivers/net/wireless/intel/iwlwifi/fw/api/power.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/power.h b/drivers/net/wireless/intel/iwlwifi/fw/api/power.h index 29a1a7448cbe..1238c23ac48b 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/power.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/power.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* - * Copyright (C) 2012-2014, 2018-2024 Intel Corporation + * Copyright (C) 2012-2014, 2018-2025 Intel Corporation * Copyright (C) 2013-2014 Intel Mobile Communications GmbH * Copyright (C) 2015-2017 Intel Deutschland GmbH */ @@ -89,6 +89,7 @@ struct iwl_ltr_config_cmd { * @POWER_FLAGS_LPRX_ENA_MSK: Low Power RX enable. * @POWER_FLAGS_UAPSD_MISBEHAVING_ENA_MSK: AP/GO's uAPSD misbehaving * detection enablement + * @POWER_FLAGS_ENABLE_SMPS_MSK: SMPS is allowed for this vif */ enum iwl_power_flags { POWER_FLAGS_POWER_SAVE_ENA_MSK = BIT(0), @@ -99,6 +100,7 @@ enum iwl_power_flags { POWER_FLAGS_ADVANCE_PM_ENA_MSK = BIT(9), POWER_FLAGS_LPRX_ENA_MSK = BIT(11), POWER_FLAGS_UAPSD_MISBEHAVING_ENA_MSK = BIT(12), + POWER_FLAGS_ENABLE_SMPS_MSK = BIT(14), }; #define IWL_POWER_VEC_SIZE 5 @@ -216,7 +218,6 @@ struct iwl_mac_power_cmd { /* CONTEXT_DESC_API_T_VER_1 */ __le32 id_and_color; - /* CLIENT_PM_POWER_TABLE_S_VER_1 */ __le16 flags; __le16 keep_alive_seconds; __le32 rx_data_timeout; @@ -237,7 +238,7 @@ struct iwl_mac_power_cmd { u8 heavy_rx_thld_percentage; u8 limited_ps_threshold; u8 reserved; -} __packed; +} __packed; /* CLIENT_PM_POWER_TABLE_S_VER_1, VER_2 */ /* * struct iwl_uapsd_misbehaving_ap_notif - FW sends this notification when From patchwork Thu Apr 24 12:38:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 885457 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87C2227A91D for ; Thu, 24 Apr 2025 12:39:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498350; cv=none; b=dt7G32P7WDd9lKUTlPjpR6CqJ5p6AXUpB0wB3xBHcQdp6sAS/Qq3ZPrnBbizUuDPtZElD9gESOicGXo26+7WS7bEMFU+4HlC0vexezyhA/cJF1bHXjkD9IMfH9kVPxx6C+3GOk2EPrSH/1sHB+BhZcPHNXzA81o8QQizKkK6IV0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498350; c=relaxed/simple; bh=g4KwGLGmucKVwP9uiyarAH0WP7NFZHFX8OvuaqU0Chs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=D7TR7+JmiPAkGZlNpOV3OP5k9V1NBK8oFe1lNhNXHT/+/dWbLVDeBNobqJoVESwZ9cFK0f5HvfxON+fcC6Vmt+s5GeIAIdCfapZe+F3gi99EtYQTxWSWciTG9NdkFj10tLFJND8XiklTxNoLEKvIAlekIq0QYUHL/n423WQN7+A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=neRzM5px; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="neRzM5px" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498349; x=1777034349; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=g4KwGLGmucKVwP9uiyarAH0WP7NFZHFX8OvuaqU0Chs=; b=neRzM5pxu2K29vMwF6LtKxTwr2Cce+LIwKPA53fuHKUCJvl8WqjJJ+uU /FzuKTVpWPyO1A68gbmHSHyd3+Xs1qSkRK9zTdcFAygj0rM8RHHcn31kW ThSmiQbaBMZrsCZqmMDIbWXyWH6DYgaAmfYdLmQm+SZSdc5Plt/pDvkAy 9SaKV5mLTsL4eP+ZoMaSeKuOSpCYn+Glyr4TGie36DZS1oZ7Prz5Dink2 Sfqog+1c3qtu+fsvmSaKYHgCZtGDGbp+sXAkXfad6SnPawbmRkL0bS+UL v4fq/NYMYDhHuFBgp3hR9vRE6K04T0viLGQqdPxAF0cVvHLjZRGlJrkf9 Q==; X-CSE-ConnectionGUID: DlHOk6HFT/qBojLh5yMsyg== X-CSE-MsgGUID: 85dBIJ0qRWuxS+wxm1kSNA== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302451" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302451" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:08 -0700 X-CSE-ConnectionGUID: keC/Dp2RRyG9bovMpUSQ7A== X-CSE-MsgGUID: um29TW93TUiFnsOTrdwc7Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137469" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:07 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Emmanuel Grumbach Subject: [PATCH wireless-next 13/14] wifi: iwlwifi: pcie: make sure to lock rxq->read Date: Thu, 24 Apr 2025 15:38:30 +0300 Message-Id: <20250424153620.73725f207aaa.I1a3e4b6c5fd370e029fdacfcdc9ee335788afa98@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited rxq->read is accessed without the rxq->lock in a few places, Make sure to have the lock there. Signed-off-by: Miri Korenblit Reviewed-by: Emmanuel Grumbach Tested-by: Emmanuel Grumbach --- drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c index c917ed4c19bc..b2258c13f7f7 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c @@ -2934,6 +2934,8 @@ static ssize_t iwl_dbgfs_rx_queue_read(struct file *file, for (i = 0; i < trans->num_rx_queues && pos < bufsz; i++) { struct iwl_rxq *rxq = &trans_pcie->rxq[i]; + spin_lock_bh(&rxq->lock); + pos += scnprintf(buf + pos, bufsz - pos, "queue#: %2d\n", i); pos += scnprintf(buf + pos, bufsz - pos, "\tread: %u\n", @@ -2954,6 +2956,7 @@ static ssize_t iwl_dbgfs_rx_queue_read(struct file *file, pos += scnprintf(buf + pos, bufsz - pos, "\tclosed_rb_num: Not Allocated\n"); } + spin_unlock_bh(&rxq->lock); } ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos); kfree(buf); @@ -3654,8 +3657,11 @@ iwl_trans_pcie_dump_data(struct iwl_trans *trans, u32 dump_mask, /* Dump RBs is supported only for pre-9000 devices (1 queue) */ struct iwl_rxq *rxq = &trans_pcie->rxq[0]; /* RBs */ + spin_lock_bh(&rxq->lock); num_rbs = iwl_get_closed_rb_stts(trans, rxq); num_rbs = (num_rbs - rxq->read) & RX_QUEUE_MASK; + spin_unlock_bh(&rxq->lock); + len += num_rbs * (sizeof(*data) + sizeof(struct iwl_fw_error_dump_rb) + (PAGE_SIZE << trans_pcie->rx_page_order)); From patchwork Thu Apr 24 12:38:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 884316 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E202827BF6F for ; Thu, 24 Apr 2025 12:39:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498352; cv=none; b=F14Pz/6JHGuxwAnKxsJjmTVUfYP8GN1vBMw1+LvUDB+aOCGdooMtteO34k1pkfH9ThljtOEKUCJ9HYp7klhANsclEyFMit9Ch/cuXuGNYzkCWVCKXx0wKL+MZuUGlTFWq05MmGrJWe9/QACJmSsMFqKTewxcgvpNe/3f6ZmTxP8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745498352; c=relaxed/simple; bh=t84Gfum5Nl0/WaNofZaEgBJYQ3ccckl4yMEnsOYlehg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=stF9do/YFJaxTF39w3EWMcnIhydBB6YXTGLteG3uUh7n7z8lruFcnW8TugKl0nd+HZGBmAYq1Xvcaf5ZYB6lIYz8yh3TkuXPi75Sid8jaFPIfY4UXBk2clnvHLFD9omIjohmXoHBib31Z0Awjpb1Ei+h3VtfxzhX786rxCMEkR8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=k8v8IQwp; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="k8v8IQwp" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745498351; x=1777034351; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=t84Gfum5Nl0/WaNofZaEgBJYQ3ccckl4yMEnsOYlehg=; b=k8v8IQwpZkJUt3kouZ/sXosKQ6dod9jLeAFIdWy1aDEuMCSpvkEiVCgQ HiSLjdO6SPaqXEN3Tv8erRITtN3lRWKb2twcFxLz6NvyC9MQv5hOjQ16c hU7G8OSK65zzIt2BeBBYoiYTgHknfqMA9rcVtgWC5T1m71Cb/Ie/ObYnQ e0kCZrQLKsb5JS3+5XLyEeJfkubPyNrWmDDDgs1hiEBNr2YT3luM604Cr /agBEuaER4zz2koiT0n4SxAIOrmjJpf0s5VvFoTuCY71o+eUueim4EcHC TjuoezXu0fgugoL66nZ0wccXJ2cUd6O0gYKYKpQsHBe9DALrAdk96z+Nc w==; X-CSE-ConnectionGUID: 5ax4olV5T+SiPVmsjdjJPw== X-CSE-MsgGUID: 11ayEwtXSg6T8Xsozoh7Kw== X-IronPort-AV: E=McAfee;i="6700,10204,11413"; a="47302458" X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="47302458" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:10 -0700 X-CSE-ConnectionGUID: dQbI5POrQjed9ZBTqWpggg== X-CSE-MsgGUID: 6oOh7n4iSbSRh/V8Hi8EIA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,236,1739865600"; d="scan'208";a="133137473" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 05:39:08 -0700 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Pagadala Yesu Anjaneyulu , Emmanuel Grumbach Subject: [PATCH wireless-next 14/14] wifi: iwlwifi: move phy_filters to fw_runtime Date: Thu, 24 Apr 2025 15:38:31 +0300 Message-Id: <20250424153620.357baa65950a.I01d22328b4c381d4c0064ad9bd36750911157f90@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> References: <20250424123831.3524359-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited phy_filters holds the values as read from WFPC BIOS table. Since also iwlmld is going to need it, move it to fw_runtime. Signed-off-by: Miri Korenblit Reviewed-by: Pagadala Yesu Anjaneyulu Reviewed-by: Emmanuel Grumbach --- drivers/net/wireless/intel/iwlwifi/fw/runtime.h | 6 +++++- drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 4 ++-- drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 4 ---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/fw/runtime.h b/drivers/net/wireless/intel/iwlwifi/fw/runtime.h index a9e6bba2419e..5753d95986cd 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/runtime.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/runtime.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* * Copyright (C) 2017 Intel Deutschland GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #ifndef __iwl_fw_runtime_h__ #define __iwl_fw_runtime_h__ @@ -110,6 +110,7 @@ struct iwl_txf_iter_data { * Only read the UEFI variables if locked. * @sar_profiles: sar profiles as read from WRDS/EWRD BIOS tables * @geo_profiles: geographic profiles as read from WGDS BIOS table + * @phy_filters: specific phy filters as read from WPFC BIOS table */ struct iwl_fw_runtime { struct iwl_trans *trans; @@ -184,6 +185,9 @@ struct iwl_fw_runtime { struct iwl_mcc_allowed_ap_type_cmd uats_table; bool uats_valid; u8 uefi_tables_lock_status; +#ifdef CONFIG_ACPI + struct iwl_phy_specific_cfg phy_filters; +#endif }; void iwl_fw_runtime_init(struct iwl_fw_runtime *fwrt, struct iwl_trans *trans, diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c index f67348acd5f0..94b08bb6fd4f 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c @@ -473,7 +473,7 @@ static void iwl_mvm_phy_filter_init(struct iwl_mvm *mvm, struct iwl_phy_specific_cfg *phy_filters) { #ifdef CONFIG_ACPI - *phy_filters = mvm->phy_filters; + *phy_filters = mvm->fwrt.phy_filters; #endif /* CONFIG_ACPI */ } @@ -1265,7 +1265,7 @@ void iwl_mvm_get_bios_tables(struct iwl_mvm *mvm) } } - iwl_acpi_get_phy_filters(&mvm->fwrt, &mvm->phy_filters); + iwl_acpi_get_phy_filters(&mvm->fwrt, &mvm->fwrt.phy_filters); if (iwl_bios_get_eckv(&mvm->fwrt, &mvm->ext_clock_valid)) IWL_DEBUG_RADIO(mvm, "ECKV table doesn't exist in BIOS\n"); diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h index f6391c7a3e29..1e3639fa6b27 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h @@ -1348,10 +1348,6 @@ struct iwl_mvm { __le16 cur_aid; u8 cur_bssid[ETH_ALEN]; -#ifdef CONFIG_ACPI - struct iwl_phy_specific_cfg phy_filters; -#endif - /* report rx timestamp in ptp clock time */ bool rx_ts_ptp;