qcacld-3.0: Convert probe return error from -ENOMEM to -EPROBE_DEFER

If probe failed because of no memory, we want to try to recovery by
issuing a re-probe for built-in driver. Hence, convert probe return
error from -ENOMEM to -EPROBE_DEFER for built-in driver so that
platform driver can issue re-probe based on the return value.

CRs-Fixed: 2124159
Change-Id: I6cca0ed186554c8065b77af8c178ca9e143abf98
This commit is contained in:
Yuanyuan Liu 2017-10-09 17:30:13 -07:00 • committed by snandini
commit 5583b2cd0f

View file

@ -311,6 +311,27 @@ static void hdd_init_qdf_ctx(struct device *dev, void *bdev,
qdf_dev->bid = bid;
}
/**
* check_for_probe_defer() - API to check return value
* @ret: Return Value
*
* Return: return -EPROBE_DEFER to platform driver if return value
* is -ENOMEM. Platform driver will try to re-probe.
*/
#ifdef MODULE
static int check_for_probe_defer(int ret)
{
return ret;
}
#else
static int check_for_probe_defer(int ret)
{
if (ret == -ENOMEM)
return -EPROBE_DEFER;
return ret;
}
#endif
/**
* wlan_hdd_probe() - handles probe request
*
@ -407,7 +428,7 @@ err_hdd_deinit:
cds_set_fw_down(false);
hdd_stop_driver_ops_timer();
mutex_unlock(&hdd_init_deinit_lock);
return ret;
return check_for_probe_defer(ret);
}
static inline void hdd_pld_driver_unloading(struct device *dev)