Index: src/drivers/net/wireless/intel/iwlwifi/iwl-drv.c =================================================================== --- src.orig/drivers/net/wireless/intel/iwlwifi/iwl-drv.c 2019-09-08 16:01:11.062359133 +0200 +++ src/drivers/net/wireless/intel/iwlwifi/iwl-drv.c 2019-09-08 16:01:21.332226910 +0200 @@ -115,6 +115,7 @@ struct device *dev; int fw_index; /* firmware we're trying to load */ + bool fw_dup; /* tru to load firmware from DUP */ char firmware_name[64]; /* name of firmware file to load */ struct completion request_firmware_complete; @@ -227,9 +228,15 @@ if (first) { drv->fw_index = cfg->ucode_api_max; + drv->fw_dup = true; sprintf(tag, "%d", drv->fw_index); } else { - drv->fw_index--; + if (drv->fw_dup) { + drv->fw_dup = false; + } else { + drv->fw_dup = true; + drv->fw_index--; + } sprintf(tag, "%d", drv->fw_index); } @@ -251,7 +258,8 @@ return -ENOENT; } - snprintf(drv->firmware_name, sizeof(drv->firmware_name), "%s%s.ucode", + snprintf(drv->firmware_name, sizeof(drv->firmware_name), "%s%s%s.ucode", + drv->fw_dup ? "iwlwifi_dup8.0/" : "", cfg->fw_name_pre, tag); IWL_DEBUG_FW_INFO(drv, "attempting to load firmware '%s'\n",