forked from Minki/linux
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: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
b4991f3f7b
commit
59f547ac5b
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user