|
@@ -333,6 +333,7 @@ static int wlan_hdd_probe(struct device *dev, void *bdev,
|
|
|
pr_info("%s: %sprobing driver v%s\n", WLAN_MODULE_NAME,
|
|
|
reinit ? "re-" : "", QWLAN_VERSIONSTR);
|
|
|
|
|
|
+ mutex_lock(&hdd_init_deinit_lock);
|
|
|
hdd_prevent_suspend(WIFI_POWER_EVENT_WAKELOCK_DRIVER_INIT);
|
|
|
|
|
|
/*
|
|
@@ -373,13 +374,11 @@ static int wlan_hdd_probe(struct device *dev, void *bdev,
|
|
|
|
|
|
hdd_allow_suspend(WIFI_POWER_EVENT_WAKELOCK_DRIVER_INIT);
|
|
|
hdd_remove_pm_qos(dev);
|
|
|
-
|
|
|
cds_set_fw_down(false);
|
|
|
-
|
|
|
cds_set_driver_in_bad_state(false);
|
|
|
probe_fail_cnt = 0;
|
|
|
re_init_fail_cnt = 0;
|
|
|
-
|
|
|
+ mutex_unlock(&hdd_init_deinit_lock);
|
|
|
return 0;
|
|
|
|
|
|
|
|
@@ -400,7 +399,7 @@ err_hdd_deinit:
|
|
|
hdd_remove_pm_qos(dev);
|
|
|
|
|
|
cds_set_fw_down(false);
|
|
|
-
|
|
|
+ mutex_unlock(&hdd_init_deinit_lock);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -1152,7 +1151,11 @@ static int wlan_hdd_pld_probe(struct device *dev,
|
|
|
static void wlan_hdd_pld_remove(struct device *dev,
|
|
|
enum pld_bus_type bus_type)
|
|
|
{
|
|
|
+ ENTER();
|
|
|
+ mutex_lock(&hdd_init_deinit_lock);
|
|
|
wlan_hdd_remove(dev);
|
|
|
+ mutex_unlock(&hdd_init_deinit_lock);
|
|
|
+ EXIT();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1165,7 +1168,11 @@ static void wlan_hdd_pld_remove(struct device *dev,
|
|
|
static void wlan_hdd_pld_shutdown(struct device *dev,
|
|
|
enum pld_bus_type bus_type)
|
|
|
{
|
|
|
+ ENTER();
|
|
|
+ mutex_lock(&hdd_init_deinit_lock);
|
|
|
wlan_hdd_shutdown();
|
|
|
+ mutex_unlock(&hdd_init_deinit_lock);
|
|
|
+ EXIT();
|
|
|
}
|
|
|
|
|
|
/**
|