From patchwork Sun Mar 9 05:36:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872130 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (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 2300354F8C for ; Sun, 9 Mar 2025 05:37:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498630; cv=none; b=nWemOm2wZkHtON/RWx95LuW9UD0eKESDunQk6fmNkDWieb43mVfyysJliEocCJO2HBQe8wLYLRiYt1EQoUh5INqnZXvVoifOuxDOUyL2dQn5Nd4PhJCM1+0jtp/d3Gzw8uuxZLKc9404r1GMMijXBZgpYZZZ/RXN2DZ+3JGAYxg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498630; c=relaxed/simple; bh=qiu6D3O5Fs5+np7jyjiuQi7ZEmGDSSmwq9OLd1BtLUI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jUn0LV/+1ce169R5Hf2Z5K+65U6rB9JS1as+1ajXbCC8TlKBrPZfzEb2nFseif4HPd97pI7PwCMAaQeXk3FOPOfweSUdMxeaPGXfkU9toIy9sribuGPLN0ZNxkOziGup4HPCp1BNvRPYSgHMz0L+zG4s+J4rQpqp+vW638MQCx8= 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=XPgowFt9; arc=none smtp.client-ip=192.198.163.19 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="XPgowFt9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741498629; x=1773034629; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qiu6D3O5Fs5+np7jyjiuQi7ZEmGDSSmwq9OLd1BtLUI=; b=XPgowFt9SU9qBztNHlUZh0s5KJU6uIfGTKYYwi3c5iRYJA4xrTNIr1Cq Txr5HCtgRd9mLhizrE1pc5WWktiwKQ0aUiW1jy9eZ6BC1SjZPBtCGDBU7 tzWF7hGKfA2hFYnJo43QLViRDbqbNvtUR3+g7+Sd2Nah2uuLa/bIJQ5rL R8SqfU7YLQzq4SDg9S2R0g+O1OWBI9EAxKNKQOIpEL7NnTTo2z/Wd7z8N SpsHGE+i4JR0RHrSVtDT+t/doxZ0zLomZ0/M8isbNoqRJGuKCMqH5vZH1 MrMJZqFqxcWpCvytR/Rxhuq/+e0KX9AnWrGHd9GkYUJZLqNRNvAtmO0gL Q==; X-CSE-ConnectionGUID: TqURk9kvSeG46Kd0HkIgeQ== X-CSE-MsgGUID: GJQVbZ2jRW+aSxc8ht6BlQ== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="41671684" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="41671684" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:09 -0800 X-CSE-ConnectionGUID: eBCY9O6SS1isUpwm6tzIcg== X-CSE-MsgGUID: oZujZwd0SG20FTMYLCny+Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="150470594" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:08 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org Subject: [PATCH v2 wireless-next 02/15] wifi: iwlwifi: mld: fix SMPS W/A Date: Sun, 9 Mar 2025 07:36:40 +0200 Message-Id: <20250309073442.1cdeb78b19ba.I58fe02c062524029071b04b093a1b09c5e46f4ef@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309053653.2697525-1-miriam.rachel.korenblit@intel.com> References: <20250309053653.2697525-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 If the user disables power save of a vif that didn't have it enabled (for example before association), mac80211 will not notify the driver with BSS_CHANGED_PS. This will cause the driver to not update the device-level power save to disabled. Fix this by checking the vif's power save status upon authorization, and stop considering the vif's power save status on disassociation. Signed-off-by: Miri Korenblit --- .../net/wireless/intel/iwlwifi/mld/iface.h | 2 ++ .../net/wireless/intel/iwlwifi/mld/mac80211.c | 25 +++++++++++++++---- .../net/wireless/intel/iwlwifi/mld/power.c | 3 ++- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/iface.h b/drivers/net/wireless/intel/iwlwifi/mld/iface.h index 2c928113f680..57910660ed18 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/iface.h +++ b/drivers/net/wireless/intel/iwlwifi/mld/iface.h @@ -134,6 +134,7 @@ struct iwl_mld_emlsr { * @beacon_inject_active: indicates an active debugfs beacon ie injection * @low_latency_causes: bit flags, indicating the causes for low-latency, * see @iwl_mld_low_latency_cause. + * @ps_disabled: indicates that PS is disabled for this interface * @mld: pointer to the mld structure. * @deflink: default link data, for use in non-MLO, * @link: reference to link data for each valid link, for use in MLO. @@ -159,6 +160,7 @@ struct iwl_mld_vif { bool beacon_inject_active; #endif u8 low_latency_causes; + bool ps_disabled; ); /* And here fields that survive a fw restart */ struct iwl_mld *mld; diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c index d73bd0179f7d..ba149581e25d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c @@ -1262,6 +1262,23 @@ iwl_mld_mac80211_link_info_changed(struct ieee80211_hw *hw, iwl_mld_set_tx_power(mld, link_conf, link_conf->txpower); } +static void +iwl_mld_smps_wa(struct iwl_mld *mld, struct ieee80211_vif *vif, bool enable) +{ + struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); + + /* Send the device-level power commands since the + * firmware checks the POWER_TABLE_CMD's POWER_SAVE_EN bit to + * determine SMPS mode. + */ + if (mld_vif->ps_disabled == !enable) + return; + + mld_vif->ps_disabled = !enable; + + iwl_mld_update_device_power(mld, false); +} + static void iwl_mld_mac80211_vif_cfg_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, @@ -1295,11 +1312,7 @@ void iwl_mld_mac80211_vif_cfg_changed(struct ieee80211_hw *hw, } if (changes & BSS_CHANGED_PS) { - /* Send both device-level and MAC-level power commands since the - * firmware checks the POWER_TABLE_CMD's POWER_SAVE_EN bit to - * determine SMPS mode. - */ - iwl_mld_update_device_power(mld, false); + iwl_mld_smps_wa(mld, vif, vif->cfg.ps); iwl_mld_update_mac_power(mld, vif, false); } @@ -1716,6 +1729,7 @@ static int iwl_mld_move_sta_state_up(struct iwl_mld *mld, FW_CTXT_ACTION_MODIFY); if (ret) return ret; + iwl_mld_smps_wa(mld, vif, vif->cfg.ps); } /* MFP is set by default before the station is authorized. @@ -1758,6 +1772,7 @@ static int iwl_mld_move_sta_state_down(struct iwl_mld *mld, &mld_vif->emlsr.check_tpt_wk); iwl_mld_reset_cca_40mhz_workaround(mld, vif); + iwl_mld_smps_wa(mld, vif, true); } /* once we move into assoc state, need to update the FW to diff --git a/drivers/net/wireless/intel/iwlwifi/mld/power.c b/drivers/net/wireless/intel/iwlwifi/mld/power.c index ed7c0319f239..2f16c174b57e 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/power.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/power.c @@ -15,11 +15,12 @@ static void iwl_mld_vif_ps_iterator(void *data, u8 *mac, struct ieee80211_vif *vif) { bool *ps_enable = (bool *)data; + struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); if (vif->type != NL80211_IFTYPE_STATION) return; - *ps_enable &= vif->cfg.ps; + *ps_enable &= !mld_vif->ps_disabled; } int iwl_mld_update_device_power(struct iwl_mld *mld, bool d3) From patchwork Sun Mar 9 05:36:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872129 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (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 59AD554F8C for ; Sun, 9 Mar 2025 05:37:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498633; cv=none; b=ISUdn2ObYzo8981DhjxfboYGNFkl9QaUZVYyhDgGDJteZJYfDk4oHKi/KYTWA4BR9YeLZ9xdF86mUV1lEnuq6ftTPxFvyfv/CtoqY+kin3aMbRQqCV03krG3zoEv4ugk1Pm9UmcE0vGQbhUNgJrzbubKLf6izk2hBwSE6LdRUNk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498633; c=relaxed/simple; bh=ppb6Tdxwu9zik7hUyKIif6LlLEkF6pu6cGPBD1TsbjY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oyhhStQnsAQrnVXYoCDq66FqVzZnVQdS1mLlTqcpnFv4iO4Lb3UEStI7Kpuzu0AmgJVcJdYpQZWhlVsYnuWRApWmYCFscaEpqush38SJhGsVgovg95Fj6krH0gFaP7d5n/SfwI9KmzYECrRZjQTGrIuHtMm9W4FiaFVNFfsVK/c= 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=MWcnN5fH; arc=none smtp.client-ip=192.198.163.19 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="MWcnN5fH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741498632; x=1773034632; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ppb6Tdxwu9zik7hUyKIif6LlLEkF6pu6cGPBD1TsbjY=; b=MWcnN5fH4kQ/N38yFpkqIGmeNCiuv03HtHKIA8aSDT8grjqunJ2/Ucw1 ejl9lQDwHbJvn75u5uNapmwQntfxUEufmSS+nsJG7uzHaYM85XVL7iplY UzyqPXgXYXuYYfS5CLLhti/VOev8hTAlQvoFAF+7bhDc6DmQTogdIoFI1 8sY8YEK3NuPKVHJaxLL5cB9HgcqVpIvM2gWjD91uOWTfouSt44e07Or6f MAiuEsGDw5z1zlu3RdQouOaEmquwEqSQjUI/prLj8oIqjW1MM3SgVzh8n AsOdwajpiR0Et5eXCqtVNu1iQtz862LlnHI/EiWYmcyk19fIZmVfYll9m w==; X-CSE-ConnectionGUID: k5hxyNETS4yuiX98fYRL3A== X-CSE-MsgGUID: L6oBeMvBQNGG5cq7h/ybmw== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="41671689" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="41671689" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:12 -0800 X-CSE-ConnectionGUID: 4JSPXTIcQvu4pU+qFfKfqA== X-CSE-MsgGUID: SAWtu8vFRAKclxX5+vBBQg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="150470613" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:10 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Emmanuel Grumbach Subject: [PATCH v2 wireless-next 04/15] wifi: iwlwifi: mld: refactor iwl_mld_valid_emlsr_pair Date: Sun, 9 Mar 2025 07:36:42 +0200 Message-Id: <20250309073442.0a3b2f88fbbf.I0152bc39e828488451e85135feb044ce1f7a85d3@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309053653.2697525-1-miriam.rachel.korenblit@intel.com> References: <20250309053653.2697525-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 - Change reasons enum to a bitmask and rename it - Don't use 'else if' so all reasons will be set in the reasons bitmask Signed-off-by: Miri Korenblit Reviewed-by: Emmanuel Grumbach --- drivers/net/wireless/intel/iwlwifi/mld/mlo.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c index b68092be9aed..bbaf9ad0e9eb 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mlo.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mlo.c @@ -748,23 +748,23 @@ iwl_mld_valid_emlsr_pair(struct ieee80211_vif *vif, { struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); struct iwl_mld *mld = mld_vif->mld; - enum iwl_mld_emlsr_exit ret = 0; + u32 reason_mask = 0; /* Per-link considerations */ if (iwl_mld_emlsr_disallowed_with_link(mld, vif, a, true) || iwl_mld_emlsr_disallowed_with_link(mld, vif, b, false)) return false; - if (a->chandef->chan->band == b->chandef->chan->band) { - ret |= IWL_MLD_EMLSR_EXIT_EQUAL_BAND; - } else if (a->chandef->width != b->chandef->width) { + if (a->chandef->chan->band == b->chandef->chan->band) + reason_mask |= IWL_MLD_EMLSR_EXIT_EQUAL_BAND; + if (a->chandef->width != b->chandef->width) { /* TODO: task=EMLSR task=statistics * replace BANDWIDTH exit reason with channel load criteria */ - ret |= IWL_MLD_EMLSR_EXIT_BANDWIDTH; + reason_mask |= IWL_MLD_EMLSR_EXIT_BANDWIDTH; } - if (ret) { + if (reason_mask) { IWL_DEBUG_INFO(mld, "Links %d and %d are not a valid pair for EMLSR\n", a->link_id, b->link_id); @@ -772,7 +772,7 @@ iwl_mld_valid_emlsr_pair(struct ieee80211_vif *vif, "Links bandwidth are: %d and %d\n", nl80211_chan_width_to_mhz(a->chandef->width), nl80211_chan_width_to_mhz(b->chandef->width)); - iwl_mld_print_emlsr_exit(mld, ret); + iwl_mld_print_emlsr_exit(mld, reason_mask); return false; } From patchwork Sun Mar 9 05:36:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872128 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (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 56CD154F8C for ; Sun, 9 Mar 2025 05:37:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498637; cv=none; b=L33mtL3tQnU1Y1YpmdKe9mEraJofntLd28I9hmuUaZaLUZYUnDZa5eXuNrQejqaSzJQyd6Pbzi7AnG9iFoP6qP+6kBP1ype4Fp+5uizAsXUI7wWU96w0wrGb80LMsDBRYhxx4gdkGG1b+omx+IpYwjNG4REG6npZUgU2NP8W5Ik= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498637; c=relaxed/simple; bh=EdRmZujHb9fs1v2CBTyju/7u68tzpZTsjGWYGTGjEB0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KUm5xMSLy2/MyUMXGItNrnA2Q7HBdsWHZ13blzFjud2GbtmMs+yfH65drvt3TJoDDX8MhBuboUgXRgDlyTUnySgP4PxwixpMKOgXOOBJEYrc9GSEaCLGiZ9bIq7GmDyzK1ZQP1ywBih7F4ygWrlgXblBngxi8Bu6IV2l3DZ2I24= 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=EUg3i9WG; arc=none smtp.client-ip=192.198.163.19 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="EUg3i9WG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741498635; x=1773034635; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=EdRmZujHb9fs1v2CBTyju/7u68tzpZTsjGWYGTGjEB0=; b=EUg3i9WGatXbgsy7V9/CdeLEZf3GT4TPVExD9DEbDFmSCY6eVPIorQ7R WkZukhiM1M2SHBA+SkN96KvDxR0PwmimXHpd8qYZm4E0hRmhqqUF4F/NT 1xFdagJQ1zEgc8xJ1H3KBgxnaoI7M2Bt428ERkOC7pnjlzgLqyS1a/3Yk kLhqUErF/j48K9OafTh0PpdVcHdKMGX7ePcTWdI6LeGTXUnS/wpSUy52q ntvqlSUaft/2TsdgJufvDqrpEGaUFE251WnLxXX4VzTZ1ei2sdEug01pe 5GYaEUaUfp2ZhB1wM8QR9oQ4QJOjCJGV1WKAmHGCMGIxyhMdCwT4lvnaW g==; X-CSE-ConnectionGUID: eT9+FL9BRIirPRqTG2Rzlw== X-CSE-MsgGUID: 3OWMAFPMTnmTWezPNt80rg== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="41671693" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="41671693" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:15 -0800 X-CSE-ConnectionGUID: HfjgIqWTQ46PD+IDvBTYvQ== X-CSE-MsgGUID: Z3h+a2FbSNqHxqGXDhN7SQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="150470623" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:14 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH v2 wireless-next 06/15] wifi: iwlwifi: mld: initialize regulatory early Date: Sun, 9 Mar 2025 07:36:44 +0200 Message-Id: <20250309073442.10ab8fed94e9.I7c8dee3d14c7427a56882739f82546c6492f3b10@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309053653.2697525-1-miriam.rachel.korenblit@intel.com> References: <20250309053653.2697525-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 Since iwlmld claims wiphys to be self-managed, it needs to have a regdomain registered before the wiphy is registered to avoid issues when trying to get the regdomain, e.g. via "iw phy phy0 reg get". Move the initialization early, on every FW start not just when starting to really operate it. This also requires the self-managed flag to be set early. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/fw.c | 8 ++++---- .../net/wireless/intel/iwlwifi/mld/mac80211.c | 9 --------- drivers/net/wireless/intel/iwlwifi/mld/mld.c | 17 +++++++++++++++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/fw.c b/drivers/net/wireless/intel/iwlwifi/mld/fw.c index ec93af362cfc..9c1dce0d5979 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/fw.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/fw.c @@ -339,6 +339,10 @@ int iwl_mld_load_fw(struct iwl_mld *mld) if (ret) return ret; + ret = iwl_mld_init_mcc(mld); + if (ret) + return ret; + mld->fw_status.running = true; return 0; @@ -481,10 +485,6 @@ static int iwl_mld_config_fw(struct iwl_mld *mld) if (ret) return ret; - ret = iwl_mld_init_mcc(mld); - if (ret) - return ret; - if (mld->fw_status.in_hw_restart) { iwl_mld_send_recovery_cmd(mld, ERROR_RECOVERY_UPDATE_DB); iwl_mld_time_sync_fw_config(mld); diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c index b01a41f9b013..27ef41d69479 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mac80211.c @@ -164,14 +164,6 @@ static void iwl_mld_hw_set_security(struct iwl_mld *mld) NL80211_EXT_FEATURE_BEACON_PROTECTION); } -static void iwl_mld_hw_set_regulatory(struct iwl_mld *mld) -{ - struct wiphy *wiphy = mld->wiphy; - - wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED; - wiphy->regulatory_flags |= REGULATORY_ENABLE_RELAX_NO_IR; -} - static void iwl_mld_hw_set_antennas(struct iwl_mld *mld) { struct wiphy *wiphy = mld->wiphy; @@ -415,7 +407,6 @@ int iwl_mld_register_hw(struct iwl_mld *mld) iwl_mld_hw_set_addresses(mld); iwl_mld_hw_set_channels(mld); iwl_mld_hw_set_security(mld); - iwl_mld_hw_set_regulatory(mld); iwl_mld_hw_set_pm(mld); iwl_mld_hw_set_antennas(mld); iwl_mac_hw_set_radiotap(mld); diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mld.c b/drivers/net/wireless/intel/iwlwifi/mld/mld.c index adc3d23aa019..d4a99ae64074 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mld.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/mld.c @@ -2,7 +2,7 @@ /* * Copyright (C) 2024-2025 Intel Corporation */ - +#include #include #include "fw/api/rx.h" @@ -50,6 +50,14 @@ static void __exit iwl_mld_exit(void) } module_exit(iwl_mld_exit); +static void iwl_mld_hw_set_regulatory(struct iwl_mld *mld) +{ + struct wiphy *wiphy = mld->wiphy; + + wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED; + wiphy->regulatory_flags |= REGULATORY_ENABLE_RELAX_NO_IR; +} + VISIBLE_IF_IWLWIFI_KUNIT void iwl_construct_mld(struct iwl_mld *mld, struct iwl_trans *trans, const struct iwl_cfg *cfg, const struct iwl_fw *fw, @@ -67,7 +75,6 @@ void iwl_construct_mld(struct iwl_mld *mld, struct iwl_trans *trans, /* Setup async RX handling */ spin_lock_init(&mld->async_handlers_lock); - INIT_LIST_HEAD(&mld->async_handlers_list); wiphy_work_init(&mld->async_handlers_wk, iwl_mld_async_handlers_wk); @@ -387,9 +394,13 @@ iwl_op_mode_mld_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, iwl_bios_setup_step(trans, &mld->fwrt); mld->bios_enable_puncturing = iwl_uefi_get_puncturing(&mld->fwrt); + iwl_mld_hw_set_regulatory(mld); + /* Configure transport layer with the opmode specific params */ iwl_mld_configure_trans(op_mode); + /* needed for regulatory init */ + rtnl_lock(); /* Needed for sending commands */ wiphy_lock(mld->wiphy); @@ -401,6 +412,7 @@ iwl_op_mode_mld_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, if (ret) { wiphy_unlock(mld->wiphy); + rtnl_unlock(); iwl_fw_flush_dumps(&mld->fwrt); goto free_hw; } @@ -408,6 +420,7 @@ iwl_op_mode_mld_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, iwl_mld_stop_fw(mld); wiphy_unlock(mld->wiphy); + rtnl_unlock(); ret = iwl_mld_leds_init(mld); if (ret) From patchwork Sun Mar 9 05:36:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872127 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (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 309E615E5DC for ; Sun, 9 Mar 2025 05:37:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498640; cv=none; b=GxNey++CUNikOMqVbqujzOMTPYZVBYm4klwJGFwN/PQs9Uj9wdjYG1xneAW9Ha5LW+n3Kfl04X/ZEHaTkO6zz/yL7GlJlNtsVOwRZ+3w5RoSOhZkz8QQFN+PohyBAXkebl5AREbSSs7NfM/COxFdLs6mSaSgKkTTx4x3PkLrC+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498640; c=relaxed/simple; bh=dIwur6ttrR6eDMU6ax+fbSD92MTmtuIeYgs5PrhU/Co=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cM6mXp7HVKE/QzCQdzcsaeYvWKfoXfcVtifZyoeS5WuwaIYMJCcndkBgplzh5+JHydNPiGMwPyyK4J2TaYoqkr4AKYTwfFXhYqK3UiVd/AgrvDhvAcOwuM0Zre/WaVCtPCV2LSqwbzLlAlHr9AvEs38cn1uOtVNxofkftDxxprU= 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=B4Dr8jqi; arc=none smtp.client-ip=192.198.163.19 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="B4Dr8jqi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741498639; x=1773034639; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dIwur6ttrR6eDMU6ax+fbSD92MTmtuIeYgs5PrhU/Co=; b=B4Dr8jqiZiq7boGFVVhTtQnCthBC2NzuHrsNswIv2MHogNfwPVxRaqvT hWjhwskE90uUrvnqurAhThH20eHJ6TPNwHs/nJrhMsfUC2T7jYjSB1/Ve 4xz5CYdLJ2op+uieJ3izYHwrAAI2UYt9mf8CRuTYsfplaDDIy53xpDAZZ 1BDkQgHfFx3uIqudqu4zj3obxPJhyikEAJ/bBUxQim5k2cGTZ2UtzN7Z3 q7Sn3YsRuEu3cSkeL79DmAthQ2DXmJYNbIU6xQRrimSRBK/YJ/2hn0Oqz x87lKbKU1OX2CIC67t48DzXly8kePHJ5ErsQC22wtpYA9J1kvMoPiGIh5 w==; X-CSE-ConnectionGUID: Oppo40J8Q4aGRZI6j2on7w== X-CSE-MsgGUID: QtBz8ap7S0qyWJVeICtg+w== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="41671698" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="41671698" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:18 -0800 X-CSE-ConnectionGUID: srdevqiPTU2mU8h1gIrmxA== X-CSE-MsgGUID: ZpZibghNR3yNTShZlP4SAA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="150470638" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:17 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH v2 wireless-next 08/15] wifi: iwlwifi: mld: fix OMI time protection logic Date: Sun, 9 Mar 2025 07:36:46 +0200 Message-Id: <20250309073442.58efb4c91655.Id596fcda2fb28f5945548d780be9ff90aee76b7e@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309053653.2697525-1-miriam.rachel.korenblit@intel.com> References: <20250309053653.2697525-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're allowed to enter OMI only 5 seconds after the last exit, so the logic needs to be inverted. Fix that. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/link.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/link.c b/drivers/net/wireless/intel/iwlwifi/mld/link.c index 64ebafc35c9b..f6d482817f1b 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/link.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/link.c @@ -760,8 +760,8 @@ void iwl_mld_check_omi_bw_reduction(struct iwl_mld *mld) return; } - if (time_is_before_jiffies(mld_link->rx_omi.exit_ts + - msecs_to_jiffies(IWL_MLD_OMI_EXIT_PROTECTION))) + if (time_is_after_jiffies(mld_link->rx_omi.exit_ts + + msecs_to_jiffies(IWL_MLD_OMI_EXIT_PROTECTION))) return; /* reduce bandwidth to 80 MHz to save power */ From patchwork Sun Mar 9 05:36:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872126 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (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 C597C14AD0D for ; Sun, 9 Mar 2025 05:37:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498643; cv=none; b=LcMR01AIoyFKEN9YrRzLPzjRGGHbuntVS2M14965yUpO3IFNCZbqv1OFf5kaSGQQOoNgJZqmwzXwc6YqnHqjOc8BxZE6SATj2sUhwasT6Dm29C6bzsnpLHs2uk713S1ilZE4VQ5GhwU0PP+oc996ZMd6OIj4f7CFIzFypboUhWg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498643; c=relaxed/simple; bh=LpsqBxERu74ubq+6NqMBznrCDAtmWg+meNeweARk628=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yuv9/KgQapanWD+BPqAxahQmKgGJoAWZ/EcN8871wYa+wqYoA1Y04VasCrP3KR+5tRBR/9mjJb7eVqhzEh9GlylXAQDWhWLPudsu/JtbAbibmk0v57gw1HRz6ESdB2AdFiq1TWziIxj8FZ4nv6AMTwsqxpb48s1cyy91Xifh0Dw= 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=ETzIDsW0; arc=none smtp.client-ip=192.198.163.19 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="ETzIDsW0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741498642; x=1773034642; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LpsqBxERu74ubq+6NqMBznrCDAtmWg+meNeweARk628=; b=ETzIDsW0Xr1DLvypMGSpGGxbRxBbDN647pB8FOKCav1X6i4f5Cp0pPbr fkfXTqXicTDPqcQhixOCW3TWK2WRf3Ke+yLlz1deKAYGdlNRp/RV4n4v2 YU/WuxMZVNIchZYRpLP2i3Gmi0aZiz7L8nPPVHDV/MLp+0h3JBGdBaeAC xEMGQTbjCaARGK41GR7snxKKC1FFuz+CQPi3foo7LT/sQugdatAVGxeDk oKZJd4anD2DkSWIrZPogCw6WmQ3i3tlu5Prj7UFuQbq9+fPF8aLQc0u5w 1hbJUTvLalKbv8jLt1K9VNHhicsm1KJ47nTX0WaED3pDcyDyJruJwZCYW w==; X-CSE-ConnectionGUID: gEgESp+vTBmJIIBdls/u4Q== X-CSE-MsgGUID: ukxhY6SISn6yRhF8+zwafw== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="41671703" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="41671703" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:22 -0800 X-CSE-ConnectionGUID: PjREsnvaTYuZyReihO5ygQ== X-CSE-MsgGUID: n5T+3VOrTfKkbheCuDUN8Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="150470647" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:20 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Avraham Stern Subject: [PATCH v2 wireless-next 10/15] wifi: iwlwifi: mld: move the ftm initiator data to ftm-initiator.h Date: Sun, 9 Mar 2025 07:36:48 +0200 Message-Id: <20250309073442.92830fd553ec.Icbbd0eba34c9ba318801074f7705f6d1e5af5482@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309053653.2697525-1-miriam.rachel.korenblit@intel.com> References: <20250309053653.2697525-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: Avraham Stern Move the FTM initiator data to the relevant header file and document its fields. Signed-off-by: Avraham Stern Signed-off-by: Miri Korenblit --- .../net/wireless/intel/iwlwifi/mld/ftm-initiator.h | 14 ++++++++++++++ drivers/net/wireless/intel/iwlwifi/mld/mld.h | 7 ++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/ftm-initiator.h b/drivers/net/wireless/intel/iwlwifi/mld/ftm-initiator.h index e98fac34beba..3fab25a52508 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/ftm-initiator.h +++ b/drivers/net/wireless/intel/iwlwifi/mld/ftm-initiator.h @@ -5,6 +5,20 @@ #ifndef __iwl_mld_ftm_initiator_h__ #define __iwl_mld_ftm_initiator_h__ +/** + * struct ftm_initiator_data - FTM initiator data + * + * @req: a pointer to cfg80211 FTM request + * @req_wdev: a pointer to the wdev that requested the current FTM request + * @responses: the number of responses received for the current FTM session. + * Used for tracking the burst index in a periodic request. + */ +struct ftm_initiator_data { + struct cfg80211_pmsr_request *req; + struct wireless_dev *req_wdev; + int responses[IWL_TOF_MAX_APS]; +}; + int iwl_mld_ftm_start(struct iwl_mld *mld, struct ieee80211_vif *vif, struct cfg80211_pmsr_request *req); diff --git a/drivers/net/wireless/intel/iwlwifi/mld/mld.h b/drivers/net/wireless/intel/iwlwifi/mld/mld.h index 1ab98ba42c76..38f1d1bc5a24 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/mld.h +++ b/drivers/net/wireless/intel/iwlwifi/mld/mld.h @@ -34,6 +34,7 @@ #include "constants.h" #include "ptp.h" #include "time_sync.h" +#include "ftm-initiator.h" /** * DOC: Introduction @@ -277,11 +278,7 @@ struct iwl_mld { struct iwl_mld_time_sync_data __rcu *time_sync; - struct { - struct cfg80211_pmsr_request *req; - struct wireless_dev *req_wdev; - int responses[IWL_TOF_MAX_APS]; - } ftm_initiator; + struct ftm_initiator_data ftm_initiator; }; /* memset the part of the struct that requires cleanup on restart */ From patchwork Sun Mar 9 05:36:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872125 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (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 4A4D914AD0D for ; Sun, 9 Mar 2025 05:37:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498646; cv=none; b=ak3wqS6BctD2fY+XFG0UKXI+XwbOnikSaFbvHHNrpNuysvk6+iw8b0fMo9+QYlGxmLF+i79LlY1XEpl0G8lTVLHQJWh/rgzmN9IRBbhddkD5UU25sGvJ0P4GCPjwiEAOHnaxfJe1YIvP6JtvHAAVtAFpU0OTH6TpsvO5cgjxJjM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498646; c=relaxed/simple; bh=MgcSWvlqTSJCFqt7sKNDMj1UL66ZK5H+l2fI2n5tHi0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SKOzuRZ+kktTCSx1DKFSdZ/SoATl/CdvalZ9t1EJgzFACKsZFyV892QsCS84nyvK7ggZQ3vHHcuE9JuhKkROrijB/JtoYdKxlsiBdnExB4z01bn/w3pik6BEE+qnBGqeT+XXKu5wFpEa/sOxHRzC7mS1iPMYoYnI7cLtulkpwF8= 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=XzbLNuoj; arc=none smtp.client-ip=192.198.163.19 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="XzbLNuoj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741498645; x=1773034645; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MgcSWvlqTSJCFqt7sKNDMj1UL66ZK5H+l2fI2n5tHi0=; b=XzbLNuoje1+seG9VqULZiTTf74p/6/G+OSKIvCRar6IHyJXjaeBnTXZE lewO0CMvyo5GGoMoXcnTvb2N6HLgtvClRiRVz3/+y16LA4S3DdUvlhy8/ 8+3A7h+LOVX3f95SkhKjMLOD534bD302wXK33SYF8t2uNePUiQTjSXhpR AT4rhey8yFWk4ba7vEgfXo4A9s7IpGMf35l+4I5XZalnSO45wgA5OHzXO DPw2am3ixM1GgnGPi0maYfJ593lwEqGHEN5qxnxDdyo7s2OPD4joivdiQ Fwhc6L1qz8rdDuae6kJbl8trbh/wLZ4JgEL5eHu6DDGjJHh20ivkj+fSC g==; X-CSE-ConnectionGUID: eDwEfhikS0CMHd31+JwMZQ== X-CSE-MsgGUID: 1+c255ZYTMusnKyIxjmYFA== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="41671709" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="41671709" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:25 -0800 X-CSE-ConnectionGUID: CkjbpTopQS2tsna5uTR10Q== X-CSE-MsgGUID: 3p/LK3RlRiSWDcTclfvJ7Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="150470657" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:23 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Ilan Peer Subject: [PATCH v2 wireless-next 12/15] wifi: iwlwifi: mld: Correctly configure the A-MSDU max lengths Date: Sun, 9 Mar 2025 07:36:50 +0200 Message-Id: <20250309073442.afc842633002.I68153b6b0c5d976f2c7525009631f8fa28e9987c@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309053653.2697525-1-miriam.rachel.korenblit@intel.com> References: <20250309053653.2697525-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: Ilan Peer Refactor the setting of the A-MSDU maximal lengths as follows: - Move the setting of the maximal A-MSDU length in case of HT from TLC logic to the station logic as it is not related to TLC. - As long as the station is not associated, set RC A-MSDU maximal lengths to 1, to prevent iwlmld and mac80211 from building A-MSDUs. - Update the RC and the TID specific A-MSDU maximal lengths based on the FW TLC notifications. Signed-off-by: Ilan Peer Signed-off-by: Miri Korenblit --- drivers/net/wireless/intel/iwlwifi/mld/sta.c | 24 +++++++++++ drivers/net/wireless/intel/iwlwifi/mld/tlc.c | 43 ++++++-------------- 2 files changed, 37 insertions(+), 30 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/sta.c b/drivers/net/wireless/intel/iwlwifi/mld/sta.c index 994d4561518b..332a7aecec2d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/sta.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/sta.c @@ -606,6 +606,25 @@ iwl_mld_remove_link_sta(struct iwl_mld *mld, kfree_rcu(mld_link_sta, rcu_head); } +static void iwl_mld_set_max_amsdu_len(struct iwl_mld *mld, + struct ieee80211_link_sta *link_sta) +{ + const struct ieee80211_sta_ht_cap *ht_cap = &link_sta->ht_cap; + + /* For EHT, HE and VHT we can use the value as it was calculated by + * mac80211. For HT, mac80211 doesn't enforce to 4095, so force it + * here + */ + if (link_sta->eht_cap.has_eht || link_sta->he_cap.has_he || + link_sta->vht_cap.vht_supported || + !ht_cap->ht_supported || + !(ht_cap->cap & IEEE80211_HT_CAP_MAX_AMSDU)) + return; + + link_sta->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_HT_BA; + ieee80211_sta_recalc_aggregates(link_sta->sta); +} + int iwl_mld_update_all_link_stations(struct iwl_mld *mld, struct ieee80211_sta *sta) { @@ -618,6 +637,9 @@ int iwl_mld_update_all_link_stations(struct iwl_mld *mld, if (ret) return ret; + + if (mld_sta->sta_state == IEEE80211_STA_ASSOC) + iwl_mld_set_max_amsdu_len(mld, link_sta); } return 0; } @@ -1222,6 +1244,8 @@ int iwl_mld_update_link_stas(struct iwl_mld *mld, link = link_conf_dereference_protected(mld_sta->vif, link_sta->link_id); + + iwl_mld_set_max_amsdu_len(mld, link_sta); iwl_mld_config_tlc_link(mld, vif, link, link_sta); sta_mask_added |= BIT(mld_link_sta->fw_id); diff --git a/drivers/net/wireless/intel/iwlwifi/mld/tlc.c b/drivers/net/wireless/intel/iwlwifi/mld/tlc.c index 85ec358f1417..f054cc921d9d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/tlc.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/tlc.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation */ #include @@ -467,7 +467,7 @@ static void iwl_mld_send_tlc_cmd(struct iwl_mld *mld, own_he_cap, own_eht_cap), .chains = iwl_mld_get_fw_chains(mld), .sgi_ch_width_supp = iwl_mld_get_fw_sgi(link_sta), - .max_mpdu_len = cpu_to_le16(link_sta->agg.max_rc_amsdu_len), + .max_mpdu_len = cpu_to_le16(link_sta->agg.max_amsdu_len), }; int fw_sta_id = iwl_mld_fw_sta_id_from_link_sta(mld, link_sta); int ret; @@ -493,30 +493,6 @@ static void iwl_mld_send_tlc_cmd(struct iwl_mld *mld, IWL_ERR(mld, "Failed to send TLC cmd (%d)\n", ret); } -static void iwl_mld_recalc_amsdu_len(struct iwl_mld *mld, - struct ieee80211_link_sta *link_sta) -{ - const struct ieee80211_sta_ht_cap *ht_cap = &link_sta->ht_cap; - - /* For EHT, HE and VHT - we can use the value as it was calculated by - * mac80211. - */ - if (link_sta->eht_cap.has_eht || link_sta->he_cap.has_he || - link_sta->vht_cap.vht_supported) - goto recalc; - - /* But for HT, mac80211 doesn't enforce to 4095, so force it here */ - if (ht_cap->ht_supported && ht_cap->cap & IEEE80211_HT_CAP_MAX_AMSDU) - /* Agg is offloaded, so we need to assume that agg are enabled - * and max mpdu in ampdu is 4095 (spec 802.11-2016 9.3.2.1) - */ - link_sta->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_HT_BA; - -recalc: - link_sta->agg.max_rc_amsdu_len = link_sta->agg.max_amsdu_len; - ieee80211_sta_recalc_aggregates(link_sta->sta); -} - int iwl_mld_send_tlc_dhc(struct iwl_mld *mld, u8 sta_id, u32 type, u32 data) { struct { @@ -547,15 +523,22 @@ void iwl_mld_config_tlc_link(struct iwl_mld *mld, struct ieee80211_bss_conf *link_conf, struct ieee80211_link_sta *link_sta) { + struct iwl_mld_sta *mld_sta = iwl_mld_sta_from_mac80211(link_sta->sta); enum nl80211_band band; if (WARN_ON_ONCE(!link_conf->chanreq.oper.chan)) return; - band = link_conf->chanreq.oper.chan->band; - - iwl_mld_recalc_amsdu_len(mld, link_sta); + /* Before we have information about a station, configure the A-MSDU RC + * limit such that iwlmd and mac80211 would not be allowed to build + * A-MSDUs. + */ + if (mld_sta->sta_state < IEEE80211_STA_ASSOC) { + link_sta->agg.max_rc_amsdu_len = 1; + ieee80211_sta_recalc_aggregates(link_sta->sta); + } + band = link_conf->chanreq.oper.chan->band; iwl_mld_send_tlc_cmd(mld, vif, link_sta, band); } @@ -706,7 +689,7 @@ void iwl_mld_handle_tlc_notif(struct iwl_mld *mld, link_sta->agg.max_tid_amsdu_len[i] = iwl_mld_get_amsdu_size_of_tid(mld, link_sta, i); else - link_sta->agg.max_tid_amsdu_len[i] = 0; + link_sta->agg.max_tid_amsdu_len[i] = 1; } ieee80211_sta_recalc_aggregates(link_sta->sta); From patchwork Sun Mar 9 05:36:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872124 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (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 04F0614AD0D for ; Sun, 9 Mar 2025 05:37:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498649; cv=none; b=s9CXzE+HRHDqpOm11xdRhVZb2QnxMUvRJI89M7y3tIj2ukByrkVfPR6BkVcEYixuRSyOGITEjCp1kmrbNU5On5WlxE3MwrlAVpILpYMVXRvIbD6YwHIiRSLU6QfbMsIxHyrkNspLzZ+mQhu3XPjYgm1QA+RaURPN3sQ6SOi+dVU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741498649; c=relaxed/simple; bh=fMFUirmSSi+PZ9aORxxtumMiw1oYzuSI+08YtsP8rNE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=p/iftxb41DisYRMx87QDQpFVzLjFmi4AEBLU3/+DGJRJo2lUTwlRXCJVARI7GnS53smVFMwQKtUvXbQB9uKb/PhBj538obRQvUOcqMT8JKpqLimpeeXee8SaEz9xMP4T/5DKE5MpEM8Atw9Q06cywhi7AfbyVOnX/knxaSxA+DI= 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=XCRlZOSC; arc=none smtp.client-ip=192.198.163.19 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="XCRlZOSC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741498648; x=1773034648; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fMFUirmSSi+PZ9aORxxtumMiw1oYzuSI+08YtsP8rNE=; b=XCRlZOSCPsLd+6yhUrpAS6m5Cz9mMCdlWvoTPT5nTMO7yGGSfTlGG2hY iyTSHffn+C7K5cKMfO7yZgRmrXAGV8PlLevumI+7uUxaEidap4RJQ60sT EZJz3Rs3uoNESNB+/eseTppN4yAmWb2KfIXwNqnNkxgg4KXx2C6ZKKWpe GTebYnRnA0FunAUNEGJyrRI0nuMHRPFhRgsJyfz103upWUCLLIwO5iK6i lYrtIKzRv/hdJMka8aXZtLhgGHItcHrOqva/yF2gNctI610w1HVtF3FeR LuvWu48F+3BQ5hF4XFaQeDs9M/grmXpX1dV68zOuLNdpG274RBjDB8rG2 w==; X-CSE-ConnectionGUID: KKvFzd4TQW2G9xBj0uJc2Q== X-CSE-MsgGUID: qeMg4jEWR/KihC8AWiAJhw== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="41671713" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="41671713" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:28 -0800 X-CSE-ConnectionGUID: 8UnVgZJOTQWRqf2K64TkGQ== X-CSE-MsgGUID: kb07M3eCQvWhjSmoLKeGMA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="150470663" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 21:37:26 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Emmanuel Grumbach Subject: [PATCH v2 wireless-next 14/15] wifi: iwlwifi: mld: fix bad RSSI handling Date: Sun, 9 Mar 2025 07:36:52 +0200 Message-Id: <20250309073442.a31b95888244.If6dca30d657658fa902b19e07b6fbc86c48d69cb@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309053653.2697525-1-miriam.rachel.korenblit@intel.com> References: <20250309053653.2697525-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 If the RSSI is dropping to below the threshold, we need to do a MLO scan to try select a better link. This is true also if the connection doesn't have EMLSR capability, and also if we are in EMLSR. Fix the logic to always check the RSSI (and do a MLO scan if needed). Signed-off-by: Miri Korenblit Reviewed-by: Emmanuel Grumbach --- drivers/net/wireless/intel/iwlwifi/mld/stats.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mld/stats.c b/drivers/net/wireless/intel/iwlwifi/mld/stats.c index a9d3860d8f9c..75cb204c2419 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/stats.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/stats.c @@ -378,15 +378,11 @@ static void iwl_mld_update_link_sig(struct ieee80211_vif *vif, int sig, /* TODO: task=statistics handle CQM notifications */ - if (!iwl_mld_vif_has_emlsr_cap(vif)) - return; + if (sig < IWL_MLD_LOW_RSSI_MLO_SCAN_THRESH) + iwl_mld_int_mlo_scan(mld, vif); - /* Handle inactive EMLSR, check whether to switch links */ - if (!iwl_mld_emlsr_active(vif)) { - if (sig < IWL_MLD_LOW_RSSI_MLO_SCAN_THRESH) - iwl_mld_int_mlo_scan(mld, vif); + if (!iwl_mld_emlsr_active(vif)) return; - } /* We are in EMLSR, check if we need to exit */ exit_emlsr_thresh =