void
dhd_conf_wifi_stop(struct net_device *dev)
{
    if (!dev) {
        CONFIG_ERROR(("%s: dev is null\n", __FUNCTION__));
        return;
    }

    printk("%s in 1\n", __FUNCTION__);
    dhd_net_if_lock(dev);
    printk("%s in 2: g_wifi_on=%d, name=%s\n", __FUNCTION__, g_wifi_on, dev->name);
    if (g_wifi_on) {
#ifdef WL_CFG80211
        wl_cfg80211_user_sync(true);
        wl_cfg80211_stop();
#endif
        dhd_bus_devreset(bcmsdh_get_drvdata(), true);
        sdioh_stop(NULL);
        dhd_customer_gpio_wlan_ctrl(WLAN_RESET_OFF);
        g_wifi_on = FALSE;
#ifdef WL_CFG80211
        wl_cfg80211_user_sync(false);
#endif
    }
    printk("%s out\n", __FUNCTION__);
    dhd_net_if_unlock(dev);

}
void
dhd_conf_wifi_power(bool on)
{
	extern struct wl_priv *wlcfg_drv_priv;
	printk("%s: Enter %d\n", __FUNCTION__, on);
	if (on) {
		wl_cfg80211_user_sync(true);
		wl_android_wifi_on(g_netdev);
		wl_cfg80211_send_disconnect();
		if (wlcfg_drv_priv && wlcfg_drv_priv->p2p)
		wl_cfgp2p_start_p2p_device(NULL, NULL);
		else		
			printk("======= ON : no p2p ======\n");
        //wl_cfg80211_up(NULL);
		wl_cfg80211_user_sync(false);
		wifi_ready = true;
	} else {
		wifi_ready = false;
        //wl_cfg80211_down(NULL);
		if (wlcfg_drv_priv && wlcfg_drv_priv->p2p) {
		wl_cfgp2p_clear_management_ie(wlcfg_drv_priv, 0);
		wl_cfgp2p_clear_management_ie(wlcfg_drv_priv, 1);
		wl_cfgp2p_stop_p2p_device(NULL, wlcfg_drv_priv->p2p_wdev);
		} else 
			printk("======= OFF : no p2p ======\n");
		dhd_conf_wifi_stop(g_netdev);
	}
	printk("%s: Exit %d\n", __FUNCTION__, on);
}
Exemple #3
0
void
dhd_conf_wifi_power(bool on)
{
	printk("%s: Enter %d\n", __FUNCTION__, on);
	if (on) {
		wl_cfg80211_user_sync(true);
		wl_android_wifi_on(g_netdev);
		wl_cfg80211_send_disconnect();
		wl_cfg80211_user_sync(false);
	} else {
		dhd_conf_wifi_stop(g_netdev);
	}
}