Lines Matching refs:ar
148 struct ath6kl *ar = vif->ar; in __ath6kl_cfg80211_sscan_stop() local
155 if (ar->state == ATH6KL_STATE_RECOVERY) in __ath6kl_cfg80211_sscan_stop()
158 ath6kl_wmi_enable_sched_scan_cmd(ar->wmi, vif->fw_vif_idx, false); in __ath6kl_cfg80211_sscan_stop()
165 struct ath6kl *ar = vif->ar; in ath6kl_cfg80211_sscan_disable() local
173 cfg80211_sched_scan_stopped(ar->wiphy); in ath6kl_cfg80211_sscan_disable()
287 struct ath6kl *ar = vif->ar; in ath6kl_cfg80211_ready() local
289 if (!test_bit(WMI_READY, &ar->flag)) { in ath6kl_cfg80211_ready()
325 struct ath6kl *ar = vif->ar; in ath6kl_set_assoc_req_ies() local
335 ar->connect_ctrl_flags &= ~CONNECT_WPS_FLAG; in ath6kl_set_assoc_req_ies()
356 ar->connect_ctrl_flags |= CONNECT_WPS_FLAG; in ath6kl_set_assoc_req_ies()
362 ret = ath6kl_wmi_set_appie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_set_assoc_req_ies()
390 static bool ath6kl_is_valid_iftype(struct ath6kl *ar, enum nl80211_iftype type, in ath6kl_is_valid_iftype() argument
398 if (ar->ibss_if_active || ((type == NL80211_IFTYPE_ADHOC) && in ath6kl_is_valid_iftype()
399 ar->num_vif)) in ath6kl_is_valid_iftype()
404 for (i = 0; i < ar->vif_max; i++) { in ath6kl_is_valid_iftype()
405 if ((ar->avail_idx_map) & BIT(i)) { in ath6kl_is_valid_iftype()
414 for (i = ar->max_norm_iface; i < ar->vif_max; i++) { in ath6kl_is_valid_iftype()
415 if ((ar->avail_idx_map) & BIT(i)) { in ath6kl_is_valid_iftype()
425 static bool ath6kl_is_tx_pending(struct ath6kl *ar) in ath6kl_is_tx_pending() argument
427 return ar->tx_pending[ath6kl_wmi_get_control_ep(ar->wmi)] == 0; in ath6kl_is_tx_pending()
435 if (WARN_ON(!test_bit(WMI_READY, &vif->ar->flag))) in ath6kl_cfg80211_sta_bmiss_enhance()
442 vif->ar->fw_capabilities)) in ath6kl_cfg80211_sta_bmiss_enhance()
448 err = ath6kl_wmi_sta_bmiss_enhance_cmd(vif->ar->wmi, in ath6kl_cfg80211_sta_bmiss_enhance()
458 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_connect() local
461 u8 nw_subtype = (ar->p2p) ? SUBTYPE_P2PDEV : SUBTYPE_NONE; in ath6kl_cfg80211_connect()
471 if (test_bit(DESTROY_IN_PROGRESS, &ar->flag)) { in ath6kl_cfg80211_connect()
476 if (test_bit(SKIP_SCAN, &ar->flag) && in ath6kl_cfg80211_connect()
483 if (down_interruptible(&ar->sem)) { in ath6kl_cfg80211_connect()
488 if (test_bit(DESTROY_IN_PROGRESS, &ar->flag)) { in ath6kl_cfg80211_connect()
490 up(&ar->sem); in ath6kl_cfg80211_connect()
494 if (ar->tx_pending[ath6kl_wmi_get_control_ep(ar->wmi)]) { in ath6kl_cfg80211_connect()
498 wait_event_interruptible_timeout(ar->event_wq, in ath6kl_cfg80211_connect()
499 ath6kl_is_tx_pending(ar), in ath6kl_cfg80211_connect()
503 up(&ar->sem); in ath6kl_cfg80211_connect()
510 up(&ar->sem); in ath6kl_cfg80211_connect()
515 ar->connect_ctrl_flags &= ~CONNECT_WPS_FLAG; in ath6kl_cfg80211_connect()
521 status = ath6kl_wmi_reconnect_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_connect()
525 up(&ar->sem); in ath6kl_cfg80211_connect()
551 up(&ar->sem); in ath6kl_cfg80211_connect()
573 up(&ar->sem); in ath6kl_cfg80211_connect()
583 ath6kl_wmi_addkey_cmd(ar->wmi, vif->fw_vif_idx, sme->key_idx, in ath6kl_cfg80211_connect()
592 if (!ar->usr_bss_filter) { in ath6kl_cfg80211_connect()
594 if (ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_connect()
597 up(&ar->sem); in ath6kl_cfg80211_connect()
624 status = ath6kl_wmi_listeninterval_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_connect()
629 up(&ar->sem); in ath6kl_cfg80211_connect()
634 status = ath6kl_wmi_connect_cmd(ar->wmi, vif->fw_vif_idx, vif->nw_type, in ath6kl_cfg80211_connect()
641 ar->connect_ctrl_flags, nw_subtype); in ath6kl_cfg80211_connect()
651 ath6kl_wmi_scanparams_cmd(ar->wmi, vif->fw_vif_idx, 0, 0, in ath6kl_cfg80211_connect()
654 up(&ar->sem); in ath6kl_cfg80211_connect()
666 if ((!(ar->connect_ctrl_flags & CONNECT_DO_WPA_OFFLOAD)) && in ath6kl_cfg80211_connect()
673 ar->connect_ctrl_flags &= ~CONNECT_DO_WPA_OFFLOAD; in ath6kl_cfg80211_connect()
687 struct ath6kl *ar = vif->ar; in ath6kl_add_bss_if_needed() local
701 bss = cfg80211_get_bss(ar->wiphy, chan, bssid, in ath6kl_add_bss_if_needed()
720 bss = cfg80211_inform_bss(ar->wiphy, chan, in ath6kl_add_bss_if_needed()
744 struct ath6kl *ar = vif->ar; in ath6kl_cfg80211_connect_event() local
784 chan = ieee80211_get_channel(ar->wiphy, (int) channel); in ath6kl_cfg80211_connect_event()
797 cfg80211_put_bss(ar->wiphy, bss); in ath6kl_cfg80211_connect_event()
808 cfg80211_put_bss(ar->wiphy, bss); in ath6kl_cfg80211_connect_event()
819 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_disconnect() local
830 if (test_bit(DESTROY_IN_PROGRESS, &ar->flag)) { in ath6kl_cfg80211_disconnect()
835 if (down_interruptible(&ar->sem)) { in ath6kl_cfg80211_disconnect()
845 if (!test_bit(SKIP_SCAN, &ar->flag)) in ath6kl_cfg80211_disconnect()
848 up(&ar->sem); in ath6kl_cfg80211_disconnect()
859 struct ath6kl *ar = vif->ar; in ath6kl_cfg80211_disconnect_event() local
906 ath6kl_wmi_disconnect_cmd(ar->wmi, vif->fw_vif_idx); in ath6kl_cfg80211_disconnect_event()
909 static int ath6kl_set_probed_ssids(struct ath6kl *ar, in ath6kl_set_probed_ssids() argument
972 ath6kl_wmi_probedssid_cmd(ar->wmi, vif->fw_vif_idx, i, in ath6kl_set_probed_ssids()
980 ath6kl_wmi_probedssid_cmd(ar->wmi, vif->fw_vif_idx, i, in ath6kl_set_probed_ssids()
991 struct ath6kl *ar = ath6kl_priv(vif->ndev); in ath6kl_cfg80211_scan() local
1002 if (!ar->usr_bss_filter) { in ath6kl_cfg80211_scan()
1004 ret = ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_scan()
1012 ret = ath6kl_set_probed_ssids(ar, vif, request->ssids, in ath6kl_cfg80211_scan()
1018 ret = ath6kl_wmi_set_appie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_scan()
1052 ret = ath6kl_wmi_beginscan_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_scan()
1071 struct ath6kl *ar = vif->ar; in ath6kl_cfg80211_scan_complete_event() local
1085 ath6kl_wmi_probedssid_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_scan_complete_event()
1106 ieee80211_get_channel(vif->ar->wiphy, freq), in ath6kl_cfg80211_ch_switch_notify()
1120 struct ath6kl *ar = ath6kl_priv(ndev); in ath6kl_cfg80211_add_key() local
1133 return ath6kl_wmi_add_krk_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_add_key()
1202 ar->ap_mode_bkey.valid = true; in ath6kl_cfg80211_add_key()
1203 ar->ap_mode_bkey.key_index = key_index; in ath6kl_cfg80211_add_key()
1204 ar->ap_mode_bkey.key_type = key_type; in ath6kl_cfg80211_add_key()
1205 ar->ap_mode_bkey.key_len = key->key_len; in ath6kl_cfg80211_add_key()
1206 memcpy(ar->ap_mode_bkey.key, key->key, key->key_len); in ath6kl_cfg80211_add_key()
1233 return ath6kl_wmi_addkey_cmd(ar->wmi, vif->fw_vif_idx, key_index, in ath6kl_cfg80211_add_key()
1244 struct ath6kl *ar = ath6kl_priv(ndev); in ath6kl_cfg80211_del_key() local
1267 return ath6kl_wmi_deletekey_cmd(ar->wmi, vif->fw_vif_idx, key_index); in ath6kl_cfg80211_del_key()
1310 struct ath6kl *ar = ath6kl_priv(ndev); in ath6kl_cfg80211_set_default_key() local
1347 return ath6kl_wmi_addkey_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_set_default_key()
1370 struct ath6kl *ar = (struct ath6kl *)wiphy_priv(wiphy); in ath6kl_cfg80211_set_wiphy_params() local
1377 vif = ath6kl_vif_first(ar); in ath6kl_cfg80211_set_wiphy_params()
1385 ret = ath6kl_wmi_set_rts_cmd(ar->wmi, wiphy->rts_threshold); in ath6kl_cfg80211_set_wiphy_params()
1400 struct ath6kl *ar = (struct ath6kl *)wiphy_priv(wiphy); in ath6kl_cfg80211_set_txpower() local
1407 vif = ath6kl_vif_first(ar); in ath6kl_cfg80211_set_txpower()
1418 ar->tx_pwr = dbm; in ath6kl_cfg80211_set_txpower()
1426 ath6kl_wmi_set_tx_pwr_cmd(ar->wmi, vif->fw_vif_idx, dbm); in ath6kl_cfg80211_set_txpower()
1435 struct ath6kl *ar = (struct ath6kl *)wiphy_priv(wiphy); in ath6kl_cfg80211_get_txpower() local
1438 vif = ath6kl_vif_first(ar); in ath6kl_cfg80211_get_txpower()
1446 ar->tx_pwr = 0; in ath6kl_cfg80211_get_txpower()
1448 if (ath6kl_wmi_get_tx_pwr_cmd(ar->wmi, vif->fw_vif_idx) != 0) { in ath6kl_cfg80211_get_txpower()
1453 wait_event_interruptible_timeout(ar->event_wq, ar->tx_pwr != 0, in ath6kl_cfg80211_get_txpower()
1462 *dbm = ar->tx_pwr; in ath6kl_cfg80211_get_txpower()
1470 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_set_power_mgmt() local
1488 if (ath6kl_wmi_powermode_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_set_power_mgmt()
1504 struct ath6kl *ar = wiphy_priv(wiphy); in ath6kl_cfg80211_add_iface() local
1508 if (ar->num_vif == ar->vif_max) { in ath6kl_cfg80211_add_iface()
1513 if (!ath6kl_is_valid_iftype(ar, type, &if_idx, &nw_type)) { in ath6kl_cfg80211_add_iface()
1518 wdev = ath6kl_interface_add(ar, name, name_assign_type, type, if_idx, nw_type); in ath6kl_cfg80211_add_iface()
1522 ar->num_vif++; in ath6kl_cfg80211_add_iface()
1530 struct ath6kl *ar = wiphy_priv(wiphy); in ath6kl_cfg80211_del_iface() local
1533 spin_lock_bh(&ar->list_lock); in ath6kl_cfg80211_del_iface()
1535 spin_unlock_bh(&ar->list_lock); in ath6kl_cfg80211_del_iface()
1537 ath6kl_cfg80211_vif_stop(vif, test_bit(WMI_READY, &ar->flag)); in ath6kl_cfg80211_del_iface()
1562 vif->ar->fw_capabilities) && in ath6kl_cfg80211_change_iface()
1565 if (vif->ar->vif_max == 1) { in ath6kl_cfg80211_change_iface()
1572 for (i = vif->ar->max_norm_iface; i < vif->ar->vif_max; i++) { in ath6kl_cfg80211_change_iface()
1577 if (i == vif->ar->vif_max) { in ath6kl_cfg80211_change_iface()
1613 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_join_ibss() local
1666 status = ath6kl_wmi_connect_cmd(ar->wmi, vif->fw_vif_idx, vif->nw_type, in ath6kl_cfg80211_join_ibss()
1673 ar->connect_ctrl_flags, SUBTYPE_NONE); in ath6kl_cfg80211_join_ibss()
1767 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_get_station() local
1778 if (down_interruptible(&ar->sem)) in ath6kl_get_station()
1783 ret = ath6kl_wmi_get_stats_cmd(ar->wmi, vif->fw_vif_idx); in ath6kl_get_station()
1786 up(&ar->sem); in ath6kl_get_station()
1790 left = wait_event_interruptible_timeout(ar->event_wq, in ath6kl_get_station()
1795 up(&ar->sem); in ath6kl_get_station()
1846 ath6kl_debug_war(ar, ATH6KL_WAR_INVALID_RATE); in ath6kl_get_station()
1867 struct ath6kl *ar = ath6kl_priv(netdev); in ath6kl_set_pmksa() local
1870 return ath6kl_wmi_setpmkid_cmd(ar->wmi, vif->fw_vif_idx, pmksa->bssid, in ath6kl_set_pmksa()
1877 struct ath6kl *ar = ath6kl_priv(netdev); in ath6kl_del_pmksa() local
1880 return ath6kl_wmi_setpmkid_cmd(ar->wmi, vif->fw_vif_idx, pmksa->bssid, in ath6kl_del_pmksa()
1886 struct ath6kl *ar = ath6kl_priv(netdev); in ath6kl_flush_pmksa() local
1890 return ath6kl_wmi_setpmkid_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_flush_pmksa()
1895 static int ath6kl_wow_usr(struct ath6kl *ar, struct ath6kl_vif *vif, in ath6kl_wow_usr() argument
1923 ret = ath6kl_wmi_add_wow_pattern_cmd(ar->wmi, in ath6kl_wow_usr()
1950 static int ath6kl_wow_ap(struct ath6kl *ar, struct ath6kl_vif *vif) in ath6kl_wow_ap() argument
1983 ret = ath6kl_wmi_add_wow_pattern_cmd(ar->wmi, in ath6kl_wow_ap()
1993 ret = ath6kl_wmi_add_wow_pattern_cmd(ar->wmi, in ath6kl_wow_ap()
2006 ret = ath6kl_wmi_add_wow_pattern_cmd(ar->wmi, in ath6kl_wow_ap()
2016 ret = ath6kl_wmi_add_wow_pattern_cmd(ar->wmi, in ath6kl_wow_ap()
2028 static int ath6kl_wow_sta(struct ath6kl *ar, struct ath6kl_vif *vif) in ath6kl_wow_sta() argument
2039 ret = ath6kl_wmi_add_wow_pattern_cmd(ar->wmi, in ath6kl_wow_sta()
2054 ret = ath6kl_wmi_add_wow_pattern_cmd(ar->wmi, in ath6kl_wow_sta()
2072 static bool is_ctrl_ep_empty(struct ath6kl *ar) in is_ctrl_ep_empty() argument
2074 return !ar->tx_pending[ar->ctrl_ep]; in is_ctrl_ep_empty()
2077 static int ath6kl_cfg80211_host_sleep(struct ath6kl *ar, struct ath6kl_vif *vif) in ath6kl_cfg80211_host_sleep() argument
2083 ret = ath6kl_wmi_set_host_sleep_mode_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_host_sleep()
2088 left = wait_event_interruptible_timeout(ar->event_wq, in ath6kl_cfg80211_host_sleep()
2100 if (ar->tx_pending[ar->ctrl_ep]) { in ath6kl_cfg80211_host_sleep()
2101 left = wait_event_interruptible_timeout(ar->event_wq, in ath6kl_cfg80211_host_sleep()
2102 is_ctrl_ep_empty(ar), in ath6kl_cfg80211_host_sleep()
2119 struct ath6kl *ar = vif->ar; in ath6kl_wow_suspend_vif() local
2129 ar->fw_capabilities)) { in ath6kl_wow_suspend_vif()
2130 ret = ath6kl_wmi_mcast_filter_cmd(vif->ar->wmi, in ath6kl_wow_suspend_vif()
2138 ath6kl_wmi_del_wow_pattern_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_wow_suspend_vif()
2147 ret = ath6kl_wow_usr(ar, vif, wow, filter); in ath6kl_wow_suspend_vif()
2149 ret = ath6kl_wow_ap(ar, vif); in ath6kl_wow_suspend_vif()
2151 ret = ath6kl_wow_sta(ar, vif); in ath6kl_wow_suspend_vif()
2159 ret = ath6kl_wmi_listeninterval_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_wow_suspend_vif()
2170 ret = ath6kl_wmi_bmisstime_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_wow_suspend_vif()
2175 ret = ath6kl_wmi_scanparams_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_wow_suspend_vif()
2202 ret = ath6kl_wmi_set_ip_cmd(ar->wmi, vif->fw_vif_idx, ips[0], ips[1]); in ath6kl_wow_suspend_vif()
2211 static int ath6kl_wow_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow) in ath6kl_wow_suspend() argument
2219 first_vif = ath6kl_vif_first(ar); in ath6kl_wow_suspend()
2228 spin_lock_bh(&ar->list_lock); in ath6kl_wow_suspend()
2229 list_for_each_entry(vif, &ar->vif_list, list) { in ath6kl_wow_suspend()
2239 spin_unlock_bh(&ar->list_lock); in ath6kl_wow_suspend()
2246 ar->state = ATH6KL_STATE_SUSPENDING; in ath6kl_wow_suspend()
2248 ret = ath6kl_wmi_set_wow_mode_cmd(ar->wmi, first_vif->fw_vif_idx, in ath6kl_wow_suspend()
2255 return ath6kl_cfg80211_host_sleep(ar, first_vif); in ath6kl_wow_suspend()
2260 struct ath6kl *ar = vif->ar; in ath6kl_wow_resume_vif() local
2264 ret = ath6kl_wmi_scanparams_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_wow_resume_vif()
2269 ret = ath6kl_wmi_listeninterval_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_wow_resume_vif()
2274 ret = ath6kl_wmi_bmisstime_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_wow_resume_vif()
2282 ar->fw_capabilities)) { in ath6kl_wow_resume_vif()
2283 ret = ath6kl_wmi_mcast_filter_cmd(vif->ar->wmi, in ath6kl_wow_resume_vif()
2294 static int ath6kl_wow_resume(struct ath6kl *ar) in ath6kl_wow_resume() argument
2299 vif = ath6kl_vif_first(ar); in ath6kl_wow_resume()
2304 ar->state = ATH6KL_STATE_RESUMING; in ath6kl_wow_resume()
2306 ret = ath6kl_wmi_set_host_sleep_mode_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_wow_resume()
2314 spin_lock_bh(&ar->list_lock); in ath6kl_wow_resume()
2315 list_for_each_entry(vif, &ar->vif_list, list) { in ath6kl_wow_resume()
2323 spin_unlock_bh(&ar->list_lock); in ath6kl_wow_resume()
2328 ar->state = ATH6KL_STATE_ON; in ath6kl_wow_resume()
2332 ar->state = ATH6KL_STATE_WOW; in ath6kl_wow_resume()
2336 static int ath6kl_cfg80211_deepsleep_suspend(struct ath6kl *ar) in ath6kl_cfg80211_deepsleep_suspend() argument
2341 vif = ath6kl_vif_first(ar); in ath6kl_cfg80211_deepsleep_suspend()
2345 if (!test_bit(WMI_READY, &ar->flag)) { in ath6kl_cfg80211_deepsleep_suspend()
2350 ath6kl_cfg80211_stop_all(ar); in ath6kl_cfg80211_deepsleep_suspend()
2353 ar->wmi->saved_pwr_mode = ar->wmi->pwr_mode; in ath6kl_cfg80211_deepsleep_suspend()
2355 ret = ath6kl_wmi_powermode_cmd(ar->wmi, 0, REC_POWER); in ath6kl_cfg80211_deepsleep_suspend()
2360 ret = ath6kl_wmi_set_wow_mode_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_deepsleep_suspend()
2367 ath6kl_tx_data_cleanup(ar); in ath6kl_cfg80211_deepsleep_suspend()
2369 ret = ath6kl_cfg80211_host_sleep(ar, vif); in ath6kl_cfg80211_deepsleep_suspend()
2376 static int ath6kl_cfg80211_deepsleep_resume(struct ath6kl *ar) in ath6kl_cfg80211_deepsleep_resume() argument
2381 vif = ath6kl_vif_first(ar); in ath6kl_cfg80211_deepsleep_resume()
2386 if (ar->wmi->pwr_mode != ar->wmi->saved_pwr_mode) { in ath6kl_cfg80211_deepsleep_resume()
2387 ret = ath6kl_wmi_powermode_cmd(ar->wmi, 0, in ath6kl_cfg80211_deepsleep_resume()
2388 ar->wmi->saved_pwr_mode); in ath6kl_cfg80211_deepsleep_resume()
2393 ret = ath6kl_wmi_set_host_sleep_mode_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_deepsleep_resume()
2398 ar->state = ATH6KL_STATE_ON; in ath6kl_cfg80211_deepsleep_resume()
2401 ret = ath6kl_wmi_scanparams_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_deepsleep_resume()
2409 int ath6kl_cfg80211_suspend(struct ath6kl *ar, in ath6kl_cfg80211_suspend() argument
2423 ath6kl_tx_data_cleanup(ar); in ath6kl_cfg80211_suspend()
2425 prev_state = ar->state; in ath6kl_cfg80211_suspend()
2427 ret = ath6kl_wow_suspend(ar, wow); in ath6kl_cfg80211_suspend()
2429 ar->state = prev_state; in ath6kl_cfg80211_suspend()
2433 ar->state = ATH6KL_STATE_WOW; in ath6kl_cfg80211_suspend()
2440 ret = ath6kl_cfg80211_deepsleep_suspend(ar); in ath6kl_cfg80211_suspend()
2446 ar->state = ATH6KL_STATE_DEEPSLEEP; in ath6kl_cfg80211_suspend()
2452 ath6kl_cfg80211_stop_all(ar); in ath6kl_cfg80211_suspend()
2454 if (ar->state == ATH6KL_STATE_OFF) { in ath6kl_cfg80211_suspend()
2462 ret = ath6kl_init_hw_stop(ar); in ath6kl_cfg80211_suspend()
2468 ar->state = ATH6KL_STATE_CUTPOWER; in ath6kl_cfg80211_suspend()
2476 list_for_each_entry(vif, &ar->vif_list, list) in ath6kl_cfg80211_suspend()
2483 int ath6kl_cfg80211_resume(struct ath6kl *ar) in ath6kl_cfg80211_resume() argument
2487 switch (ar->state) { in ath6kl_cfg80211_resume()
2491 ret = ath6kl_wow_resume(ar); in ath6kl_cfg80211_resume()
2502 ret = ath6kl_cfg80211_deepsleep_resume(ar); in ath6kl_cfg80211_resume()
2512 ret = ath6kl_init_hw_start(ar); in ath6kl_cfg80211_resume()
2533 struct ath6kl *ar = wiphy_priv(wiphy); in __ath6kl_cfg80211_suspend() local
2535 ath6kl_recovery_suspend(ar); in __ath6kl_cfg80211_suspend()
2537 return ath6kl_hif_suspend(ar, wow); in __ath6kl_cfg80211_suspend()
2542 struct ath6kl *ar = wiphy_priv(wiphy); in __ath6kl_cfg80211_resume() local
2545 err = ath6kl_hif_resume(ar); in __ath6kl_cfg80211_resume()
2549 ath6kl_recovery_resume(ar); in __ath6kl_cfg80211_resume()
2570 void ath6kl_check_wow_status(struct ath6kl *ar) in ath6kl_check_wow_status() argument
2572 if (ar->state == ATH6KL_STATE_SUSPENDING) in ath6kl_check_wow_status()
2575 if (ar->state == ATH6KL_STATE_WOW) in ath6kl_check_wow_status()
2576 ath6kl_cfg80211_resume(ar); in ath6kl_check_wow_status()
2581 void ath6kl_check_wow_status(struct ath6kl *ar) in ath6kl_check_wow_status() argument
2603 return ath6kl_wmi_set_htcap_cmd(vif->ar->wmi, vif->fw_vif_idx, in ath6kl_set_htcap()
2609 struct wiphy *wiphy = vif->ar->wiphy; in ath6kl_restore_htcap()
2635 struct ath6kl *ar = vif->ar; in ath6kl_set_ap_probe_resp_ies() local
2662 ret = ath6kl_wmi_set_appie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_set_ap_probe_resp_ies()
2671 struct ath6kl *ar = vif->ar; in ath6kl_set_ies() local
2675 res = ath6kl_wmi_set_appie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_set_ies()
2689 res = ath6kl_wmi_set_appie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_set_ies()
2754 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_start_ap() local
2776 ar->ap_mode_bkey.valid = false; in ath6kl_start_ap()
2778 ret = ath6kl_wmi_ap_set_beacon_intvl_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_start_ap()
2784 ret = ath6kl_wmi_ap_set_dtim_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_start_ap()
2806 res = ath6kl_wmi_ap_hidden_ssid(ar->wmi, vif->fw_vif_idx, hidden); in ath6kl_start_ap()
2889 res = ath6kl_wmi_ap_set_apsd(ar->wmi, vif->fw_vif_idx, true); in ath6kl_start_ap()
2907 ar->fw_capabilities)) in ath6kl_start_ap()
2911 res = ath6kl_wmi_set_inact_period(ar->wmi, vif->fw_vif_idx, in ath6kl_start_ap()
2930 ar->fw_capabilities)) { in ath6kl_start_ap()
2931 res = ath6kl_wmi_set_ie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_start_ap()
2941 res = ath6kl_wmi_ap_profile_commit(ar->wmi, vif->fw_vif_idx, &p); in ath6kl_start_ap()
2964 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_stop_ap() local
2972 ath6kl_wmi_disconnect_cmd(ar->wmi, vif->fw_vif_idx); in ath6kl_stop_ap()
2984 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_del_station() local
2988 return ath6kl_wmi_ap_set_mlme(ar->wmi, vif->fw_vif_idx, WMI_AP_DEAUTH, in ath6kl_del_station()
2996 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_change_station() local
3009 return ath6kl_wmi_ap_set_mlme(ar->wmi, vif->fw_vif_idx, in ath6kl_change_station()
3011 return ath6kl_wmi_ap_set_mlme(ar->wmi, vif->fw_vif_idx, in ath6kl_change_station()
3022 struct ath6kl *ar = ath6kl_priv(vif->ndev); in ath6kl_remain_on_channel() local
3034 return ath6kl_wmi_remain_on_chnl_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_remain_on_channel()
3043 struct ath6kl *ar = ath6kl_priv(vif->ndev); in ath6kl_cancel_remain_on_channel() local
3049 return ath6kl_wmi_cancel_remain_on_chnl_cmd(ar->wmi, vif->fw_vif_idx); in ath6kl_cancel_remain_on_channel()
3056 struct ath6kl *ar = vif->ar; in ath6kl_send_go_probe_resp() local
3083 ret = ath6kl_wmi_send_probe_response_cmd(ar->wmi, vif->fw_vif_idx, freq, in ath6kl_send_go_probe_resp()
3103 struct ath6kl *ar = vif->ar; in ath6kl_mgmt_powersave_ap() local
3141 ath6kl_wmi_set_pvb_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_mgmt_powersave_ap()
3178 struct ath6kl *ar = ath6kl_priv(vif->ndev); in ath6kl_mgmt_tx() local
3230 return ath6kl_wmi_send_mgmt_cmd(ar->wmi, vif->fw_vif_idx, id, freq, in ath6kl_mgmt_tx()
3256 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_sscan_start() local
3270 if (ar->state != ATH6KL_STATE_ON) in ath6kl_cfg80211_sscan_start()
3278 ret = ath6kl_set_probed_ssids(ar, vif, request->ssids, in ath6kl_cfg80211_sscan_start()
3286 ret = ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3291 ret = ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3298 ar->fw_capabilities)) { in ath6kl_cfg80211_sscan_start()
3306 ret = ath6kl_wmi_set_rssi_filter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3317 ath6kl_wmi_scanparams_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3322 ret = ath6kl_wmi_set_appie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3331 ret = ath6kl_wmi_enable_sched_scan_cmd(ar->wmi, vif->fw_vif_idx, true); in ath6kl_cfg80211_sscan_start()
3359 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_set_bitrate() local
3362 return ath6kl_wmi_set_bitrate_mask(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_set_bitrate()
3370 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_set_txe_config() local
3374 !test_bit(ATH6KL_FW_CAPABILITY_TX_ERR_NOTIFY, ar->fw_capabilities)) in ath6kl_cfg80211_set_txe_config()
3383 return ath6kl_wmi_set_txe_notify(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_set_txe_config()
3474 if (vif->ar->state != ATH6KL_STATE_RECOVERY && in ath6kl_cfg80211_stop()
3477 ath6kl_wmi_disconnect_cmd(vif->ar->wmi, vif->fw_vif_idx); in ath6kl_cfg80211_stop()
3488 if (vif->ar->state != ATH6KL_STATE_RECOVERY && in ath6kl_cfg80211_stop()
3489 ath6kl_wmi_scanparams_cmd(vif->ar->wmi, vif->fw_vif_idx, 0xFFFF, in ath6kl_cfg80211_stop()
3496 void ath6kl_cfg80211_stop_all(struct ath6kl *ar) in ath6kl_cfg80211_stop_all() argument
3500 vif = ath6kl_vif_first(ar); in ath6kl_cfg80211_stop_all()
3501 if (!vif && ar->state != ATH6KL_STATE_RECOVERY) { in ath6kl_cfg80211_stop_all()
3503 ar->wmi->saved_pwr_mode = ar->wmi->pwr_mode; in ath6kl_cfg80211_stop_all()
3505 if (ath6kl_wmi_powermode_cmd(ar->wmi, 0, REC_POWER) != 0) in ath6kl_cfg80211_stop_all()
3515 list_for_each_entry(vif, &ar->vif_list, list) in ath6kl_cfg80211_stop_all()
3522 struct ath6kl *ar = wiphy_priv(wiphy); in ath6kl_cfg80211_reg_notify() local
3536 ret = ath6kl_wmi_set_regdomain_cmd(ar->wmi, request->alpha2); in ath6kl_cfg80211_reg_notify()
3553 ret = ath6kl_wmi_beginscan_cmd(ar->wmi, 0, WMI_LONG_SCAN, false, in ath6kl_cfg80211_reg_notify()
3617 struct ath6kl *ar = vif->ar; in ath6kl_cfg80211_vif_cleanup() local
3622 ar->avail_idx_map |= BIT(vif->fw_vif_idx); in ath6kl_cfg80211_vif_cleanup()
3625 ar->ibss_if_active = false; in ath6kl_cfg80211_vif_cleanup()
3634 ar->num_vif--; in ath6kl_cfg80211_vif_cleanup()
3637 struct wireless_dev *ath6kl_interface_add(struct ath6kl *ar, const char *name, in ath6kl_interface_add() argument
3651 vif->wdev.wiphy = ar->wiphy; in ath6kl_interface_add()
3652 vif->ar = ar; in ath6kl_interface_add()
3666 memcpy(ndev->dev_addr, ar->mac_addr, ETH_ALEN); in ath6kl_interface_add()
3671 ar->fw_capabilities)) in ath6kl_interface_add()
3685 ar->avail_idx_map &= ~BIT(fw_vif_idx); in ath6kl_interface_add()
3688 ar->wlan_pwr_state = WLAN_POWER_STATE_ON; in ath6kl_interface_add()
3691 ar->ibss_if_active = true; in ath6kl_interface_add()
3693 spin_lock_bh(&ar->list_lock); in ath6kl_interface_add()
3694 list_add_tail(&vif->list, &ar->vif_list); in ath6kl_interface_add()
3695 spin_unlock_bh(&ar->list_lock); in ath6kl_interface_add()
3719 int ath6kl_cfg80211_init(struct ath6kl *ar) in ath6kl_cfg80211_init() argument
3721 struct wiphy *wiphy = ar->wiphy; in ath6kl_cfg80211_init()
3730 set_wiphy_dev(wiphy, ar->dev); in ath6kl_cfg80211_init()
3735 if (ar->p2p) { in ath6kl_cfg80211_init()
3741 test_bit(ATH6KL_FW_CAPABILITY_REGDOMAIN, ar->fw_capabilities)) { in ath6kl_cfg80211_init()
3743 ar->wiphy->features |= NL80211_FEATURE_CELL_BASE_REG_HINTS; in ath6kl_cfg80211_init()
3751 ar->fw_capabilities)) in ath6kl_cfg80211_init()
3755 switch (ar->hw.cap) { in ath6kl_cfg80211_init()
3784 ar->fw_capabilities))) { in ath6kl_cfg80211_init()
3792 ar->fw_capabilities)) { in ath6kl_cfg80211_init()
3818 ar->wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM | in ath6kl_cfg80211_init()
3823 if (test_bit(ATH6KL_FW_CAPABILITY_SCHED_SCAN_V2, ar->fw_capabilities)) in ath6kl_cfg80211_init()
3824 ar->wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; in ath6kl_cfg80211_init()
3827 ar->fw_capabilities)) in ath6kl_cfg80211_init()
3828 ar->wiphy->features |= NL80211_FEATURE_INACTIVITY_TIMER; in ath6kl_cfg80211_init()
3830 ar->wiphy->probe_resp_offload = in ath6kl_cfg80211_init()
3841 ar->wiphy_registered = true; in ath6kl_cfg80211_init()
3846 void ath6kl_cfg80211_cleanup(struct ath6kl *ar) in ath6kl_cfg80211_cleanup() argument
3848 wiphy_unregister(ar->wiphy); in ath6kl_cfg80211_cleanup()
3850 ar->wiphy_registered = false; in ath6kl_cfg80211_cleanup()
3855 struct ath6kl *ar; in ath6kl_cfg80211_create() local
3866 ar = wiphy_priv(wiphy); in ath6kl_cfg80211_create()
3867 ar->wiphy = wiphy; in ath6kl_cfg80211_create()
3869 return ar; in ath6kl_cfg80211_create()
3873 void ath6kl_cfg80211_destroy(struct ath6kl *ar) in ath6kl_cfg80211_destroy() argument
3878 kfree(ar->sta_list[i].aggr_conn); in ath6kl_cfg80211_destroy()
3880 wiphy_free(ar->wiphy); in ath6kl_cfg80211_destroy()