Lines Matching full:cfg
107 void wl_cfg80211_cancel_p2plo(struct bcm_cfg80211 *cfg);
109 static void _wl_notify_scan_done(struct bcm_cfg80211 *cfg, bool aborted);
134 wl_cfg80211_clear_iw_ie(struct bcm_cfg80211 *cfg, struct net_device *ndev, s32 bssidx) in wl_cfg80211_clear_iw_ie() argument
147 cfg->ioctl_buf, WLC_IOCTL_MAXLEN, bssidx, &cfg->ioctl_buf_sync); in wl_cfg80211_clear_iw_ie()
151 wl_cfg80211_add_iw_ie(struct bcm_cfg80211 *cfg, struct net_device *ndev, s32 bssidx, s32 pktflag, in wl_cfg80211_add_iw_ie() argument
182 wl_get_iwdata_by_netdev(cfg, ndev, iw_ie, &iw_ie_len); in wl_cfg80211_add_iw_ie()
193 sizeof(ie_getbufp), getbuf, WLC_IOCTL_SMLEN, bssidx, &cfg->ioctl_buf_sync) in wl_cfg80211_add_iw_ie()
202 if (cfg->wl11u) { in wl_cfg80211_add_iw_ie()
203 if ((err = wl_cfg80211_clear_iw_ie(cfg, ndev, bssidx)) != BCME_OK) { in wl_cfg80211_add_iw_ie()
208 ie_setbuf = (ie_setbuf_t *)MALLOCZ(cfg->osh, buf_len); in wl_cfg80211_add_iw_ie()
228 cfg->ioctl_buf, WLC_IOCTL_MAXLEN, bssidx, &cfg->ioctl_buf_sync)) in wl_cfg80211_add_iw_ie()
231 cfg->wl11u = TRUE; in wl_cfg80211_add_iw_ie()
232 wl_set_iwdata_by_netdev(cfg, ndev, data, data_len); in wl_cfg80211_add_iw_ie()
236 MFREE(cfg->osh, ie_setbuf, buf_len); in wl_cfg80211_add_iw_ie()
244 wl_bcnrecv_result_handler(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev, in wl_bcnrecv_result_handler() argument
262 wiphy = cfg->wdev->wiphy; in wl_bcnrecv_result_handler()
268 bcn_recv = (wl_bcnrecv_result_t *)MALLOCZ(cfg->osh, sizeof(*bcn_recv)); in wl_bcnrecv_result_handler()
288 if ((err = wl_android_bcnrecv_event(cfgdev_to_wlc_ndev(cfgdev, cfg), in wl_bcnrecv_result_handler()
299 MFREE(cfg->osh, bcn_recv, sizeof(*bcn_recv)); in wl_bcnrecv_result_handler()
372 wl_escan_handler(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev, in wl_escan_handler() argument
392 ndev = cfgdev_to_wlc_ndev(cfgdev, cfg); in wl_escan_handler()
394 mutex_lock(&cfg->scan_sync); in wl_escan_handler()
396 if (wl_get_p2p_status(cfg, SCANNING)) { in wl_escan_handler()
397 if (wl_get_drv_status_all(cfg, SENDING_ACT_FRM)) in wl_escan_handler()
398 ndev = cfg->afx_hdl->dev; in wl_escan_handler()
400 ndev = cfg->escan_info.ndev; in wl_escan_handler()
404 if (cfg->bcnrecv_info.bcnrecv_state == BEACON_RECV_STARTED && in wl_escan_handler()
409 err = wl_bcnrecv_result_handler(cfg, cfgdev, bi_info, status); in wl_escan_handler()
413 if (!ndev || (!wl_get_drv_status(cfg, SCANNING, ndev) && !cfg->sched_scan_running)) { in wl_escan_handler()
416 wl_get_drv_status(cfg, SCANNING, ndev), in wl_escan_handler()
424 DBG_EVENT_LOG((dhd_pub_t *)cfg->pub, WIFI_EVENT_DRIVER_SCAN_RESULT_FOUND); in wl_escan_handler()
449 cfg->escan_info.cur_sync_id) < 0) in wl_escan_handler()
452 if (!(bcmcfg_to_wiphy(cfg)->interface_modes & BIT(NL80211_IFTYPE_ADHOC))) { in wl_escan_handler()
459 if (wl_get_drv_status_all(cfg, FINDING_COMMON_CHANNEL)) { in wl_escan_handler()
462 cfg->afx_hdl->tx_dst_addr.octet, ETHER_ADDR_LEN)) { in wl_escan_handler()
471 MAC2STRDBG(cfg->afx_hdl->tx_dst_addr.octet), in wl_escan_handler()
474 wl_clr_p2p_status(cfg, SCANNING); in wl_escan_handler()
475 cfg->afx_hdl->peer_chan = channel; in wl_escan_handler()
476 complete(&cfg->act_frm_scan); in wl_escan_handler()
489 list = wl_escan_get_buf(cfg, FALSE); in wl_escan_handler()
490 if (scan_req_match(cfg)) { in wl_escan_handler()
496 if ((cfg->p2p->search_state != WL_P2P_DISC_ST_SCAN) && in wl_escan_handler()
509 if ((cfg->curr_band == WLC_BAND_5G) && in wl_escan_handler()
659 if (wl_cfgp2p_is_p2p_specific_scan(cfg->scan_request)) { in wl_escan_handler()
661 wl_notify_escan_complete(cfg, cfg->escan_info.ndev, false, true); in wl_escan_handler()
667 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE; in wl_escan_handler()
668 wl_escan_print_sync_id(status, cfg->escan_info.cur_sync_id, in wl_escan_handler()
671 if (wl_get_drv_status_all(cfg, FINDING_COMMON_CHANNEL)) { in wl_escan_handler()
673 wl_clr_p2p_status(cfg, SCANNING); in wl_escan_handler()
674 wl_clr_drv_status(cfg, SCANNING, cfg->afx_hdl->dev); in wl_escan_handler()
675 if (cfg->afx_hdl->peer_chan == WL_INVALID) in wl_escan_handler()
676 complete(&cfg->act_frm_scan); in wl_escan_handler()
677 } else if ((likely(cfg->scan_request)) || (cfg->sched_scan_running)) { in wl_escan_handler()
679 DBG_EVENT_LOG((dhd_pub_t *)cfg->pub, WIFI_EVENT_DRIVER_SCAN_COMPLETE); in wl_escan_handler()
680 cfg->bss_list = wl_escan_get_buf(cfg, FALSE); in wl_escan_handler()
681 if (!scan_req_match(cfg)) { in wl_escan_handler()
683 cfg->bss_list->count)); in wl_escan_handler()
685 wl_inform_bss(cfg); in wl_escan_handler()
686 wl_notify_escan_complete(cfg, ndev, false, false); in wl_escan_handler()
688 wl_escan_increment_sync_id(cfg, SCAN_BUF_NEXT); in wl_escan_handler()
701 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE; in wl_escan_handler()
703 cfg->escan_info.cur_sync_id); in wl_escan_handler()
705 if (wl_get_drv_status_all(cfg, FINDING_COMMON_CHANNEL)) { in wl_escan_handler()
707 wl_clr_drv_status(cfg, SCANNING, cfg->afx_hdl->dev); in wl_escan_handler()
708 wl_clr_p2p_status(cfg, SCANNING); in wl_escan_handler()
709 if (cfg->afx_hdl->peer_chan == WL_INVALID) in wl_escan_handler()
710 complete(&cfg->act_frm_scan); in wl_escan_handler()
711 } else if ((likely(cfg->scan_request)) || (cfg->sched_scan_running)) { in wl_escan_handler()
715 if (p2p_scan(cfg) && cfg->scan_request && in wl_escan_handler()
716 (cfg->scan_request->flags & NL80211_SCAN_FLAG_FLUSH)) { in wl_escan_handler()
718 cfg->bss_list = wl_escan_get_buf(cfg, FALSE); in wl_escan_handler()
721 cfg->bss_list = wl_escan_get_buf(cfg, TRUE); in wl_escan_handler()
723 if (!scan_req_match(cfg)) { in wl_escan_handler()
725 cfg->bss_list->count)); in wl_escan_handler()
728 if (escan_result->sync_id != cfg->escan_info.cur_sync_id) { in wl_escan_handler()
736 escan_result->sync_id, cfg->escan_info.cur_sync_id)); in wl_escan_handler()
741 cfg->escan_info.cur_sync_id)); in wl_escan_handler()
742 wl_inform_bss(cfg); in wl_escan_handler()
743 wl_notify_escan_complete(cfg, ndev, true, false); in wl_escan_handler()
746 wl_inform_bss(cfg); in wl_escan_handler()
747 wl_notify_escan_complete(cfg, ndev, true, false); in wl_escan_handler()
753 wl_escan_increment_sync_id(cfg, SCAN_BUF_CNT); in wl_escan_handler()
755 WL_ERR(("WLC_E_STATUS_TIMEOUT : scan_request[%p]\n", cfg->scan_request)); in wl_escan_handler()
758 wl_notify_escan_complete(cfg, cfg->escan_info.ndev, true, true); in wl_escan_handler()
762 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE; in wl_escan_handler()
764 cfg->escan_info.cur_sync_id); in wl_escan_handler()
765 if (wl_get_drv_status_all(cfg, FINDING_COMMON_CHANNEL)) { in wl_escan_handler()
767 wl_clr_p2p_status(cfg, SCANNING); in wl_escan_handler()
768 wl_clr_drv_status(cfg, SCANNING, cfg->afx_hdl->dev); in wl_escan_handler()
769 if (cfg->afx_hdl->peer_chan == WL_INVALID) in wl_escan_handler()
770 complete(&cfg->act_frm_scan); in wl_escan_handler()
771 } else if ((likely(cfg->scan_request)) || (cfg->sched_scan_running)) { in wl_escan_handler()
772 cfg->bss_list = wl_escan_get_buf(cfg, TRUE); in wl_escan_handler()
773 if (!scan_req_match(cfg)) { in wl_escan_handler()
776 cfg->bss_list->count)); in wl_escan_handler()
778 wl_inform_bss(cfg); in wl_escan_handler()
779 wl_notify_escan_complete(cfg, ndev, true, false); in wl_escan_handler()
781 wl_escan_increment_sync_id(cfg, 2); in wl_escan_handler()
784 err = wl_escan_without_scan_cache(cfg, escan_result, ndev, e, status); in wl_escan_handler()
787 mutex_unlock(&cfg->scan_sync); in wl_escan_handler()
846 static s32 wl_find_listen_channel(struct bcm_cfg80211 *cfg, in wl_find_listen_channel() argument
909 wl_cfgscan_map_nl80211_scan_type(struct bcm_cfg80211 *cfg, struct cfg80211_scan_request *request) in wl_cfgscan_map_nl80211_scan_type() argument
941 wl_cfgscan_populate_scan_channels(struct bcm_cfg80211 *cfg, u16 *channel_list, in wl_cfgscan_populate_scan_channels() argument
958 if ((cfg->escan_info.ndev != bcmcfg_to_prmry_ndev(cfg)) && in wl_cfgscan_populate_scan_channels()
977 if (cfg->curr_band == WLC_BAND_5G) { in wl_cfgscan_populate_scan_channels()
985 if (cfg->curr_band == WLC_BAND_2G) { in wl_cfgscan_populate_scan_channels()
1005 wl_cfgscan_populate_scan_ssids(struct bcm_cfg80211 *cfg, u8 *buf_ptr, u32 buf_len, in wl_cfgscan_populate_scan_ssids() argument
1053 wl_scan_prep(struct bcm_cfg80211 *cfg, void *scan_params, u32 len, in wl_scan_prep() argument
1070 if (cfg->active_scan == PASSIVE_SCAN) { in wl_scan_prep()
1076 if (cfg->scan_params_v2) { in wl_scan_prep()
1089 scan_type += wl_cfgscan_map_nl80211_scan_type(cfg, request); in wl_scan_prep()
1134 wl_cfgscan_populate_scan_channels(cfg, in wl_scan_prep()
1145 wl_cfgscan_populate_scan_ssids(cfg, in wl_scan_prep()
1199 struct bcm_cfg80211 *cfg = wl_get_cfg(ndev); in wl_update_ap_chandef() local
1200 dhd_pub_t *dhd = (dhd_pub_t *) cfg->pub; in wl_update_ap_chandef()
1223 0x1001, bcmcfg_to_wiphy(cfg)); in wl_update_ap_chandef()
1229 wl_cfg80211_ch_switch_notify(net, chanspec, bcmcfg_to_wiphy(cfg)); in wl_update_ap_chandef()
1248 struct bcm_cfg80211 *cfg = wl_get_cfg(ndev); in wl_check_valid_channel_in_country() local
1252 if (!(wl_get_drv_status(cfg, CONNECTING, ndev) || in wl_check_valid_channel_in_country()
1253 wl_get_drv_status(cfg, CONNECTED, ndev))) { in wl_check_valid_channel_in_country()
1292 wl_set_drv_status(cfg, DISCONNECTING, ndev); in wl_check_valid_channel_in_country()
1298 wl_clr_drv_status(cfg, DISCONNECTING, ndev); in wl_check_valid_channel_in_country()
1304 while (!wl_get_drv_status(cfg, DISCONNECTING, ndev) && wait_cnt) { in wl_check_valid_channel_in_country()
1321 wl_run_escan(struct bcm_cfg80211 *cfg, struct net_device *ndev, in wl_run_escan() argument
1352 if (!cfg) { in wl_run_escan()
1357 if (cfg->scan_params_v2) { in wl_run_escan()
1387 if (!cfg->p2p_supported || !p2p_scan(cfg)) { in wl_run_escan()
1396 if (ndev == bcmcfg_to_prmry_ndev(cfg) && g_first_broadcast_scan == true) { in wl_run_escan()
1454 params = MALLOCZ(cfg->osh, params_size); in wl_run_escan()
1460 wl_escan_set_sync_id(sync_id, cfg); in wl_run_escan()
1461 if (cfg->scan_params_v2) { in wl_run_escan()
1475 if (wl_scan_prep(cfg, scan_params, params_size, request) < 0) { in wl_run_escan()
1492 wl_escan_set_type(cfg, WL_SCANTYPE_LEGACY); in wl_run_escan()
1495 MFREE(cfg->osh, params, params_size); in wl_run_escan()
1500 bssidx = wl_get_bssidx_by_wdev(cfg, ndev->ieee80211_ptr); in wl_run_escan()
1502 cfg->escan_ioctl_buf, WLC_IOCTL_MEDLEN, NULL); in wl_run_escan()
1511 DBG_EVENT_LOG((dhd_pub_t *)cfg->pub, WIFI_EVENT_DRIVER_SCAN_REQUESTED); in wl_run_escan()
1513 MFREE(cfg->osh, params, params_size); in wl_run_escan()
1515 else if (p2p_is_on(cfg) && p2p_scan(cfg)) { in wl_run_escan()
1524 default_chan_list = MALLOCZ(cfg->osh, chan_mem); in wl_run_escan()
1538 MFREE(cfg->osh, default_chan_list, chan_mem); in wl_run_escan()
1553 if ((cfg->curr_band != WLC_BAND_AUTO) && in wl_run_escan()
1554 (cfg->curr_band != channel_band) && in wl_run_escan()
1602 } else if (((dev = wl_to_p2p_bss_ndev(cfg, P2PAPI_BSSCFG_CONNECTION1)) && in wl_run_escan()
1603 (wl_get_mode_by_netdev(cfg, dev) == WL_MODE_AP)) || in wl_run_escan()
1604 ((dev = wl_to_p2p_bss_ndev(cfg, P2PAPI_BSSCFG_CONNECTION2)) && in wl_run_escan()
1605 (wl_get_mode_by_netdev(cfg, dev) == WL_MODE_AP))) { in wl_run_escan()
1629 err = wl_cfgp2p_escan(cfg, ndev, ACTIVE_SCAN, num_chans, default_chan_list, in wl_run_escan()
1631 wl_to_p2p_bss_bssidx(cfg, P2PAPI_BSSCFG_DEVICE), NULL, in wl_run_escan()
1635 cfg->p2p->search_state = search_state; in wl_run_escan()
1637 MFREE(cfg->osh, default_chan_list, chan_mem); in wl_run_escan()
1642 if ((err == BCME_EPERM) && cfg->scan_suppressed) in wl_run_escan()
1651 wl_do_escan(struct bcm_cfg80211 *cfg, struct wiphy *wiphy, struct net_device *ndev, in wl_do_escan() argument
1661 results = wl_escan_get_buf(cfg, FALSE); in wl_do_escan()
1666 cfg->escan_info.ndev = ndev; in wl_do_escan()
1667 cfg->escan_info.wiphy = wiphy; in wl_do_escan()
1668 cfg->escan_info.escan_state = WL_ESCAN_STATE_SCANING; in wl_do_escan()
1669 passive_scan = cfg->active_scan ? 0 : 1; in wl_do_escan()
1700 err = wl_run_escan(cfg, ndev, request, WL_SCAN_ACTION_START); in wl_do_escan()
1719 wl_get_scan_timeout_val(struct bcm_cfg80211 *cfg) in wl_get_scan_timeout_val() argument
1725 if ((cfg->custom_scan_channel_time > DHD_SCAN_ASSOC_ACTIVE_TIME) | in wl_get_scan_timeout_val()
1726 (cfg->custom_scan_unassoc_time > DHD_SCAN_UNASSOC_ACTIVE_TIME) | in wl_get_scan_timeout_val()
1727 (cfg->custom_scan_passive_time > DHD_SCAN_PASSIVE_TIME) | in wl_get_scan_timeout_val()
1728 (cfg->custom_scan_home_time > DHD_SCAN_HOME_TIME) | in wl_get_scan_timeout_val()
1729 (cfg->custom_scan_home_away_time > DHD_SCAN_HOME_AWAY_TIME)) { in wl_get_scan_timeout_val()
1737 if (cfg->nan_enable) { in wl_get_scan_timeout_val()
1747 wl_cfgscan_handle_scanbusy(struct bcm_cfg80211 *cfg, struct net_device *ndev, s32 err) in wl_cfgscan_handle_scanbusy() argument
1759 } else if ((err == BCME_EPERM) && cfg->scan_suppressed) { in wl_cfgscan_handle_scanbusy()
1777 dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub); in wl_cfgscan_handle_scanbusy()
1784 wl_get_drv_status(cfg, SCANNING, ndev), in wl_cfgscan_handle_scanbusy()
1785 wl_get_drv_status(cfg, SCAN_ABORTING, ndev), in wl_cfgscan_handle_scanbusy()
1786 wl_get_drv_status(cfg, CONNECTING, ndev), in wl_cfgscan_handle_scanbusy()
1787 wl_get_drv_status(cfg, CONNECTED, ndev), in wl_cfgscan_handle_scanbusy()
1788 wl_get_drv_status(cfg, DISCONNECTING, ndev), in wl_cfgscan_handle_scanbusy()
1789 wl_get_drv_status(cfg, AP_CREATING, ndev), in wl_cfgscan_handle_scanbusy()
1790 wl_get_drv_status(cfg, AP_CREATED, ndev), in wl_cfgscan_handle_scanbusy()
1791 wl_get_drv_status(cfg, SENDING_ACT_FRM, ndev), in wl_cfgscan_handle_scanbusy()
1792 wl_get_drv_status(cfg, SENDING_ACT_FRM, ndev))); in wl_cfgscan_handle_scanbusy()
1810 wl_cfg80211_scan_abort(cfg); in wl_cfgscan_handle_scanbusy()
1832 struct bcm_cfg80211 *cfg = wiphy_priv(wiphy); in __wl_cfg80211_scan() local
1864 ndev = ndev_to_wlc_ndev(ndev, cfg); in __wl_cfg80211_scan()
1866 if (WL_DRV_STATUS_SENDING_AF_FRM_EXT(cfg)) { in __wl_cfg80211_scan()
1872 if (wl_get_drv_status_all(cfg, SCANNING)) { in __wl_cfg80211_scan()
1873 if (cfg->scan_request == NULL) { in __wl_cfg80211_scan()
1874 wl_clr_drv_status_all(cfg, SCANNING); in __wl_cfg80211_scan()
1881 if (wl_get_drv_status(cfg, SCAN_ABORTING, ndev)) { in __wl_cfg80211_scan()
1890 if (request && cfg->in_csa) { in __wl_cfg80211_scan()
1901 mutex_lock(&cfg->scan_sync); in __wl_cfg80211_scan()
1902 remain_on_channel_ndev = wl_cfg80211_get_remain_on_channel_ndev(cfg); in __wl_cfg80211_scan()
1905 wl_notify_escan_complete(cfg, remain_on_channel_ndev, true, true); in __wl_cfg80211_scan()
1907 mutex_unlock(&cfg->scan_sync); in __wl_cfg80211_scan()
1911 wl_cfg80211_cancel_p2plo(cfg); in __wl_cfg80211_scan()
1933 if (cfg->p2p_supported) { in __wl_cfg80211_scan()
1935 if (p2p_on(cfg) == false) { in __wl_cfg80211_scan()
1937 p2p_on(cfg) = true; in __wl_cfg80211_scan()
1938 wl_cfgp2p_set_firm_p2p(cfg); in __wl_cfg80211_scan()
1939 get_primary_mac(cfg, &primary_mac); in __wl_cfg80211_scan()
1940 wl_cfgp2p_generate_bss_mac(cfg, &primary_mac); in __wl_cfg80211_scan()
1942 cfg->p2p_prb_noti = false; in __wl_cfg80211_scan()
1945 wl_clr_p2p_status(cfg, GO_NEG_PHASE); in __wl_cfg80211_scan()
1947 p2p_scan(cfg) = true; in __wl_cfg80211_scan()
1953 if (cfg->p2p_supported) { in __wl_cfg80211_scan()
1954 p2p_scan(cfg) = false; in __wl_cfg80211_scan()
1959 if (p2p_scan(cfg) == false) { in __wl_cfg80211_scan()
1960 if (wl_get_p2p_status(cfg, DISCOVERY_ON)) { in __wl_cfg80211_scan()
1961 err = wl_cfgp2p_discover_enable_search(cfg, in __wl_cfg80211_scan()
1970 if (!cfg->p2p_supported || !p2p_scan(cfg)) { in __wl_cfg80211_scan()
1971 if ((bssidx = wl_get_bssidx_by_wdev(cfg, in __wl_cfg80211_scan()
1979 wl_get_iwdata_by_netdev(cfg, ndev, iw_ie, &iw_ie_len); in __wl_cfg80211_scan()
1982 if ((err = wl_cfg80211_add_iw_ie(cfg, ndev, bssidx, in __wl_cfg80211_scan()
1990 wl_cfg80211_clear_iw_ie(cfg, ndev, bssidx); in __wl_cfg80211_scan()
2000 wl_clear_iwdata_by_netdev(cfg, ndev); in __wl_cfg80211_scan()
2001 cfg->wl11u = FALSE; in __wl_cfg80211_scan()
2005 err = wl_cfg80211_set_mgmt_vndr_ies(cfg, in __wl_cfg80211_scan()
2020 if (request && cfg->p2p_supported) { in __wl_cfg80211_scan()
2023 DHD_OS_SCAN_WAKE_LOCK_TIMEOUT((dhd_pub_t *)(cfg->pub), in __wl_cfg80211_scan()
2025 DHD_DISABLE_RUNTIME_PM((dhd_pub_t *)(cfg->pub)); in __wl_cfg80211_scan()
2029 if (cfg->p2p_supported) { in __wl_cfg80211_scan()
2030 if (request && p2p_on(cfg) && p2p_scan(cfg)) { in __wl_cfg80211_scan()
2033 cfg->afx_hdl->my_listen_chan = in __wl_cfg80211_scan()
2034 wl_find_listen_channel(cfg, request->ie, in __wl_cfg80211_scan()
2036 err = wl_cfgp2p_enable_discovery(cfg, ndev, in __wl_cfg80211_scan()
2045 mutex_lock(&cfg->scan_sync); in __wl_cfg80211_scan()
2046 err = wl_do_escan(cfg, wiphy, ndev, request); in __wl_cfg80211_scan()
2055 wl_cfgscan_handle_scanbusy(cfg, ndev, BCME_OK); in __wl_cfg80211_scan()
2056 cfg->scan_request = request; in __wl_cfg80211_scan()
2057 wl_set_drv_status(cfg, SCANNING, ndev); in __wl_cfg80211_scan()
2059 mod_timer(&cfg->scan_timeout, in __wl_cfg80211_scan()
2060 jiffies + msecs_to_jiffies(wl_get_scan_timeout_val(cfg))); in __wl_cfg80211_scan()
2061 mutex_unlock(&cfg->scan_sync); in __wl_cfg80211_scan()
2066 WL_CFG_DRV_LOCK(&cfg->cfgdrv_lock, flags); in __wl_cfg80211_scan()
2067 cfg->scan_request = NULL; in __wl_cfg80211_scan()
2068 WL_CFG_DRV_UNLOCK(&cfg->cfgdrv_lock, flags); in __wl_cfg80211_scan()
2069 mutex_unlock(&cfg->scan_sync); in __wl_cfg80211_scan()
2071 scanbusy_err = wl_cfgscan_handle_scanbusy(cfg, ndev, err); in __wl_cfg80211_scan()
2075 DHD_OS_SCAN_WAKE_UNLOCK((dhd_pub_t *)(cfg->pub)); in __wl_cfg80211_scan()
2083 DHD_OS_SCAN_WAKE_UNLOCK((dhd_pub_t *)(cfg->pub)); in __wl_cfg80211_scan()
2098 struct bcm_cfg80211 *cfg = wiphy_priv(wiphy); in wl_cfg80211_scan() local
2100 struct net_device *ndev = wdev_to_wlc_ndev(request->wdev, cfg); in wl_cfg80211_scan()
2104 RETURN_EIO_IF_NOT_UP(cfg); in wl_cfg80211_scan()
2115 if (ndev == bcmcfg_to_prmry_ndev(cfg)) { in wl_cfg80211_scan()
2116 if (wl_cfg_multip2p_operational(cfg)) { in wl_cfg80211_scan()
2130 reset_roam_cache(cfg); in wl_cfg80211_scan()
2142 wl_get_scan_wdev(struct bcm_cfg80211 *cfg) in wl_get_scan_wdev() argument
2146 if (!cfg) { in wl_get_scan_wdev()
2147 WL_ERR(("cfg ptr null\n")); in wl_get_scan_wdev()
2151 if (!cfg->scan_request && !cfg->sched_scan_req) { in wl_get_scan_wdev()
2157 if (cfg->scan_request) { in wl_get_scan_wdev()
2158 wdev = GET_SCAN_WDEV(cfg->scan_request); in wl_get_scan_wdev()
2160 } else if (cfg->sched_scan_req) { in wl_get_scan_wdev()
2161 wdev = GET_SCHED_SCAN_WDEV(cfg->sched_scan_req); in wl_get_scan_wdev()
2170 void wl_cfg80211_cancel_scan(struct bcm_cfg80211 *cfg) in wl_cfg80211_cancel_scan() argument
2175 mutex_lock(&cfg->scan_sync); in wl_cfg80211_cancel_scan()
2176 if (!cfg->scan_request && !cfg->sched_scan_req) { in wl_cfg80211_cancel_scan()
2182 wdev = wl_get_scan_wdev(cfg); in wl_cfg80211_cancel_scan()
2188 ndev = wdev_to_wlc_ndev(wdev, cfg); in wl_cfg80211_cancel_scan()
2189 wl_notify_escan_complete(cfg, ndev, true, true); in wl_cfg80211_cancel_scan()
2192 mutex_unlock(&cfg->scan_sync); in wl_cfg80211_cancel_scan()
2195 void wl_cfg80211_scan_abort(struct bcm_cfg80211 *cfg) in wl_cfg80211_scan_abort() argument
2200 struct net_device *dev = bcmcfg_to_prmry_ndev(cfg); in wl_cfg80211_scan_abort()
2205 if (cfg->scan_params_v2) { in wl_cfg80211_scan_abort()
2210 params = MALLOCZ(cfg->osh, params_size); in wl_cfg80211_scan_abort()
2220 if (cfg->scan_params_v2) { in wl_cfg80211_scan_abort()
2235 MFREE(cfg->osh, params, params_size); in wl_cfg80211_scan_abort()
2238 if (cfg->tdls_mgmt_frame) { in wl_cfg80211_scan_abort()
2239 MFREE(cfg->osh, cfg->tdls_mgmt_frame, cfg->tdls_mgmt_frame_len); in wl_cfg80211_scan_abort()
2240 cfg->tdls_mgmt_frame = NULL; in wl_cfg80211_scan_abort()
2241 cfg->tdls_mgmt_frame_len = 0; in wl_cfg80211_scan_abort()
2246 s32 wl_notify_escan_complete(struct bcm_cfg80211 *cfg, in wl_notify_escan_complete() argument
2253 dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub); in wl_notify_escan_complete()
2264 if (cfg->escan_info.ndev != ndev) { in wl_notify_escan_complete()
2266 cfg->escan_info.ndev, ndev)); in wl_notify_escan_complete()
2273 if (cfg->scanmac_enabled) { in wl_notify_escan_complete()
2278 if (cfg->scan_request) { in wl_notify_escan_complete()
2279 dev = bcmcfg_to_prmry_ndev(cfg); in wl_notify_escan_complete()
2281 if (cfg->scan_request->dev != cfg->p2p_net) in wl_notify_escan_complete()
2282 dev = cfg->scan_request->dev; in wl_notify_escan_complete()
2284 if (cfg->scan_request->wdev->iftype != NL80211_IFTYPE_P2P_DEVICE) in wl_notify_escan_complete()
2285 dev = cfg->scan_request->wdev->netdev; in wl_notify_escan_complete()
2289 WL_DBG(("cfg->scan_request is NULL. Internal scan scenario." in wl_notify_escan_complete()
2291 ndev, bcmcfg_to_prmry_ndev(cfg))); in wl_notify_escan_complete()
2295 wl_cfg80211_scan_abort(cfg); in wl_notify_escan_complete()
2296 if (timer_pending(&cfg->scan_timeout)) in wl_notify_escan_complete()
2297 del_timer_sync(&cfg->scan_timeout); in wl_notify_escan_complete()
2298 cfg->scan_enq_time = 0; in wl_notify_escan_complete()
2300 if (likely(cfg->scan_request)) { in wl_notify_escan_complete()
2302 if (aborted && cfg->p2p && p2p_scan(cfg) && in wl_notify_escan_complete()
2303 (cfg->scan_request->flags & NL80211_SCAN_FLAG_FLUSH)) { in wl_notify_escan_complete()
2305 cfg->bss_list = wl_escan_get_buf(cfg, !aborted); in wl_notify_escan_complete()
2308 cfg->bss_list = wl_escan_get_buf(cfg, aborted); in wl_notify_escan_complete()
2310 wl_inform_bss(cfg); in wl_notify_escan_complete()
2313 WL_CFG_DRV_LOCK(&cfg->cfgdrv_lock, flags); in wl_notify_escan_complete()
2315 if (cfg->sched_scan_req && !cfg->scan_request) { in wl_notify_escan_complete()
2319 cfg80211_sched_scan_results(cfg->sched_scan_req->wiphy, in wl_notify_escan_complete()
2320 cfg->sched_scan_req->reqid); in wl_notify_escan_complete()
2322 cfg80211_sched_scan_results(cfg->sched_scan_req->wiphy); in wl_notify_escan_complete()
2327 cfg->sched_scan_running = FALSE; in wl_notify_escan_complete()
2328 cfg->sched_scan_req = NULL; in wl_notify_escan_complete()
2331 if (likely(cfg->scan_request)) { in wl_notify_escan_complete()
2334 _wl_notify_scan_done(cfg, aborted); in wl_notify_escan_complete()
2335 cfg->scan_request = NULL; in wl_notify_escan_complete()
2337 if (cfg->p2p && p2p_is_on(cfg)) in wl_notify_escan_complete()
2338 wl_clr_p2p_status(cfg, SCANNING); in wl_notify_escan_complete()
2339 wl_clr_drv_status(cfg, SCANNING, dev); in wl_notify_escan_complete()
2342 DHD_OS_SCAN_WAKE_UNLOCK((dhd_pub_t *)(cfg->pub)); in wl_notify_escan_complete()
2343 DHD_ENABLE_RUNTIME_PM((dhd_pub_t *)(cfg->pub)); in wl_notify_escan_complete()
2345 WL_CFG_DRV_UNLOCK(&cfg->cfgdrv_lock, flags); in wl_notify_escan_complete()
2355 struct bcm_cfg80211 *cfg; in wl_cfg80211_abort_scan() local
2358 cfg = wiphy_priv(wdev->wiphy); in wl_cfg80211_abort_scan()
2361 if (wl_get_drv_status_all(cfg, SCANNING)) { in wl_cfg80211_abort_scan()
2362 wl_cfg80211_scan_abort(cfg); in wl_cfg80211_abort_scan()
2373 int wl_cfg80211_scan_stop(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev) in wl_cfg80211_scan_stop() argument
2379 if (!cfg || !cfgdev) { in wl_cfg80211_scan_stop()
2384 wl_cfg80211_cancel_scan(cfg); in wl_cfg80211_scan_stop()
2394 _wl_notify_scan_done(struct bcm_cfg80211 *cfg, bool aborted) in _wl_notify_scan_done() argument
2400 if (!cfg->scan_request) { in _wl_notify_scan_done()
2407 cfg80211_scan_done(cfg->scan_request, &info); in _wl_notify_scan_done()
2409 cfg80211_scan_done(cfg->scan_request, aborted); in _wl_notify_scan_done()
2411 cfg->scan_request = NULL; in _wl_notify_scan_done()
2415 static u32 wl_p2p_find_peer_channel(struct bcm_cfg80211 *cfg, s32 status, wl_bss_info_t *bi, in wl_p2p_find_peer_channel() argument
2421 ret = wl_get_drv_status_all(cfg, FINDING_COMMON_CHANNEL); in wl_p2p_find_peer_channel()
2428 cfg->afx_hdl->tx_dst_addr.octet, ETHER_ADDR_LEN)) { in wl_p2p_find_peer_channel()
2437 MAC2STRDBG(cfg->afx_hdl->tx_dst_addr.octet), in wl_p2p_find_peer_channel()
2440 wl_clr_p2p_status(cfg, SCANNING); in wl_p2p_find_peer_channel()
2441 cfg->afx_hdl->peer_chan = channel; in wl_p2p_find_peer_channel()
2442 complete(&cfg->act_frm_scan); in wl_p2p_find_peer_channel()
2446 wl_clr_p2p_status(cfg, SCANNING); in wl_p2p_find_peer_channel()
2447 wl_clr_drv_status(cfg, SCANNING, cfg->afx_hdl->dev); in wl_p2p_find_peer_channel()
2448 if (cfg->afx_hdl->peer_chan == WL_INVALID) in wl_p2p_find_peer_channel()
2449 complete(&cfg->act_frm_scan); in wl_p2p_find_peer_channel()
2455 static s32 wl_escan_without_scan_cache(struct bcm_cfg80211 *cfg, wl_escan_result_t *escan_result, in wl_escan_without_scan_cache() argument
2466 cfg->escan_info.cur_sync_id) < 0) { in wl_escan_without_scan_cache()
2471 cfg->escan_info.cur_sync_id); in wl_escan_without_scan_cache()
2474 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE; in wl_escan_without_scan_cache()
2477 if ((likely(cfg->scan_request)) || (cfg->sched_scan_running)) { in wl_escan_without_scan_cache()
2483 DBG_EVENT_LOG((dhd_pub_t *)cfg->pub, WIFI_EVENT_DRIVER_SCAN_RESULT_FOUND); in wl_escan_without_scan_cache()
2498 if (!(bcmcfg_to_wiphy(cfg)->interface_modes & BIT(NL80211_IFTYPE_ADHOC))) { in wl_escan_without_scan_cache()
2505 if (wl_p2p_find_peer_channel(cfg, status, bi, bi_length)) { in wl_escan_without_scan_cache()
2508 if (scan_req_match(cfg)) { in wl_escan_without_scan_cache()
2510 if ((cfg->p2p->search_state != WL_P2P_DISC_ST_SCAN) && in wl_escan_without_scan_cache()
2515 add_roam_cache(cfg, bi); in wl_escan_without_scan_cache()
2517 err = wl_inform_single_bss(cfg, bi, false); in wl_escan_without_scan_cache()
2520 update_roam_cache(cfg, ioctl_version); in wl_escan_without_scan_cache()
2527 if (wl_cfgp2p_is_p2p_specific_scan(cfg->scan_request)) { in wl_escan_without_scan_cache()
2538 if (wl_p2p_find_peer_channel(cfg, status, NULL, 0)) { in wl_escan_without_scan_cache()
2542 DBG_EVENT_LOG((dhd_pub_t *)cfg->pub, WIFI_EVENT_DRIVER_SCAN_COMPLETE); in wl_escan_without_scan_cache()
2558 if (wl_p2p_find_peer_channel(cfg, status, NULL, 0)) { in wl_escan_without_scan_cache()
2568 WL_ERR(("WLC_E_STATUS_TIMEOUT : scan_request[%p]\n", cfg->scan_request)); in wl_escan_without_scan_cache()
2578 if (wl_p2p_find_peer_channel(cfg, status, NULL, 0)) { in wl_escan_without_scan_cache()
2588 wl_notify_escan_complete(cfg, ndev, aborted, fw_abort); in wl_escan_without_scan_cache()
2598 wl_notify_scan_status(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev, in wl_notify_scan_status() argument
2610 ndev = cfgdev_to_wlc_ndev(cfgdev, cfg); in wl_notify_scan_status()
2612 if (!ndev || !wl_get_drv_status(cfg, SCANNING, ndev)) { in wl_notify_scan_status()
2617 mutex_lock(&cfg->scan_sync); in wl_notify_scan_status()
2618 wl_clr_drv_status(cfg, SCANNING, ndev); in wl_notify_scan_status()
2632 cfg->bss_list = cfg->scan_results; in wl_notify_scan_status()
2633 bss_list = cfg->bss_list; in wl_notify_scan_status()
2637 if (unlikely(err) && unlikely(!cfg->scan_suppressed)) { in wl_notify_scan_status()
2646 err = wl_inform_bss(cfg); in wl_notify_scan_status()
2649 del_timer_sync(&cfg->scan_timeout); in wl_notify_scan_status()
2650 WL_CFG_DRV_LOCK(&cfg->cfgdrv_lock, flags); in wl_notify_scan_status()
2651 if (cfg->scan_request) { in wl_notify_scan_status()
2652 _wl_notify_scan_done(cfg, false); in wl_notify_scan_status()
2653 cfg->scan_request = NULL; in wl_notify_scan_status()
2655 WL_CFG_DRV_UNLOCK(&cfg->cfgdrv_lock, flags); in wl_notify_scan_status()
2657 mutex_unlock(&cfg->scan_sync); in wl_notify_scan_status()
2661 void wl_notify_scan_done(struct bcm_cfg80211 *cfg, bool aborted) in wl_notify_scan_done() argument
2668 cfg80211_scan_done(cfg->scan_request, &info); in wl_notify_scan_done()
2670 cfg80211_scan_done(cfg->scan_request, aborted); in wl_notify_scan_done()
2678 struct bcm_cfg80211 *cfg = wl_get_cfg(dev); in wl_cfg80211_set_random_mac() local
2681 if (cfg->random_mac_enabled == enable) { in wl_cfg80211_set_random_mac()
2693 cfg->random_mac_enabled = enable; in wl_cfg80211_set_random_mac()
2705 struct bcm_cfg80211 *cfg = wl_get_cfg(dev); in wl_cfg80211_random_mac_enable() local
2714 if (wl_get_drv_status_all(cfg, CONNECTED) || wl_get_drv_status_all(cfg, CONNECTING) || in wl_cfg80211_random_mac_enable()
2715 wl_get_drv_status_all(cfg, AP_CREATED) || wl_get_drv_status_all(cfg, AP_CREATING)) { in wl_cfg80211_random_mac_enable()
2720 (void)memcpy_s(random_mac, ETH_ALEN, bcmcfg_to_prmry_ndev(cfg)->dev_addr, ETH_ALEN); in wl_cfg80211_random_mac_enable()
2733 err = wldev_iovar_setbuf_bsscfg(bcmcfg_to_prmry_ndev(cfg), "cur_etheraddr", in wl_cfg80211_random_mac_enable()
2734 random_mac, ETH_ALEN, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); in wl_cfg80211_random_mac_enable()
2740 MAC2STRDBG((const u8 *)bcmcfg_to_prmry_ndev(cfg)->dev_addr), in wl_cfg80211_random_mac_enable()
2754 sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); in wl_cfg80211_random_mac_enable()
2768 err = wldev_iovar_setbuf_bsscfg(bcmcfg_to_prmry_ndev(cfg), "cur_etheraddr", in wl_cfg80211_random_mac_enable()
2769 random_mac, ETH_ALEN, cfg->ioctl_buf, in wl_cfg80211_random_mac_enable()
2770 WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); in wl_cfg80211_random_mac_enable()
2775 MAC2STRDBG((const u8 *)bcmcfg_to_prmry_ndev(cfg)->dev_addr), in wl_cfg80211_random_mac_enable()
2805 sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); in wl_cfg80211_random_mac_enable()
2827 struct bcm_cfg80211 *cfg = wl_get_cfg(dev); in wl_cfg80211_random_mac_disable() local
2837 MAC2STRDBG((const u8 *)bcmcfg_to_prmry_ndev(cfg)->dev_addr))); in wl_cfg80211_random_mac_disable()
2839 err = wldev_iovar_setbuf_bsscfg(bcmcfg_to_prmry_ndev(cfg), "cur_etheraddr", in wl_cfg80211_random_mac_disable()
2840 bcmcfg_to_prmry_ndev(cfg)->dev_addr, ETH_ALEN, in wl_cfg80211_random_mac_disable()
2841 cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); in wl_cfg80211_random_mac_disable()
2859 sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); in wl_cfg80211_random_mac_disable()
2866 cfg->scanmac_enabled = 0; in wl_cfg80211_random_mac_disable()
2886 struct bcm_cfg80211 *cfg = wl_get_cfg(dev); in wl_cfg80211_scan_mac_enable() local
2903 if (wl_get_drv_status_all(cfg, CONNECTED) || wl_get_drv_status_all(cfg, CONNECTING) || in wl_cfg80211_scan_mac_enable()
2904 wl_get_drv_status_all(cfg, AP_CREATED) || wl_get_drv_status_all(cfg, AP_CREATING)) { in wl_cfg80211_scan_mac_enable()
2918 sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); in wl_cfg80211_scan_mac_enable()
2959 sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); in wl_cfg80211_scan_mac_enable()
2969 cfg->scanmac_enabled = 1; in wl_cfg80211_scan_mac_enable()
3019 struct bcm_cfg80211 *cfg = wiphy_priv(wiphy); in wl_cfg80211_sched_scan_start() local
3020 dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub); in wl_cfg80211_sched_scan_start()
3057 event_data = (log_conn_event_t *)MALLOC(cfg->osh, alloc_len); in wl_cfg80211_sched_scan_start()
3066 event_data->tlvs = (tlv_log *)MALLOC(cfg->osh, tlv_len); in wl_cfg80211_sched_scan_start()
3070 MFREE(cfg->osh, event_data, alloc_len); in wl_cfg80211_sched_scan_start()
3127 WL_CFG_DRV_LOCK(&cfg->cfgdrv_lock, flags); in wl_cfg80211_sched_scan_start()
3128 cfg->sched_scan_req = request; in wl_cfg80211_sched_scan_start()
3129 WL_CFG_DRV_UNLOCK(&cfg->cfgdrv_lock, flags); in wl_cfg80211_sched_scan_start()
3148 WL_CFG_DRV_LOCK(&cfg->cfgdrv_lock, flags); in wl_cfg80211_sched_scan_start()
3149 cfg->sched_scan_req = NULL; in wl_cfg80211_sched_scan_start()
3150 cfg->sched_scan_running = FALSE; in wl_cfg80211_sched_scan_start()
3151 WL_CFG_DRV_UNLOCK(&cfg->cfgdrv_lock, flags); in wl_cfg80211_sched_scan_start()
3158 MFREE(cfg->osh, event_data->tlvs, tlv_len); in wl_cfg80211_sched_scan_start()
3159 MFREE(cfg->osh, event_data, alloc_len); in wl_cfg80211_sched_scan_start()
3172 struct bcm_cfg80211 *cfg = wiphy_priv(wiphy); in wl_cfg80211_sched_scan_stop() local
3173 dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub); in wl_cfg80211_sched_scan_stop()
3185 if (cfg->sched_scan_req || cfg->sched_scan_running) { in wl_cfg80211_sched_scan_stop()
3187 wl_cfg80211_cancel_scan(cfg); in wl_cfg80211_sched_scan_stop()
3189 WL_CFG_DRV_LOCK(&cfg->cfgdrv_lock, flags); in wl_cfg80211_sched_scan_stop()
3190 cfg->sched_scan_req = NULL; in wl_cfg80211_sched_scan_stop()
3191 cfg->sched_scan_running = FALSE; in wl_cfg80211_sched_scan_stop()
3192 WL_CFG_DRV_UNLOCK(&cfg->cfgdrv_lock, flags); in wl_cfg80211_sched_scan_stop()
3202 struct bcm_cfg80211 *cfg = wl_get_cfg(dev); in wl_cfg80211_custom_scan_time() local
3204 if (cfg == NULL) { in wl_cfg80211_custom_scan_time()
3211 cfg->custom_scan_channel_time = time; in wl_cfg80211_custom_scan_time()
3215 cfg->custom_scan_unassoc_time = time; in wl_cfg80211_custom_scan_time()
3219 cfg->custom_scan_passive_time = time; in wl_cfg80211_custom_scan_time()
3223 cfg->custom_scan_home_time = time; in wl_cfg80211_custom_scan_time()
3227 cfg->custom_scan_home_away_time = time; in wl_cfg80211_custom_scan_time()
3266 struct bcm_cfg80211 *cfg = (struct bcm_cfg80211 *)data; in wl_scan_timeout() local
3274 dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub); in wl_scan_timeout()
3282 WL_CFG_DRV_LOCK(&cfg->cfgdrv_lock, flags); in wl_scan_timeout()
3283 if (!(cfg->scan_request)) { in wl_scan_timeout()
3285 WL_CFG_DRV_UNLOCK(&cfg->cfgdrv_lock, flags); in wl_scan_timeout()
3289 wdev = GET_SCAN_WDEV(cfg->scan_request); in wl_scan_timeout()
3290 WL_CFG_DRV_UNLOCK(&cfg->cfgdrv_lock, flags); in wl_scan_timeout()
3302 ((cfg->scan_deq_time < cfg->scan_enq_time) || in wl_scan_timeout()
3314 "\ncurrent_time:"SEC_USEC_FMT"\n", work_busy(&cfg->event_work), in wl_scan_timeout()
3315 GET_SEC_USEC(cfg->scan_enq_time), GET_SEC_USEC(cfg->wl_evt_hdlr_entry_time), in wl_scan_timeout()
3316 GET_SEC_USEC(cfg->wl_evt_deq_time), GET_SEC_USEC(cfg->scan_deq_time), in wl_scan_timeout()
3317 GET_SEC_USEC(cfg->scan_hdlr_cmplt_time), GET_SEC_USEC(cfg->scan_cmplt_time), in wl_scan_timeout()
3318 GET_SEC_USEC(cfg->wl_evt_hdlr_exit_time), GET_SEC_USEC(cur_time))); in wl_scan_timeout()
3319 if (cfg->scan_enq_time) { in wl_scan_timeout()
3320 WL_ERR(("Elapsed time(ns): %llu\n", (cur_time - cfg->scan_enq_time))); in wl_scan_timeout()
3323 mutex_is_locked(&cfg->if_sync), in wl_scan_timeout()
3324 mutex_is_locked(&cfg->usr_sync), in wl_scan_timeout()
3325 mutex_is_locked(&cfg->pm_sync), in wl_scan_timeout()
3326 mutex_is_locked(&cfg->scan_sync), in wl_scan_timeout()
3327 spin_is_locked(&cfg->cfgdrv_lock), in wl_scan_timeout()
3328 spin_is_locked(&cfg->eq_lock))); in wl_scan_timeout()
3334 mutex_is_locked(&cfg->nancfg.nan_sync), in wl_scan_timeout()
3350 bss_list = wl_escan_get_buf(cfg, FALSE); in wl_scan_timeout()
3364 ndev = wdev_to_wlc_ndev(wdev, cfg); in wl_scan_timeout()
3388 s32 wl_init_scan(struct bcm_cfg80211 *cfg) in wl_init_scan() argument
3392 cfg->evt_handler[WLC_E_ESCAN_RESULT] = wl_escan_handler; in wl_init_scan()
3393 cfg->escan_info.escan_state = WL_ESCAN_STATE_IDLE; in wl_init_scan()
3394 wl_escan_init_sync_id(cfg); in wl_init_scan()
3397 init_timer_compat(&cfg->scan_timeout, wl_scan_timeout, cfg); in wl_init_scan()
3399 wl_cfg80211_set_bcmcfg(cfg); in wl_init_scan()
3410 wl_notify_sched_scan_results(struct bcm_cfg80211 *cfg, struct net_device *ndev, in wl_notify_sched_scan_results() argument
3415 struct wiphy *wiphy = bcmcfg_to_wiphy(cfg); in wl_notify_sched_scan_results()
3416 dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub); in wl_notify_sched_scan_results()
3458 request = (struct cfg80211_scan_request *)MALLOCZ(cfg->osh, in wl_notify_sched_scan_results()
3460 channel = (struct ieee80211_channel *)MALLOCZ(cfg->osh, in wl_notify_sched_scan_results()
3473 event_data = (log_conn_event_t *)MALLOC(cfg->osh, alloc_len); in wl_notify_sched_scan_results()
3480 event_data->tlvs = (tlv_log *)MALLOC(cfg->osh, tlv_len); in wl_notify_sched_scan_results()
3573 if (wl_get_drv_status_all(cfg, SCANNING)) { in wl_notify_sched_scan_results()
3575 wl_cfg80211_cancel_scan(cfg); in wl_notify_sched_scan_results()
3578 if (wl_get_p2p_status(cfg, DISCOVERY_ON)) { in wl_notify_sched_scan_results()
3580 err = wl_cfgp2p_discover_enable_search(cfg, false); in wl_notify_sched_scan_results()
3582 wl_clr_drv_status(cfg, SCANNING, ndev); in wl_notify_sched_scan_results()
3585 p2p_scan(cfg) = false; in wl_notify_sched_scan_results()
3587 wl_set_drv_status(cfg, SCANNING, ndev); in wl_notify_sched_scan_results()
3590 err = wl_do_escan(cfg, wiphy, ndev, NULL); in wl_notify_sched_scan_results()
3593 err = wl_do_escan(cfg, wiphy, ndev, request); in wl_notify_sched_scan_results()
3596 wl_clr_drv_status(cfg, SCANNING, ndev); in wl_notify_sched_scan_results()
3600 cfg->sched_scan_running = TRUE; in wl_notify_sched_scan_results()
3625 request = (struct cfg80211_scan_request *)MALLOCZ(cfg->osh, in wl_notify_sched_scan_results()
3627 channel = (struct ieee80211_channel *)MALLOCZ(cfg->osh, in wl_notify_sched_scan_results()
3640 event_data = (log_conn_event_t *)MALLOC(cfg->osh, alloc_len); in wl_notify_sched_scan_results()
3647 event_data->tlvs = (tlv_log *)MALLOC(cfg->osh, tlv_len); in wl_notify_sched_scan_results()
3729 if (wl_get_drv_status_all(cfg, SCANNING)) { in wl_notify_sched_scan_results()
3731 wl_cfg80211_cancel_scan(cfg); in wl_notify_sched_scan_results()
3734 if (wl_get_p2p_status(cfg, DISCOVERY_ON)) { in wl_notify_sched_scan_results()
3736 err = wl_cfgp2p_discover_enable_search(cfg, false); in wl_notify_sched_scan_results()
3738 wl_clr_drv_status(cfg, SCANNING, ndev); in wl_notify_sched_scan_results()
3741 p2p_scan(cfg) = false; in wl_notify_sched_scan_results()
3744 wl_set_drv_status(cfg, SCANNING, ndev); in wl_notify_sched_scan_results()
3747 err = wl_do_escan(cfg, wiphy, ndev, NULL); in wl_notify_sched_scan_results()
3750 err = wl_do_escan(cfg, wiphy, ndev, request); in wl_notify_sched_scan_results()
3753 wl_clr_drv_status(cfg, SCANNING, ndev); in wl_notify_sched_scan_results()
3757 cfg->sched_scan_running = TRUE; in wl_notify_sched_scan_results()
3769 MFREE(cfg->osh, request, in wl_notify_sched_scan_results()
3773 MFREE(cfg->osh, channel, in wl_notify_sched_scan_results()
3779 MFREE(cfg->osh, event_data->tlvs, tlv_len); in wl_notify_sched_scan_results()
3781 MFREE(cfg->osh, event_data, alloc_len); in wl_notify_sched_scan_results()
3789 wl_notify_pfn_status(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev, in wl_notify_pfn_status() argument
3797 struct wiphy *wiphy = bcmcfg_to_wiphy(cfg); in wl_notify_pfn_status()
3807 ndev = cfgdev_to_wlc_ndev(cfgdev, cfg); in wl_notify_pfn_status()
3813 MFREE(cfg->osh, ptr, send_evt_bytes); in wl_notify_pfn_status()
3820 mutex_lock(&cfg->usr_sync); in wl_notify_pfn_status()
3823 mutex_unlock(&cfg->usr_sync); in wl_notify_pfn_status()
3828 wl_notify_sched_scan_results(cfg, ndev, e, data); in wl_notify_pfn_status()
3836 wl_notify_gscan_event(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev, in wl_notify_gscan_event() argument
3844 struct net_device *ndev = cfgdev_to_wlc_ndev(cfgdev, cfg); in wl_notify_gscan_event()
3845 struct wiphy *wiphy = bcmcfg_to_wiphy(cfg); in wl_notify_gscan_event()
3892 MFREE(cfg->osh, ptr, buf_len); in wl_notify_gscan_event()
3905 MFREE(cfg->osh, ptr, send_evt_bytes); in wl_notify_gscan_event()
3915 MFREE(cfg->osh, ptr, send_evt_bytes); in wl_notify_gscan_event()
3930 struct bcm_cfg80211 *cfg = wl_get_cfg(dev); in wl_cfg80211_set_passive_scan() local
3933 cfg->active_scan = 1; in wl_cfg80211_set_passive_scan()
3935 cfg->active_scan = 0; in wl_cfg80211_set_passive_scan()