Revert "qcacld-3.0: defer hdd initialization and rely on userspace writing to /dev/wlan"
This reverts commit 1c09fcc89a0811557692033753db2375780065b1.
This is breaking powerstats.
Change-Id: I042f2a7df44850ead9c399ed48923cf51a7e4715
Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c
index 54fdaa7..90b186b 100644
--- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c
+++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c
@@ -185,7 +185,6 @@ static unsigned int dev_num = 1;
static struct cdev wlan_hdd_state_cdev;
static struct class *class;
static dev_t device;
-static bool hdd_loaded = false;
#define HDD_OPS_INACTIVITY_TIMEOUT (120000)
#define MAX_OPS_NAME_STRING_SIZE 20
@@ -14155,8 +14154,6 @@ static int wlan_hdd_state_ctrl_param_open(struct inode *inode,
return 0;
}
-static int hdd_driver_load(void);
-
static void hdd_inform_wifi_off(void)
{
struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
@@ -14199,13 +14196,6 @@ static ssize_t wlan_hdd_state_ctrl_param_write(struct file *filp,
goto exit;
}
- if (!hdd_loaded) {
- if (hdd_driver_load()) {
- pr_err("%s: Failed to init hdd module\n", __func__);
- goto exit;
- }
- }
-
if (!cds_is_driver_loaded() || cds_is_driver_recovering()) {
init_completion(&wlan_start_comp);
rc = wait_for_completion_timeout(&wlan_start_comp,
@@ -14467,10 +14457,16 @@ static int hdd_driver_load(void)
hdd_set_conparam(con_mode);
+ errno = wlan_hdd_state_ctrl_param_create();
+ if (errno) {
+ hdd_fln("Failed to create ctrl param; errno:%d", errno);
+ goto wakelock_destroy;
+ }
+
errno = pld_init();
if (errno) {
hdd_fln("Failed to init PLD; errno:%d", errno);
- goto wakelock_destroy;
+ goto param_destroy;
}
errno = wlan_hdd_register_driver();
@@ -14479,7 +14475,6 @@ static int hdd_driver_load(void)
goto pld_deinit;
}
- hdd_loaded = true;
pr_info("%s: driver loaded\n", WLAN_MODULE_NAME);
return 0;
@@ -14489,6 +14484,8 @@ static int hdd_driver_load(void)
/* Wait for any ref taken on /dev/wlan to be released */
while (qdf_atomic_read(&wlan_hdd_state_fops_ref))
;
+param_destroy:
+ wlan_hdd_state_ctrl_param_destroy();
wakelock_destroy:
qdf_wake_lock_destroy(&wlan_wake_lock);
comp_deinit:
@@ -14543,13 +14540,10 @@ static void hdd_driver_unload(void)
*/
static int hdd_module_init(void)
{
- int ret;
+ if (hdd_driver_load())
+ return -EINVAL;
- ret = wlan_hdd_state_ctrl_param_create();
- if (ret)
- pr_err("wlan_hdd_state_create:%x\n", ret);
-
- return ret;
+ return 0;
}
/**