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

Commit 59f547ac authored by Emmanuel Grumbach's avatar Emmanuel Grumbach Committed by Johannes Berg
Browse files

iwlwifi: return real info in probe failure



Don't return a hard coded -EFAULT, but rather the error
that occurred in the flow.

Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent b4991f3f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1032,6 +1032,7 @@ struct iwl_drv *iwl_drv_start(struct iwl_trans *trans,

	if (!drv->dbgfs_drv) {
		IWL_ERR(drv, "failed to create debugfs directory\n");
		ret = -ENOMEM;
		goto err_free_drv;
	}

@@ -1040,12 +1041,12 @@ struct iwl_drv *iwl_drv_start(struct iwl_trans *trans,

	if (!drv->trans->dbgfs_dir) {
		IWL_ERR(drv, "failed to create transport debugfs directory\n");
		ret = -ENOMEM;
		goto err_free_dbgfs;
	}
#endif

	ret = iwl_request_firmware(drv, true);

	if (ret) {
		IWL_ERR(trans, "Couldn't request the fw\n");
		goto err_fw;
@@ -1060,9 +1061,8 @@ err_free_dbgfs:
err_free_drv:
#endif
	kfree(drv);
	drv = NULL;

	return drv;
	return ERR_PTR(ret);
}

void iwl_drv_stop(struct iwl_drv *drv)
+8 −3
Original line number Diff line number Diff line
@@ -267,6 +267,7 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
	const struct iwl_cfg *cfg = (struct iwl_cfg *)(ent->driver_data);
	struct iwl_trans *iwl_trans;
	struct iwl_trans_pcie *trans_pcie;
	int ret;

	iwl_trans = iwl_trans_pcie_alloc(pdev, ent, cfg);
	if (iwl_trans == NULL)
@@ -276,11 +277,15 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)

	trans_pcie = IWL_TRANS_GET_PCIE_TRANS(iwl_trans);
	trans_pcie->drv = iwl_drv_start(iwl_trans, cfg);
	if (!trans_pcie->drv)

	if (IS_ERR_OR_NULL(trans_pcie->drv)) {
		ret = PTR_ERR(trans_pcie->drv);
		goto out_free_trans;
	}

	/* register transport layer debugfs here */
	if (iwl_trans_dbgfs_register(iwl_trans, iwl_trans->dbgfs_dir))
	ret = iwl_trans_dbgfs_register(iwl_trans, iwl_trans->dbgfs_dir);
	if (ret)
		goto out_free_drv;

	return 0;
@@ -290,7 +295,7 @@ out_free_drv:
out_free_trans:
	iwl_trans_pcie_free(iwl_trans);
	pci_set_drvdata(pdev, NULL);
	return -EFAULT;
	return ret;
}

static void __devexit iwl_pci_remove(struct pci_dev *pdev)