]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: handle non-overlapping API ranges
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 9 Jul 2025 20:05:29 +0000 (23:05 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Thu, 10 Jul 2025 16:48:38 +0000 (19:48 +0300)
The option to set an api_version_min/max also to the RF was added.
In the case that both the MAC and the RF has a range defined, we take
the narrower range of both.

This doesn't work for non-overlapping ranges. In this case, we should
just take the lower range of both.

Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250709200543.1628666-2-miriam.rachel.korenblit@intel.com
drivers/net/wireless/intel/iwlwifi/iwl-drv.c

index f62f7c7ee7f35a681f9d329843685c5b1384d496..2dff87c0751278d29b486092f59e740a1c5f0eee 100644 (file)
@@ -301,13 +301,17 @@ static void iwl_get_ucode_api_versions(struct iwl_trans *trans,
        const struct iwl_family_base_params *base = trans->mac_cfg->base;
        const struct iwl_rf_cfg *cfg = trans->cfg;
 
-       if (!base->ucode_api_max) {
+       /* if the MAC doesn't have range or if its range it higher than the RF's */
+       if (!base->ucode_api_max ||
+           (cfg->ucode_api_max && base->ucode_api_min > cfg->ucode_api_max)) {
                *api_min = cfg->ucode_api_min;
                *api_max = cfg->ucode_api_max;
                return;
        }
 
-       if (!cfg->ucode_api_max) {
+       /* if the RF doesn't have range or if its range it higher than the MAC's */
+       if (!cfg->ucode_api_max ||
+           (base->ucode_api_max && cfg->ucode_api_min > base->ucode_api_max)) {
                *api_min = base->ucode_api_min;
                *api_max = base->ucode_api_max;
                return;