Lines Matching refs:arvif
224 static int ath10k_send_key(struct ath10k_vif *arvif, in ath10k_send_key() argument
229 struct ath10k *ar = arvif->ar; in ath10k_send_key()
231 .vdev_id = arvif->vdev_id, in ath10k_send_key()
239 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_send_key()
282 return ath10k_wmi_vdev_install_key(arvif->ar, &arg); in ath10k_send_key()
285 static int ath10k_install_key(struct ath10k_vif *arvif, in ath10k_install_key() argument
290 struct ath10k *ar = arvif->ar; in ath10k_install_key()
298 if (arvif->nohwcrypt) in ath10k_install_key()
301 ret = ath10k_send_key(arvif, key, cmd, macaddr, flags); in ath10k_install_key()
312 static int ath10k_install_peer_wep_keys(struct ath10k_vif *arvif, in ath10k_install_peer_wep_keys() argument
315 struct ath10k *ar = arvif->ar; in ath10k_install_peer_wep_keys()
323 if (WARN_ON(arvif->vif->type != NL80211_IFTYPE_AP && in ath10k_install_peer_wep_keys()
324 arvif->vif->type != NL80211_IFTYPE_ADHOC && in ath10k_install_peer_wep_keys()
325 arvif->vif->type != NL80211_IFTYPE_MESH_POINT)) in ath10k_install_peer_wep_keys()
329 peer = ath10k_peer_find(ar, arvif->vdev_id, addr); in ath10k_install_peer_wep_keys()
335 for (i = 0; i < ARRAY_SIZE(arvif->wep_keys); i++) { in ath10k_install_peer_wep_keys()
336 if (arvif->wep_keys[i] == NULL) in ath10k_install_peer_wep_keys()
339 switch (arvif->vif->type) { in ath10k_install_peer_wep_keys()
343 if (arvif->def_wep_key_idx == i) in ath10k_install_peer_wep_keys()
346 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
352 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
358 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
369 peer->keys[i] = arvif->wep_keys[i]; in ath10k_install_peer_wep_keys()
381 if (arvif->vif->type != NL80211_IFTYPE_ADHOC) in ath10k_install_peer_wep_keys()
384 if (arvif->def_wep_key_idx == -1) in ath10k_install_peer_wep_keys()
387 ret = ath10k_wmi_vdev_set_param(arvif->ar, in ath10k_install_peer_wep_keys()
388 arvif->vdev_id, in ath10k_install_peer_wep_keys()
389 arvif->ar->wmi.vdev_param->def_keyid, in ath10k_install_peer_wep_keys()
390 arvif->def_wep_key_idx); in ath10k_install_peer_wep_keys()
393 arvif->vdev_id, ret); in ath10k_install_peer_wep_keys()
400 static int ath10k_clear_peer_keys(struct ath10k_vif *arvif, in ath10k_clear_peer_keys() argument
403 struct ath10k *ar = arvif->ar; in ath10k_clear_peer_keys()
413 peer = ath10k_peer_find(ar, arvif->vdev_id, addr); in ath10k_clear_peer_keys()
424 ret = ath10k_install_key(arvif, peer->keys[i], in ath10k_clear_peer_keys()
466 static int ath10k_clear_vdev_key(struct ath10k_vif *arvif, in ath10k_clear_vdev_key() argument
469 struct ath10k *ar = arvif->ar; in ath10k_clear_vdev_key()
502 ret = ath10k_install_key(arvif, key, DISABLE_KEY, addr, flags); in ath10k_clear_vdev_key()
514 static int ath10k_mac_vif_update_wep_key(struct ath10k_vif *arvif, in ath10k_mac_vif_update_wep_key() argument
517 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_update_wep_key()
524 if (ether_addr_equal(peer->addr, arvif->vif->addr)) in ath10k_mac_vif_update_wep_key()
527 if (ether_addr_equal(peer->addr, arvif->bssid)) in ath10k_mac_vif_update_wep_key()
534 arvif->vdev_id, key->keyidx); in ath10k_mac_vif_update_wep_key()
536 ret = ath10k_install_peer_wep_keys(arvif, peer->addr); in ath10k_mac_vif_update_wep_key()
539 arvif->vdev_id, peer->addr, ret); in ath10k_mac_vif_update_wep_key()
720 struct ath10k_vif *arvif; in ath10k_peer_create() local
730 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_peer_create()
771 static int ath10k_mac_set_kickout(struct ath10k_vif *arvif) in ath10k_mac_set_kickout() argument
773 struct ath10k *ar = arvif->ar; in ath10k_mac_set_kickout()
782 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
787 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
791 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
796 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
800 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
805 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
809 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
816 static int ath10k_mac_set_rts(struct ath10k_vif *arvif, u32 value) in ath10k_mac_set_rts() argument
818 struct ath10k *ar = arvif->ar; in ath10k_mac_set_rts()
822 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, value); in ath10k_mac_set_rts()
953 void ath10k_mac_vif_beacon_free(struct ath10k_vif *arvif) in ath10k_mac_vif_beacon_free() argument
955 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_beacon_free()
959 if (!arvif->beacon) in ath10k_mac_vif_beacon_free()
962 if (!arvif->beacon_buf) in ath10k_mac_vif_beacon_free()
963 dma_unmap_single(ar->dev, ATH10K_SKB_CB(arvif->beacon)->paddr, in ath10k_mac_vif_beacon_free()
964 arvif->beacon->len, DMA_TO_DEVICE); in ath10k_mac_vif_beacon_free()
966 if (WARN_ON(arvif->beacon_state != ATH10K_BEACON_SCHEDULED && in ath10k_mac_vif_beacon_free()
967 arvif->beacon_state != ATH10K_BEACON_SENT)) in ath10k_mac_vif_beacon_free()
970 dev_kfree_skb_any(arvif->beacon); in ath10k_mac_vif_beacon_free()
972 arvif->beacon = NULL; in ath10k_mac_vif_beacon_free()
973 arvif->beacon_state = ATH10K_BEACON_SCHEDULED; in ath10k_mac_vif_beacon_free()
976 static void ath10k_mac_vif_beacon_cleanup(struct ath10k_vif *arvif) in ath10k_mac_vif_beacon_cleanup() argument
978 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_beacon_cleanup()
982 ath10k_mac_vif_beacon_free(arvif); in ath10k_mac_vif_beacon_cleanup()
984 if (arvif->beacon_buf) { in ath10k_mac_vif_beacon_cleanup()
986 arvif->beacon_buf, arvif->beacon_paddr); in ath10k_mac_vif_beacon_cleanup()
987 arvif->beacon_buf = NULL; in ath10k_mac_vif_beacon_cleanup()
1288 static bool ath10k_mac_can_set_cts_prot(struct ath10k_vif *arvif) in ath10k_mac_can_set_cts_prot() argument
1290 struct ath10k *ar = arvif->ar; in ath10k_mac_can_set_cts_prot()
1294 if (!arvif->is_started) { in ath10k_mac_can_set_cts_prot()
1302 static int ath10k_mac_set_cts_prot(struct ath10k_vif *arvif) in ath10k_mac_set_cts_prot() argument
1304 struct ath10k *ar = arvif->ar; in ath10k_mac_set_cts_prot()
1312 arvif->vdev_id, arvif->use_cts_prot); in ath10k_mac_set_cts_prot()
1314 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_mac_set_cts_prot()
1315 arvif->use_cts_prot ? 1 : 0); in ath10k_mac_set_cts_prot()
1318 static int ath10k_recalc_rtscts_prot(struct ath10k_vif *arvif) in ath10k_recalc_rtscts_prot() argument
1320 struct ath10k *ar = arvif->ar; in ath10k_recalc_rtscts_prot()
1329 if (arvif->num_legacy_stations > 0) in ath10k_recalc_rtscts_prot()
1337 arvif->vdev_id, rts_cts); in ath10k_recalc_rtscts_prot()
1339 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_recalc_rtscts_prot()
1427 static int ath10k_vdev_stop(struct ath10k_vif *arvif) in ath10k_vdev_stop() argument
1429 struct ath10k *ar = arvif->ar; in ath10k_vdev_stop()
1437 ret = ath10k_wmi_vdev_stop(ar, arvif->vdev_id); in ath10k_vdev_stop()
1440 arvif->vdev_id, ret); in ath10k_vdev_stop()
1447 arvif->vdev_id, ret); in ath10k_vdev_stop()
1461 static int ath10k_vdev_start_restart(struct ath10k_vif *arvif, in ath10k_vdev_start_restart() argument
1465 struct ath10k *ar = arvif->ar; in ath10k_vdev_start_restart()
1474 arg.vdev_id = arvif->vdev_id; in ath10k_vdev_start_restart()
1475 arg.dtim_period = arvif->dtim_period; in ath10k_vdev_start_restart()
1476 arg.bcn_intval = arvif->beacon_interval; in ath10k_vdev_start_restart()
1488 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath10k_vdev_start_restart()
1489 arg.ssid = arvif->u.ap.ssid; in ath10k_vdev_start_restart()
1490 arg.ssid_len = arvif->u.ap.ssid_len; in ath10k_vdev_start_restart()
1491 arg.hidden_ssid = arvif->u.ap.hidden_ssid; in ath10k_vdev_start_restart()
1496 } else if (arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_vdev_start_restart()
1497 arg.ssid = arvif->vif->bss_conf.ssid; in ath10k_vdev_start_restart()
1498 arg.ssid_len = arvif->vif->bss_conf.ssid_len; in ath10k_vdev_start_restart()
1531 static int ath10k_vdev_start(struct ath10k_vif *arvif, in ath10k_vdev_start() argument
1534 return ath10k_vdev_start_restart(arvif, def, false); in ath10k_vdev_start()
1537 static int ath10k_vdev_restart(struct ath10k_vif *arvif, in ath10k_vdev_restart() argument
1540 return ath10k_vdev_start_restart(arvif, def, true); in ath10k_vdev_restart()
1543 static int ath10k_mac_setup_bcn_p2p_ie(struct ath10k_vif *arvif, in ath10k_mac_setup_bcn_p2p_ie() argument
1546 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_bcn_p2p_ie()
1551 if (arvif->vif->type != NL80211_IFTYPE_AP || !arvif->vif->p2p) in ath10k_mac_setup_bcn_p2p_ie()
1562 ret = ath10k_wmi_p2p_go_bcn_ie(ar, arvif->vdev_id, p2p_ie); in ath10k_mac_setup_bcn_p2p_ie()
1565 arvif->vdev_id, ret); in ath10k_mac_setup_bcn_p2p_ie()
1602 static int ath10k_mac_setup_bcn_tmpl(struct ath10k_vif *arvif) in ath10k_mac_setup_bcn_tmpl() argument
1604 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_bcn_tmpl()
1606 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_setup_bcn_tmpl()
1614 if (arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath10k_mac_setup_bcn_tmpl()
1615 arvif->vdev_type != WMI_VDEV_TYPE_IBSS) in ath10k_mac_setup_bcn_tmpl()
1624 ret = ath10k_mac_setup_bcn_p2p_ie(arvif, bcn); in ath10k_mac_setup_bcn_tmpl()
1639 ret = ath10k_wmi_bcn_tmpl(ar, arvif->vdev_id, offs.tim_offset, bcn, 0, in ath10k_mac_setup_bcn_tmpl()
1652 static int ath10k_mac_setup_prb_tmpl(struct ath10k_vif *arvif) in ath10k_mac_setup_prb_tmpl() argument
1654 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_prb_tmpl()
1656 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_setup_prb_tmpl()
1663 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath10k_mac_setup_prb_tmpl()
1676 ret = ath10k_wmi_prb_tmpl(ar, arvif->vdev_id, prb); in ath10k_mac_setup_prb_tmpl()
1688 static int ath10k_mac_vif_fix_hidden_ssid(struct ath10k_vif *arvif) in ath10k_mac_vif_fix_hidden_ssid() argument
1690 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_fix_hidden_ssid()
1712 if (WARN_ON(!arvif->is_started)) in ath10k_mac_vif_fix_hidden_ssid()
1715 if (WARN_ON(!arvif->is_up)) in ath10k_mac_vif_fix_hidden_ssid()
1718 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) in ath10k_mac_vif_fix_hidden_ssid()
1721 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_vif_fix_hidden_ssid()
1724 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1732 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_vif_fix_hidden_ssid()
1738 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_vif_fix_hidden_ssid()
1744 ret = ath10k_vdev_restart(arvif, &def); in ath10k_mac_vif_fix_hidden_ssid()
1747 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1751 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_mac_vif_fix_hidden_ssid()
1752 arvif->bssid); in ath10k_mac_vif_fix_hidden_ssid()
1755 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1762 static void ath10k_control_beaconing(struct ath10k_vif *arvif, in ath10k_control_beaconing() argument
1765 struct ath10k *ar = arvif->ar; in ath10k_control_beaconing()
1768 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_control_beaconing()
1771 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_control_beaconing()
1774 arvif->vdev_id, ret); in ath10k_control_beaconing()
1776 arvif->is_up = false; in ath10k_control_beaconing()
1778 spin_lock_bh(&arvif->ar->data_lock); in ath10k_control_beaconing()
1779 ath10k_mac_vif_beacon_free(arvif); in ath10k_control_beaconing()
1780 spin_unlock_bh(&arvif->ar->data_lock); in ath10k_control_beaconing()
1785 arvif->tx_seq_no = 0x1000; in ath10k_control_beaconing()
1787 arvif->aid = 0; in ath10k_control_beaconing()
1788 ether_addr_copy(arvif->bssid, info->bssid); in ath10k_control_beaconing()
1790 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_control_beaconing()
1791 arvif->bssid); in ath10k_control_beaconing()
1794 arvif->vdev_id, ret); in ath10k_control_beaconing()
1798 arvif->is_up = true; in ath10k_control_beaconing()
1800 ret = ath10k_mac_vif_fix_hidden_ssid(arvif); in ath10k_control_beaconing()
1803 arvif->vdev_id, ret); in ath10k_control_beaconing()
1807 ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vdev %d up\n", arvif->vdev_id); in ath10k_control_beaconing()
1810 static void ath10k_control_ibss(struct ath10k_vif *arvif, in ath10k_control_ibss() argument
1814 struct ath10k *ar = arvif->ar; in ath10k_control_ibss()
1818 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_control_ibss()
1821 if (is_zero_ether_addr(arvif->bssid)) in ath10k_control_ibss()
1824 eth_zero_addr(arvif->bssid); in ath10k_control_ibss()
1829 vdev_param = arvif->ar->wmi.vdev_param->atim_window; in ath10k_control_ibss()
1830 ret = ath10k_wmi_vdev_set_param(arvif->ar, arvif->vdev_id, vdev_param, in ath10k_control_ibss()
1834 arvif->vdev_id, ret); in ath10k_control_ibss()
1837 static int ath10k_mac_vif_recalc_ps_wake_threshold(struct ath10k_vif *arvif) in ath10k_mac_vif_recalc_ps_wake_threshold() argument
1839 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_recalc_ps_wake_threshold()
1844 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_recalc_ps_wake_threshold()
1846 if (arvif->u.sta.uapsd) in ath10k_mac_vif_recalc_ps_wake_threshold()
1852 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, value); in ath10k_mac_vif_recalc_ps_wake_threshold()
1855 value, arvif->vdev_id, ret); in ath10k_mac_vif_recalc_ps_wake_threshold()
1862 static int ath10k_mac_vif_recalc_ps_poll_count(struct ath10k_vif *arvif) in ath10k_mac_vif_recalc_ps_poll_count() argument
1864 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_recalc_ps_poll_count()
1869 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_recalc_ps_poll_count()
1871 if (arvif->u.sta.uapsd) in ath10k_mac_vif_recalc_ps_poll_count()
1877 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_mac_vif_recalc_ps_poll_count()
1881 value, arvif->vdev_id, ret); in ath10k_mac_vif_recalc_ps_poll_count()
1890 struct ath10k_vif *arvif; in ath10k_mac_num_vifs_started() local
1895 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_mac_num_vifs_started()
1896 if (arvif->is_started) in ath10k_mac_num_vifs_started()
1902 static int ath10k_mac_vif_setup_ps(struct ath10k_vif *arvif) in ath10k_mac_vif_setup_ps() argument
1904 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_setup_ps()
1905 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_setup_ps()
1913 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_setup_ps()
1915 if (arvif->vif->type != NL80211_IFTYPE_STATION) in ath10k_mac_vif_setup_ps()
1918 enable_ps = arvif->ps; in ath10k_mac_vif_setup_ps()
1924 arvif->vdev_id); in ath10k_mac_vif_setup_ps()
1928 if (!arvif->is_started) { in ath10k_mac_vif_setup_ps()
1946 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, in ath10k_mac_vif_setup_ps()
1950 arvif->vdev_id, ret); in ath10k_mac_vif_setup_ps()
1958 arvif->vdev_id, psmode ? "enable" : "disable"); in ath10k_mac_vif_setup_ps()
1960 ret = ath10k_wmi_set_psmode(ar, arvif->vdev_id, psmode); in ath10k_mac_vif_setup_ps()
1963 psmode, arvif->vdev_id, ret); in ath10k_mac_vif_setup_ps()
1970 static int ath10k_mac_vif_disable_keepalive(struct ath10k_vif *arvif) in ath10k_mac_vif_disable_keepalive() argument
1972 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_disable_keepalive()
1976 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_disable_keepalive()
1978 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath10k_mac_vif_disable_keepalive()
1987 arg.vdev_id = arvif->vdev_id; in ath10k_mac_vif_disable_keepalive()
1995 arvif->vdev_id, ret); in ath10k_mac_vif_disable_keepalive()
2002 static void ath10k_mac_vif_ap_csa_count_down(struct ath10k_vif *arvif) in ath10k_mac_vif_ap_csa_count_down() argument
2004 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_ap_csa_count_down()
2005 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_ap_csa_count_down()
2008 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_ap_csa_count_down()
2013 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath10k_mac_vif_ap_csa_count_down()
2019 if (!arvif->is_up) in ath10k_mac_vif_ap_csa_count_down()
2025 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_vif_ap_csa_count_down()
2030 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_vif_ap_csa_count_down()
2041 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif, in ath10k_mac_vif_ap_csa_work() local
2043 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_ap_csa_work()
2046 ath10k_mac_vif_ap_csa_count_down(arvif); in ath10k_mac_vif_ap_csa_work()
2055 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_beacon_iter() local
2063 cancel_delayed_work(&arvif->connection_loss_work); in ath10k_mac_handle_beacon_iter()
2078 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_beacon_miss_iter() local
2079 struct ath10k *ar = arvif->ar; in ath10k_mac_handle_beacon_miss_iter()
2082 if (arvif->vdev_id != *vdev_id) in ath10k_mac_handle_beacon_miss_iter()
2085 if (!arvif->is_up) in ath10k_mac_handle_beacon_miss_iter()
2095 ieee80211_queue_delayed_work(hw, &arvif->connection_loss_work, in ath10k_mac_handle_beacon_miss_iter()
2109 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif, in ath10k_mac_vif_sta_connection_loss_work() local
2111 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_sta_connection_loss_work()
2113 if (!arvif->is_up) in ath10k_mac_vif_sta_connection_loss_work()
2145 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_basic() local
2156 arg->vdev_id = arvif->vdev_id; in ath10k_peer_assoc_h_basic()
2158 arg->peer_flags |= arvif->ar->wmi.peer_flags->auth; in ath10k_peer_assoc_h_basic()
2221 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_rates() local
2239 ratemask &= arvif->bitrate_mask.control[band].legacy; in ath10k_peer_assoc_h_rates()
2284 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_ht() local
2302 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_peer_assoc_h_ht()
2303 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_ht()
2327 if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) { in ath10k_peer_assoc_h_ht()
2385 struct ath10k_vif *arvif, in ath10k_peer_assoc_qos_ap() argument
2414 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, in ath10k_peer_assoc_qos_ap()
2420 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2424 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, in ath10k_peer_assoc_qos_ap()
2430 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2439 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, sta->addr, in ath10k_peer_assoc_qos_ap()
2444 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2533 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_vht() local
2549 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_vht()
2640 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_qos() local
2642 switch (arvif->vdev_type) { in ath10k_peer_assoc_h_qos()
2645 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2648 arg->peer_flags |= arvif->ar->wmi.peer_flags->apsd; in ath10k_peer_assoc_h_qos()
2654 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2658 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2666 arvif->ar->wmi.peer_flags->qos)); in ath10k_peer_assoc_h_qos()
2707 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_phymode() local
2718 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_peer_assoc_h_phymode()
2719 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_phymode()
2798 static int ath10k_setup_peer_smps(struct ath10k *ar, struct ath10k_vif *arvif, in ath10k_setup_peer_smps() argument
2813 return ath10k_wmi_peer_set_param(ar, arvif->vdev_id, addr, in ath10k_setup_peer_smps()
2822 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_vif_recalc_txbf() local
2873 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, value); in ath10k_mac_vif_recalc_txbf()
2889 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_assoc() local
2899 arvif->vdev_id, arvif->bssid, arvif->aid); in ath10k_bss_assoc()
2906 bss_conf->bssid, arvif->vdev_id); in ath10k_bss_assoc()
2920 bss_conf->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
2930 bss_conf->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
2934 ret = ath10k_setup_peer_smps(ar, arvif, bss_conf->bssid, &ht_cap); in ath10k_bss_assoc()
2937 arvif->vdev_id, ret); in ath10k_bss_assoc()
2944 arvif->vdev_id, bss_conf->bssid, ret); in ath10k_bss_assoc()
2950 arvif->vdev_id, bss_conf->bssid, bss_conf->aid); in ath10k_bss_assoc()
2952 WARN_ON(arvif->is_up); in ath10k_bss_assoc()
2954 arvif->aid = bss_conf->aid; in ath10k_bss_assoc()
2955 ether_addr_copy(arvif->bssid, bss_conf->bssid); in ath10k_bss_assoc()
2962 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid); in ath10k_bss_assoc()
2965 arvif->vdev_id, ret); in ath10k_bss_assoc()
2969 arvif->is_up = true; in ath10k_bss_assoc()
2975 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, arvif->bssid, in ath10k_bss_assoc()
2979 arvif->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
2988 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_disassoc() local
2995 arvif->vdev_id, arvif->bssid); in ath10k_bss_disassoc()
2997 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_bss_disassoc()
3000 arvif->vdev_id, ret); in ath10k_bss_disassoc()
3002 arvif->def_wep_key_idx = -1; in ath10k_bss_disassoc()
3007 arvif->vdev_id, ret); in ath10k_bss_disassoc()
3011 arvif->is_up = false; in ath10k_bss_disassoc()
3013 cancel_delayed_work_sync(&arvif->connection_loss_work); in ath10k_bss_disassoc()
3018 struct ath10k_vif *arvif) in ath10k_new_peer_tid_config() argument
3027 if (arvif->retry_long[i] || arvif->ampdu[i] || in ath10k_new_peer_tid_config()
3028 arvif->rate_ctrl[i] || arvif->rtscts[i]) { in ath10k_new_peer_tid_config()
3031 arg.vdev_id = arvif->vdev_id; in ath10k_new_peer_tid_config()
3032 arg.retry_count = arvif->retry_long[i]; in ath10k_new_peer_tid_config()
3033 arg.aggr_control = arvif->ampdu[i]; in ath10k_new_peer_tid_config()
3034 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_new_peer_tid_config()
3035 arg.rcode_flags = arvif->rate_code[i]; in ath10k_new_peer_tid_config()
3037 if (arvif->rtscts[i]) in ath10k_new_peer_tid_config()
3043 arg.rtscts_ctrl = arvif->rtscts[i]; in ath10k_new_peer_tid_config()
3046 if (arvif->noack[i]) { in ath10k_new_peer_tid_config()
3047 arg.ack_policy = arvif->noack[i]; in ath10k_new_peer_tid_config()
3084 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_station_assoc() local
3093 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3100 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3108 ret = ath10k_setup_peer_smps(ar, arvif, sta->addr, in ath10k_station_assoc()
3112 arvif->vdev_id, ret); in ath10k_station_assoc()
3116 ret = ath10k_peer_assoc_qos_ap(ar, arvif, sta); in ath10k_station_assoc()
3119 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3124 arvif->num_legacy_stations++; in ath10k_station_assoc()
3125 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_station_assoc()
3128 arvif->vdev_id, ret); in ath10k_station_assoc()
3134 if ((arvif->def_wep_key_idx != -1) && (!sta->tdls)) { in ath10k_station_assoc()
3135 ret = ath10k_install_peer_wep_keys(arvif, sta->addr); in ath10k_station_assoc()
3138 arvif->vdev_id, ret); in ath10k_station_assoc()
3147 return ath10k_new_peer_tid_config(ar, sta, arvif); in ath10k_station_assoc()
3154 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_station_disassoc() local
3160 arvif->num_legacy_stations--; in ath10k_station_disassoc()
3161 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_station_disassoc()
3164 arvif->vdev_id, ret); in ath10k_station_disassoc()
3169 ret = ath10k_clear_peer_keys(arvif, sta->addr); in ath10k_station_disassoc()
3172 arvif->vdev_id, ret); in ath10k_station_disassoc()
3417 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_tx_unlock_iter() local
3419 if (arvif->tx_paused) in ath10k_mac_tx_unlock_iter()
3422 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_mac_tx_unlock_iter()
3443 void ath10k_mac_vif_tx_lock(struct ath10k_vif *arvif, int reason) in ath10k_mac_vif_tx_lock() argument
3445 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_tx_lock()
3450 arvif->tx_paused |= BIT(reason); in ath10k_mac_vif_tx_lock()
3451 ieee80211_stop_queue(ar->hw, arvif->vdev_id); in ath10k_mac_vif_tx_lock()
3454 void ath10k_mac_vif_tx_unlock(struct ath10k_vif *arvif, int reason) in ath10k_mac_vif_tx_unlock() argument
3456 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_tx_unlock()
3461 arvif->tx_paused &= ~BIT(reason); in ath10k_mac_vif_tx_unlock()
3466 if (arvif->tx_paused) in ath10k_mac_vif_tx_unlock()
3469 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_mac_vif_tx_unlock()
3472 static void ath10k_mac_vif_handle_tx_pause(struct ath10k_vif *arvif, in ath10k_mac_vif_handle_tx_pause() argument
3476 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_handle_tx_pause()
3482 ath10k_mac_vif_tx_lock(arvif, pause_id); in ath10k_mac_vif_handle_tx_pause()
3485 ath10k_mac_vif_tx_unlock(arvif, pause_id); in ath10k_mac_vif_handle_tx_pause()
3490 action, arvif->vdev_id); in ath10k_mac_vif_handle_tx_pause()
3504 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_tx_pause_iter() local
3507 if (arvif->vdev_id != arg->vdev_id) in ath10k_mac_handle_tx_pause_iter()
3510 ath10k_mac_vif_handle_tx_pause(arvif, arg->pause_id, arg->action); in ath10k_mac_handle_tx_pause_iter()
3667 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_tx_h_add_p2p_noa_ie() local
3675 if (arvif->u.ap.noa_data) in ath10k_tx_h_add_p2p_noa_ie()
3676 if (!pskb_expand_head(skb, 0, arvif->u.ap.noa_len, in ath10k_tx_h_add_p2p_noa_ie()
3678 skb_put_data(skb, arvif->u.ap.noa_data, in ath10k_tx_h_add_p2p_noa_ie()
3679 arvif->u.ap.noa_len); in ath10k_tx_h_add_p2p_noa_ie()
3695 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_tx_h_fill_cb() local
3712 if (arvif->noack[tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_tx_h_fill_cb()
3917 struct ath10k_vif *arvif; in ath10k_offchan_tx_work() local
3980 arvif = ath10k_get_arvif(ar, vdev_id); in ath10k_offchan_tx_work()
3981 if (arvif) { in ath10k_offchan_tx_work()
3982 vif = arvif->vif; in ath10k_offchan_tx_work()
4582 struct ath10k_vif *arvif; in ath10k_halt() local
4604 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_halt()
4605 ath10k_mac_vif_beacon_cleanup(arvif); in ath10k_halt()
5194 struct ath10k_vif *arvif; in ath10k_config_ps() local
5199 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_config_ps()
5200 ret = ath10k_mac_vif_setup_ps(arvif); in ath10k_config_ps()
5240 struct ath10k_vif *arvif; in ath10k_mac_txpower_recalc() local
5245 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_mac_txpower_recalc()
5247 if (arvif->txpower == INT_MIN) in ath10k_mac_txpower_recalc()
5251 txpower = arvif->txpower; in ath10k_mac_txpower_recalc()
5253 txpower = min(txpower, arvif->txpower); in ath10k_mac_txpower_recalc()
5302 static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif) in ath10k_mac_set_txbf_conf() argument
5305 struct ath10k *ar = arvif->ar; in ath10k_mac_set_txbf_conf()
5339 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_mac_set_txbf_conf()
5354 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_add_interface() local
5367 memset(arvif, 0, sizeof(*arvif)); in ath10k_add_interface()
5370 arvif->ar = ar; in ath10k_add_interface()
5371 arvif->vif = vif; in ath10k_add_interface()
5373 INIT_LIST_HEAD(&arvif->list); in ath10k_add_interface()
5374 INIT_WORK(&arvif->ap_csa_work, ath10k_mac_vif_ap_csa_work); in ath10k_add_interface()
5375 INIT_DELAYED_WORK(&arvif->connection_loss_work, in ath10k_add_interface()
5378 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) { in ath10k_add_interface()
5379 arvif->bitrate_mask.control[i].legacy = 0xffffffff; in ath10k_add_interface()
5380 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff, in ath10k_add_interface()
5381 sizeof(arvif->bitrate_mask.control[i].ht_mcs)); in ath10k_add_interface()
5382 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff, in ath10k_add_interface()
5383 sizeof(arvif->bitrate_mask.control[i].vht_mcs)); in ath10k_add_interface()
5402 arvif->vdev_id = bit; in ath10k_add_interface()
5403 arvif->vdev_subtype = in ath10k_add_interface()
5408 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath10k_add_interface()
5409 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5414 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath10k_add_interface()
5416 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5420 arvif->vdev_type = WMI_VDEV_TYPE_IBSS; in ath10k_add_interface()
5424 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5431 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath10k_add_interface()
5434 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath10k_add_interface()
5437 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5441 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR; in ath10k_add_interface()
5453 vif->cab_queue = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1); in ath10k_add_interface()
5455 vif->hw_queue[i] = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1); in ath10k_add_interface()
5476 arvif->beacon_buf = dma_alloc_coherent(ar->dev, in ath10k_add_interface()
5478 &arvif->beacon_paddr, in ath10k_add_interface()
5480 if (!arvif->beacon_buf) { in ath10k_add_interface()
5488 arvif->nohwcrypt = true; in ath10k_add_interface()
5490 if (arvif->nohwcrypt && in ath10k_add_interface()
5497 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype, in ath10k_add_interface()
5498 arvif->beacon_buf ? "single-buf" : "per-skb"); in ath10k_add_interface()
5500 ret = ath10k_wmi_vdev_create(ar, arvif->vdev_id, arvif->vdev_type, in ath10k_add_interface()
5501 arvif->vdev_subtype, vif->addr); in ath10k_add_interface()
5504 arvif->vdev_id, ret); in ath10k_add_interface()
5511 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5515 arvif->vdev_id, ret); in ath10k_add_interface()
5519 ar->free_vdev_map &= ~(1LL << arvif->vdev_id); in ath10k_add_interface()
5521 list_add(&arvif->list, &ar->arvifs); in ath10k_add_interface()
5527 ret = ath10k_mac_vif_disable_keepalive(arvif); in ath10k_add_interface()
5530 arvif->vdev_id, ret); in ath10k_add_interface()
5534 arvif->def_wep_key_idx = -1; in ath10k_add_interface()
5537 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5542 arvif->vdev_id, ret); in ath10k_add_interface()
5553 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5557 arvif->vdev_id, ar->cfg_tx_chainmask, nss, in ath10k_add_interface()
5563 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_add_interface()
5564 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_add_interface()
5565 ret = ath10k_peer_create(ar, vif, NULL, arvif->vdev_id, in ath10k_add_interface()
5569 arvif->vdev_id, ret); in ath10k_add_interface()
5575 peer = ath10k_peer_find(ar, arvif->vdev_id, vif->addr); in ath10k_add_interface()
5578 vif->addr, arvif->vdev_id); in ath10k_add_interface()
5584 arvif->peer_id = find_first_bit(peer->peer_ids, in ath10k_add_interface()
5589 arvif->peer_id = HTT_INVALID_PEERID; in ath10k_add_interface()
5592 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath10k_add_interface()
5593 ret = ath10k_mac_set_kickout(arvif); in ath10k_add_interface()
5596 arvif->vdev_id, ret); in ath10k_add_interface()
5601 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) { in ath10k_add_interface()
5604 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_add_interface()
5608 arvif->vdev_id, ret); in ath10k_add_interface()
5612 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif); in ath10k_add_interface()
5615 arvif->vdev_id, ret); in ath10k_add_interface()
5619 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif); in ath10k_add_interface()
5622 arvif->vdev_id, ret); in ath10k_add_interface()
5627 ret = ath10k_mac_set_txbf_conf(arvif); in ath10k_add_interface()
5630 arvif->vdev_id, ret); in ath10k_add_interface()
5634 ret = ath10k_mac_set_rts(arvif, ar->hw->wiphy->rts_threshold); in ath10k_add_interface()
5637 arvif->vdev_id, ret); in ath10k_add_interface()
5641 arvif->txpower = vif->bss_conf.txpower; in ath10k_add_interface()
5650 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5651 arvif->ftm_responder); in ath10k_add_interface()
5656 arvif->vdev_id, ret); in ath10k_add_interface()
5660 ar->monitor_arvif = arvif; in ath10k_add_interface()
5670 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_add_interface()
5677 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_add_interface()
5678 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_add_interface()
5679 ath10k_wmi_peer_delete(ar, arvif->vdev_id, vif->addr); in ath10k_add_interface()
5680 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id, in ath10k_add_interface()
5685 ath10k_wmi_vdev_delete(ar, arvif->vdev_id); in ath10k_add_interface()
5686 ar->free_vdev_map |= 1LL << arvif->vdev_id; in ath10k_add_interface()
5688 list_del(&arvif->list); in ath10k_add_interface()
5692 if (arvif->beacon_buf) { in ath10k_add_interface()
5694 arvif->beacon_buf, arvif->beacon_paddr); in ath10k_add_interface()
5695 arvif->beacon_buf = NULL; in ath10k_add_interface()
5703 static void ath10k_mac_vif_tx_unlock_all(struct ath10k_vif *arvif) in ath10k_mac_vif_tx_unlock_all() argument
5708 ath10k_mac_vif_tx_unlock(arvif, i); in ath10k_mac_vif_tx_unlock_all()
5715 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_remove_interface() local
5721 cancel_work_sync(&arvif->ap_csa_work); in ath10k_remove_interface()
5722 cancel_delayed_work_sync(&arvif->connection_loss_work); in ath10k_remove_interface()
5726 ret = ath10k_spectral_vif_stop(arvif); in ath10k_remove_interface()
5729 arvif->vdev_id, ret); in ath10k_remove_interface()
5731 ar->free_vdev_map |= 1LL << arvif->vdev_id; in ath10k_remove_interface()
5733 list_del(&arvif->list); in ath10k_remove_interface()
5736 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_remove_interface()
5737 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_remove_interface()
5738 ret = ath10k_wmi_peer_delete(arvif->ar, arvif->vdev_id, in ath10k_remove_interface()
5742 arvif->vdev_id, ret); in ath10k_remove_interface()
5744 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id, in ath10k_remove_interface()
5746 kfree(arvif->u.ap.noa_data); in ath10k_remove_interface()
5750 arvif->vdev_id); in ath10k_remove_interface()
5752 ret = ath10k_wmi_vdev_delete(ar, arvif->vdev_id); in ath10k_remove_interface()
5755 arvif->vdev_id, ret); in ath10k_remove_interface()
5769 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_remove_interface()
5770 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_remove_interface()
5771 ret = ath10k_wait_for_peer_deleted(ar, arvif->vdev_id, in ath10k_remove_interface()
5775 arvif->vdev_id, ret); in ath10k_remove_interface()
5790 vif->addr, arvif->vdev_id); in ath10k_remove_interface()
5798 ath10k_mac_vif_beacon_cleanup(arvif); in ath10k_remove_interface()
5801 ath10k_peer_cleanup(ar, arvif->vdev_id); in ath10k_remove_interface()
5816 ath10k_mac_vif_tx_unlock_all(arvif); in ath10k_remove_interface()
5862 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_recalculate_mgmt_rate() local
5883 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_recalculate_mgmt_rate()
5895 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_info_changed() local
5906 ath10k_control_ibss(arvif, info, vif->addr); in ath10k_bss_info_changed()
5909 arvif->beacon_interval = info->beacon_int; in ath10k_bss_info_changed()
5911 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
5912 arvif->beacon_interval); in ath10k_bss_info_changed()
5915 arvif->vdev_id, arvif->beacon_interval); in ath10k_bss_info_changed()
5919 arvif->vdev_id, ret); in ath10k_bss_info_changed()
5925 arvif->vdev_id); in ath10k_bss_info_changed()
5932 arvif->vdev_id, ret); in ath10k_bss_info_changed()
5934 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_bss_info_changed()
5941 strncpy(arvif->u.ap.ssid, "mesh", in ath10k_bss_info_changed()
5942 sizeof(arvif->u.ap.ssid)); in ath10k_bss_info_changed()
5943 arvif->u.ap.ssid_len = 4; in ath10k_bss_info_changed()
5948 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_bss_info_changed()
5951 arvif->vdev_id, ret); in ath10k_bss_info_changed()
5955 arvif->dtim_period = info->dtim_period; in ath10k_bss_info_changed()
5959 arvif->vdev_id, arvif->dtim_period); in ath10k_bss_info_changed()
5962 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
5963 arvif->dtim_period); in ath10k_bss_info_changed()
5966 arvif->vdev_id, ret); in ath10k_bss_info_changed()
5971 arvif->u.ap.ssid_len = info->ssid_len; in ath10k_bss_info_changed()
5973 memcpy(arvif->u.ap.ssid, info->ssid, info->ssid_len); in ath10k_bss_info_changed()
5974 arvif->u.ap.hidden_ssid = info->hidden_ssid; in ath10k_bss_info_changed()
5978 ether_addr_copy(arvif->bssid, info->bssid); in ath10k_bss_info_changed()
5981 arvif->ftm_responder != info->ftm_responder && in ath10k_bss_info_changed()
5983 arvif->ftm_responder = info->ftm_responder; in ath10k_bss_info_changed()
5986 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
5987 arvif->ftm_responder); in ath10k_bss_info_changed()
5991 arvif->vdev_id, arvif->ftm_responder, ret); in ath10k_bss_info_changed()
5995 ath10k_control_beaconing(arvif, info); in ath10k_bss_info_changed()
5998 arvif->use_cts_prot = info->use_cts_prot; in ath10k_bss_info_changed()
6000 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_bss_info_changed()
6003 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6005 if (ath10k_mac_can_set_cts_prot(arvif)) { in ath10k_bss_info_changed()
6006 ret = ath10k_mac_set_cts_prot(arvif); in ath10k_bss_info_changed()
6009 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6021 arvif->vdev_id, slottime); in ath10k_bss_info_changed()
6024 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6028 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6039 arvif->vdev_id, preamble); in ath10k_bss_info_changed()
6042 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6046 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6066 arvif->vdev_id, info->txpower); in ath10k_bss_info_changed()
6068 arvif->txpower = info->txpower; in ath10k_bss_info_changed()
6075 arvif->ps = vif->bss_conf.ps; in ath10k_bss_info_changed()
6080 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6084 !ath10k_mac_vif_chan(arvif->vif, &def)) { in ath10k_bss_info_changed()
6106 arvif->vdev_id, rate); in ath10k_bss_info_changed()
6109 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_bss_info_changed()
6114 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6117 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_bss_info_changed()
6122 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6126 !ath10k_mac_vif_chan(arvif->vif, &def)) in ath10k_bss_info_changed()
6156 struct ieee80211_vif *sta_vif = arsta->arvif->vif; in ath10k_mac_tdls_vif_stations_count_iter()
6180 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_hw_scan() local
6201 ar->scan.vdev_id = arvif->vdev_id; in ath10k_hw_scan()
6217 arg.vdev_id = arvif->vdev_id; in ath10k_hw_scan()
6292 struct ath10k_vif *arvif, in ath10k_set_key_h_def_keyidx() argument
6296 u32 vdev_param = arvif->ar->wmi.vdev_param->def_keyid; in ath10k_set_key_h_def_keyidx()
6310 if (arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath10k_set_key_h_def_keyidx()
6311 arvif->vdev_type != WMI_VDEV_TYPE_IBSS) in ath10k_set_key_h_def_keyidx()
6326 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_set_key_h_def_keyidx()
6330 arvif->vdev_id, ret); in ath10k_set_key_h_def_keyidx()
6338 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_set_key() local
6356 if (arvif->nohwcrypt) in ath10k_set_key()
6370 } else if (arvif->vdev_type == WMI_VDEV_TYPE_STA) { in ath10k_set_key()
6380 arvif->wep_keys[key->keyidx] = key; in ath10k_set_key()
6382 arvif->wep_keys[key->keyidx] = NULL; in ath10k_set_key()
6389 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr); in ath10k_set_key()
6411 ath10k_clear_vdev_key(arvif, key); in ath10k_set_key()
6419 ath10k_mac_vif_update_wep_key(arvif, key); in ath10k_set_key()
6427 if (cmd == SET_KEY && arvif->def_wep_key_idx == -1) in ath10k_set_key()
6431 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags); in ath10k_set_key()
6435 arvif->vdev_id, peer_addr, ret); in ath10k_set_key()
6447 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags2); in ath10k_set_key()
6451 arvif->vdev_id, peer_addr, ret); in ath10k_set_key()
6452 ret2 = ath10k_install_key(arvif, key, DISABLE_KEY, in ath10k_set_key()
6457 arvif->vdev_id, peer_addr, ret2); in ath10k_set_key()
6463 ath10k_set_key_h_def_keyidx(ar, arvif, cmd, key); in ath10k_set_key()
6466 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr); in ath10k_set_key()
6477 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_set_key()
6480 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, peer_addr, in ath10k_set_key()
6493 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_set_default_unicast_key() local
6496 mutex_lock(&arvif->ar->conf_mutex); in ath10k_set_default_unicast_key()
6498 if (arvif->ar->state != ATH10K_STATE_ON) in ath10k_set_default_unicast_key()
6502 arvif->vdev_id, keyidx); in ath10k_set_default_unicast_key()
6504 ret = ath10k_wmi_vdev_set_param(arvif->ar, in ath10k_set_default_unicast_key()
6505 arvif->vdev_id, in ath10k_set_default_unicast_key()
6506 arvif->ar->wmi.vdev_param->def_keyid, in ath10k_set_default_unicast_key()
6511 arvif->vdev_id, in ath10k_set_default_unicast_key()
6516 arvif->def_wep_key_idx = keyidx; in ath10k_set_default_unicast_key()
6519 mutex_unlock(&arvif->ar->conf_mutex); in ath10k_set_default_unicast_key()
6525 struct ath10k_vif *arvif; in ath10k_sta_rc_update_wk() local
6537 arvif = arsta->arvif; in ath10k_sta_rc_update_wk()
6538 ar = arvif->ar; in ath10k_sta_rc_update_wk()
6540 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) in ath10k_sta_rc_update_wk()
6544 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_sta_rc_update_wk()
6545 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_sta_rc_update_wk()
6571 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6579 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6590 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6601 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6612 err = ath10k_station_assoc(ar, arvif->vif, sta, true); in ath10k_sta_rc_update_wk()
6622 static int ath10k_mac_inc_num_stations(struct ath10k_vif *arvif, in ath10k_mac_inc_num_stations() argument
6625 struct ath10k *ar = arvif->ar; in ath10k_mac_inc_num_stations()
6629 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath10k_mac_inc_num_stations()
6640 static void ath10k_mac_dec_num_stations(struct ath10k_vif *arvif, in ath10k_mac_dec_num_stations() argument
6643 struct ath10k *ar = arvif->ar; in ath10k_mac_dec_num_stations()
6647 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath10k_mac_dec_num_stations()
6658 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_set_txpwr() local
6675 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_set_txpwr()
6869 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_set_tid_config() local
6895 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
6904 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
6948 if ((arvif->retry_long[arg->tid] || in ath10k_mac_set_tid_config()
6949 arvif->rate_code[arg->tid] || in ath10k_mac_set_tid_config()
6950 arvif->ampdu[arg->tid] == in ath10k_mac_set_tid_config()
6955 arvif->noack[arg->tid] = arg->ack_policy; in ath10k_mac_set_tid_config()
6956 arvif->ampdu[arg->tid] = arg->aggr_control; in ath10k_mac_set_tid_config()
6957 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl; in ath10k_mac_set_tid_config()
6962 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_set_tid_config()
6965 arvif->retry_long[arg->tid] = arg->retry_count; in ath10k_mac_set_tid_config()
6969 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_set_tid_config()
6972 arvif->ampdu[arg->tid] = arg->aggr_control; in ath10k_mac_set_tid_config()
6977 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
6981 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl; in ath10k_mac_set_tid_config()
6982 arvif->rate_code[arg->tid] = arg->rcode_flags; in ath10k_mac_set_tid_config()
6987 arvif->rtscts[arg->tid] = arg->rtscts_ctrl; in ath10k_mac_set_tid_config()
6992 arvif->tid_conf_changed[arg->tid] |= changed; in ath10k_mac_set_tid_config()
7079 struct ath10k_vif *arvif, in ath10k_mac_reset_tid_config() argument
7086 arg.vdev_id = arvif->vdev_id; in ath10k_mac_reset_tid_config()
7107 if (!arvif->tids_rst) { in ath10k_mac_reset_tid_config()
7115 arvif->retry_long[i] = 0; in ath10k_mac_reset_tid_config()
7116 arvif->noack[i] = 0; in ath10k_mac_reset_tid_config()
7117 arvif->ampdu[i] = 0; in ath10k_mac_reset_tid_config()
7118 arvif->rate_code[i] = 0; in ath10k_mac_reset_tid_config()
7119 arvif->rate_ctrl[i] = 0; in ath10k_mac_reset_tid_config()
7120 arvif->rtscts[i] = 0; in ath10k_mac_reset_tid_config()
7134 struct ath10k_vif *arvif; in ath10k_sta_tid_cfg_wk() local
7143 arvif = arsta->arvif; in ath10k_sta_tid_cfg_wk()
7144 ar = arvif->ar; in ath10k_sta_tid_cfg_wk()
7148 if (arvif->tids_rst) { in ath10k_sta_tid_cfg_wk()
7149 ret = ath10k_mac_reset_tid_config(ar, sta, arvif, in ath10k_sta_tid_cfg_wk()
7150 arvif->tids_rst); in ath10k_sta_tid_cfg_wk()
7158 changed = arvif->tid_conf_changed[i]; in ath10k_sta_tid_cfg_wk()
7165 arg.ack_policy = arvif->noack[i]; in ath10k_sta_tid_cfg_wk()
7166 arg.aggr_control = arvif->ampdu[i]; in ath10k_sta_tid_cfg_wk()
7167 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_sta_tid_cfg_wk()
7174 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7177 arg.retry_count = arvif->retry_long[i]; in ath10k_sta_tid_cfg_wk()
7185 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7188 arg.aggr_control = arvif->ampdu[i]; in ath10k_sta_tid_cfg_wk()
7195 nss = ATH10K_HW_NSS(arvif->rate_code[i]); in ath10k_sta_tid_cfg_wk()
7197 arvif->rate_code[i], in ath10k_sta_tid_cfg_wk()
7200 arvif->rate_ctrl[i] > WMI_TID_CONFIG_RATE_CONTROL_AUTO) { in ath10k_sta_tid_cfg_wk()
7208 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7212 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_sta_tid_cfg_wk()
7213 arg.rcode_flags = arvif->rate_code[i]; in ath10k_sta_tid_cfg_wk()
7223 arg.rtscts_ctrl = arvif->rtscts[i] - 1; in ath10k_sta_tid_cfg_wk()
7255 struct ieee80211_vif *sta_vif = arsta->arvif->vif; in ath10k_mac_vif_stations_tid_conf()
7270 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_state() local
7279 arsta->arvif = arvif; in ath10k_sta_state()
7307 arvif->vdev_id, sta->addr, in ath10k_sta_state()
7316 arvif->vdev_id, in ath10k_sta_state()
7324 ret = ath10k_mac_inc_num_stations(arvif, sta); in ath10k_sta_state()
7335 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7341 ret = ath10k_peer_create(ar, vif, sta, arvif->vdev_id, in ath10k_sta_state()
7345 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7346 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7353 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7356 vif->addr, arvif->vdev_id); in ath10k_sta_state()
7358 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7359 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7373 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7377 arvif->vdev_id, ret); in ath10k_sta_state()
7378 ath10k_peer_delete(ar, arvif->vdev_id, in ath10k_sta_state()
7380 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7385 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta, in ath10k_sta_state()
7390 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7391 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7392 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7397 ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7407 arvif->vdev_id, sta->addr, sta); in ath10k_sta_state()
7410 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, in ath10k_sta_state()
7419 ret = ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7422 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7424 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7434 sta->addr, peer, i, arvif->vdev_id); in ath10k_sta_state()
7463 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7467 arvif->vdev_id, ret); in ath10k_sta_state()
7483 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7496 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7500 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta, in ath10k_sta_state()
7504 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7519 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7529 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_conf_tx_uapsd() local
7537 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath10k_conf_tx_uapsd()
7568 arvif->u.sta.uapsd |= value; in ath10k_conf_tx_uapsd()
7570 arvif->u.sta.uapsd &= ~value; in ath10k_conf_tx_uapsd()
7572 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7574 arvif->u.sta.uapsd); in ath10k_conf_tx_uapsd()
7580 if (arvif->u.sta.uapsd) in ath10k_conf_tx_uapsd()
7585 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7591 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif); in ath10k_conf_tx_uapsd()
7594 arvif->vdev_id, ret); in ath10k_conf_tx_uapsd()
7598 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif); in ath10k_conf_tx_uapsd()
7601 arvif->vdev_id, ret); in ath10k_conf_tx_uapsd()
7619 ret = ath10k_wmi_vdev_sta_uapsd(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7620 arvif->bssid, &arg, 1); in ath10k_conf_tx_uapsd()
7637 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_conf_tx() local
7645 p = &arvif->wmm_params.ac_vo; in ath10k_conf_tx()
7648 p = &arvif->wmm_params.ac_vi; in ath10k_conf_tx()
7651 p = &arvif->wmm_params.ac_be; in ath10k_conf_tx()
7654 p = &arvif->wmm_params.ac_bk; in ath10k_conf_tx()
7675 ret = ath10k_wmi_vdev_wmm_conf(ar, arvif->vdev_id, in ath10k_conf_tx()
7676 &arvif->wmm_params); in ath10k_conf_tx()
7679 arvif->vdev_id, ret); in ath10k_conf_tx()
7686 ret = ath10k_wmi_pdev_set_wmm_params(ar, &arvif->wmm_params); in ath10k_conf_tx()
7709 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_remain_on_channel() local
7729 ar->scan.vdev_id = arvif->vdev_id; in ath10k_remain_on_channel()
7749 arg.vdev_id = arvif->vdev_id; in ath10k_remain_on_channel()
7818 struct ath10k_vif *arvif; in ath10k_set_rts_threshold() local
7822 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_set_rts_threshold()
7824 arvif->vdev_id, value); in ath10k_set_rts_threshold()
7826 ret = ath10k_mac_set_rts(arvif, value); in ath10k_set_rts_threshold()
7829 arvif->vdev_id, ret); in ath10k_set_rts_threshold()
7888 struct ath10k_vif *arvif; in ath10k_flush() local
7894 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_flush()
7895 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath10k_flush()
7896 ath10k_wmi_peer_flush(ar, arvif->vdev_id, in ath10k_flush()
7897 arvif->bssid, bitmap); in ath10k_flush()
8062 static int ath10k_mac_set_fixed_rate_params(struct ath10k_vif *arvif, in ath10k_mac_set_fixed_rate_params() argument
8065 struct ath10k *ar = arvif->ar; in ath10k_mac_set_fixed_rate_params()
8072 arvif->vdev_id, rate, nss, sgi); in ath10k_mac_set_fixed_rate_params()
8075 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); in ath10k_mac_set_fixed_rate_params()
8083 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, nss); in ath10k_mac_set_fixed_rate_params()
8090 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, sgi); in ath10k_mac_set_fixed_rate_params()
8097 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, ldpc); in ath10k_mac_set_fixed_rate_params()
8139 struct ath10k_vif *arvif, in ath10k_mac_set_vht_bitrate_mask_fixup() argument
8143 u8 rate = arvif->vht_pfr; in ath10k_mac_set_vht_bitrate_mask_fixup()
8146 if (!sta->vht_cap.vht_supported || arvif->vht_num_rates != 1) in ath10k_mac_set_vht_bitrate_mask_fixup()
8149 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_mac_set_vht_bitrate_mask_fixup()
8161 struct ath10k_vif *arvif = data; in ath10k_mac_set_bitrate_mask_iter() local
8163 struct ath10k *ar = arvif->ar; in ath10k_mac_set_bitrate_mask_iter()
8165 if (arsta->arvif != arvif) in ath10k_mac_set_bitrate_mask_iter()
8168 if (ath10k_mac_set_vht_bitrate_mask_fixup(ar, arvif, sta)) in ath10k_mac_set_bitrate_mask_iter()
8181 struct ath10k_vif *arvif = data; in ath10k_mac_clr_bitrate_mask_iter() local
8183 struct ath10k *ar = arvif->ar; in ath10k_mac_clr_bitrate_mask_iter()
8187 if (arsta->arvif != arvif || !sta->vht_cap.vht_supported) in ath10k_mac_clr_bitrate_mask_iter()
8190 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_mac_clr_bitrate_mask_iter()
8202 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_set_bitrate_mask() local
8204 struct ath10k *ar = arvif->ar; in ath10k_mac_op_set_bitrate_mask()
8236 arvif); in ath10k_mac_op_set_bitrate_mask()
8247 arvif->vdev_id, ret); in ath10k_mac_op_set_bitrate_mask()
8283 arvif->bitrate_mask = *mask; in ath10k_mac_op_set_bitrate_mask()
8284 arvif->vht_num_rates = vht_num_rates; in ath10k_mac_op_set_bitrate_mask()
8285 arvif->vht_pfr = vht_pfr; in ath10k_mac_op_set_bitrate_mask()
8288 arvif); in ath10k_mac_op_set_bitrate_mask()
8295 ret = ath10k_mac_set_fixed_rate_params(arvif, rate, nss, sgi, ldpc); in ath10k_mac_op_set_bitrate_mask()
8298 arvif->vdev_id, ret); in ath10k_mac_op_set_bitrate_mask()
8315 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_rc_update() local
8321 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr); in ath10k_sta_rc_update()
8325 sta->addr, arvif->vdev_id); in ath10k_sta_rc_update()
8398 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_offset_tsf() local
8410 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_offset_tsf()
8423 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_ampdu_action() local
8429 arvif->vdev_id, sta->addr, tid, action); in ath10k_ampdu_action()
8508 struct ath10k_vif *arvif; in ath10k_mac_update_vif_chan() local
8521 arvif = (void *)vifs[i].vif->drv_priv; in ath10k_mac_update_vif_chan()
8525 arvif->vdev_id, in ath10k_mac_update_vif_chan()
8531 if (WARN_ON(!arvif->is_started)) in ath10k_mac_update_vif_chan()
8534 if (WARN_ON(!arvif->is_up)) in ath10k_mac_update_vif_chan()
8537 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_update_vif_chan()
8540 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8554 arvif = (void *)vifs[i].vif->drv_priv; in ath10k_mac_update_vif_chan()
8556 if (WARN_ON(!arvif->is_started)) in ath10k_mac_update_vif_chan()
8559 if (WARN_ON(!arvif->is_up)) in ath10k_mac_update_vif_chan()
8562 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_update_vif_chan()
8567 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_update_vif_chan()
8572 ret = ath10k_vdev_restart(arvif, &vifs[i].new_ctx->def); in ath10k_mac_update_vif_chan()
8575 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8579 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_mac_update_vif_chan()
8580 arvif->bssid); in ath10k_mac_update_vif_chan()
8583 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8739 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_assign_vif_chanctx() local
8746 ctx, arvif->vdev_id); in ath10k_mac_op_assign_vif_chanctx()
8748 if (WARN_ON(arvif->is_started)) { in ath10k_mac_op_assign_vif_chanctx()
8753 ret = ath10k_vdev_start(arvif, &ctx->def); in ath10k_mac_op_assign_vif_chanctx()
8756 arvif->vdev_id, vif->addr, in ath10k_mac_op_assign_vif_chanctx()
8761 arvif->is_started = true; in ath10k_mac_op_assign_vif_chanctx()
8763 ret = ath10k_mac_vif_setup_ps(arvif); in ath10k_mac_op_assign_vif_chanctx()
8766 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
8771 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, 0, vif->addr); in ath10k_mac_op_assign_vif_chanctx()
8774 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
8778 arvif->is_up = true; in ath10k_mac_op_assign_vif_chanctx()
8781 if (ath10k_mac_can_set_cts_prot(arvif)) { in ath10k_mac_op_assign_vif_chanctx()
8782 ret = ath10k_mac_set_cts_prot(arvif); in ath10k_mac_op_assign_vif_chanctx()
8785 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
8803 ath10k_vdev_stop(arvif); in ath10k_mac_op_assign_vif_chanctx()
8804 arvif->is_started = false; in ath10k_mac_op_assign_vif_chanctx()
8805 ath10k_mac_vif_setup_ps(arvif); in ath10k_mac_op_assign_vif_chanctx()
8818 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_unassign_vif_chanctx() local
8825 ctx, arvif->vdev_id); in ath10k_mac_op_unassign_vif_chanctx()
8827 WARN_ON(!arvif->is_started); in ath10k_mac_op_unassign_vif_chanctx()
8830 WARN_ON(!arvif->is_up); in ath10k_mac_op_unassign_vif_chanctx()
8832 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_op_unassign_vif_chanctx()
8835 arvif->vdev_id, ret); in ath10k_mac_op_unassign_vif_chanctx()
8837 arvif->is_up = false; in ath10k_mac_op_unassign_vif_chanctx()
8840 ret = ath10k_vdev_stop(arvif); in ath10k_mac_op_unassign_vif_chanctx()
8843 arvif->vdev_id, ret); in ath10k_mac_op_unassign_vif_chanctx()
8845 arvif->is_started = false; in ath10k_mac_op_unassign_vif_chanctx()
9060 arsta->arvif->vdev_type == WMI_VDEV_TYPE_STA)) in ath10k_mac_sta_get_peer_stats_info()
9064 peer = ath10k_peer_find(ar, arsta->arvif->vdev_id, sta->addr); in ath10k_mac_sta_get_peer_stats_info()
9072 arsta->arvif->vdev_id, in ath10k_mac_sta_get_peer_stats_info()
9074 arsta->arvif->bssid, in ath10k_mac_sta_get_peer_stats_info()
9114 struct ath10k *ar = arsta->arvif->ar; in ath10k_sta_statistics()
9153 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_set_tid_config() local
9159 arg.vdev_id = arvif->vdev_id; in ath10k_mac_op_set_tid_config()
9161 arvif->tids_rst = 0; in ath10k_mac_op_set_tid_config()
9162 memset(arvif->tid_conf_changed, 0, sizeof(arvif->tid_conf_changed)); in ath10k_mac_op_set_tid_config()
9176 arvif->tids_rst = 0; in ath10k_mac_op_set_tid_config()
9193 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_reset_tid_config() local
9201 arvif->tids_rst = 0; in ath10k_mac_op_reset_tid_config()
9202 ret = ath10k_mac_reset_tid_config(ar, sta, arvif, tids); in ath10k_mac_op_reset_tid_config()
9206 arvif->tids_rst = tids; in ath10k_mac_op_reset_tid_config()
9587 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_get_arvif_iter() local
9589 if (arvif->vdev_id == arvif_iter->vdev_id) in ath10k_get_arvif_iter()
9590 arvif_iter->arvif = arvif; in ath10k_get_arvif_iter()
9606 if (!arvif_iter.arvif) { in ath10k_get_arvif()
9611 return arvif_iter.arvif; in ath10k_get_arvif()