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()
3237 struct ath6kl *ar = wiphy_priv(wiphy); in ath6kl_get_antenna() local
3238 *tx_ant = ar->hw.tx_ant; in ath6kl_get_antenna()
3239 *rx_ant = ar->hw.rx_ant; in ath6kl_get_antenna()
3265 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_sscan_start() local
3279 if (ar->state != ATH6KL_STATE_ON) in ath6kl_cfg80211_sscan_start()
3287 ret = ath6kl_set_probed_ssids(ar, vif, request->ssids, in ath6kl_cfg80211_sscan_start()
3295 ret = ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3300 ret = ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3307 ar->fw_capabilities)) { in ath6kl_cfg80211_sscan_start()
3315 ret = ath6kl_wmi_set_rssi_filter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3326 ath6kl_wmi_scanparams_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3331 ret = ath6kl_wmi_set_appie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_sscan_start()
3340 ret = ath6kl_wmi_enable_sched_scan_cmd(ar->wmi, vif->fw_vif_idx, true); in ath6kl_cfg80211_sscan_start()
3368 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_set_bitrate() local
3371 return ath6kl_wmi_set_bitrate_mask(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_set_bitrate()
3379 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_cfg80211_set_txe_config() local
3383 !test_bit(ATH6KL_FW_CAPABILITY_TX_ERR_NOTIFY, ar->fw_capabilities)) in ath6kl_cfg80211_set_txe_config()
3392 return ath6kl_wmi_set_txe_notify(ar->wmi, vif->fw_vif_idx, in ath6kl_cfg80211_set_txe_config()
3484 if (vif->ar->state != ATH6KL_STATE_RECOVERY && in ath6kl_cfg80211_stop()
3487 ath6kl_wmi_disconnect_cmd(vif->ar->wmi, vif->fw_vif_idx); in ath6kl_cfg80211_stop()
3498 if (vif->ar->state != ATH6KL_STATE_RECOVERY && in ath6kl_cfg80211_stop()
3499 ath6kl_wmi_scanparams_cmd(vif->ar->wmi, vif->fw_vif_idx, 0xFFFF, in ath6kl_cfg80211_stop()
3506 void ath6kl_cfg80211_stop_all(struct ath6kl *ar) in ath6kl_cfg80211_stop_all() argument
3510 vif = ath6kl_vif_first(ar); in ath6kl_cfg80211_stop_all()
3511 if (!vif && ar->state != ATH6KL_STATE_RECOVERY) { in ath6kl_cfg80211_stop_all()
3513 ar->wmi->saved_pwr_mode = ar->wmi->pwr_mode; in ath6kl_cfg80211_stop_all()
3515 if (ath6kl_wmi_powermode_cmd(ar->wmi, 0, REC_POWER) != 0) in ath6kl_cfg80211_stop_all()
3525 list_for_each_entry(vif, &ar->vif_list, list) in ath6kl_cfg80211_stop_all()
3532 struct ath6kl *ar = wiphy_priv(wiphy); in ath6kl_cfg80211_reg_notify() local
3546 ret = ath6kl_wmi_set_regdomain_cmd(ar->wmi, request->alpha2); in ath6kl_cfg80211_reg_notify()
3563 ret = ath6kl_wmi_beginscan_cmd(ar->wmi, 0, WMI_LONG_SCAN, false, in ath6kl_cfg80211_reg_notify()
3627 struct ath6kl *ar = vif->ar; in ath6kl_cfg80211_vif_cleanup() local
3632 ar->avail_idx_map |= BIT(vif->fw_vif_idx); in ath6kl_cfg80211_vif_cleanup()
3635 ar->ibss_if_active = false; in ath6kl_cfg80211_vif_cleanup()
3644 ar->num_vif--; in ath6kl_cfg80211_vif_cleanup()
3691 struct ath6kl *ar = vif->ar; in ath6kl_get_stats() local
3697 ath6kl_read_tgt_stats(ar, vif); in ath6kl_get_stats()
3768 struct wireless_dev *ath6kl_interface_add(struct ath6kl *ar, const char *name, in ath6kl_interface_add() argument
3782 vif->wdev.wiphy = ar->wiphy; in ath6kl_interface_add()
3783 vif->ar = ar; in ath6kl_interface_add()
3797 memcpy(ndev->dev_addr, ar->mac_addr, ETH_ALEN); in ath6kl_interface_add()
3802 ar->fw_capabilities)) in ath6kl_interface_add()
3818 ar->avail_idx_map &= ~BIT(fw_vif_idx); in ath6kl_interface_add()
3821 ar->wlan_pwr_state = WLAN_POWER_STATE_ON; in ath6kl_interface_add()
3824 ar->ibss_if_active = true; in ath6kl_interface_add()
3826 spin_lock_bh(&ar->list_lock); in ath6kl_interface_add()
3827 list_add_tail(&vif->list, &ar->vif_list); in ath6kl_interface_add()
3828 spin_unlock_bh(&ar->list_lock); in ath6kl_interface_add()
3852 int ath6kl_cfg80211_init(struct ath6kl *ar) in ath6kl_cfg80211_init() argument
3854 struct wiphy *wiphy = ar->wiphy; in ath6kl_cfg80211_init()
3863 set_wiphy_dev(wiphy, ar->dev); in ath6kl_cfg80211_init()
3868 if (ar->p2p) { in ath6kl_cfg80211_init()
3874 test_bit(ATH6KL_FW_CAPABILITY_REGDOMAIN, ar->fw_capabilities)) { in ath6kl_cfg80211_init()
3876 ar->wiphy->features |= NL80211_FEATURE_CELL_BASE_REG_HINTS; in ath6kl_cfg80211_init()
3884 ar->fw_capabilities)) in ath6kl_cfg80211_init()
3888 switch (ar->hw.cap) { in ath6kl_cfg80211_init()
3917 ar->fw_capabilities))) { in ath6kl_cfg80211_init()
3928 ar->fw_capabilities)) { in ath6kl_cfg80211_init()
3933 ar->hw.tx_ant = 2; in ath6kl_cfg80211_init()
3934 ar->hw.rx_ant = 2; in ath6kl_cfg80211_init()
3938 ar->hw.tx_ant = 1; in ath6kl_cfg80211_init()
3939 ar->hw.rx_ant = 1; in ath6kl_cfg80211_init()
3942 wiphy->available_antennas_tx = ar->hw.tx_ant; in ath6kl_cfg80211_init()
3943 wiphy->available_antennas_rx = ar->hw.rx_ant; in ath6kl_cfg80211_init()
3961 ar->wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM | in ath6kl_cfg80211_init()
3966 if (test_bit(ATH6KL_FW_CAPABILITY_SCHED_SCAN_V2, ar->fw_capabilities)) in ath6kl_cfg80211_init()
3967 ar->wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; in ath6kl_cfg80211_init()
3970 ar->fw_capabilities)) in ath6kl_cfg80211_init()
3971 ar->wiphy->features |= NL80211_FEATURE_INACTIVITY_TIMER; in ath6kl_cfg80211_init()
3973 ar->wiphy->probe_resp_offload = in ath6kl_cfg80211_init()
3984 ar->wiphy_registered = true; in ath6kl_cfg80211_init()
3989 void ath6kl_cfg80211_cleanup(struct ath6kl *ar) in ath6kl_cfg80211_cleanup() argument
3991 wiphy_unregister(ar->wiphy); in ath6kl_cfg80211_cleanup()
3993 ar->wiphy_registered = false; in ath6kl_cfg80211_cleanup()
3998 struct ath6kl *ar; in ath6kl_cfg80211_create() local
4009 ar = wiphy_priv(wiphy); in ath6kl_cfg80211_create()
4010 ar->wiphy = wiphy; in ath6kl_cfg80211_create()
4012 return ar; in ath6kl_cfg80211_create()
4016 void ath6kl_cfg80211_destroy(struct ath6kl *ar) in ath6kl_cfg80211_destroy() argument
4021 kfree(ar->sta_list[i].aggr_conn); in ath6kl_cfg80211_destroy()
4023 wiphy_free(ar->wiphy); in ath6kl_cfg80211_destroy()