From: hwg <hwg@rock-chips.com>
Date: Mon, 13 Apr 2015 00:37:27 +0000 (+0800)
Subject: bcmdhd wifi driver: use kthread to run dhd_module_init, save time in initcall
X-Git-Tag: firefly_0821_release~4215
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d1a4db2bec20ebf793f53b58943f438aca6c57db;p=firefly-linux-kernel-4.4.55.git

bcmdhd wifi driver: use kthread to run dhd_module_init, save time in initcall
---

diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux.c
index 2f678e6f171e..b0ee6e487408 100755
--- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux.c
+++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux.c
@@ -7050,6 +7050,14 @@ extern int get_wifi_chip_type(void);
 extern char WIFI_MODULE_NAME[];
 extern char RKWIFI_DRV_VERSION[];
 
+#ifdef CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
+static int wifi_init_thread(void *data)
+{
+    dhd_module_init();
+    return 0;
+}
+#endif
+
 int rockchip_wifi_init_module_rkwifi(void)
 {
 #ifdef CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
@@ -7061,7 +7069,16 @@ int rockchip_wifi_init_module_rkwifi(void)
     printk("=======================================================\n");
     printk("%s WiFi driver (Powered by Rockchip,Ver %s) init.\n", WIFI_MODULE_NAME, RKWIFI_DRV_VERSION);
 
+#ifdef CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
+{
+    struct task_struct *kthread = kthread_run(wifi_init_thread, NULL, "wifi_init_thread");
+    if (kthread->pid < 0)
+        printk("create wifi_init_thread failed.\n");
+    return 0; 
+}
+#else
     return dhd_module_init();
+#endif
 }
 
 void rockchip_wifi_exit_module_rkwifi(void)