Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ffff630 authored by Luca Coelho's avatar Luca Coelho
Browse files

iwlwifi: be more verbose about needed firmware



If the supported firmware versions are not found, we currently only
print "no suitable firmware found".  This is not very informative for
the user trying to find the correct version to use.  Improve this by
printing the exact firmware name(s) the driver supports and pointing
to the git repository where they can be found.

Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent 9415af7f
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -211,24 +211,39 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw,

static int iwl_request_firmware(struct iwl_drv *drv, bool first)
{
	const char *name_pre = drv->trans->cfg->fw_name_pre;
	const struct iwl_cfg *cfg = drv->trans->cfg;
	char tag[8];

	if (first) {
		drv->fw_index = drv->trans->cfg->ucode_api_max;
		drv->fw_index = cfg->ucode_api_max;
		sprintf(tag, "%d", drv->fw_index);
	} else {
		drv->fw_index--;
		sprintf(tag, "%d", drv->fw_index);
	}

	if (drv->fw_index < drv->trans->cfg->ucode_api_min) {
	if (drv->fw_index < cfg->ucode_api_min) {
		IWL_ERR(drv, "no suitable firmware found!\n");

		if (cfg->ucode_api_min == cfg->ucode_api_max) {
			IWL_ERR(drv, "%s%d is required\n", cfg->fw_name_pre,
				cfg->ucode_api_max);
		} else {
			IWL_ERR(drv, "minimum version required: %s%d\n",
				cfg->fw_name_pre,
				cfg->ucode_api_min);
			IWL_ERR(drv, "maximum version supported: %s%d\n",
				cfg->fw_name_pre,
				cfg->ucode_api_max);
		}

		IWL_ERR(drv,
			"check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git\n");
		return -ENOENT;
	}

	snprintf(drv->firmware_name, sizeof(drv->firmware_name), "%s%s.ucode",
		 name_pre, tag);
		 cfg->fw_name_pre, tag);

	IWL_DEBUG_INFO(drv, "attempting to load firmware '%s'\n",
		       drv->firmware_name);