From: hwg Date: Mon, 12 Dec 2011 12:24:09 +0000 (+0800) Subject: reset g_onoff in wifi driver insmode, to avoid wifi driver error when rmmod with... X-Git-Tag: firefly_0821_release~9712^2~12 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3a0b65a4a8b5b066595727e9fd1764d928adad6a;p=firefly-linux-kernel-4.4.55.git reset g_onoff in wifi driver insmode, to avoid wifi driver error when rmmod with G_WLAN_SET_OFF status --- diff --git a/drivers/net/wireless/bcm4319/dhd_linux.c b/drivers/net/wireless/bcm4319/dhd_linux.c index 81eef135a16d..edfbc1080479 100644 --- a/drivers/net/wireless/bcm4319/dhd_linux.c +++ b/drivers/net/wireless/bcm4319/dhd_linux.c @@ -2527,6 +2527,7 @@ dhd_detach(dhd_pub_t *dhdp) } } +extern void reset_g_onoff(void); void rockchip_wifi_exit_module(void) { @@ -2563,6 +2564,8 @@ rockchip_wifi_init_module(void) return -EINVAL; } while (0); + reset_g_onoff(); + /* Call customer gpio to turn on power with WL_REG_ON signal */ dhd_customer_gpio_wlan_ctrl(WLAN_POWER_ON); diff --git a/drivers/net/wireless/bcm4319/wl_iw.c b/drivers/net/wireless/bcm4319/wl_iw.c index 146dffd52976..27d1210fea35 100644 --- a/drivers/net/wireless/bcm4319/wl_iw.c +++ b/drivers/net/wireless/bcm4319/wl_iw.c @@ -317,6 +317,14 @@ static void swap_key_to_BE( key->iv_initialized = dtoh32(key->iv_initialized); } +void reset_g_onoff(void) +{ + if(g_onoff == G_WLAN_SET_OFF) { + printk("g_onoff = G_WLAN_SET_OFF, need to reset to G_WLAN_SET_ON\n"); + g_onoff = G_WLAN_SET_ON; + } +} + static int dev_wlc_ioctl( struct net_device *dev, diff --git a/drivers/net/wireless/bcm4329/dhd_linux.c b/drivers/net/wireless/bcm4329/dhd_linux.c index 4058cbc02589..d45d5c97603f 100644 --- a/drivers/net/wireless/bcm4329/dhd_linux.c +++ b/drivers/net/wireless/bcm4329/dhd_linux.c @@ -2529,6 +2529,7 @@ dhd_detach(dhd_pub_t *dhdp) } } +extern void reset_g_onoff(void); void rockchip_wifi_exit_module(void) { @@ -2565,6 +2566,8 @@ rockchip_wifi_init_module(void) return -EINVAL; } while (0); + reset_g_onoff(); + /* Call customer gpio to turn on power with WL_REG_ON signal */ dhd_customer_gpio_wlan_ctrl(WLAN_POWER_ON); diff --git a/drivers/net/wireless/bcm4329/wl_iw.c b/drivers/net/wireless/bcm4329/wl_iw.c index 146dffd52976..27d1210fea35 100644 --- a/drivers/net/wireless/bcm4329/wl_iw.c +++ b/drivers/net/wireless/bcm4329/wl_iw.c @@ -317,6 +317,14 @@ static void swap_key_to_BE( key->iv_initialized = dtoh32(key->iv_initialized); } +void reset_g_onoff(void) +{ + if(g_onoff == G_WLAN_SET_OFF) { + printk("g_onoff = G_WLAN_SET_OFF, need to reset to G_WLAN_SET_ON\n"); + g_onoff = G_WLAN_SET_ON; + } +} + static int dev_wlc_ioctl( struct net_device *dev,