Lines Matching refs:arvif

237 static int ath10k_send_key(struct ath10k_vif *arvif,  in ath10k_send_key()  argument
242 struct ath10k *ar = arvif->ar; in ath10k_send_key()
244 .vdev_id = arvif->vdev_id, in ath10k_send_key()
252 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_send_key()
295 return ath10k_wmi_vdev_install_key(arvif->ar, &arg); in ath10k_send_key()
298 static int ath10k_install_key(struct ath10k_vif *arvif, in ath10k_install_key() argument
303 struct ath10k *ar = arvif->ar; in ath10k_install_key()
311 if (arvif->nohwcrypt) in ath10k_install_key()
314 ret = ath10k_send_key(arvif, key, cmd, macaddr, flags); in ath10k_install_key()
325 static int ath10k_install_peer_wep_keys(struct ath10k_vif *arvif, in ath10k_install_peer_wep_keys() argument
328 struct ath10k *ar = arvif->ar; in ath10k_install_peer_wep_keys()
336 if (WARN_ON(arvif->vif->type != NL80211_IFTYPE_AP && in ath10k_install_peer_wep_keys()
337 arvif->vif->type != NL80211_IFTYPE_ADHOC && in ath10k_install_peer_wep_keys()
338 arvif->vif->type != NL80211_IFTYPE_MESH_POINT)) in ath10k_install_peer_wep_keys()
342 peer = ath10k_peer_find(ar, arvif->vdev_id, addr); in ath10k_install_peer_wep_keys()
348 for (i = 0; i < ARRAY_SIZE(arvif->wep_keys); i++) { in ath10k_install_peer_wep_keys()
349 if (arvif->wep_keys[i] == NULL) in ath10k_install_peer_wep_keys()
352 switch (arvif->vif->type) { in ath10k_install_peer_wep_keys()
356 if (arvif->def_wep_key_idx == i) in ath10k_install_peer_wep_keys()
359 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
365 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
371 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
382 peer->keys[i] = arvif->wep_keys[i]; in ath10k_install_peer_wep_keys()
394 if (arvif->vif->type != NL80211_IFTYPE_ADHOC) in ath10k_install_peer_wep_keys()
397 if (arvif->def_wep_key_idx == -1) in ath10k_install_peer_wep_keys()
400 ret = ath10k_wmi_vdev_set_param(arvif->ar, in ath10k_install_peer_wep_keys()
401 arvif->vdev_id, in ath10k_install_peer_wep_keys()
402 arvif->ar->wmi.vdev_param->def_keyid, in ath10k_install_peer_wep_keys()
403 arvif->def_wep_key_idx); in ath10k_install_peer_wep_keys()
406 arvif->vdev_id, ret); in ath10k_install_peer_wep_keys()
413 static int ath10k_clear_peer_keys(struct ath10k_vif *arvif, in ath10k_clear_peer_keys() argument
416 struct ath10k *ar = arvif->ar; in ath10k_clear_peer_keys()
426 peer = ath10k_peer_find(ar, arvif->vdev_id, addr); in ath10k_clear_peer_keys()
437 ret = ath10k_install_key(arvif, peer->keys[i], in ath10k_clear_peer_keys()
479 static int ath10k_clear_vdev_key(struct ath10k_vif *arvif, in ath10k_clear_vdev_key() argument
482 struct ath10k *ar = arvif->ar; in ath10k_clear_vdev_key()
515 ret = ath10k_install_key(arvif, key, DISABLE_KEY, addr, flags); in ath10k_clear_vdev_key()
527 static int ath10k_mac_vif_update_wep_key(struct ath10k_vif *arvif, in ath10k_mac_vif_update_wep_key() argument
530 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_update_wep_key()
537 if (ether_addr_equal(peer->addr, arvif->vif->addr)) in ath10k_mac_vif_update_wep_key()
540 if (ether_addr_equal(peer->addr, arvif->bssid)) in ath10k_mac_vif_update_wep_key()
547 arvif->vdev_id, key->keyidx); in ath10k_mac_vif_update_wep_key()
549 ret = ath10k_install_peer_wep_keys(arvif, peer->addr); in ath10k_mac_vif_update_wep_key()
552 arvif->vdev_id, peer->addr, ret); in ath10k_mac_vif_update_wep_key()
733 struct ath10k_vif *arvif; in ath10k_peer_create() local
743 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_peer_create()
784 static int ath10k_mac_set_kickout(struct ath10k_vif *arvif) in ath10k_mac_set_kickout() argument
786 struct ath10k *ar = arvif->ar; in ath10k_mac_set_kickout()
795 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
800 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
804 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
809 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
813 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
818 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
822 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
829 static int ath10k_mac_set_rts(struct ath10k_vif *arvif, u32 value) in ath10k_mac_set_rts() argument
831 struct ath10k *ar = arvif->ar; in ath10k_mac_set_rts()
835 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, value); in ath10k_mac_set_rts()
973 void ath10k_mac_vif_beacon_free(struct ath10k_vif *arvif) in ath10k_mac_vif_beacon_free() argument
975 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_beacon_free()
979 if (!arvif->beacon) in ath10k_mac_vif_beacon_free()
982 if (!arvif->beacon_buf) in ath10k_mac_vif_beacon_free()
983 dma_unmap_single(ar->dev, ATH10K_SKB_CB(arvif->beacon)->paddr, in ath10k_mac_vif_beacon_free()
984 arvif->beacon->len, DMA_TO_DEVICE); in ath10k_mac_vif_beacon_free()
986 if (WARN_ON(arvif->beacon_state != ATH10K_BEACON_SCHEDULED && in ath10k_mac_vif_beacon_free()
987 arvif->beacon_state != ATH10K_BEACON_SENT)) in ath10k_mac_vif_beacon_free()
990 dev_kfree_skb_any(arvif->beacon); in ath10k_mac_vif_beacon_free()
992 arvif->beacon = NULL; in ath10k_mac_vif_beacon_free()
993 arvif->beacon_state = ATH10K_BEACON_SCHEDULED; in ath10k_mac_vif_beacon_free()
996 static void ath10k_mac_vif_beacon_cleanup(struct ath10k_vif *arvif) in ath10k_mac_vif_beacon_cleanup() argument
998 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_beacon_cleanup()
1002 ath10k_mac_vif_beacon_free(arvif); in ath10k_mac_vif_beacon_cleanup()
1004 if (arvif->beacon_buf) { in ath10k_mac_vif_beacon_cleanup()
1006 kfree(arvif->beacon_buf); in ath10k_mac_vif_beacon_cleanup()
1009 arvif->beacon_buf, in ath10k_mac_vif_beacon_cleanup()
1010 arvif->beacon_paddr); in ath10k_mac_vif_beacon_cleanup()
1011 arvif->beacon_buf = NULL; in ath10k_mac_vif_beacon_cleanup()
1312 static bool ath10k_mac_can_set_cts_prot(struct ath10k_vif *arvif) in ath10k_mac_can_set_cts_prot() argument
1314 struct ath10k *ar = arvif->ar; in ath10k_mac_can_set_cts_prot()
1318 if (!arvif->is_started) { in ath10k_mac_can_set_cts_prot()
1326 static int ath10k_mac_set_cts_prot(struct ath10k_vif *arvif) in ath10k_mac_set_cts_prot() argument
1328 struct ath10k *ar = arvif->ar; in ath10k_mac_set_cts_prot()
1336 arvif->vdev_id, arvif->use_cts_prot); in ath10k_mac_set_cts_prot()
1338 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_mac_set_cts_prot()
1339 arvif->use_cts_prot ? 1 : 0); in ath10k_mac_set_cts_prot()
1342 static int ath10k_recalc_rtscts_prot(struct ath10k_vif *arvif) in ath10k_recalc_rtscts_prot() argument
1344 struct ath10k *ar = arvif->ar; in ath10k_recalc_rtscts_prot()
1353 if (arvif->num_legacy_stations > 0) in ath10k_recalc_rtscts_prot()
1361 arvif->vdev_id, rts_cts); in ath10k_recalc_rtscts_prot()
1363 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_recalc_rtscts_prot()
1451 static int ath10k_vdev_stop(struct ath10k_vif *arvif) in ath10k_vdev_stop() argument
1453 struct ath10k *ar = arvif->ar; in ath10k_vdev_stop()
1461 ret = ath10k_wmi_vdev_stop(ar, arvif->vdev_id); in ath10k_vdev_stop()
1464 arvif->vdev_id, ret); in ath10k_vdev_stop()
1471 arvif->vdev_id, ret); in ath10k_vdev_stop()
1485 static int ath10k_vdev_start_restart(struct ath10k_vif *arvif, in ath10k_vdev_start_restart() argument
1489 struct ath10k *ar = arvif->ar; in ath10k_vdev_start_restart()
1498 arg.vdev_id = arvif->vdev_id; in ath10k_vdev_start_restart()
1499 arg.dtim_period = arvif->dtim_period; in ath10k_vdev_start_restart()
1500 arg.bcn_intval = arvif->beacon_interval; in ath10k_vdev_start_restart()
1512 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath10k_vdev_start_restart()
1513 arg.ssid = arvif->u.ap.ssid; in ath10k_vdev_start_restart()
1514 arg.ssid_len = arvif->u.ap.ssid_len; in ath10k_vdev_start_restart()
1515 arg.hidden_ssid = arvif->u.ap.hidden_ssid; in ath10k_vdev_start_restart()
1520 } else if (arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_vdev_start_restart()
1521 arg.ssid = arvif->vif->cfg.ssid; in ath10k_vdev_start_restart()
1522 arg.ssid_len = arvif->vif->cfg.ssid_len; in ath10k_vdev_start_restart()
1555 static int ath10k_vdev_start(struct ath10k_vif *arvif, in ath10k_vdev_start() argument
1558 return ath10k_vdev_start_restart(arvif, def, false); in ath10k_vdev_start()
1561 static int ath10k_vdev_restart(struct ath10k_vif *arvif, in ath10k_vdev_restart() argument
1564 return ath10k_vdev_start_restart(arvif, def, true); in ath10k_vdev_restart()
1567 static int ath10k_mac_setup_bcn_p2p_ie(struct ath10k_vif *arvif, in ath10k_mac_setup_bcn_p2p_ie() argument
1570 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_bcn_p2p_ie()
1575 if (arvif->vif->type != NL80211_IFTYPE_AP || !arvif->vif->p2p) in ath10k_mac_setup_bcn_p2p_ie()
1586 ret = ath10k_wmi_p2p_go_bcn_ie(ar, arvif->vdev_id, p2p_ie); in ath10k_mac_setup_bcn_p2p_ie()
1589 arvif->vdev_id, ret); in ath10k_mac_setup_bcn_p2p_ie()
1626 static int ath10k_mac_setup_bcn_tmpl(struct ath10k_vif *arvif) in ath10k_mac_setup_bcn_tmpl() argument
1628 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_bcn_tmpl()
1630 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_setup_bcn_tmpl()
1638 if (arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath10k_mac_setup_bcn_tmpl()
1639 arvif->vdev_type != WMI_VDEV_TYPE_IBSS) in ath10k_mac_setup_bcn_tmpl()
1648 ret = ath10k_mac_setup_bcn_p2p_ie(arvif, bcn); in ath10k_mac_setup_bcn_tmpl()
1663 ret = ath10k_wmi_bcn_tmpl(ar, arvif->vdev_id, offs.tim_offset, bcn, 0, in ath10k_mac_setup_bcn_tmpl()
1676 static int ath10k_mac_setup_prb_tmpl(struct ath10k_vif *arvif) in ath10k_mac_setup_prb_tmpl() argument
1678 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_prb_tmpl()
1680 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_setup_prb_tmpl()
1687 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath10k_mac_setup_prb_tmpl()
1700 ret = ath10k_wmi_prb_tmpl(ar, arvif->vdev_id, prb); in ath10k_mac_setup_prb_tmpl()
1712 static int ath10k_mac_vif_fix_hidden_ssid(struct ath10k_vif *arvif) in ath10k_mac_vif_fix_hidden_ssid() argument
1714 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_fix_hidden_ssid()
1736 if (WARN_ON(!arvif->is_started)) in ath10k_mac_vif_fix_hidden_ssid()
1739 if (WARN_ON(!arvif->is_up)) in ath10k_mac_vif_fix_hidden_ssid()
1742 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) in ath10k_mac_vif_fix_hidden_ssid()
1745 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_vif_fix_hidden_ssid()
1748 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1756 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_vif_fix_hidden_ssid()
1762 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_vif_fix_hidden_ssid()
1768 ret = ath10k_vdev_restart(arvif, &def); in ath10k_mac_vif_fix_hidden_ssid()
1771 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1775 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_mac_vif_fix_hidden_ssid()
1776 arvif->bssid); in ath10k_mac_vif_fix_hidden_ssid()
1779 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1786 static void ath10k_control_beaconing(struct ath10k_vif *arvif, in ath10k_control_beaconing() argument
1789 struct ath10k *ar = arvif->ar; in ath10k_control_beaconing()
1792 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_control_beaconing()
1795 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_control_beaconing()
1798 arvif->vdev_id, ret); in ath10k_control_beaconing()
1800 arvif->is_up = false; in ath10k_control_beaconing()
1802 spin_lock_bh(&arvif->ar->data_lock); in ath10k_control_beaconing()
1803 ath10k_mac_vif_beacon_free(arvif); in ath10k_control_beaconing()
1804 spin_unlock_bh(&arvif->ar->data_lock); in ath10k_control_beaconing()
1809 arvif->tx_seq_no = 0x1000; in ath10k_control_beaconing()
1811 arvif->aid = 0; in ath10k_control_beaconing()
1812 ether_addr_copy(arvif->bssid, info->bssid); in ath10k_control_beaconing()
1814 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_control_beaconing()
1815 arvif->bssid); in ath10k_control_beaconing()
1818 arvif->vdev_id, ret); in ath10k_control_beaconing()
1822 arvif->is_up = true; in ath10k_control_beaconing()
1824 ret = ath10k_mac_vif_fix_hidden_ssid(arvif); in ath10k_control_beaconing()
1827 arvif->vdev_id, ret); in ath10k_control_beaconing()
1831 ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vdev %d up\n", arvif->vdev_id); in ath10k_control_beaconing()
1834 static void ath10k_control_ibss(struct ath10k_vif *arvif, in ath10k_control_ibss() argument
1837 struct ath10k *ar = arvif->ar; in ath10k_control_ibss()
1841 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_control_ibss()
1844 if (is_zero_ether_addr(arvif->bssid)) in ath10k_control_ibss()
1847 eth_zero_addr(arvif->bssid); in ath10k_control_ibss()
1852 vdev_param = arvif->ar->wmi.vdev_param->atim_window; in ath10k_control_ibss()
1853 ret = ath10k_wmi_vdev_set_param(arvif->ar, arvif->vdev_id, vdev_param, in ath10k_control_ibss()
1857 arvif->vdev_id, ret); in ath10k_control_ibss()
1860 static int ath10k_mac_vif_recalc_ps_wake_threshold(struct ath10k_vif *arvif) in ath10k_mac_vif_recalc_ps_wake_threshold() argument
1862 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_recalc_ps_wake_threshold()
1867 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_recalc_ps_wake_threshold()
1869 if (arvif->u.sta.uapsd) in ath10k_mac_vif_recalc_ps_wake_threshold()
1875 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, value); in ath10k_mac_vif_recalc_ps_wake_threshold()
1878 value, arvif->vdev_id, ret); in ath10k_mac_vif_recalc_ps_wake_threshold()
1885 static int ath10k_mac_vif_recalc_ps_poll_count(struct ath10k_vif *arvif) in ath10k_mac_vif_recalc_ps_poll_count() argument
1887 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_recalc_ps_poll_count()
1892 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_recalc_ps_poll_count()
1894 if (arvif->u.sta.uapsd) in ath10k_mac_vif_recalc_ps_poll_count()
1900 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_mac_vif_recalc_ps_poll_count()
1904 value, arvif->vdev_id, ret); in ath10k_mac_vif_recalc_ps_poll_count()
1913 struct ath10k_vif *arvif; in ath10k_mac_num_vifs_started() local
1918 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_mac_num_vifs_started()
1919 if (arvif->is_started) in ath10k_mac_num_vifs_started()
1925 static int ath10k_mac_vif_setup_ps(struct ath10k_vif *arvif) in ath10k_mac_vif_setup_ps() argument
1927 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_setup_ps()
1928 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_setup_ps()
1936 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_setup_ps()
1938 if (arvif->vif->type != NL80211_IFTYPE_STATION) in ath10k_mac_vif_setup_ps()
1941 enable_ps = arvif->ps; in ath10k_mac_vif_setup_ps()
1947 arvif->vdev_id); in ath10k_mac_vif_setup_ps()
1951 if (!arvif->is_started) { in ath10k_mac_vif_setup_ps()
1969 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, in ath10k_mac_vif_setup_ps()
1973 arvif->vdev_id, ret); in ath10k_mac_vif_setup_ps()
1981 arvif->vdev_id, psmode ? "enable" : "disable"); in ath10k_mac_vif_setup_ps()
1983 ret = ath10k_wmi_set_psmode(ar, arvif->vdev_id, psmode); in ath10k_mac_vif_setup_ps()
1986 psmode, arvif->vdev_id, ret); in ath10k_mac_vif_setup_ps()
1993 static int ath10k_mac_vif_disable_keepalive(struct ath10k_vif *arvif) in ath10k_mac_vif_disable_keepalive() argument
1995 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_disable_keepalive()
1999 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_disable_keepalive()
2001 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath10k_mac_vif_disable_keepalive()
2010 arg.vdev_id = arvif->vdev_id; in ath10k_mac_vif_disable_keepalive()
2018 arvif->vdev_id, ret); in ath10k_mac_vif_disable_keepalive()
2025 static void ath10k_mac_vif_ap_csa_count_down(struct ath10k_vif *arvif) in ath10k_mac_vif_ap_csa_count_down() argument
2027 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_ap_csa_count_down()
2028 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_ap_csa_count_down()
2031 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_ap_csa_count_down()
2036 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath10k_mac_vif_ap_csa_count_down()
2042 if (!arvif->is_up) in ath10k_mac_vif_ap_csa_count_down()
2048 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_vif_ap_csa_count_down()
2053 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_vif_ap_csa_count_down()
2064 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif, in ath10k_mac_vif_ap_csa_work() local
2066 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_ap_csa_work()
2069 ath10k_mac_vif_ap_csa_count_down(arvif); in ath10k_mac_vif_ap_csa_work()
2078 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_beacon_iter() local
2086 cancel_delayed_work(&arvif->connection_loss_work); in ath10k_mac_handle_beacon_iter()
2101 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_beacon_miss_iter() local
2102 struct ath10k *ar = arvif->ar; in ath10k_mac_handle_beacon_miss_iter()
2105 if (arvif->vdev_id != *vdev_id) in ath10k_mac_handle_beacon_miss_iter()
2108 if (!arvif->is_up) in ath10k_mac_handle_beacon_miss_iter()
2118 ieee80211_queue_delayed_work(hw, &arvif->connection_loss_work, in ath10k_mac_handle_beacon_miss_iter()
2132 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif, in ath10k_mac_vif_sta_connection_loss_work() local
2134 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_sta_connection_loss_work()
2136 if (!arvif->is_up) in ath10k_mac_vif_sta_connection_loss_work()
2168 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_basic() local
2179 arg->vdev_id = arvif->vdev_id; in ath10k_peer_assoc_h_basic()
2181 arg->peer_flags |= arvif->ar->wmi.peer_flags->auth; in ath10k_peer_assoc_h_basic()
2246 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_rates() local
2264 ratemask &= arvif->bitrate_mask.control[band].legacy; in ath10k_peer_assoc_h_rates()
2309 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_ht() local
2327 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_peer_assoc_h_ht()
2328 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_ht()
2352 if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) { in ath10k_peer_assoc_h_ht()
2411 struct ath10k_vif *arvif, in ath10k_peer_assoc_qos_ap() argument
2440 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, in ath10k_peer_assoc_qos_ap()
2446 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2450 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, in ath10k_peer_assoc_qos_ap()
2456 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2465 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, sta->addr, in ath10k_peer_assoc_qos_ap()
2470 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2559 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_vht() local
2575 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_vht()
2666 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_qos() local
2668 switch (arvif->vdev_type) { in ath10k_peer_assoc_h_qos()
2671 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2674 arg->peer_flags |= arvif->ar->wmi.peer_flags->apsd; in ath10k_peer_assoc_h_qos()
2680 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2684 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2692 arvif->ar->wmi.peer_flags->qos)); in ath10k_peer_assoc_h_qos()
2735 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_phymode() local
2746 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_peer_assoc_h_phymode()
2747 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_phymode()
2826 static int ath10k_setup_peer_smps(struct ath10k *ar, struct ath10k_vif *arvif, in ath10k_setup_peer_smps() argument
2841 return ath10k_wmi_peer_set_param(ar, arvif->vdev_id, addr, in ath10k_setup_peer_smps()
2850 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_vif_recalc_txbf() local
2901 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, value); in ath10k_mac_vif_recalc_txbf()
2913 struct ath10k_vif *arvif; in ath10k_mac_is_connected() local
2915 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_mac_is_connected()
2916 if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath10k_mac_is_connected()
2970 struct ath10k_vif *arvif; in ath10k_mac_txpower_recalc() local
2975 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_mac_txpower_recalc()
2977 if (arvif->txpower == INT_MIN) in ath10k_mac_txpower_recalc()
2981 txpower = arvif->txpower; in ath10k_mac_txpower_recalc()
2983 txpower = min(txpower, arvif->txpower); in ath10k_mac_txpower_recalc()
3069 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_assoc() local
3079 arvif->vdev_id, arvif->bssid, arvif->aid); in ath10k_bss_assoc()
3086 bss_conf->bssid, arvif->vdev_id); in ath10k_bss_assoc()
3100 bss_conf->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
3110 bss_conf->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
3114 ret = ath10k_setup_peer_smps(ar, arvif, bss_conf->bssid, &ht_cap); in ath10k_bss_assoc()
3117 arvif->vdev_id, ret); in ath10k_bss_assoc()
3124 arvif->vdev_id, bss_conf->bssid, ret); in ath10k_bss_assoc()
3130 arvif->vdev_id, bss_conf->bssid, vif->cfg.aid); in ath10k_bss_assoc()
3132 WARN_ON(arvif->is_up); in ath10k_bss_assoc()
3134 arvif->aid = vif->cfg.aid; in ath10k_bss_assoc()
3135 ether_addr_copy(arvif->bssid, bss_conf->bssid); in ath10k_bss_assoc()
3142 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid); in ath10k_bss_assoc()
3145 arvif->vdev_id, ret); in ath10k_bss_assoc()
3149 arvif->is_up = true; in ath10k_bss_assoc()
3157 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, arvif->bssid, in ath10k_bss_assoc()
3161 arvif->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
3170 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_disassoc() local
3177 arvif->vdev_id, arvif->bssid); in ath10k_bss_disassoc()
3179 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_bss_disassoc()
3182 arvif->vdev_id, ret); in ath10k_bss_disassoc()
3184 arvif->def_wep_key_idx = -1; in ath10k_bss_disassoc()
3189 arvif->vdev_id, ret); in ath10k_bss_disassoc()
3193 arvif->is_up = false; in ath10k_bss_disassoc()
3197 cancel_delayed_work_sync(&arvif->connection_loss_work); in ath10k_bss_disassoc()
3202 struct ath10k_vif *arvif) in ath10k_new_peer_tid_config() argument
3211 if (arvif->retry_long[i] || arvif->ampdu[i] || in ath10k_new_peer_tid_config()
3212 arvif->rate_ctrl[i] || arvif->rtscts[i]) { in ath10k_new_peer_tid_config()
3215 arg.vdev_id = arvif->vdev_id; in ath10k_new_peer_tid_config()
3216 arg.retry_count = arvif->retry_long[i]; in ath10k_new_peer_tid_config()
3217 arg.aggr_control = arvif->ampdu[i]; in ath10k_new_peer_tid_config()
3218 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_new_peer_tid_config()
3219 arg.rcode_flags = arvif->rate_code[i]; in ath10k_new_peer_tid_config()
3221 if (arvif->rtscts[i]) in ath10k_new_peer_tid_config()
3227 arg.rtscts_ctrl = arvif->rtscts[i]; in ath10k_new_peer_tid_config()
3230 if (arvif->noack[i]) { in ath10k_new_peer_tid_config()
3231 arg.ack_policy = arvif->noack[i]; in ath10k_new_peer_tid_config()
3268 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_station_assoc() local
3277 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3284 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3292 ret = ath10k_setup_peer_smps(ar, arvif, sta->addr, in ath10k_station_assoc()
3296 arvif->vdev_id, ret); in ath10k_station_assoc()
3300 ret = ath10k_peer_assoc_qos_ap(ar, arvif, sta); in ath10k_station_assoc()
3303 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3308 arvif->num_legacy_stations++; in ath10k_station_assoc()
3309 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_station_assoc()
3312 arvif->vdev_id, ret); in ath10k_station_assoc()
3318 if ((arvif->def_wep_key_idx != -1) && (!sta->tdls)) { in ath10k_station_assoc()
3319 ret = ath10k_install_peer_wep_keys(arvif, sta->addr); in ath10k_station_assoc()
3322 arvif->vdev_id, ret); in ath10k_station_assoc()
3331 return ath10k_new_peer_tid_config(ar, sta, arvif); in ath10k_station_assoc()
3338 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_station_disassoc() local
3344 arvif->num_legacy_stations--; in ath10k_station_disassoc()
3345 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_station_disassoc()
3348 arvif->vdev_id, ret); in ath10k_station_disassoc()
3353 ret = ath10k_clear_peer_keys(arvif, sta->addr); in ath10k_station_disassoc()
3356 arvif->vdev_id, ret); in ath10k_station_disassoc()
3601 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_tx_unlock_iter() local
3603 if (arvif->tx_paused) in ath10k_mac_tx_unlock_iter()
3606 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_mac_tx_unlock_iter()
3627 void ath10k_mac_vif_tx_lock(struct ath10k_vif *arvif, int reason) in ath10k_mac_vif_tx_lock() argument
3629 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_tx_lock()
3634 arvif->tx_paused |= BIT(reason); in ath10k_mac_vif_tx_lock()
3635 ieee80211_stop_queue(ar->hw, arvif->vdev_id); in ath10k_mac_vif_tx_lock()
3638 void ath10k_mac_vif_tx_unlock(struct ath10k_vif *arvif, int reason) in ath10k_mac_vif_tx_unlock() argument
3640 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_tx_unlock()
3645 arvif->tx_paused &= ~BIT(reason); in ath10k_mac_vif_tx_unlock()
3650 if (arvif->tx_paused) in ath10k_mac_vif_tx_unlock()
3653 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_mac_vif_tx_unlock()
3656 static void ath10k_mac_vif_handle_tx_pause(struct ath10k_vif *arvif, in ath10k_mac_vif_handle_tx_pause() argument
3660 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_handle_tx_pause()
3666 ath10k_mac_vif_tx_lock(arvif, pause_id); in ath10k_mac_vif_handle_tx_pause()
3669 ath10k_mac_vif_tx_unlock(arvif, pause_id); in ath10k_mac_vif_handle_tx_pause()
3674 action, arvif->vdev_id); in ath10k_mac_vif_handle_tx_pause()
3688 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_tx_pause_iter() local
3691 if (arvif->vdev_id != arg->vdev_id) in ath10k_mac_handle_tx_pause_iter()
3694 ath10k_mac_vif_handle_tx_pause(arvif, arg->pause_id, arg->action); in ath10k_mac_handle_tx_pause_iter()
3862 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_tx_h_add_p2p_noa_ie() local
3870 if (arvif->u.ap.noa_data) in ath10k_tx_h_add_p2p_noa_ie()
3871 if (!pskb_expand_head(skb, 0, arvif->u.ap.noa_len, in ath10k_tx_h_add_p2p_noa_ie()
3873 skb_put_data(skb, arvif->u.ap.noa_data, in ath10k_tx_h_add_p2p_noa_ie()
3874 arvif->u.ap.noa_len); in ath10k_tx_h_add_p2p_noa_ie()
3890 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_tx_h_fill_cb() local
3913 if (arvif->noack[tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_tx_h_fill_cb()
4116 struct ath10k_vif *arvif; in ath10k_offchan_tx_work() local
4177 arvif = ath10k_get_arvif(ar, vdev_id); in ath10k_offchan_tx_work()
4178 if (arvif) { in ath10k_offchan_tx_work()
4179 vif = arvif->vif; in ath10k_offchan_tx_work()
4787 struct ath10k_vif *arvif; in ath10k_halt() local
4809 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_halt()
4810 ath10k_mac_vif_beacon_cleanup(arvif); in ath10k_halt()
5419 struct ath10k_vif *arvif; in ath10k_config_ps() local
5424 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_config_ps()
5425 ret = ath10k_mac_vif_setup_ps(arvif); in ath10k_config_ps()
5468 static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif) in ath10k_mac_set_txbf_conf() argument
5471 struct ath10k *ar = arvif->ar; in ath10k_mac_set_txbf_conf()
5505 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_mac_set_txbf_conf()
5512 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_update_vif_offload() local
5524 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_update_vif_offload()
5529 arvif->vdev_id, ret); in ath10k_update_vif_offload()
5544 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_add_interface() local
5557 memset(arvif, 0, sizeof(*arvif)); in ath10k_add_interface()
5560 arvif->ar = ar; in ath10k_add_interface()
5561 arvif->vif = vif; in ath10k_add_interface()
5563 INIT_LIST_HEAD(&arvif->list); in ath10k_add_interface()
5564 INIT_WORK(&arvif->ap_csa_work, ath10k_mac_vif_ap_csa_work); in ath10k_add_interface()
5565 INIT_DELAYED_WORK(&arvif->connection_loss_work, in ath10k_add_interface()
5568 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) { in ath10k_add_interface()
5569 arvif->bitrate_mask.control[i].legacy = 0xffffffff; in ath10k_add_interface()
5570 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff, in ath10k_add_interface()
5571 sizeof(arvif->bitrate_mask.control[i].ht_mcs)); in ath10k_add_interface()
5572 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff, in ath10k_add_interface()
5573 sizeof(arvif->bitrate_mask.control[i].vht_mcs)); in ath10k_add_interface()
5592 arvif->vdev_id = bit; in ath10k_add_interface()
5593 arvif->vdev_subtype = in ath10k_add_interface()
5598 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath10k_add_interface()
5599 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5604 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath10k_add_interface()
5606 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5610 arvif->vdev_type = WMI_VDEV_TYPE_IBSS; in ath10k_add_interface()
5614 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5621 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath10k_add_interface()
5624 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath10k_add_interface()
5627 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5631 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR; in ath10k_add_interface()
5643 vif->cab_queue = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1); in ath10k_add_interface()
5645 vif->hw_queue[i] = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1); in ath10k_add_interface()
5667 arvif->beacon_buf = kmalloc(IEEE80211_MAX_FRAME_LEN, in ath10k_add_interface()
5677 arvif->beacon_paddr = DMA_MAPPING_ERROR; in ath10k_add_interface()
5679 arvif->beacon_buf = in ath10k_add_interface()
5682 &arvif->beacon_paddr, in ath10k_add_interface()
5685 if (!arvif->beacon_buf) { in ath10k_add_interface()
5693 arvif->nohwcrypt = true; in ath10k_add_interface()
5695 if (arvif->nohwcrypt && in ath10k_add_interface()
5703 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype, in ath10k_add_interface()
5704 arvif->beacon_buf ? "single-buf" : "per-skb"); in ath10k_add_interface()
5706 ret = ath10k_wmi_vdev_create(ar, arvif->vdev_id, arvif->vdev_type, in ath10k_add_interface()
5707 arvif->vdev_subtype, vif->addr); in ath10k_add_interface()
5710 arvif->vdev_id, ret); in ath10k_add_interface()
5717 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5721 arvif->vdev_id, ret); in ath10k_add_interface()
5725 ar->free_vdev_map &= ~(1LL << arvif->vdev_id); in ath10k_add_interface()
5727 list_add(&arvif->list, &ar->arvifs); in ath10k_add_interface()
5733 ret = ath10k_mac_vif_disable_keepalive(arvif); in ath10k_add_interface()
5736 arvif->vdev_id, ret); in ath10k_add_interface()
5740 arvif->def_wep_key_idx = -1; in ath10k_add_interface()
5751 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5755 arvif->vdev_id, ar->cfg_tx_chainmask, nss, in ath10k_add_interface()
5761 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_add_interface()
5762 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_add_interface()
5763 ret = ath10k_peer_create(ar, vif, NULL, arvif->vdev_id, in ath10k_add_interface()
5767 arvif->vdev_id, ret); in ath10k_add_interface()
5773 peer = ath10k_peer_find(ar, arvif->vdev_id, vif->addr); in ath10k_add_interface()
5776 vif->addr, arvif->vdev_id); in ath10k_add_interface()
5782 arvif->peer_id = find_first_bit(peer->peer_ids, in ath10k_add_interface()
5787 arvif->peer_id = HTT_INVALID_PEERID; in ath10k_add_interface()
5790 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath10k_add_interface()
5791 ret = ath10k_mac_set_kickout(arvif); in ath10k_add_interface()
5794 arvif->vdev_id, ret); in ath10k_add_interface()
5799 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) { in ath10k_add_interface()
5802 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_add_interface()
5806 arvif->vdev_id, ret); in ath10k_add_interface()
5810 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif); in ath10k_add_interface()
5813 arvif->vdev_id, ret); in ath10k_add_interface()
5817 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif); in ath10k_add_interface()
5820 arvif->vdev_id, ret); in ath10k_add_interface()
5825 ret = ath10k_mac_set_txbf_conf(arvif); in ath10k_add_interface()
5828 arvif->vdev_id, ret); in ath10k_add_interface()
5832 ret = ath10k_mac_set_rts(arvif, ar->hw->wiphy->rts_threshold); in ath10k_add_interface()
5835 arvif->vdev_id, ret); in ath10k_add_interface()
5839 arvif->txpower = vif->bss_conf.txpower; in ath10k_add_interface()
5848 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5849 arvif->ftm_responder); in ath10k_add_interface()
5854 arvif->vdev_id, ret); in ath10k_add_interface()
5858 ar->monitor_arvif = arvif; in ath10k_add_interface()
5868 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_add_interface()
5875 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_add_interface()
5876 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_add_interface()
5877 ath10k_wmi_peer_delete(ar, arvif->vdev_id, vif->addr); in ath10k_add_interface()
5878 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id, in ath10k_add_interface()
5883 ath10k_wmi_vdev_delete(ar, arvif->vdev_id); in ath10k_add_interface()
5884 ar->free_vdev_map |= 1LL << arvif->vdev_id; in ath10k_add_interface()
5886 list_del(&arvif->list); in ath10k_add_interface()
5890 if (arvif->beacon_buf) { in ath10k_add_interface()
5892 kfree(arvif->beacon_buf); in ath10k_add_interface()
5895 arvif->beacon_buf, in ath10k_add_interface()
5896 arvif->beacon_paddr); in ath10k_add_interface()
5897 arvif->beacon_buf = NULL; in ath10k_add_interface()
5905 static void ath10k_mac_vif_tx_unlock_all(struct ath10k_vif *arvif) in ath10k_mac_vif_tx_unlock_all() argument
5910 ath10k_mac_vif_tx_unlock(arvif, i); in ath10k_mac_vif_tx_unlock_all()
5917 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_remove_interface() local
5923 cancel_work_sync(&arvif->ap_csa_work); in ath10k_remove_interface()
5924 cancel_delayed_work_sync(&arvif->connection_loss_work); in ath10k_remove_interface()
5928 ret = ath10k_spectral_vif_stop(arvif); in ath10k_remove_interface()
5931 arvif->vdev_id, ret); in ath10k_remove_interface()
5933 ar->free_vdev_map |= 1LL << arvif->vdev_id; in ath10k_remove_interface()
5935 list_del(&arvif->list); in ath10k_remove_interface()
5938 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_remove_interface()
5939 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_remove_interface()
5940 ret = ath10k_wmi_peer_delete(arvif->ar, arvif->vdev_id, in ath10k_remove_interface()
5944 arvif->vdev_id, ret); in ath10k_remove_interface()
5946 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id, in ath10k_remove_interface()
5948 kfree(arvif->u.ap.noa_data); in ath10k_remove_interface()
5952 arvif->vdev_id); in ath10k_remove_interface()
5954 ret = ath10k_wmi_vdev_delete(ar, arvif->vdev_id); in ath10k_remove_interface()
5957 arvif->vdev_id, ret); in ath10k_remove_interface()
5971 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_remove_interface()
5972 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_remove_interface()
5973 ret = ath10k_wait_for_peer_deleted(ar, arvif->vdev_id, in ath10k_remove_interface()
5977 arvif->vdev_id, ret); in ath10k_remove_interface()
5992 vif->addr, arvif->vdev_id); in ath10k_remove_interface()
6000 ath10k_mac_vif_beacon_cleanup(arvif); in ath10k_remove_interface()
6003 ath10k_peer_cleanup(ar, arvif->vdev_id); in ath10k_remove_interface()
6018 ath10k_mac_vif_tx_unlock_all(arvif); in ath10k_remove_interface()
6063 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_recalculate_mgmt_rate() local
6084 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_recalculate_mgmt_rate()
6096 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_info_changed() local
6107 ath10k_control_ibss(arvif, vif); in ath10k_bss_info_changed()
6110 arvif->beacon_interval = info->beacon_int; in ath10k_bss_info_changed()
6112 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6113 arvif->beacon_interval); in ath10k_bss_info_changed()
6116 arvif->vdev_id, arvif->beacon_interval); in ath10k_bss_info_changed()
6120 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6126 arvif->vdev_id); in ath10k_bss_info_changed()
6133 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6135 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_bss_info_changed()
6142 strncpy(arvif->u.ap.ssid, "mesh", in ath10k_bss_info_changed()
6143 sizeof(arvif->u.ap.ssid)); in ath10k_bss_info_changed()
6144 arvif->u.ap.ssid_len = 4; in ath10k_bss_info_changed()
6149 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_bss_info_changed()
6152 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6156 arvif->dtim_period = info->dtim_period; in ath10k_bss_info_changed()
6160 arvif->vdev_id, arvif->dtim_period); in ath10k_bss_info_changed()
6163 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6164 arvif->dtim_period); in ath10k_bss_info_changed()
6167 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6172 arvif->u.ap.ssid_len = vif->cfg.ssid_len; in ath10k_bss_info_changed()
6174 memcpy(arvif->u.ap.ssid, vif->cfg.ssid, in ath10k_bss_info_changed()
6176 arvif->u.ap.hidden_ssid = info->hidden_ssid; in ath10k_bss_info_changed()
6180 ether_addr_copy(arvif->bssid, info->bssid); in ath10k_bss_info_changed()
6183 arvif->ftm_responder != info->ftm_responder && in ath10k_bss_info_changed()
6185 arvif->ftm_responder = info->ftm_responder; in ath10k_bss_info_changed()
6188 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6189 arvif->ftm_responder); in ath10k_bss_info_changed()
6193 arvif->vdev_id, arvif->ftm_responder, ret); in ath10k_bss_info_changed()
6197 ath10k_control_beaconing(arvif, info); in ath10k_bss_info_changed()
6200 arvif->use_cts_prot = info->use_cts_prot; in ath10k_bss_info_changed()
6202 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_bss_info_changed()
6205 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6207 if (ath10k_mac_can_set_cts_prot(arvif)) { in ath10k_bss_info_changed()
6208 ret = ath10k_mac_set_cts_prot(arvif); in ath10k_bss_info_changed()
6211 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6223 arvif->vdev_id, slottime); in ath10k_bss_info_changed()
6226 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6230 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6241 arvif->vdev_id, preamble); in ath10k_bss_info_changed()
6244 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6248 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6268 arvif->vdev_id, info->txpower); in ath10k_bss_info_changed()
6270 arvif->txpower = info->txpower; in ath10k_bss_info_changed()
6277 arvif->ps = vif->cfg.ps; in ath10k_bss_info_changed()
6282 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6286 !ath10k_mac_vif_chan(arvif->vif, &def)) { in ath10k_bss_info_changed()
6308 arvif->vdev_id, rate); in ath10k_bss_info_changed()
6311 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_bss_info_changed()
6316 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6319 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_bss_info_changed()
6324 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6328 !ath10k_mac_vif_chan(arvif->vif, &def)) in ath10k_bss_info_changed()
6358 struct ieee80211_vif *sta_vif = arsta->arvif->vif; in ath10k_mac_tdls_vif_stations_count_iter()
6382 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_hw_scan() local
6403 ar->scan.vdev_id = arvif->vdev_id; in ath10k_hw_scan()
6419 arg.vdev_id = arvif->vdev_id; in ath10k_hw_scan()
6495 struct ath10k_vif *arvif, in ath10k_set_key_h_def_keyidx() argument
6499 u32 vdev_param = arvif->ar->wmi.vdev_param->def_keyid; in ath10k_set_key_h_def_keyidx()
6513 if (arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath10k_set_key_h_def_keyidx()
6514 arvif->vdev_type != WMI_VDEV_TYPE_IBSS) in ath10k_set_key_h_def_keyidx()
6529 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_set_key_h_def_keyidx()
6533 arvif->vdev_id, ret); in ath10k_set_key_h_def_keyidx()
6541 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_set_key() local
6559 if (arvif->nohwcrypt) in ath10k_set_key()
6573 } else if (arvif->vdev_type == WMI_VDEV_TYPE_STA) { in ath10k_set_key()
6583 arvif->wep_keys[key->keyidx] = key; in ath10k_set_key()
6585 arvif->wep_keys[key->keyidx] = NULL; in ath10k_set_key()
6592 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr); in ath10k_set_key()
6614 ath10k_clear_vdev_key(arvif, key); in ath10k_set_key()
6622 ath10k_mac_vif_update_wep_key(arvif, key); in ath10k_set_key()
6630 if (cmd == SET_KEY && arvif->def_wep_key_idx == -1) in ath10k_set_key()
6634 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags); in ath10k_set_key()
6638 arvif->vdev_id, peer_addr, ret); in ath10k_set_key()
6650 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags2); in ath10k_set_key()
6654 arvif->vdev_id, peer_addr, ret); in ath10k_set_key()
6655 ret2 = ath10k_install_key(arvif, key, DISABLE_KEY, in ath10k_set_key()
6660 arvif->vdev_id, peer_addr, ret2); in ath10k_set_key()
6666 ath10k_set_key_h_def_keyidx(ar, arvif, cmd, key); in ath10k_set_key()
6669 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr); in ath10k_set_key()
6680 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_set_key()
6683 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, peer_addr, in ath10k_set_key()
6696 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_set_default_unicast_key() local
6699 mutex_lock(&arvif->ar->conf_mutex); in ath10k_set_default_unicast_key()
6701 if (arvif->ar->state != ATH10K_STATE_ON) in ath10k_set_default_unicast_key()
6705 arvif->vdev_id, keyidx); in ath10k_set_default_unicast_key()
6707 ret = ath10k_wmi_vdev_set_param(arvif->ar, in ath10k_set_default_unicast_key()
6708 arvif->vdev_id, in ath10k_set_default_unicast_key()
6709 arvif->ar->wmi.vdev_param->def_keyid, in ath10k_set_default_unicast_key()
6714 arvif->vdev_id, in ath10k_set_default_unicast_key()
6719 arvif->def_wep_key_idx = keyidx; in ath10k_set_default_unicast_key()
6722 mutex_unlock(&arvif->ar->conf_mutex); in ath10k_set_default_unicast_key()
6728 struct ath10k_vif *arvif; in ath10k_sta_rc_update_wk() local
6740 arvif = arsta->arvif; in ath10k_sta_rc_update_wk()
6741 ar = arvif->ar; in ath10k_sta_rc_update_wk()
6743 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) in ath10k_sta_rc_update_wk()
6747 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_sta_rc_update_wk()
6748 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_sta_rc_update_wk()
6774 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6782 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6793 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6804 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6815 err = ath10k_station_assoc(ar, arvif->vif, sta, true); in ath10k_sta_rc_update_wk()
6825 static int ath10k_mac_inc_num_stations(struct ath10k_vif *arvif, in ath10k_mac_inc_num_stations() argument
6828 struct ath10k *ar = arvif->ar; in ath10k_mac_inc_num_stations()
6832 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath10k_mac_inc_num_stations()
6843 static void ath10k_mac_dec_num_stations(struct ath10k_vif *arvif, in ath10k_mac_dec_num_stations() argument
6846 struct ath10k *ar = arvif->ar; in ath10k_mac_dec_num_stations()
6850 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath10k_mac_dec_num_stations()
6861 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_set_txpwr() local
6878 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_set_txpwr()
7075 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_set_tid_config() local
7101 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
7110 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
7154 if ((arvif->retry_long[arg->tid] || in ath10k_mac_set_tid_config()
7155 arvif->rate_code[arg->tid] || in ath10k_mac_set_tid_config()
7156 arvif->ampdu[arg->tid] == in ath10k_mac_set_tid_config()
7161 arvif->noack[arg->tid] = arg->ack_policy; in ath10k_mac_set_tid_config()
7162 arvif->ampdu[arg->tid] = arg->aggr_control; in ath10k_mac_set_tid_config()
7163 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl; in ath10k_mac_set_tid_config()
7168 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_set_tid_config()
7171 arvif->retry_long[arg->tid] = arg->retry_count; in ath10k_mac_set_tid_config()
7175 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_set_tid_config()
7178 arvif->ampdu[arg->tid] = arg->aggr_control; in ath10k_mac_set_tid_config()
7183 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
7187 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl; in ath10k_mac_set_tid_config()
7188 arvif->rate_code[arg->tid] = arg->rcode_flags; in ath10k_mac_set_tid_config()
7193 arvif->rtscts[arg->tid] = arg->rtscts_ctrl; in ath10k_mac_set_tid_config()
7198 arvif->tid_conf_changed[arg->tid] |= changed; in ath10k_mac_set_tid_config()
7285 struct ath10k_vif *arvif, in ath10k_mac_reset_tid_config() argument
7292 arg.vdev_id = arvif->vdev_id; in ath10k_mac_reset_tid_config()
7313 if (!arvif->tids_rst) { in ath10k_mac_reset_tid_config()
7321 arvif->retry_long[i] = 0; in ath10k_mac_reset_tid_config()
7322 arvif->noack[i] = 0; in ath10k_mac_reset_tid_config()
7323 arvif->ampdu[i] = 0; in ath10k_mac_reset_tid_config()
7324 arvif->rate_code[i] = 0; in ath10k_mac_reset_tid_config()
7325 arvif->rate_ctrl[i] = 0; in ath10k_mac_reset_tid_config()
7326 arvif->rtscts[i] = 0; in ath10k_mac_reset_tid_config()
7340 struct ath10k_vif *arvif; in ath10k_sta_tid_cfg_wk() local
7349 arvif = arsta->arvif; in ath10k_sta_tid_cfg_wk()
7350 ar = arvif->ar; in ath10k_sta_tid_cfg_wk()
7354 if (arvif->tids_rst) { in ath10k_sta_tid_cfg_wk()
7355 ret = ath10k_mac_reset_tid_config(ar, sta, arvif, in ath10k_sta_tid_cfg_wk()
7356 arvif->tids_rst); in ath10k_sta_tid_cfg_wk()
7364 changed = arvif->tid_conf_changed[i]; in ath10k_sta_tid_cfg_wk()
7371 arg.ack_policy = arvif->noack[i]; in ath10k_sta_tid_cfg_wk()
7372 arg.aggr_control = arvif->ampdu[i]; in ath10k_sta_tid_cfg_wk()
7373 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_sta_tid_cfg_wk()
7380 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7383 arg.retry_count = arvif->retry_long[i]; in ath10k_sta_tid_cfg_wk()
7391 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7394 arg.aggr_control = arvif->ampdu[i]; in ath10k_sta_tid_cfg_wk()
7401 nss = ATH10K_HW_NSS(arvif->rate_code[i]); in ath10k_sta_tid_cfg_wk()
7403 arvif->rate_code[i], in ath10k_sta_tid_cfg_wk()
7406 arvif->rate_ctrl[i] > WMI_TID_CONFIG_RATE_CONTROL_AUTO) { in ath10k_sta_tid_cfg_wk()
7414 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7418 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_sta_tid_cfg_wk()
7419 arg.rcode_flags = arvif->rate_code[i]; in ath10k_sta_tid_cfg_wk()
7429 arg.rtscts_ctrl = arvif->rtscts[i] - 1; in ath10k_sta_tid_cfg_wk()
7461 struct ieee80211_vif *sta_vif = arsta->arvif->vif; in ath10k_mac_vif_stations_tid_conf()
7476 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_state() local
7485 arsta->arvif = arvif; in ath10k_sta_state()
7513 arvif->vdev_id, sta->addr, in ath10k_sta_state()
7522 arvif->vdev_id, in ath10k_sta_state()
7530 ret = ath10k_mac_inc_num_stations(arvif, sta); in ath10k_sta_state()
7541 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7547 ret = ath10k_peer_create(ar, vif, sta, arvif->vdev_id, in ath10k_sta_state()
7551 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7552 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7559 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7562 vif->addr, arvif->vdev_id); in ath10k_sta_state()
7564 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7565 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7579 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7583 arvif->vdev_id, ret); in ath10k_sta_state()
7584 ath10k_peer_delete(ar, arvif->vdev_id, in ath10k_sta_state()
7586 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7591 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta, in ath10k_sta_state()
7596 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7597 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7598 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7603 ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7613 arvif->vdev_id, sta->addr, sta); in ath10k_sta_state()
7616 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, in ath10k_sta_state()
7625 ret = ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7628 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7630 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7640 sta->addr, peer, i, arvif->vdev_id); in ath10k_sta_state()
7666 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7670 arvif->vdev_id, ret); in ath10k_sta_state()
7686 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7699 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7703 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta, in ath10k_sta_state()
7707 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7722 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7732 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_conf_tx_uapsd() local
7740 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath10k_conf_tx_uapsd()
7771 arvif->u.sta.uapsd |= value; in ath10k_conf_tx_uapsd()
7773 arvif->u.sta.uapsd &= ~value; in ath10k_conf_tx_uapsd()
7775 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7777 arvif->u.sta.uapsd); in ath10k_conf_tx_uapsd()
7783 if (arvif->u.sta.uapsd) in ath10k_conf_tx_uapsd()
7788 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7794 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif); in ath10k_conf_tx_uapsd()
7797 arvif->vdev_id, ret); in ath10k_conf_tx_uapsd()
7801 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif); in ath10k_conf_tx_uapsd()
7804 arvif->vdev_id, ret); in ath10k_conf_tx_uapsd()
7822 ret = ath10k_wmi_vdev_sta_uapsd(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7823 arvif->bssid, &arg, 1); in ath10k_conf_tx_uapsd()
7841 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_conf_tx() local
7849 p = &arvif->wmm_params.ac_vo; in ath10k_conf_tx()
7852 p = &arvif->wmm_params.ac_vi; in ath10k_conf_tx()
7855 p = &arvif->wmm_params.ac_be; in ath10k_conf_tx()
7858 p = &arvif->wmm_params.ac_bk; in ath10k_conf_tx()
7879 ret = ath10k_wmi_vdev_wmm_conf(ar, arvif->vdev_id, in ath10k_conf_tx()
7880 &arvif->wmm_params); in ath10k_conf_tx()
7883 arvif->vdev_id, ret); in ath10k_conf_tx()
7890 ret = ath10k_wmi_pdev_set_wmm_params(ar, &arvif->wmm_params); in ath10k_conf_tx()
7913 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_remain_on_channel() local
7933 ar->scan.vdev_id = arvif->vdev_id; in ath10k_remain_on_channel()
7953 arg.vdev_id = arvif->vdev_id; in ath10k_remain_on_channel()
8022 struct ath10k_vif *arvif; in ath10k_set_rts_threshold() local
8026 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_set_rts_threshold()
8028 arvif->vdev_id, value); in ath10k_set_rts_threshold()
8030 ret = ath10k_mac_set_rts(arvif, value); in ath10k_set_rts_threshold()
8033 arvif->vdev_id, ret); in ath10k_set_rts_threshold()
8092 struct ath10k_vif *arvif; in ath10k_flush() local
8098 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_flush()
8099 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath10k_flush()
8100 ath10k_wmi_peer_flush(ar, arvif->vdev_id, in ath10k_flush()
8101 arvif->bssid, bitmap); in ath10k_flush()
8126 struct ath10k_vif *arvif; in ath10k_reconfig_complete() local
8142 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_reconfig_complete()
8143 if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath10k_reconfig_complete()
8144 ieee80211_hw_restart_disconnect(arvif->vif); in ath10k_reconfig_complete()
8274 static int ath10k_mac_set_fixed_rate_params(struct ath10k_vif *arvif, in ath10k_mac_set_fixed_rate_params() argument
8277 struct ath10k *ar = arvif->ar; in ath10k_mac_set_fixed_rate_params()
8284 arvif->vdev_id, rate, nss, sgi); in ath10k_mac_set_fixed_rate_params()
8287 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); in ath10k_mac_set_fixed_rate_params()
8295 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, nss); in ath10k_mac_set_fixed_rate_params()
8302 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, sgi); in ath10k_mac_set_fixed_rate_params()
8309 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, ldpc); in ath10k_mac_set_fixed_rate_params()
8351 struct ath10k_vif *arvif, in ath10k_mac_set_vht_bitrate_mask_fixup() argument
8355 u8 rate = arvif->vht_pfr; in ath10k_mac_set_vht_bitrate_mask_fixup()
8358 if (!sta->deflink.vht_cap.vht_supported || arvif->vht_num_rates != 1) in ath10k_mac_set_vht_bitrate_mask_fixup()
8361 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_mac_set_vht_bitrate_mask_fixup()
8373 struct ath10k_vif *arvif = data; in ath10k_mac_set_bitrate_mask_iter() local
8375 struct ath10k *ar = arvif->ar; in ath10k_mac_set_bitrate_mask_iter()
8377 if (arsta->arvif != arvif) in ath10k_mac_set_bitrate_mask_iter()
8380 if (ath10k_mac_set_vht_bitrate_mask_fixup(ar, arvif, sta)) in ath10k_mac_set_bitrate_mask_iter()
8393 struct ath10k_vif *arvif = data; in ath10k_mac_clr_bitrate_mask_iter() local
8395 struct ath10k *ar = arvif->ar; in ath10k_mac_clr_bitrate_mask_iter()
8399 if (arsta->arvif != arvif || !sta->deflink.vht_cap.vht_supported) in ath10k_mac_clr_bitrate_mask_iter()
8402 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_mac_clr_bitrate_mask_iter()
8414 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_set_bitrate_mask() local
8416 struct ath10k *ar = arvif->ar; in ath10k_mac_op_set_bitrate_mask()
8448 arvif); in ath10k_mac_op_set_bitrate_mask()
8459 arvif->vdev_id, ret); in ath10k_mac_op_set_bitrate_mask()
8500 arvif->bitrate_mask = *mask; in ath10k_mac_op_set_bitrate_mask()
8501 arvif->vht_num_rates = vht_num_rates; in ath10k_mac_op_set_bitrate_mask()
8502 arvif->vht_pfr = vht_pfr; in ath10k_mac_op_set_bitrate_mask()
8505 arvif); in ath10k_mac_op_set_bitrate_mask()
8512 ret = ath10k_mac_set_fixed_rate_params(arvif, rate, nss, sgi, ldpc); in ath10k_mac_op_set_bitrate_mask()
8515 arvif->vdev_id, ret); in ath10k_mac_op_set_bitrate_mask()
8532 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_rc_update() local
8538 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr); in ath10k_sta_rc_update()
8542 sta->addr, arvif->vdev_id); in ath10k_sta_rc_update()
8616 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_offset_tsf() local
8628 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_offset_tsf()
8641 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_ampdu_action() local
8647 arvif->vdev_id, sta->addr, tid, action); in ath10k_ampdu_action()
8729 struct ath10k_vif *arvif; in ath10k_mac_update_vif_chan() local
8742 arvif = (void *)vifs[i].vif->drv_priv; in ath10k_mac_update_vif_chan()
8746 arvif->vdev_id, in ath10k_mac_update_vif_chan()
8752 if (WARN_ON(!arvif->is_started)) in ath10k_mac_update_vif_chan()
8755 if (WARN_ON(!arvif->is_up)) in ath10k_mac_update_vif_chan()
8758 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_update_vif_chan()
8761 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8775 arvif = (void *)vifs[i].vif->drv_priv; in ath10k_mac_update_vif_chan()
8777 if (WARN_ON(!arvif->is_started)) in ath10k_mac_update_vif_chan()
8780 if (WARN_ON(!arvif->is_up)) in ath10k_mac_update_vif_chan()
8783 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_update_vif_chan()
8788 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_update_vif_chan()
8793 ret = ath10k_vdev_restart(arvif, &vifs[i].new_ctx->def); in ath10k_mac_update_vif_chan()
8796 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8800 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_mac_update_vif_chan()
8801 arvif->bssid); in ath10k_mac_update_vif_chan()
8804 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8961 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_assign_vif_chanctx() local
8968 ctx, arvif->vdev_id); in ath10k_mac_op_assign_vif_chanctx()
8970 if (WARN_ON(arvif->is_started)) { in ath10k_mac_op_assign_vif_chanctx()
8975 ret = ath10k_vdev_start(arvif, &ctx->def); in ath10k_mac_op_assign_vif_chanctx()
8978 arvif->vdev_id, vif->addr, in ath10k_mac_op_assign_vif_chanctx()
8983 arvif->is_started = true; in ath10k_mac_op_assign_vif_chanctx()
8985 ret = ath10k_mac_vif_setup_ps(arvif); in ath10k_mac_op_assign_vif_chanctx()
8988 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
8993 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, 0, vif->addr); in ath10k_mac_op_assign_vif_chanctx()
8996 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
9000 arvif->is_up = true; in ath10k_mac_op_assign_vif_chanctx()
9003 if (ath10k_mac_can_set_cts_prot(arvif)) { in ath10k_mac_op_assign_vif_chanctx()
9004 ret = ath10k_mac_set_cts_prot(arvif); in ath10k_mac_op_assign_vif_chanctx()
9007 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
9025 ath10k_vdev_stop(arvif); in ath10k_mac_op_assign_vif_chanctx()
9026 arvif->is_started = false; in ath10k_mac_op_assign_vif_chanctx()
9027 ath10k_mac_vif_setup_ps(arvif); in ath10k_mac_op_assign_vif_chanctx()
9041 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_unassign_vif_chanctx() local
9048 ctx, arvif->vdev_id); in ath10k_mac_op_unassign_vif_chanctx()
9050 WARN_ON(!arvif->is_started); in ath10k_mac_op_unassign_vif_chanctx()
9053 WARN_ON(!arvif->is_up); in ath10k_mac_op_unassign_vif_chanctx()
9055 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_op_unassign_vif_chanctx()
9058 arvif->vdev_id, ret); in ath10k_mac_op_unassign_vif_chanctx()
9060 arvif->is_up = false; in ath10k_mac_op_unassign_vif_chanctx()
9063 ret = ath10k_vdev_stop(arvif); in ath10k_mac_op_unassign_vif_chanctx()
9066 arvif->vdev_id, ret); in ath10k_mac_op_unassign_vif_chanctx()
9068 arvif->is_started = false; in ath10k_mac_op_unassign_vif_chanctx()
9297 arsta->arvif->vdev_type == WMI_VDEV_TYPE_STA)) in ath10k_mac_sta_get_peer_stats_info()
9301 peer = ath10k_peer_find(ar, arsta->arvif->vdev_id, sta->addr); in ath10k_mac_sta_get_peer_stats_info()
9309 arsta->arvif->vdev_id, in ath10k_mac_sta_get_peer_stats_info()
9311 arsta->arvif->bssid, in ath10k_mac_sta_get_peer_stats_info()
9351 struct ath10k *ar = arsta->arvif->ar; in ath10k_sta_statistics()
9392 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_set_tid_config() local
9398 arg.vdev_id = arvif->vdev_id; in ath10k_mac_op_set_tid_config()
9400 arvif->tids_rst = 0; in ath10k_mac_op_set_tid_config()
9401 memset(arvif->tid_conf_changed, 0, sizeof(arvif->tid_conf_changed)); in ath10k_mac_op_set_tid_config()
9416 arvif->tids_rst = 0; in ath10k_mac_op_set_tid_config()
9433 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_reset_tid_config() local
9441 arvif->tids_rst = 0; in ath10k_mac_op_reset_tid_config()
9442 ret = ath10k_mac_reset_tid_config(ar, sta, arvif, tids); in ath10k_mac_op_reset_tid_config()
9446 arvif->tids_rst = tids; in ath10k_mac_op_reset_tid_config()
9829 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_get_arvif_iter() local
9831 if (arvif->vdev_id == arvif_iter->vdev_id) in ath10k_get_arvif_iter()
9832 arvif_iter->arvif = arvif; in ath10k_get_arvif_iter()
9846 if (!arvif_iter.arvif) { in ath10k_get_arvif()
9851 return arvif_iter.arvif; in ath10k_get_arvif()