Lines Matching refs:cfg
559 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_ap_add_vif() local
560 struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); in brcmf_ap_add_vif()
564 if (brcmf_cfg80211_vif_event_armed(cfg)) in brcmf_ap_add_vif()
569 vif = brcmf_alloc_vif(cfg, NL80211_IFTYPE_AP, false); in brcmf_ap_add_vif()
573 brcmf_cfg80211_arm_vif_event(cfg, vif); in brcmf_ap_add_vif()
577 brcmf_cfg80211_arm_vif_event(cfg, NULL); in brcmf_ap_add_vif()
582 err = brcmf_cfg80211_wait_vif_event_timeout(cfg, BRCMF_E_IF_ADD, in brcmf_ap_add_vif()
584 brcmf_cfg80211_arm_vif_event(cfg, NULL); in brcmf_ap_add_vif()
682 s32 brcmf_notify_escan_complete(struct brcmf_cfg80211_info *cfg, in brcmf_notify_escan_complete() argument
694 scan_request = cfg->scan_request; in brcmf_notify_escan_complete()
695 cfg->scan_request = NULL; in brcmf_notify_escan_complete()
697 if (timer_pending(&cfg->escan_timeout)) in brcmf_notify_escan_complete()
698 del_timer_sync(&cfg->escan_timeout); in brcmf_notify_escan_complete()
727 if (cfg->sched_escan) { in brcmf_notify_escan_complete()
729 cfg->sched_escan = false; in brcmf_notify_escan_complete()
731 cfg80211_sched_scan_results(cfg_to_wiphy(cfg)); in brcmf_notify_escan_complete()
737 if (!test_and_clear_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) in brcmf_notify_escan_complete()
746 struct brcmf_cfg80211_info *cfg = wiphy_priv(wiphy); in brcmf_cfg80211_del_iface() local
750 if (brcmf_cfg80211_vif_event_armed(cfg)) in brcmf_cfg80211_del_iface()
754 if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status) && in brcmf_cfg80211_del_iface()
755 cfg->escan_info.ifp == netdev_priv(ndev)) in brcmf_cfg80211_del_iface()
756 brcmf_notify_escan_complete(cfg, netdev_priv(ndev), in brcmf_cfg80211_del_iface()
787 struct brcmf_cfg80211_info *cfg = wiphy_priv(wiphy); in brcmf_cfg80211_change_iface() local
832 err = brcmf_p2p_ifchange(cfg, BRCMF_FIL_P2P_IF_GO); in brcmf_cfg80211_change_iface()
858 static void brcmf_escan_prep(struct brcmf_cfg80211_info *cfg, in brcmf_escan_prep() argument
891 chanspec = channel_to_chanspec(&cfg->d11inf, in brcmf_escan_prep()
940 brcmf_run_escan(struct brcmf_cfg80211_info *cfg, struct brcmf_if *ifp, in brcmf_run_escan() argument
964 brcmf_escan_prep(cfg, ¶ms->params_le, request); in brcmf_run_escan()
983 brcmf_do_escan(struct brcmf_cfg80211_info *cfg, struct wiphy *wiphy, in brcmf_do_escan() argument
989 struct escan_info *escan = &cfg->escan_info; in brcmf_do_escan()
995 passive_scan = cfg->active_scan ? 0 : 1; in brcmf_do_escan()
1003 results = (struct brcmf_scan_results *)cfg->escan_info.escan_buf; in brcmf_do_escan()
1008 err = escan->run(cfg, ifp, request, WL_ESCAN_ACTION_START); in brcmf_do_escan()
1020 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_escan() local
1022 struct brcmf_cfg80211_scan_req *sr = &cfg->scan_req_int; in brcmf_cfg80211_escan()
1031 if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) { in brcmf_cfg80211_escan()
1032 brcmf_err("Scanning already: status (%lu)\n", cfg->scan_status); in brcmf_cfg80211_escan()
1035 if (test_bit(BRCMF_SCAN_STATUS_ABORT, &cfg->scan_status)) { in brcmf_cfg80211_escan()
1037 cfg->scan_status); in brcmf_cfg80211_escan()
1040 if (test_bit(BRCMF_SCAN_STATUS_SUPPRESS, &cfg->scan_status)) { in brcmf_cfg80211_escan()
1042 cfg->scan_status); in brcmf_cfg80211_escan()
1051 if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif) in brcmf_cfg80211_escan()
1052 vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif; in brcmf_cfg80211_escan()
1065 cfg->scan_request = request; in brcmf_cfg80211_escan()
1066 set_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status); in brcmf_cfg80211_escan()
1068 cfg->escan_info.run = brcmf_run_escan; in brcmf_cfg80211_escan()
1073 err = brcmf_do_escan(cfg, wiphy, vif->ifp, request); in brcmf_cfg80211_escan()
1090 passive_scan = cfg->active_scan ? 0 : 1; in brcmf_cfg80211_escan()
1113 mod_timer(&cfg->escan_timeout, jiffies + in brcmf_cfg80211_escan()
1119 clear_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status); in brcmf_cfg80211_escan()
1120 cfg->scan_request = NULL; in brcmf_cfg80211_escan()
1183 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_set_wiphy_params() local
1184 struct net_device *ndev = cfg_to_ndev(cfg); in brcmf_cfg80211_set_wiphy_params()
1193 (cfg->conf->rts_threshold != wiphy->rts_threshold)) { in brcmf_cfg80211_set_wiphy_params()
1194 cfg->conf->rts_threshold = wiphy->rts_threshold; in brcmf_cfg80211_set_wiphy_params()
1195 err = brcmf_set_rts(ndev, cfg->conf->rts_threshold); in brcmf_cfg80211_set_wiphy_params()
1200 (cfg->conf->frag_threshold != wiphy->frag_threshold)) { in brcmf_cfg80211_set_wiphy_params()
1201 cfg->conf->frag_threshold = wiphy->frag_threshold; in brcmf_cfg80211_set_wiphy_params()
1202 err = brcmf_set_frag(ndev, cfg->conf->frag_threshold); in brcmf_cfg80211_set_wiphy_params()
1207 && (cfg->conf->retry_long != wiphy->retry_long)) { in brcmf_cfg80211_set_wiphy_params()
1208 cfg->conf->retry_long = wiphy->retry_long; in brcmf_cfg80211_set_wiphy_params()
1209 err = brcmf_set_retry(ndev, cfg->conf->retry_long, true); in brcmf_cfg80211_set_wiphy_params()
1214 && (cfg->conf->retry_short != wiphy->retry_short)) { in brcmf_cfg80211_set_wiphy_params()
1215 cfg->conf->retry_short = wiphy->retry_short; in brcmf_cfg80211_set_wiphy_params()
1216 err = brcmf_set_retry(ndev, cfg->conf->retry_short, false); in brcmf_cfg80211_set_wiphy_params()
1251 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(vif->wdev.wiphy); in brcmf_link_down() local
1269 clear_bit(BRCMF_SCAN_STATUS_SUPPRESS, &cfg->scan_status); in brcmf_link_down()
1278 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_join_ibss() local
1385 cfg->channel = in brcmf_cfg80211_join_ibss()
1390 chanspec = chandef_to_chanspec(&cfg->d11inf, in brcmf_cfg80211_join_ibss()
1399 target_channel = cfg->channel; in brcmf_cfg80211_join_ibss()
1407 cfg->channel = 0; in brcmf_cfg80211_join_ibss()
1409 cfg->ibss_starter = false; in brcmf_cfg80211_join_ibss()
1722 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_connect() local
1745 if (ifp->vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif) { in brcmf_cfg80211_connect()
1777 cfg->channel = in brcmf_cfg80211_connect()
1779 chanspec = channel_to_chanspec(&cfg->d11inf, chan); in brcmf_cfg80211_connect()
1781 cfg->channel, chan->center_freq, chanspec); in brcmf_cfg80211_connect()
1783 cfg->channel = 0; in brcmf_cfg80211_connect()
1834 if (cfg->channel) in brcmf_cfg80211_connect()
1854 if (cfg->channel) { in brcmf_cfg80211_connect()
1899 if (cfg->channel) { in brcmf_cfg80211_connect()
1949 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_set_tx_power() local
1950 struct net_device *ndev = cfg_to_ndev(cfg); in brcmf_cfg80211_set_tx_power()
1987 cfg->conf->tx_power = dbm; in brcmf_cfg80211_set_tx_power()
1998 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_get_tx_power() local
1999 struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); in brcmf_cfg80211_get_tx_power()
2473 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_set_power_mgmt() local
2485 cfg->pwr_save = enabled; in brcmf_cfg80211_set_power_mgmt()
2512 static s32 brcmf_inform_single_bss(struct brcmf_cfg80211_info *cfg, in brcmf_inform_single_bss() argument
2515 struct wiphy *wiphy = cfg_to_wiphy(cfg); in brcmf_inform_single_bss()
2535 cfg->d11inf.decchspec(&ch); in brcmf_inform_single_bss()
2585 static s32 brcmf_inform_bss(struct brcmf_cfg80211_info *cfg) in brcmf_inform_bss() argument
2592 bss_list = (struct brcmf_scan_results *)cfg->escan_info.escan_buf; in brcmf_inform_bss()
2602 err = brcmf_inform_single_bss(cfg, bi); in brcmf_inform_bss()
2609 static s32 wl_inform_ibss(struct brcmf_cfg80211_info *cfg, in wl_inform_ibss() argument
2612 struct wiphy *wiphy = cfg_to_wiphy(cfg); in wl_inform_ibss()
2647 cfg->d11inf.decchspec(&ch); in wl_inform_ibss()
2690 static s32 brcmf_update_bss_info(struct brcmf_cfg80211_info *cfg, in brcmf_update_bss_info() argument
2709 *(__le32 *)cfg->extra_buf = cpu_to_le32(WL_EXTRA_BUF_MAX); in brcmf_update_bss_info()
2711 cfg->extra_buf, WL_EXTRA_BUF_MAX); in brcmf_update_bss_info()
2717 bi = (struct brcmf_bss_info_le *)(cfg->extra_buf + 4); in brcmf_update_bss_info()
2718 err = brcmf_inform_single_bss(cfg, bi); in brcmf_update_bss_info()
2749 void brcmf_abort_scanning(struct brcmf_cfg80211_info *cfg) in brcmf_abort_scanning() argument
2751 struct escan_info *escan = &cfg->escan_info; in brcmf_abort_scanning()
2753 set_bit(BRCMF_SCAN_STATUS_ABORT, &cfg->scan_status); in brcmf_abort_scanning()
2754 if (cfg->scan_request) { in brcmf_abort_scanning()
2756 brcmf_notify_escan_complete(cfg, escan->ifp, true, true); in brcmf_abort_scanning()
2758 clear_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status); in brcmf_abort_scanning()
2759 clear_bit(BRCMF_SCAN_STATUS_ABORT, &cfg->scan_status); in brcmf_abort_scanning()
2764 struct brcmf_cfg80211_info *cfg = in brcmf_cfg80211_escan_timeout_worker() local
2768 brcmf_inform_bss(cfg); in brcmf_cfg80211_escan_timeout_worker()
2769 brcmf_notify_escan_complete(cfg, cfg->escan_info.ifp, true, true); in brcmf_cfg80211_escan_timeout_worker()
2774 struct brcmf_cfg80211_info *cfg = in brcmf_escan_timeout() local
2777 if (cfg->scan_request) { in brcmf_escan_timeout()
2779 schedule_work(&cfg->escan_timeout_work); in brcmf_escan_timeout()
2784 brcmf_compare_update_same_bss(struct brcmf_cfg80211_info *cfg, in brcmf_compare_update_same_bss() argument
2791 cfg->d11inf.decchspec(&ch_bss); in brcmf_compare_update_same_bss()
2793 cfg->d11inf.decchspec(&ch_bss_info_le); in brcmf_compare_update_same_bss()
2826 struct brcmf_cfg80211_info *cfg = ifp->drvr->config; in brcmf_cfg80211_escan_handler() local
2838 if (!test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) { in brcmf_cfg80211_escan_handler()
2857 if (brcmf_p2p_scan_finding_common_channel(cfg, bss_info_le)) in brcmf_cfg80211_escan_handler()
2860 if (!cfg->scan_request) { in brcmf_cfg80211_escan_handler()
2873 if (!(cfg_to_wiphy(cfg)->interface_modes & in brcmf_cfg80211_escan_handler()
2883 cfg->escan_info.escan_buf; in brcmf_cfg80211_escan_handler()
2893 if (brcmf_compare_update_same_bss(cfg, bss, in brcmf_cfg80211_escan_handler()
2897 memcpy(&(cfg->escan_info.escan_buf[list->buflen]), in brcmf_cfg80211_escan_handler()
2903 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE; in brcmf_cfg80211_escan_handler()
2904 if (brcmf_p2p_scan_finding_common_channel(cfg, NULL)) in brcmf_cfg80211_escan_handler()
2906 if (cfg->scan_request) { in brcmf_cfg80211_escan_handler()
2907 brcmf_inform_bss(cfg); in brcmf_cfg80211_escan_handler()
2909 brcmf_notify_escan_complete(cfg, ifp, aborted, false); in brcmf_cfg80211_escan_handler()
2918 static void brcmf_init_escan(struct brcmf_cfg80211_info *cfg) in brcmf_init_escan() argument
2920 brcmf_fweh_register(cfg->pub, BRCMF_E_ESCAN_RESULT, in brcmf_init_escan()
2922 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE; in brcmf_init_escan()
2924 init_timer(&cfg->escan_timeout); in brcmf_init_escan()
2925 cfg->escan_timeout.data = (unsigned long) cfg; in brcmf_init_escan()
2926 cfg->escan_timeout.function = brcmf_escan_timeout; in brcmf_init_escan()
2927 INIT_WORK(&cfg->escan_timeout_work, in brcmf_init_escan()
2981 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_resume() local
2982 struct net_device *ndev = cfg_to_ndev(cfg); in brcmf_cfg80211_resume()
2987 if (cfg->wowl_enabled) { in brcmf_cfg80211_resume()
2990 cfg->pre_wowl_pmmode); in brcmf_cfg80211_resume()
2993 cfg->wowl_enabled = false; in brcmf_cfg80211_resume()
2998 static void brcmf_configure_wowl(struct brcmf_cfg80211_info *cfg, in brcmf_configure_wowl() argument
3008 brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_PM, &cfg->pre_wowl_pmmode); in brcmf_configure_wowl()
3028 brcmf_bus_wowl_config(cfg->pub->bus_if, true); in brcmf_configure_wowl()
3029 cfg->wowl_enabled = true; in brcmf_configure_wowl()
3035 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_suspend() local
3036 struct net_device *ndev = cfg_to_ndev(cfg); in brcmf_cfg80211_suspend()
3049 if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) in brcmf_cfg80211_suspend()
3050 brcmf_abort_scanning(cfg); in brcmf_cfg80211_suspend()
3053 brcmf_bus_wowl_config(cfg->pub->bus_if, false); in brcmf_cfg80211_suspend()
3054 list_for_each_entry(vif, &cfg->vif_list, list) { in brcmf_cfg80211_suspend()
3073 brcmf_configure_wowl(cfg, ifp, wowl); in brcmf_cfg80211_suspend()
3079 cfg->scan_status = 0; in brcmf_cfg80211_suspend()
3112 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_set_pmksa() local
3114 struct pmkid_list *pmkids = &cfg->pmk_list->pmkids; in brcmf_cfg80211_set_pmksa()
3141 err = brcmf_update_pmklist(ndev, cfg->pmk_list, err); in brcmf_cfg80211_set_pmksa()
3151 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_del_pmksa() local
3169 pmkid_len = le32_to_cpu(cfg->pmk_list->pmkids.npmkid); in brcmf_cfg80211_del_pmksa()
3172 (pmksa->bssid, &cfg->pmk_list->pmkids.pmkid[i].BSSID, in brcmf_cfg80211_del_pmksa()
3178 memset(&cfg->pmk_list->pmkids.pmkid[i], 0, in brcmf_cfg80211_del_pmksa()
3181 memcpy(&cfg->pmk_list->pmkids.pmkid[i].BSSID, in brcmf_cfg80211_del_pmksa()
3182 &cfg->pmk_list->pmkids.pmkid[i + 1].BSSID, in brcmf_cfg80211_del_pmksa()
3184 memcpy(&cfg->pmk_list->pmkids.pmkid[i].PMKID, in brcmf_cfg80211_del_pmksa()
3185 &cfg->pmk_list->pmkids.pmkid[i + 1].PMKID, in brcmf_cfg80211_del_pmksa()
3188 cfg->pmk_list->pmkids.npmkid = cpu_to_le32(pmkid_len - 1); in brcmf_cfg80211_del_pmksa()
3192 err = brcmf_update_pmklist(ndev, cfg->pmk_list, err); in brcmf_cfg80211_del_pmksa()
3202 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_flush_pmksa() local
3210 memset(cfg->pmk_list, 0, sizeof(*cfg->pmk_list)); in brcmf_cfg80211_flush_pmksa()
3211 err = brcmf_update_pmklist(ndev, cfg->pmk_list, err); in brcmf_cfg80211_flush_pmksa()
3230 struct brcmf_cfg80211_info *cfg = ifp->drvr->config; in brcmf_notify_sched_scan_results() local
3235 struct wiphy *wiphy = cfg_to_wiphy(cfg); in brcmf_notify_sched_scan_results()
3308 if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) { in brcmf_notify_sched_scan_results()
3310 brcmf_abort_scanning(cfg); in brcmf_notify_sched_scan_results()
3313 set_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status); in brcmf_notify_sched_scan_results()
3314 cfg->escan_info.run = brcmf_run_escan; in brcmf_notify_sched_scan_results()
3315 err = brcmf_do_escan(cfg, wiphy, ifp, request); in brcmf_notify_sched_scan_results()
3317 clear_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status); in brcmf_notify_sched_scan_results()
3320 cfg->sched_escan = true; in brcmf_notify_sched_scan_results()
3321 cfg->scan_request = request; in brcmf_notify_sched_scan_results()
3382 struct brcmf_cfg80211_info *cfg = wiphy_priv(wiphy); in brcmf_cfg80211_sched_scan_start() local
3389 if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) { in brcmf_cfg80211_sched_scan_start()
3390 brcmf_err("Scanning already: status (%lu)\n", cfg->scan_status); in brcmf_cfg80211_sched_scan_start()
3393 if (test_bit(BRCMF_SCAN_STATUS_SUPPRESS, &cfg->scan_status)) { in brcmf_cfg80211_sched_scan_start()
3395 cfg->scan_status); in brcmf_cfg80211_sched_scan_start()
3472 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_sched_scan_stop() local
3476 if (cfg->sched_escan) in brcmf_cfg80211_sched_scan_stop()
3477 brcmf_notify_escan_complete(cfg, netdev_priv(ndev), true, true); in brcmf_cfg80211_sched_scan_stop()
3978 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_start_ap() local
4066 chanspec = chandef_to_chanspec(&cfg->d11inf, in brcmf_cfg80211_start_ap()
4257 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_del_station() local
4267 if (ifp->vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif) in brcmf_cfg80211_del_station()
4268 ifp = cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif->ifp; in brcmf_cfg80211_del_station()
4335 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_mgmt_tx() local
4378 if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif) in brcmf_cfg80211_mgmt_tx()
4379 vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_cfg80211_mgmt_tx()
4418 ack = brcmf_p2p_send_action_frame(cfg, cfg_to_ndev(cfg), in brcmf_cfg80211_mgmt_tx()
4439 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_cancel_remain_on_channel() local
4445 vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_cfg80211_cancel_remain_on_channel()
4461 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_crit_proto_start() local
4471 set_bit(BRCMF_SCAN_STATUS_SUPPRESS, &cfg->scan_status); in brcmf_cfg80211_crit_proto_start()
4472 brcmf_abort_scanning(cfg); in brcmf_cfg80211_crit_proto_start()
4480 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); in brcmf_cfg80211_crit_proto_stop() local
4486 clear_bit(BRCMF_SCAN_STATUS_SUPPRESS, &cfg->scan_status); in brcmf_cfg80211_crit_proto_stop()
4599 struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg, in brcmf_alloc_vif() argument
4613 vif->wdev.wiphy = cfg->wiphy; in brcmf_alloc_vif()
4623 list_for_each_entry(vif_walk, &cfg->vif_list, list) { in brcmf_alloc_vif()
4632 list_add_tail(&vif->list, &cfg->vif_list); in brcmf_alloc_vif()
4681 static bool brcmf_is_nonetwork(struct brcmf_cfg80211_info *cfg, in brcmf_is_nonetwork() argument
4701 static void brcmf_clear_assoc_ies(struct brcmf_cfg80211_info *cfg) in brcmf_clear_assoc_ies() argument
4703 struct brcmf_cfg80211_connect_info *conn_info = cfg_to_conn(cfg); in brcmf_clear_assoc_ies()
4713 static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211_info *cfg, in brcmf_get_assoc_ies() argument
4717 struct brcmf_cfg80211_connect_info *conn_info = cfg_to_conn(cfg); in brcmf_get_assoc_ies()
4722 brcmf_clear_assoc_ies(cfg); in brcmf_get_assoc_ies()
4725 cfg->extra_buf, WL_ASSOC_INFO_MAX); in brcmf_get_assoc_ies()
4731 (struct brcmf_cfg80211_assoc_ielen_le *)cfg->extra_buf; in brcmf_get_assoc_ies()
4736 cfg->extra_buf, in brcmf_get_assoc_ies()
4744 kmemdup(cfg->extra_buf, conn_info->req_ie_len, in brcmf_get_assoc_ies()
4752 cfg->extra_buf, in brcmf_get_assoc_ies()
4760 kmemdup(cfg->extra_buf, conn_info->resp_ie_len, in brcmf_get_assoc_ies()
4773 brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cfg, in brcmf_bss_roaming_done() argument
4779 struct brcmf_cfg80211_connect_info *conn_info = cfg_to_conn(cfg); in brcmf_bss_roaming_done()
4780 struct wiphy *wiphy = cfg_to_wiphy(cfg); in brcmf_bss_roaming_done()
4791 brcmf_get_assoc_ies(cfg, ifp); in brcmf_bss_roaming_done()
4793 brcmf_update_bss_info(cfg, ifp); in brcmf_bss_roaming_done()
4811 cfg->d11inf.decchspec(&ch); in brcmf_bss_roaming_done()
4834 brcmf_bss_connect_done(struct brcmf_cfg80211_info *cfg, in brcmf_bss_connect_done() argument
4840 struct brcmf_cfg80211_connect_info *conn_info = cfg_to_conn(cfg); in brcmf_bss_connect_done()
4847 brcmf_get_assoc_ies(cfg, ifp); in brcmf_bss_connect_done()
4849 brcmf_update_bss_info(cfg, ifp); in brcmf_bss_connect_done()
4870 brcmf_notify_connect_status_ap(struct brcmf_cfg80211_info *cfg, in brcmf_notify_connect_status_ap() argument
4882 ndev != cfg_to_ndev(cfg)) { in brcmf_notify_connect_status_ap()
4884 complete(&cfg->vif_disabled); in brcmf_notify_connect_status_ap()
4914 struct brcmf_cfg80211_info *cfg = ifp->drvr->config; in brcmf_notify_connect_status() local
4928 err = brcmf_notify_connect_status_ap(cfg, ndev, e, data); in brcmf_notify_connect_status()
4932 chan = ieee80211_get_channel(cfg->wiphy, cfg->channel); in brcmf_notify_connect_status()
4934 wl_inform_ibss(cfg, ndev, e->addr); in brcmf_notify_connect_status()
4941 brcmf_bss_connect_done(cfg, ndev, e, true); in brcmf_notify_connect_status()
4945 brcmf_bss_connect_done(cfg, ndev, e, false); in brcmf_notify_connect_status()
4949 if (ndev != cfg_to_ndev(cfg)) in brcmf_notify_connect_status()
4950 complete(&cfg->vif_disabled); in brcmf_notify_connect_status()
4951 } else if (brcmf_is_nonetwork(cfg, e)) { in brcmf_notify_connect_status()
4956 brcmf_bss_connect_done(cfg, ndev, e, false); in brcmf_notify_connect_status()
4966 struct brcmf_cfg80211_info *cfg = ifp->drvr->config; in brcmf_notify_roaming_status() local
4972 brcmf_bss_roaming_done(cfg, ifp->ndev, e); in brcmf_notify_roaming_status()
4974 brcmf_bss_connect_done(cfg, ifp->ndev, e, true); in brcmf_notify_roaming_status()
5001 struct brcmf_cfg80211_info *cfg = ifp->drvr->config; in brcmf_notify_vif_event() local
5003 struct brcmf_cfg80211_vif_event *event = &cfg->vif_event; in brcmf_notify_vif_event()
5017 if (!cfg->vif_event.vif) { in brcmf_notify_vif_event()
5027 SET_NETDEV_DEV(ifp->ndev, wiphy_dev(cfg->wiphy)); in brcmf_notify_vif_event()
5036 if (brcmf_cfg80211_vif_event_armed(cfg)) in brcmf_notify_vif_event()
5061 static void brcmf_register_event_handlers(struct brcmf_cfg80211_info *cfg) in brcmf_register_event_handlers() argument
5063 brcmf_fweh_register(cfg->pub, BRCMF_E_LINK, in brcmf_register_event_handlers()
5065 brcmf_fweh_register(cfg->pub, BRCMF_E_DEAUTH_IND, in brcmf_register_event_handlers()
5067 brcmf_fweh_register(cfg->pub, BRCMF_E_DEAUTH, in brcmf_register_event_handlers()
5069 brcmf_fweh_register(cfg->pub, BRCMF_E_DISASSOC_IND, in brcmf_register_event_handlers()
5071 brcmf_fweh_register(cfg->pub, BRCMF_E_ASSOC_IND, in brcmf_register_event_handlers()
5073 brcmf_fweh_register(cfg->pub, BRCMF_E_REASSOC_IND, in brcmf_register_event_handlers()
5075 brcmf_fweh_register(cfg->pub, BRCMF_E_ROAM, in brcmf_register_event_handlers()
5077 brcmf_fweh_register(cfg->pub, BRCMF_E_MIC_ERROR, in brcmf_register_event_handlers()
5079 brcmf_fweh_register(cfg->pub, BRCMF_E_SET_SSID, in brcmf_register_event_handlers()
5081 brcmf_fweh_register(cfg->pub, BRCMF_E_PFN_NET_FOUND, in brcmf_register_event_handlers()
5083 brcmf_fweh_register(cfg->pub, BRCMF_E_IF, in brcmf_register_event_handlers()
5085 brcmf_fweh_register(cfg->pub, BRCMF_E_P2P_PROBEREQ_MSG, in brcmf_register_event_handlers()
5087 brcmf_fweh_register(cfg->pub, BRCMF_E_P2P_DISC_LISTEN_COMPLETE, in brcmf_register_event_handlers()
5089 brcmf_fweh_register(cfg->pub, BRCMF_E_ACTION_FRAME_RX, in brcmf_register_event_handlers()
5091 brcmf_fweh_register(cfg->pub, BRCMF_E_ACTION_FRAME_COMPLETE, in brcmf_register_event_handlers()
5093 brcmf_fweh_register(cfg->pub, BRCMF_E_ACTION_FRAME_OFF_CHAN_COMPLETE, in brcmf_register_event_handlers()
5097 static void brcmf_deinit_priv_mem(struct brcmf_cfg80211_info *cfg) in brcmf_deinit_priv_mem() argument
5099 kfree(cfg->conf); in brcmf_deinit_priv_mem()
5100 cfg->conf = NULL; in brcmf_deinit_priv_mem()
5101 kfree(cfg->escan_ioctl_buf); in brcmf_deinit_priv_mem()
5102 cfg->escan_ioctl_buf = NULL; in brcmf_deinit_priv_mem()
5103 kfree(cfg->extra_buf); in brcmf_deinit_priv_mem()
5104 cfg->extra_buf = NULL; in brcmf_deinit_priv_mem()
5105 kfree(cfg->pmk_list); in brcmf_deinit_priv_mem()
5106 cfg->pmk_list = NULL; in brcmf_deinit_priv_mem()
5109 static s32 brcmf_init_priv_mem(struct brcmf_cfg80211_info *cfg) in brcmf_init_priv_mem() argument
5111 cfg->conf = kzalloc(sizeof(*cfg->conf), GFP_KERNEL); in brcmf_init_priv_mem()
5112 if (!cfg->conf) in brcmf_init_priv_mem()
5114 cfg->escan_ioctl_buf = kzalloc(BRCMF_DCMD_MEDLEN, GFP_KERNEL); in brcmf_init_priv_mem()
5115 if (!cfg->escan_ioctl_buf) in brcmf_init_priv_mem()
5117 cfg->extra_buf = kzalloc(WL_EXTRA_BUF_MAX, GFP_KERNEL); in brcmf_init_priv_mem()
5118 if (!cfg->extra_buf) in brcmf_init_priv_mem()
5120 cfg->pmk_list = kzalloc(sizeof(*cfg->pmk_list), GFP_KERNEL); in brcmf_init_priv_mem()
5121 if (!cfg->pmk_list) in brcmf_init_priv_mem()
5127 brcmf_deinit_priv_mem(cfg); in brcmf_init_priv_mem()
5132 static s32 wl_init_priv(struct brcmf_cfg80211_info *cfg) in wl_init_priv() argument
5136 cfg->scan_request = NULL; in wl_init_priv()
5137 cfg->pwr_save = true; in wl_init_priv()
5138 cfg->active_scan = true; /* we do active scan per default */ in wl_init_priv()
5139 cfg->dongle_up = false; /* dongle is not up yet */ in wl_init_priv()
5140 err = brcmf_init_priv_mem(cfg); in wl_init_priv()
5143 brcmf_register_event_handlers(cfg); in wl_init_priv()
5144 mutex_init(&cfg->usr_sync); in wl_init_priv()
5145 brcmf_init_escan(cfg); in wl_init_priv()
5146 brcmf_init_conf(cfg->conf); in wl_init_priv()
5147 init_completion(&cfg->vif_disabled); in wl_init_priv()
5151 static void wl_deinit_priv(struct brcmf_cfg80211_info *cfg) in wl_deinit_priv() argument
5153 cfg->dongle_up = false; /* dongle down */ in wl_deinit_priv()
5154 brcmf_abort_scanning(cfg); in wl_deinit_priv()
5155 brcmf_deinit_priv_mem(cfg); in wl_deinit_priv()
5260 static void brcmf_count_20mhz_channels(struct brcmf_cfg80211_info *cfg, in brcmf_count_20mhz_channels() argument
5270 cfg->d11inf.decchspec(&ch); in brcmf_count_20mhz_channels()
5311 static int brcmf_construct_chaninfo(struct brcmf_cfg80211_info *cfg, in brcmf_construct_chaninfo() argument
5314 struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); in brcmf_construct_chaninfo()
5342 brcmf_count_20mhz_channels(cfg, list, chcnt); in brcmf_construct_chaninfo()
5343 wiphy = cfg_to_wiphy(cfg); in brcmf_construct_chaninfo()
5382 cfg->d11inf.decchspec(&ch); in brcmf_construct_chaninfo()
5426 cfg->d11inf.encchspec(&ch); in brcmf_construct_chaninfo()
5455 static int brcmf_enable_bw40_2g(struct brcmf_cfg80211_info *cfg) in brcmf_enable_bw40_2g() argument
5457 struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); in brcmf_enable_bw40_2g()
5495 cfg->d11inf.encchspec(&ch); in brcmf_enable_bw40_2g()
5508 band = cfg_to_wiphy(cfg)->bands[IEEE80211_BAND_2GHZ]; in brcmf_enable_bw40_2g()
5513 cfg->d11inf.decchspec(&ch); in brcmf_enable_bw40_2g()
5624 struct brcmf_cfg80211_info *cfg = wiphy_priv(wiphy); in brcmf_setup_wiphybands() local
5625 struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); in brcmf_setup_wiphybands()
5656 err = brcmf_construct_chaninfo(cfg, bw_cap); in brcmf_setup_wiphybands()
5662 wiphy = cfg_to_wiphy(cfg); in brcmf_setup_wiphybands()
5827 static s32 brcmf_config_dongle(struct brcmf_cfg80211_info *cfg) in brcmf_config_dongle() argument
5835 if (cfg->dongle_up) in brcmf_config_dongle()
5838 ndev = cfg_to_ndev(cfg); in brcmf_config_dongle()
5848 power_mode = cfg->pwr_save ? PM_FAST : PM_OFF; in brcmf_config_dongle()
5865 cfg->dongle_up = true; in brcmf_config_dongle()
5881 struct brcmf_cfg80211_info *cfg = ifp->drvr->config; in __brcmf_cfg80211_down() local
5897 brcmf_abort_scanning(cfg); in __brcmf_cfg80211_down()
5906 struct brcmf_cfg80211_info *cfg = ifp->drvr->config; in brcmf_cfg80211_up() local
5909 mutex_lock(&cfg->usr_sync); in brcmf_cfg80211_up()
5911 mutex_unlock(&cfg->usr_sync); in brcmf_cfg80211_up()
5919 struct brcmf_cfg80211_info *cfg = ifp->drvr->config; in brcmf_cfg80211_down() local
5922 mutex_lock(&cfg->usr_sync); in brcmf_cfg80211_down()
5924 mutex_unlock(&cfg->usr_sync); in brcmf_cfg80211_down()
5936 bool brcmf_get_vif_state_any(struct brcmf_cfg80211_info *cfg, in brcmf_get_vif_state_any() argument
5941 list_for_each_entry(vif, &cfg->vif_list, list) { in brcmf_get_vif_state_any()
5959 void brcmf_cfg80211_arm_vif_event(struct brcmf_cfg80211_info *cfg, in brcmf_cfg80211_arm_vif_event() argument
5962 struct brcmf_cfg80211_vif_event *event = &cfg->vif_event; in brcmf_cfg80211_arm_vif_event()
5970 bool brcmf_cfg80211_vif_event_armed(struct brcmf_cfg80211_info *cfg) in brcmf_cfg80211_vif_event_armed() argument
5972 struct brcmf_cfg80211_vif_event *event = &cfg->vif_event; in brcmf_cfg80211_vif_event_armed()
5981 int brcmf_cfg80211_wait_vif_event_timeout(struct brcmf_cfg80211_info *cfg, in brcmf_cfg80211_wait_vif_event_timeout() argument
5984 struct brcmf_cfg80211_vif_event *event = &cfg->vif_event; in brcmf_cfg80211_wait_vif_event_timeout()
5993 struct brcmf_cfg80211_info *cfg = wiphy_priv(wiphy); in brcmf_cfg80211_reg_notifier() local
5994 struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); in brcmf_cfg80211_reg_notifier()
6031 struct brcmf_cfg80211_info *cfg; in brcmf_cfg80211_attach() local
6052 cfg = wiphy_priv(wiphy); in brcmf_cfg80211_attach()
6053 cfg->wiphy = wiphy; in brcmf_cfg80211_attach()
6054 cfg->pub = drvr; in brcmf_cfg80211_attach()
6055 init_vif_event(&cfg->vif_event); in brcmf_cfg80211_attach()
6056 INIT_LIST_HEAD(&cfg->vif_list); in brcmf_cfg80211_attach()
6058 vif = brcmf_alloc_vif(cfg, NL80211_IFTYPE_STATION, false); in brcmf_cfg80211_attach()
6065 SET_NETDEV_DEV(ndev, wiphy_dev(cfg->wiphy)); in brcmf_cfg80211_attach()
6067 err = wl_init_priv(cfg); in brcmf_cfg80211_attach()
6081 cfg->d11inf.io_type = (u8)io_type; in brcmf_cfg80211_attach()
6082 brcmu_d11_attach(&cfg->d11inf); in brcmf_cfg80211_attach()
6111 err = brcmf_enable_bw40_2g(cfg); in brcmf_cfg80211_attach()
6119 err = brcmf_p2p_attach(cfg); in brcmf_cfg80211_attach()
6124 err = brcmf_btcoex_attach(cfg); in brcmf_cfg80211_attach()
6127 brcmf_p2p_detach(&cfg->p2p); in brcmf_cfg80211_attach()
6136 brcmf_fweh_register(cfg->pub, BRCMF_E_TDLS_PEER_EVENT, in brcmf_cfg80211_attach()
6140 return cfg; in brcmf_cfg80211_attach()
6143 wiphy_unregister(cfg->wiphy); in brcmf_cfg80211_attach()
6145 wl_deinit_priv(cfg); in brcmf_cfg80211_attach()
6152 void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg) in brcmf_cfg80211_detach() argument
6154 if (!cfg) in brcmf_cfg80211_detach()
6157 WARN_ON(!list_empty(&cfg->vif_list)); in brcmf_cfg80211_detach()
6158 wiphy_unregister(cfg->wiphy); in brcmf_cfg80211_detach()
6159 brcmf_btcoex_detach(cfg); in brcmf_cfg80211_detach()
6160 brcmf_p2p_detach(&cfg->p2p); in brcmf_cfg80211_detach()
6161 wl_deinit_priv(cfg); in brcmf_cfg80211_detach()
6162 brcmf_free_wiphy(cfg->wiphy); in brcmf_cfg80211_detach()