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); }
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); } }