Lines Matching refs:arvif

235 static int ath10k_send_key(struct ath10k_vif *arvif,  in ath10k_send_key()  argument
240 struct ath10k *ar = arvif->ar; in ath10k_send_key()
242 .vdev_id = arvif->vdev_id, in ath10k_send_key()
250 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_send_key()
293 return ath10k_wmi_vdev_install_key(arvif->ar, &arg); in ath10k_send_key()
296 static int ath10k_install_key(struct ath10k_vif *arvif, in ath10k_install_key() argument
301 struct ath10k *ar = arvif->ar; in ath10k_install_key()
309 if (arvif->nohwcrypt) in ath10k_install_key()
312 ret = ath10k_send_key(arvif, key, cmd, macaddr, flags); in ath10k_install_key()
323 static int ath10k_install_peer_wep_keys(struct ath10k_vif *arvif, in ath10k_install_peer_wep_keys() argument
326 struct ath10k *ar = arvif->ar; in ath10k_install_peer_wep_keys()
334 if (WARN_ON(arvif->vif->type != NL80211_IFTYPE_AP && in ath10k_install_peer_wep_keys()
335 arvif->vif->type != NL80211_IFTYPE_ADHOC && in ath10k_install_peer_wep_keys()
336 arvif->vif->type != NL80211_IFTYPE_MESH_POINT)) in ath10k_install_peer_wep_keys()
340 peer = ath10k_peer_find(ar, arvif->vdev_id, addr); in ath10k_install_peer_wep_keys()
346 for (i = 0; i < ARRAY_SIZE(arvif->wep_keys); i++) { in ath10k_install_peer_wep_keys()
347 if (arvif->wep_keys[i] == NULL) in ath10k_install_peer_wep_keys()
350 switch (arvif->vif->type) { in ath10k_install_peer_wep_keys()
354 if (arvif->def_wep_key_idx == i) in ath10k_install_peer_wep_keys()
357 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
363 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
369 ret = ath10k_install_key(arvif, arvif->wep_keys[i], in ath10k_install_peer_wep_keys()
380 peer->keys[i] = arvif->wep_keys[i]; in ath10k_install_peer_wep_keys()
392 if (arvif->vif->type != NL80211_IFTYPE_ADHOC) in ath10k_install_peer_wep_keys()
395 if (arvif->def_wep_key_idx == -1) in ath10k_install_peer_wep_keys()
398 ret = ath10k_wmi_vdev_set_param(arvif->ar, in ath10k_install_peer_wep_keys()
399 arvif->vdev_id, in ath10k_install_peer_wep_keys()
400 arvif->ar->wmi.vdev_param->def_keyid, in ath10k_install_peer_wep_keys()
401 arvif->def_wep_key_idx); in ath10k_install_peer_wep_keys()
404 arvif->vdev_id, ret); in ath10k_install_peer_wep_keys()
411 static int ath10k_clear_peer_keys(struct ath10k_vif *arvif, in ath10k_clear_peer_keys() argument
414 struct ath10k *ar = arvif->ar; in ath10k_clear_peer_keys()
424 peer = ath10k_peer_find(ar, arvif->vdev_id, addr); in ath10k_clear_peer_keys()
435 ret = ath10k_install_key(arvif, peer->keys[i], in ath10k_clear_peer_keys()
477 static int ath10k_clear_vdev_key(struct ath10k_vif *arvif, in ath10k_clear_vdev_key() argument
480 struct ath10k *ar = arvif->ar; in ath10k_clear_vdev_key()
513 ret = ath10k_install_key(arvif, key, DISABLE_KEY, addr, flags); in ath10k_clear_vdev_key()
525 static int ath10k_mac_vif_update_wep_key(struct ath10k_vif *arvif, in ath10k_mac_vif_update_wep_key() argument
528 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_update_wep_key()
535 if (ether_addr_equal(peer->addr, arvif->vif->addr)) in ath10k_mac_vif_update_wep_key()
538 if (ether_addr_equal(peer->addr, arvif->bssid)) in ath10k_mac_vif_update_wep_key()
545 arvif->vdev_id, key->keyidx); in ath10k_mac_vif_update_wep_key()
547 ret = ath10k_install_peer_wep_keys(arvif, peer->addr); in ath10k_mac_vif_update_wep_key()
550 arvif->vdev_id, peer->addr, ret); in ath10k_mac_vif_update_wep_key()
731 struct ath10k_vif *arvif; in ath10k_peer_create() local
741 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_peer_create()
782 static int ath10k_mac_set_kickout(struct ath10k_vif *arvif) in ath10k_mac_set_kickout() argument
784 struct ath10k *ar = arvif->ar; in ath10k_mac_set_kickout()
793 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
798 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
802 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
807 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
811 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
816 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, in ath10k_mac_set_kickout()
820 arvif->vdev_id, ret); in ath10k_mac_set_kickout()
827 static int ath10k_mac_set_rts(struct ath10k_vif *arvif, u32 value) in ath10k_mac_set_rts() argument
829 struct ath10k *ar = arvif->ar; in ath10k_mac_set_rts()
833 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, value); in ath10k_mac_set_rts()
964 void ath10k_mac_vif_beacon_free(struct ath10k_vif *arvif) in ath10k_mac_vif_beacon_free() argument
966 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_beacon_free()
970 if (!arvif->beacon) in ath10k_mac_vif_beacon_free()
973 if (!arvif->beacon_buf) in ath10k_mac_vif_beacon_free()
974 dma_unmap_single(ar->dev, ATH10K_SKB_CB(arvif->beacon)->paddr, in ath10k_mac_vif_beacon_free()
975 arvif->beacon->len, DMA_TO_DEVICE); in ath10k_mac_vif_beacon_free()
977 if (WARN_ON(arvif->beacon_state != ATH10K_BEACON_SCHEDULED && in ath10k_mac_vif_beacon_free()
978 arvif->beacon_state != ATH10K_BEACON_SENT)) in ath10k_mac_vif_beacon_free()
981 dev_kfree_skb_any(arvif->beacon); in ath10k_mac_vif_beacon_free()
983 arvif->beacon = NULL; in ath10k_mac_vif_beacon_free()
984 arvif->beacon_state = ATH10K_BEACON_SCHEDULED; in ath10k_mac_vif_beacon_free()
987 static void ath10k_mac_vif_beacon_cleanup(struct ath10k_vif *arvif) in ath10k_mac_vif_beacon_cleanup() argument
989 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_beacon_cleanup()
993 ath10k_mac_vif_beacon_free(arvif); in ath10k_mac_vif_beacon_cleanup()
995 if (arvif->beacon_buf) { in ath10k_mac_vif_beacon_cleanup()
997 arvif->beacon_buf, arvif->beacon_paddr); in ath10k_mac_vif_beacon_cleanup()
998 arvif->beacon_buf = NULL; in ath10k_mac_vif_beacon_cleanup()
1299 static bool ath10k_mac_can_set_cts_prot(struct ath10k_vif *arvif) in ath10k_mac_can_set_cts_prot() argument
1301 struct ath10k *ar = arvif->ar; in ath10k_mac_can_set_cts_prot()
1305 if (!arvif->is_started) { in ath10k_mac_can_set_cts_prot()
1313 static int ath10k_mac_set_cts_prot(struct ath10k_vif *arvif) in ath10k_mac_set_cts_prot() argument
1315 struct ath10k *ar = arvif->ar; in ath10k_mac_set_cts_prot()
1323 arvif->vdev_id, arvif->use_cts_prot); in ath10k_mac_set_cts_prot()
1325 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_mac_set_cts_prot()
1326 arvif->use_cts_prot ? 1 : 0); in ath10k_mac_set_cts_prot()
1329 static int ath10k_recalc_rtscts_prot(struct ath10k_vif *arvif) in ath10k_recalc_rtscts_prot() argument
1331 struct ath10k *ar = arvif->ar; in ath10k_recalc_rtscts_prot()
1340 if (arvif->num_legacy_stations > 0) in ath10k_recalc_rtscts_prot()
1348 arvif->vdev_id, rts_cts); in ath10k_recalc_rtscts_prot()
1350 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_recalc_rtscts_prot()
1438 static int ath10k_vdev_stop(struct ath10k_vif *arvif) in ath10k_vdev_stop() argument
1440 struct ath10k *ar = arvif->ar; in ath10k_vdev_stop()
1448 ret = ath10k_wmi_vdev_stop(ar, arvif->vdev_id); in ath10k_vdev_stop()
1451 arvif->vdev_id, ret); in ath10k_vdev_stop()
1458 arvif->vdev_id, ret); in ath10k_vdev_stop()
1472 static int ath10k_vdev_start_restart(struct ath10k_vif *arvif, in ath10k_vdev_start_restart() argument
1476 struct ath10k *ar = arvif->ar; in ath10k_vdev_start_restart()
1485 arg.vdev_id = arvif->vdev_id; in ath10k_vdev_start_restart()
1486 arg.dtim_period = arvif->dtim_period; in ath10k_vdev_start_restart()
1487 arg.bcn_intval = arvif->beacon_interval; in ath10k_vdev_start_restart()
1499 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath10k_vdev_start_restart()
1500 arg.ssid = arvif->u.ap.ssid; in ath10k_vdev_start_restart()
1501 arg.ssid_len = arvif->u.ap.ssid_len; in ath10k_vdev_start_restart()
1502 arg.hidden_ssid = arvif->u.ap.hidden_ssid; in ath10k_vdev_start_restart()
1507 } else if (arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_vdev_start_restart()
1508 arg.ssid = arvif->vif->bss_conf.ssid; in ath10k_vdev_start_restart()
1509 arg.ssid_len = arvif->vif->bss_conf.ssid_len; in ath10k_vdev_start_restart()
1542 static int ath10k_vdev_start(struct ath10k_vif *arvif, in ath10k_vdev_start() argument
1545 return ath10k_vdev_start_restart(arvif, def, false); in ath10k_vdev_start()
1548 static int ath10k_vdev_restart(struct ath10k_vif *arvif, in ath10k_vdev_restart() argument
1551 return ath10k_vdev_start_restart(arvif, def, true); in ath10k_vdev_restart()
1554 static int ath10k_mac_setup_bcn_p2p_ie(struct ath10k_vif *arvif, in ath10k_mac_setup_bcn_p2p_ie() argument
1557 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_bcn_p2p_ie()
1562 if (arvif->vif->type != NL80211_IFTYPE_AP || !arvif->vif->p2p) in ath10k_mac_setup_bcn_p2p_ie()
1573 ret = ath10k_wmi_p2p_go_bcn_ie(ar, arvif->vdev_id, p2p_ie); in ath10k_mac_setup_bcn_p2p_ie()
1576 arvif->vdev_id, ret); in ath10k_mac_setup_bcn_p2p_ie()
1613 static int ath10k_mac_setup_bcn_tmpl(struct ath10k_vif *arvif) in ath10k_mac_setup_bcn_tmpl() argument
1615 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_bcn_tmpl()
1617 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_setup_bcn_tmpl()
1625 if (arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath10k_mac_setup_bcn_tmpl()
1626 arvif->vdev_type != WMI_VDEV_TYPE_IBSS) in ath10k_mac_setup_bcn_tmpl()
1635 ret = ath10k_mac_setup_bcn_p2p_ie(arvif, bcn); in ath10k_mac_setup_bcn_tmpl()
1650 ret = ath10k_wmi_bcn_tmpl(ar, arvif->vdev_id, offs.tim_offset, bcn, 0, in ath10k_mac_setup_bcn_tmpl()
1663 static int ath10k_mac_setup_prb_tmpl(struct ath10k_vif *arvif) in ath10k_mac_setup_prb_tmpl() argument
1665 struct ath10k *ar = arvif->ar; in ath10k_mac_setup_prb_tmpl()
1667 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_setup_prb_tmpl()
1674 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath10k_mac_setup_prb_tmpl()
1687 ret = ath10k_wmi_prb_tmpl(ar, arvif->vdev_id, prb); in ath10k_mac_setup_prb_tmpl()
1699 static int ath10k_mac_vif_fix_hidden_ssid(struct ath10k_vif *arvif) in ath10k_mac_vif_fix_hidden_ssid() argument
1701 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_fix_hidden_ssid()
1723 if (WARN_ON(!arvif->is_started)) in ath10k_mac_vif_fix_hidden_ssid()
1726 if (WARN_ON(!arvif->is_up)) in ath10k_mac_vif_fix_hidden_ssid()
1729 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) in ath10k_mac_vif_fix_hidden_ssid()
1732 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_vif_fix_hidden_ssid()
1735 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1743 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_vif_fix_hidden_ssid()
1749 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_vif_fix_hidden_ssid()
1755 ret = ath10k_vdev_restart(arvif, &def); in ath10k_mac_vif_fix_hidden_ssid()
1758 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1762 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_mac_vif_fix_hidden_ssid()
1763 arvif->bssid); in ath10k_mac_vif_fix_hidden_ssid()
1766 arvif->vdev_id, ret); in ath10k_mac_vif_fix_hidden_ssid()
1773 static void ath10k_control_beaconing(struct ath10k_vif *arvif, in ath10k_control_beaconing() argument
1776 struct ath10k *ar = arvif->ar; in ath10k_control_beaconing()
1779 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_control_beaconing()
1782 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_control_beaconing()
1785 arvif->vdev_id, ret); in ath10k_control_beaconing()
1787 arvif->is_up = false; in ath10k_control_beaconing()
1789 spin_lock_bh(&arvif->ar->data_lock); in ath10k_control_beaconing()
1790 ath10k_mac_vif_beacon_free(arvif); in ath10k_control_beaconing()
1791 spin_unlock_bh(&arvif->ar->data_lock); in ath10k_control_beaconing()
1796 arvif->tx_seq_no = 0x1000; in ath10k_control_beaconing()
1798 arvif->aid = 0; in ath10k_control_beaconing()
1799 ether_addr_copy(arvif->bssid, info->bssid); in ath10k_control_beaconing()
1801 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_control_beaconing()
1802 arvif->bssid); in ath10k_control_beaconing()
1805 arvif->vdev_id, ret); in ath10k_control_beaconing()
1809 arvif->is_up = true; in ath10k_control_beaconing()
1811 ret = ath10k_mac_vif_fix_hidden_ssid(arvif); in ath10k_control_beaconing()
1814 arvif->vdev_id, ret); in ath10k_control_beaconing()
1818 ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vdev %d up\n", arvif->vdev_id); in ath10k_control_beaconing()
1821 static void ath10k_control_ibss(struct ath10k_vif *arvif, in ath10k_control_ibss() argument
1825 struct ath10k *ar = arvif->ar; in ath10k_control_ibss()
1829 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_control_ibss()
1832 if (is_zero_ether_addr(arvif->bssid)) in ath10k_control_ibss()
1835 eth_zero_addr(arvif->bssid); in ath10k_control_ibss()
1840 vdev_param = arvif->ar->wmi.vdev_param->atim_window; in ath10k_control_ibss()
1841 ret = ath10k_wmi_vdev_set_param(arvif->ar, arvif->vdev_id, vdev_param, in ath10k_control_ibss()
1845 arvif->vdev_id, ret); in ath10k_control_ibss()
1848 static int ath10k_mac_vif_recalc_ps_wake_threshold(struct ath10k_vif *arvif) in ath10k_mac_vif_recalc_ps_wake_threshold() argument
1850 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_recalc_ps_wake_threshold()
1855 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_recalc_ps_wake_threshold()
1857 if (arvif->u.sta.uapsd) in ath10k_mac_vif_recalc_ps_wake_threshold()
1863 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, value); in ath10k_mac_vif_recalc_ps_wake_threshold()
1866 value, arvif->vdev_id, ret); in ath10k_mac_vif_recalc_ps_wake_threshold()
1873 static int ath10k_mac_vif_recalc_ps_poll_count(struct ath10k_vif *arvif) in ath10k_mac_vif_recalc_ps_poll_count() argument
1875 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_recalc_ps_poll_count()
1880 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_recalc_ps_poll_count()
1882 if (arvif->u.sta.uapsd) in ath10k_mac_vif_recalc_ps_poll_count()
1888 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_mac_vif_recalc_ps_poll_count()
1892 value, arvif->vdev_id, ret); in ath10k_mac_vif_recalc_ps_poll_count()
1901 struct ath10k_vif *arvif; in ath10k_mac_num_vifs_started() local
1906 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_mac_num_vifs_started()
1907 if (arvif->is_started) in ath10k_mac_num_vifs_started()
1913 static int ath10k_mac_vif_setup_ps(struct ath10k_vif *arvif) in ath10k_mac_vif_setup_ps() argument
1915 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_setup_ps()
1916 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_setup_ps()
1924 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_setup_ps()
1926 if (arvif->vif->type != NL80211_IFTYPE_STATION) in ath10k_mac_vif_setup_ps()
1929 enable_ps = arvif->ps; in ath10k_mac_vif_setup_ps()
1935 arvif->vdev_id); in ath10k_mac_vif_setup_ps()
1939 if (!arvif->is_started) { in ath10k_mac_vif_setup_ps()
1957 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, in ath10k_mac_vif_setup_ps()
1961 arvif->vdev_id, ret); in ath10k_mac_vif_setup_ps()
1969 arvif->vdev_id, psmode ? "enable" : "disable"); in ath10k_mac_vif_setup_ps()
1971 ret = ath10k_wmi_set_psmode(ar, arvif->vdev_id, psmode); in ath10k_mac_vif_setup_ps()
1974 psmode, arvif->vdev_id, ret); in ath10k_mac_vif_setup_ps()
1981 static int ath10k_mac_vif_disable_keepalive(struct ath10k_vif *arvif) in ath10k_mac_vif_disable_keepalive() argument
1983 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_disable_keepalive()
1987 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_disable_keepalive()
1989 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath10k_mac_vif_disable_keepalive()
1998 arg.vdev_id = arvif->vdev_id; in ath10k_mac_vif_disable_keepalive()
2006 arvif->vdev_id, ret); in ath10k_mac_vif_disable_keepalive()
2013 static void ath10k_mac_vif_ap_csa_count_down(struct ath10k_vif *arvif) in ath10k_mac_vif_ap_csa_count_down() argument
2015 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_ap_csa_count_down()
2016 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_ap_csa_count_down()
2019 lockdep_assert_held(&arvif->ar->conf_mutex); in ath10k_mac_vif_ap_csa_count_down()
2024 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath10k_mac_vif_ap_csa_count_down()
2030 if (!arvif->is_up) in ath10k_mac_vif_ap_csa_count_down()
2036 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_vif_ap_csa_count_down()
2041 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_vif_ap_csa_count_down()
2052 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif, in ath10k_mac_vif_ap_csa_work() local
2054 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_ap_csa_work()
2057 ath10k_mac_vif_ap_csa_count_down(arvif); in ath10k_mac_vif_ap_csa_work()
2066 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_beacon_iter() local
2074 cancel_delayed_work(&arvif->connection_loss_work); in ath10k_mac_handle_beacon_iter()
2089 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_beacon_miss_iter() local
2090 struct ath10k *ar = arvif->ar; in ath10k_mac_handle_beacon_miss_iter()
2093 if (arvif->vdev_id != *vdev_id) in ath10k_mac_handle_beacon_miss_iter()
2096 if (!arvif->is_up) in ath10k_mac_handle_beacon_miss_iter()
2106 ieee80211_queue_delayed_work(hw, &arvif->connection_loss_work, in ath10k_mac_handle_beacon_miss_iter()
2120 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif, in ath10k_mac_vif_sta_connection_loss_work() local
2122 struct ieee80211_vif *vif = arvif->vif; in ath10k_mac_vif_sta_connection_loss_work()
2124 if (!arvif->is_up) in ath10k_mac_vif_sta_connection_loss_work()
2156 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_basic() local
2167 arg->vdev_id = arvif->vdev_id; in ath10k_peer_assoc_h_basic()
2169 arg->peer_flags |= arvif->ar->wmi.peer_flags->auth; in ath10k_peer_assoc_h_basic()
2233 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_rates() local
2251 ratemask &= arvif->bitrate_mask.control[band].legacy; in ath10k_peer_assoc_h_rates()
2296 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_ht() local
2314 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_peer_assoc_h_ht()
2315 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_ht()
2339 if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) { in ath10k_peer_assoc_h_ht()
2397 struct ath10k_vif *arvif, in ath10k_peer_assoc_qos_ap() argument
2426 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, in ath10k_peer_assoc_qos_ap()
2432 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2436 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, in ath10k_peer_assoc_qos_ap()
2442 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2451 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, sta->addr, in ath10k_peer_assoc_qos_ap()
2456 arvif->vdev_id, ret); in ath10k_peer_assoc_qos_ap()
2545 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_vht() local
2561 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_vht()
2652 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_qos() local
2654 switch (arvif->vdev_type) { in ath10k_peer_assoc_h_qos()
2657 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2660 arg->peer_flags |= arvif->ar->wmi.peer_flags->apsd; in ath10k_peer_assoc_h_qos()
2666 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2670 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos; in ath10k_peer_assoc_h_qos()
2678 arvif->ar->wmi.peer_flags->qos)); in ath10k_peer_assoc_h_qos()
2719 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_peer_assoc_h_phymode() local
2730 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_peer_assoc_h_phymode()
2731 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_peer_assoc_h_phymode()
2810 static int ath10k_setup_peer_smps(struct ath10k *ar, struct ath10k_vif *arvif, in ath10k_setup_peer_smps() argument
2825 return ath10k_wmi_peer_set_param(ar, arvif->vdev_id, addr, in ath10k_setup_peer_smps()
2834 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_vif_recalc_txbf() local
2885 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, value); in ath10k_mac_vif_recalc_txbf()
2897 struct ath10k_vif *arvif; in ath10k_mac_is_connected() local
2899 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_mac_is_connected()
2900 if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath10k_mac_is_connected()
2954 struct ath10k_vif *arvif; in ath10k_mac_txpower_recalc() local
2959 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_mac_txpower_recalc()
2961 if (arvif->txpower == INT_MIN) in ath10k_mac_txpower_recalc()
2965 txpower = arvif->txpower; in ath10k_mac_txpower_recalc()
2967 txpower = min(txpower, arvif->txpower); in ath10k_mac_txpower_recalc()
3053 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_assoc() local
3063 arvif->vdev_id, arvif->bssid, arvif->aid); in ath10k_bss_assoc()
3070 bss_conf->bssid, arvif->vdev_id); in ath10k_bss_assoc()
3084 bss_conf->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
3094 bss_conf->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
3098 ret = ath10k_setup_peer_smps(ar, arvif, bss_conf->bssid, &ht_cap); in ath10k_bss_assoc()
3101 arvif->vdev_id, ret); in ath10k_bss_assoc()
3108 arvif->vdev_id, bss_conf->bssid, ret); in ath10k_bss_assoc()
3114 arvif->vdev_id, bss_conf->bssid, bss_conf->aid); in ath10k_bss_assoc()
3116 WARN_ON(arvif->is_up); in ath10k_bss_assoc()
3118 arvif->aid = bss_conf->aid; in ath10k_bss_assoc()
3119 ether_addr_copy(arvif->bssid, bss_conf->bssid); in ath10k_bss_assoc()
3126 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid); in ath10k_bss_assoc()
3129 arvif->vdev_id, ret); in ath10k_bss_assoc()
3133 arvif->is_up = true; in ath10k_bss_assoc()
3141 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, arvif->bssid, in ath10k_bss_assoc()
3145 arvif->bssid, arvif->vdev_id, ret); in ath10k_bss_assoc()
3154 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_disassoc() local
3161 arvif->vdev_id, arvif->bssid); in ath10k_bss_disassoc()
3163 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_bss_disassoc()
3166 arvif->vdev_id, ret); in ath10k_bss_disassoc()
3168 arvif->def_wep_key_idx = -1; in ath10k_bss_disassoc()
3173 arvif->vdev_id, ret); in ath10k_bss_disassoc()
3177 arvif->is_up = false; in ath10k_bss_disassoc()
3181 cancel_delayed_work_sync(&arvif->connection_loss_work); in ath10k_bss_disassoc()
3186 struct ath10k_vif *arvif) in ath10k_new_peer_tid_config() argument
3195 if (arvif->retry_long[i] || arvif->ampdu[i] || in ath10k_new_peer_tid_config()
3196 arvif->rate_ctrl[i] || arvif->rtscts[i]) { in ath10k_new_peer_tid_config()
3199 arg.vdev_id = arvif->vdev_id; in ath10k_new_peer_tid_config()
3200 arg.retry_count = arvif->retry_long[i]; in ath10k_new_peer_tid_config()
3201 arg.aggr_control = arvif->ampdu[i]; in ath10k_new_peer_tid_config()
3202 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_new_peer_tid_config()
3203 arg.rcode_flags = arvif->rate_code[i]; in ath10k_new_peer_tid_config()
3205 if (arvif->rtscts[i]) in ath10k_new_peer_tid_config()
3211 arg.rtscts_ctrl = arvif->rtscts[i]; in ath10k_new_peer_tid_config()
3214 if (arvif->noack[i]) { in ath10k_new_peer_tid_config()
3215 arg.ack_policy = arvif->noack[i]; in ath10k_new_peer_tid_config()
3252 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_station_assoc() local
3261 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3268 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3276 ret = ath10k_setup_peer_smps(ar, arvif, sta->addr, in ath10k_station_assoc()
3280 arvif->vdev_id, ret); in ath10k_station_assoc()
3284 ret = ath10k_peer_assoc_qos_ap(ar, arvif, sta); in ath10k_station_assoc()
3287 sta->addr, arvif->vdev_id, ret); in ath10k_station_assoc()
3292 arvif->num_legacy_stations++; in ath10k_station_assoc()
3293 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_station_assoc()
3296 arvif->vdev_id, ret); in ath10k_station_assoc()
3302 if ((arvif->def_wep_key_idx != -1) && (!sta->tdls)) { in ath10k_station_assoc()
3303 ret = ath10k_install_peer_wep_keys(arvif, sta->addr); in ath10k_station_assoc()
3306 arvif->vdev_id, ret); in ath10k_station_assoc()
3315 return ath10k_new_peer_tid_config(ar, sta, arvif); in ath10k_station_assoc()
3322 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_station_disassoc() local
3328 arvif->num_legacy_stations--; in ath10k_station_disassoc()
3329 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_station_disassoc()
3332 arvif->vdev_id, ret); in ath10k_station_disassoc()
3337 ret = ath10k_clear_peer_keys(arvif, sta->addr); in ath10k_station_disassoc()
3340 arvif->vdev_id, ret); in ath10k_station_disassoc()
3585 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_tx_unlock_iter() local
3587 if (arvif->tx_paused) in ath10k_mac_tx_unlock_iter()
3590 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_mac_tx_unlock_iter()
3611 void ath10k_mac_vif_tx_lock(struct ath10k_vif *arvif, int reason) in ath10k_mac_vif_tx_lock() argument
3613 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_tx_lock()
3618 arvif->tx_paused |= BIT(reason); in ath10k_mac_vif_tx_lock()
3619 ieee80211_stop_queue(ar->hw, arvif->vdev_id); in ath10k_mac_vif_tx_lock()
3622 void ath10k_mac_vif_tx_unlock(struct ath10k_vif *arvif, int reason) in ath10k_mac_vif_tx_unlock() argument
3624 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_tx_unlock()
3629 arvif->tx_paused &= ~BIT(reason); in ath10k_mac_vif_tx_unlock()
3634 if (arvif->tx_paused) in ath10k_mac_vif_tx_unlock()
3637 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_mac_vif_tx_unlock()
3640 static void ath10k_mac_vif_handle_tx_pause(struct ath10k_vif *arvif, in ath10k_mac_vif_handle_tx_pause() argument
3644 struct ath10k *ar = arvif->ar; in ath10k_mac_vif_handle_tx_pause()
3650 ath10k_mac_vif_tx_lock(arvif, pause_id); in ath10k_mac_vif_handle_tx_pause()
3653 ath10k_mac_vif_tx_unlock(arvif, pause_id); in ath10k_mac_vif_handle_tx_pause()
3658 action, arvif->vdev_id); in ath10k_mac_vif_handle_tx_pause()
3672 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_handle_tx_pause_iter() local
3675 if (arvif->vdev_id != arg->vdev_id) in ath10k_mac_handle_tx_pause_iter()
3678 ath10k_mac_vif_handle_tx_pause(arvif, arg->pause_id, arg->action); in ath10k_mac_handle_tx_pause_iter()
3835 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_tx_h_add_p2p_noa_ie() local
3843 if (arvif->u.ap.noa_data) in ath10k_tx_h_add_p2p_noa_ie()
3844 if (!pskb_expand_head(skb, 0, arvif->u.ap.noa_len, in ath10k_tx_h_add_p2p_noa_ie()
3846 skb_put_data(skb, arvif->u.ap.noa_data, in ath10k_tx_h_add_p2p_noa_ie()
3847 arvif->u.ap.noa_len); in ath10k_tx_h_add_p2p_noa_ie()
3863 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_tx_h_fill_cb() local
3880 if (arvif->noack[tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_tx_h_fill_cb()
4078 struct ath10k_vif *arvif; in ath10k_offchan_tx_work() local
4140 arvif = ath10k_get_arvif(ar, vdev_id); in ath10k_offchan_tx_work()
4141 if (arvif) { in ath10k_offchan_tx_work()
4142 vif = arvif->vif; in ath10k_offchan_tx_work()
4744 struct ath10k_vif *arvif; in ath10k_halt() local
4766 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_halt()
4767 ath10k_mac_vif_beacon_cleanup(arvif); in ath10k_halt()
5356 struct ath10k_vif *arvif; in ath10k_config_ps() local
5361 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_config_ps()
5362 ret = ath10k_mac_vif_setup_ps(arvif); in ath10k_config_ps()
5405 static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif) in ath10k_mac_set_txbf_conf() argument
5408 struct ath10k *ar = arvif->ar; in ath10k_mac_set_txbf_conf()
5442 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_mac_set_txbf_conf()
5457 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_add_interface() local
5470 memset(arvif, 0, sizeof(*arvif)); in ath10k_add_interface()
5473 arvif->ar = ar; in ath10k_add_interface()
5474 arvif->vif = vif; in ath10k_add_interface()
5476 INIT_LIST_HEAD(&arvif->list); in ath10k_add_interface()
5477 INIT_WORK(&arvif->ap_csa_work, ath10k_mac_vif_ap_csa_work); in ath10k_add_interface()
5478 INIT_DELAYED_WORK(&arvif->connection_loss_work, in ath10k_add_interface()
5481 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) { in ath10k_add_interface()
5482 arvif->bitrate_mask.control[i].legacy = 0xffffffff; in ath10k_add_interface()
5483 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff, in ath10k_add_interface()
5484 sizeof(arvif->bitrate_mask.control[i].ht_mcs)); in ath10k_add_interface()
5485 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff, in ath10k_add_interface()
5486 sizeof(arvif->bitrate_mask.control[i].vht_mcs)); in ath10k_add_interface()
5505 arvif->vdev_id = bit; in ath10k_add_interface()
5506 arvif->vdev_subtype = in ath10k_add_interface()
5511 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath10k_add_interface()
5512 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5517 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath10k_add_interface()
5519 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5523 arvif->vdev_type = WMI_VDEV_TYPE_IBSS; in ath10k_add_interface()
5527 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5534 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath10k_add_interface()
5537 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath10k_add_interface()
5540 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype in ath10k_add_interface()
5544 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR; in ath10k_add_interface()
5556 vif->cab_queue = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1); in ath10k_add_interface()
5558 vif->hw_queue[i] = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1); in ath10k_add_interface()
5579 arvif->beacon_buf = dma_alloc_coherent(ar->dev, in ath10k_add_interface()
5581 &arvif->beacon_paddr, in ath10k_add_interface()
5583 if (!arvif->beacon_buf) { in ath10k_add_interface()
5591 arvif->nohwcrypt = true; in ath10k_add_interface()
5593 if (arvif->nohwcrypt && in ath10k_add_interface()
5601 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype, in ath10k_add_interface()
5602 arvif->beacon_buf ? "single-buf" : "per-skb"); in ath10k_add_interface()
5604 ret = ath10k_wmi_vdev_create(ar, arvif->vdev_id, arvif->vdev_type, in ath10k_add_interface()
5605 arvif->vdev_subtype, vif->addr); in ath10k_add_interface()
5608 arvif->vdev_id, ret); in ath10k_add_interface()
5615 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5619 arvif->vdev_id, ret); in ath10k_add_interface()
5623 ar->free_vdev_map &= ~(1LL << arvif->vdev_id); in ath10k_add_interface()
5625 list_add(&arvif->list, &ar->arvifs); in ath10k_add_interface()
5631 ret = ath10k_mac_vif_disable_keepalive(arvif); in ath10k_add_interface()
5634 arvif->vdev_id, ret); in ath10k_add_interface()
5638 arvif->def_wep_key_idx = -1; in ath10k_add_interface()
5641 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5646 arvif->vdev_id, ret); in ath10k_add_interface()
5657 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5661 arvif->vdev_id, ar->cfg_tx_chainmask, nss, in ath10k_add_interface()
5667 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_add_interface()
5668 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_add_interface()
5669 ret = ath10k_peer_create(ar, vif, NULL, arvif->vdev_id, in ath10k_add_interface()
5673 arvif->vdev_id, ret); in ath10k_add_interface()
5679 peer = ath10k_peer_find(ar, arvif->vdev_id, vif->addr); in ath10k_add_interface()
5682 vif->addr, arvif->vdev_id); in ath10k_add_interface()
5688 arvif->peer_id = find_first_bit(peer->peer_ids, in ath10k_add_interface()
5693 arvif->peer_id = HTT_INVALID_PEERID; in ath10k_add_interface()
5696 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath10k_add_interface()
5697 ret = ath10k_mac_set_kickout(arvif); in ath10k_add_interface()
5700 arvif->vdev_id, ret); in ath10k_add_interface()
5705 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) { in ath10k_add_interface()
5708 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_add_interface()
5712 arvif->vdev_id, ret); in ath10k_add_interface()
5716 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif); in ath10k_add_interface()
5719 arvif->vdev_id, ret); in ath10k_add_interface()
5723 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif); in ath10k_add_interface()
5726 arvif->vdev_id, ret); in ath10k_add_interface()
5731 ret = ath10k_mac_set_txbf_conf(arvif); in ath10k_add_interface()
5734 arvif->vdev_id, ret); in ath10k_add_interface()
5738 ret = ath10k_mac_set_rts(arvif, ar->hw->wiphy->rts_threshold); in ath10k_add_interface()
5741 arvif->vdev_id, ret); in ath10k_add_interface()
5745 arvif->txpower = vif->bss_conf.txpower; in ath10k_add_interface()
5754 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_add_interface()
5755 arvif->ftm_responder); in ath10k_add_interface()
5760 arvif->vdev_id, ret); in ath10k_add_interface()
5764 ar->monitor_arvif = arvif; in ath10k_add_interface()
5774 ieee80211_wake_queue(ar->hw, arvif->vdev_id); in ath10k_add_interface()
5781 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_add_interface()
5782 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_add_interface()
5783 ath10k_wmi_peer_delete(ar, arvif->vdev_id, vif->addr); in ath10k_add_interface()
5784 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id, in ath10k_add_interface()
5789 ath10k_wmi_vdev_delete(ar, arvif->vdev_id); in ath10k_add_interface()
5790 ar->free_vdev_map |= 1LL << arvif->vdev_id; in ath10k_add_interface()
5792 list_del(&arvif->list); in ath10k_add_interface()
5796 if (arvif->beacon_buf) { in ath10k_add_interface()
5798 arvif->beacon_buf, arvif->beacon_paddr); in ath10k_add_interface()
5799 arvif->beacon_buf = NULL; in ath10k_add_interface()
5807 static void ath10k_mac_vif_tx_unlock_all(struct ath10k_vif *arvif) in ath10k_mac_vif_tx_unlock_all() argument
5812 ath10k_mac_vif_tx_unlock(arvif, i); in ath10k_mac_vif_tx_unlock_all()
5819 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_remove_interface() local
5825 cancel_work_sync(&arvif->ap_csa_work); in ath10k_remove_interface()
5826 cancel_delayed_work_sync(&arvif->connection_loss_work); in ath10k_remove_interface()
5830 ret = ath10k_spectral_vif_stop(arvif); in ath10k_remove_interface()
5833 arvif->vdev_id, ret); in ath10k_remove_interface()
5835 ar->free_vdev_map |= 1LL << arvif->vdev_id; in ath10k_remove_interface()
5837 list_del(&arvif->list); in ath10k_remove_interface()
5840 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_remove_interface()
5841 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_remove_interface()
5842 ret = ath10k_wmi_peer_delete(arvif->ar, arvif->vdev_id, in ath10k_remove_interface()
5846 arvif->vdev_id, ret); in ath10k_remove_interface()
5848 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id, in ath10k_remove_interface()
5850 kfree(arvif->u.ap.noa_data); in ath10k_remove_interface()
5854 arvif->vdev_id); in ath10k_remove_interface()
5856 ret = ath10k_wmi_vdev_delete(ar, arvif->vdev_id); in ath10k_remove_interface()
5859 arvif->vdev_id, ret); in ath10k_remove_interface()
5873 if (arvif->vdev_type == WMI_VDEV_TYPE_AP || in ath10k_remove_interface()
5874 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) { in ath10k_remove_interface()
5875 ret = ath10k_wait_for_peer_deleted(ar, arvif->vdev_id, in ath10k_remove_interface()
5879 arvif->vdev_id, ret); in ath10k_remove_interface()
5894 vif->addr, arvif->vdev_id); in ath10k_remove_interface()
5902 ath10k_mac_vif_beacon_cleanup(arvif); in ath10k_remove_interface()
5905 ath10k_peer_cleanup(ar, arvif->vdev_id); in ath10k_remove_interface()
5920 ath10k_mac_vif_tx_unlock_all(arvif); in ath10k_remove_interface()
5966 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_recalculate_mgmt_rate() local
5987 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_recalculate_mgmt_rate()
5999 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_bss_info_changed() local
6010 ath10k_control_ibss(arvif, info, vif->addr); in ath10k_bss_info_changed()
6013 arvif->beacon_interval = info->beacon_int; in ath10k_bss_info_changed()
6015 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6016 arvif->beacon_interval); in ath10k_bss_info_changed()
6019 arvif->vdev_id, arvif->beacon_interval); in ath10k_bss_info_changed()
6023 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6029 arvif->vdev_id); in ath10k_bss_info_changed()
6036 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6038 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_bss_info_changed()
6045 strncpy(arvif->u.ap.ssid, "mesh", in ath10k_bss_info_changed()
6046 sizeof(arvif->u.ap.ssid)); in ath10k_bss_info_changed()
6047 arvif->u.ap.ssid_len = 4; in ath10k_bss_info_changed()
6052 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_bss_info_changed()
6055 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6059 arvif->dtim_period = info->dtim_period; in ath10k_bss_info_changed()
6063 arvif->vdev_id, arvif->dtim_period); in ath10k_bss_info_changed()
6066 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6067 arvif->dtim_period); in ath10k_bss_info_changed()
6070 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6075 arvif->u.ap.ssid_len = info->ssid_len; in ath10k_bss_info_changed()
6077 memcpy(arvif->u.ap.ssid, info->ssid, info->ssid_len); in ath10k_bss_info_changed()
6078 arvif->u.ap.hidden_ssid = info->hidden_ssid; in ath10k_bss_info_changed()
6082 ether_addr_copy(arvif->bssid, info->bssid); in ath10k_bss_info_changed()
6085 arvif->ftm_responder != info->ftm_responder && in ath10k_bss_info_changed()
6087 arvif->ftm_responder = info->ftm_responder; in ath10k_bss_info_changed()
6090 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6091 arvif->ftm_responder); in ath10k_bss_info_changed()
6095 arvif->vdev_id, arvif->ftm_responder, ret); in ath10k_bss_info_changed()
6099 ath10k_control_beaconing(arvif, info); in ath10k_bss_info_changed()
6102 arvif->use_cts_prot = info->use_cts_prot; in ath10k_bss_info_changed()
6104 ret = ath10k_recalc_rtscts_prot(arvif); in ath10k_bss_info_changed()
6107 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6109 if (ath10k_mac_can_set_cts_prot(arvif)) { in ath10k_bss_info_changed()
6110 ret = ath10k_mac_set_cts_prot(arvif); in ath10k_bss_info_changed()
6113 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6125 arvif->vdev_id, slottime); in ath10k_bss_info_changed()
6128 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6132 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6143 arvif->vdev_id, preamble); in ath10k_bss_info_changed()
6146 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_bss_info_changed()
6150 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6170 arvif->vdev_id, info->txpower); in ath10k_bss_info_changed()
6172 arvif->txpower = info->txpower; in ath10k_bss_info_changed()
6179 arvif->ps = vif->bss_conf.ps; in ath10k_bss_info_changed()
6184 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6188 !ath10k_mac_vif_chan(arvif->vif, &def)) { in ath10k_bss_info_changed()
6210 arvif->vdev_id, rate); in ath10k_bss_info_changed()
6213 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_bss_info_changed()
6218 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6221 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_bss_info_changed()
6226 arvif->vdev_id, ret); in ath10k_bss_info_changed()
6230 !ath10k_mac_vif_chan(arvif->vif, &def)) in ath10k_bss_info_changed()
6260 struct ieee80211_vif *sta_vif = arsta->arvif->vif; in ath10k_mac_tdls_vif_stations_count_iter()
6284 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_hw_scan() local
6305 ar->scan.vdev_id = arvif->vdev_id; in ath10k_hw_scan()
6321 arg.vdev_id = arvif->vdev_id; in ath10k_hw_scan()
6396 struct ath10k_vif *arvif, in ath10k_set_key_h_def_keyidx() argument
6400 u32 vdev_param = arvif->ar->wmi.vdev_param->def_keyid; in ath10k_set_key_h_def_keyidx()
6414 if (arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath10k_set_key_h_def_keyidx()
6415 arvif->vdev_type != WMI_VDEV_TYPE_IBSS) in ath10k_set_key_h_def_keyidx()
6430 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, in ath10k_set_key_h_def_keyidx()
6434 arvif->vdev_id, ret); in ath10k_set_key_h_def_keyidx()
6442 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_set_key() local
6460 if (arvif->nohwcrypt) in ath10k_set_key()
6474 } else if (arvif->vdev_type == WMI_VDEV_TYPE_STA) { in ath10k_set_key()
6484 arvif->wep_keys[key->keyidx] = key; in ath10k_set_key()
6486 arvif->wep_keys[key->keyidx] = NULL; in ath10k_set_key()
6493 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr); in ath10k_set_key()
6515 ath10k_clear_vdev_key(arvif, key); in ath10k_set_key()
6523 ath10k_mac_vif_update_wep_key(arvif, key); in ath10k_set_key()
6531 if (cmd == SET_KEY && arvif->def_wep_key_idx == -1) in ath10k_set_key()
6535 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags); in ath10k_set_key()
6539 arvif->vdev_id, peer_addr, ret); in ath10k_set_key()
6551 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags2); in ath10k_set_key()
6555 arvif->vdev_id, peer_addr, ret); in ath10k_set_key()
6556 ret2 = ath10k_install_key(arvif, key, DISABLE_KEY, in ath10k_set_key()
6561 arvif->vdev_id, peer_addr, ret2); in ath10k_set_key()
6567 ath10k_set_key_h_def_keyidx(ar, arvif, cmd, key); in ath10k_set_key()
6570 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr); in ath10k_set_key()
6581 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_set_key()
6584 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, peer_addr, in ath10k_set_key()
6597 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_set_default_unicast_key() local
6600 mutex_lock(&arvif->ar->conf_mutex); in ath10k_set_default_unicast_key()
6602 if (arvif->ar->state != ATH10K_STATE_ON) in ath10k_set_default_unicast_key()
6606 arvif->vdev_id, keyidx); in ath10k_set_default_unicast_key()
6608 ret = ath10k_wmi_vdev_set_param(arvif->ar, in ath10k_set_default_unicast_key()
6609 arvif->vdev_id, in ath10k_set_default_unicast_key()
6610 arvif->ar->wmi.vdev_param->def_keyid, in ath10k_set_default_unicast_key()
6615 arvif->vdev_id, in ath10k_set_default_unicast_key()
6620 arvif->def_wep_key_idx = keyidx; in ath10k_set_default_unicast_key()
6623 mutex_unlock(&arvif->ar->conf_mutex); in ath10k_set_default_unicast_key()
6629 struct ath10k_vif *arvif; in ath10k_sta_rc_update_wk() local
6641 arvif = arsta->arvif; in ath10k_sta_rc_update_wk()
6642 ar = arvif->ar; in ath10k_sta_rc_update_wk()
6644 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) in ath10k_sta_rc_update_wk()
6648 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath10k_sta_rc_update_wk()
6649 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath10k_sta_rc_update_wk()
6675 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6683 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6694 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6705 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_rc_update_wk()
6716 err = ath10k_station_assoc(ar, arvif->vif, sta, true); in ath10k_sta_rc_update_wk()
6726 static int ath10k_mac_inc_num_stations(struct ath10k_vif *arvif, in ath10k_mac_inc_num_stations() argument
6729 struct ath10k *ar = arvif->ar; in ath10k_mac_inc_num_stations()
6733 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath10k_mac_inc_num_stations()
6744 static void ath10k_mac_dec_num_stations(struct ath10k_vif *arvif, in ath10k_mac_dec_num_stations() argument
6747 struct ath10k *ar = arvif->ar; in ath10k_mac_dec_num_stations()
6751 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath10k_mac_dec_num_stations()
6762 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_set_txpwr() local
6779 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_sta_set_txpwr()
6973 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_set_tid_config() local
6999 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
7008 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
7052 if ((arvif->retry_long[arg->tid] || in ath10k_mac_set_tid_config()
7053 arvif->rate_code[arg->tid] || in ath10k_mac_set_tid_config()
7054 arvif->ampdu[arg->tid] == in ath10k_mac_set_tid_config()
7059 arvif->noack[arg->tid] = arg->ack_policy; in ath10k_mac_set_tid_config()
7060 arvif->ampdu[arg->tid] = arg->aggr_control; in ath10k_mac_set_tid_config()
7061 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl; in ath10k_mac_set_tid_config()
7066 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_set_tid_config()
7069 arvif->retry_long[arg->tid] = arg->retry_count; in ath10k_mac_set_tid_config()
7073 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) in ath10k_mac_set_tid_config()
7076 arvif->ampdu[arg->tid] = arg->aggr_control; in ath10k_mac_set_tid_config()
7081 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_mac_set_tid_config()
7085 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl; in ath10k_mac_set_tid_config()
7086 arvif->rate_code[arg->tid] = arg->rcode_flags; in ath10k_mac_set_tid_config()
7091 arvif->rtscts[arg->tid] = arg->rtscts_ctrl; in ath10k_mac_set_tid_config()
7096 arvif->tid_conf_changed[arg->tid] |= changed; in ath10k_mac_set_tid_config()
7183 struct ath10k_vif *arvif, in ath10k_mac_reset_tid_config() argument
7190 arg.vdev_id = arvif->vdev_id; in ath10k_mac_reset_tid_config()
7211 if (!arvif->tids_rst) { in ath10k_mac_reset_tid_config()
7219 arvif->retry_long[i] = 0; in ath10k_mac_reset_tid_config()
7220 arvif->noack[i] = 0; in ath10k_mac_reset_tid_config()
7221 arvif->ampdu[i] = 0; in ath10k_mac_reset_tid_config()
7222 arvif->rate_code[i] = 0; in ath10k_mac_reset_tid_config()
7223 arvif->rate_ctrl[i] = 0; in ath10k_mac_reset_tid_config()
7224 arvif->rtscts[i] = 0; in ath10k_mac_reset_tid_config()
7238 struct ath10k_vif *arvif; in ath10k_sta_tid_cfg_wk() local
7247 arvif = arsta->arvif; in ath10k_sta_tid_cfg_wk()
7248 ar = arvif->ar; in ath10k_sta_tid_cfg_wk()
7252 if (arvif->tids_rst) { in ath10k_sta_tid_cfg_wk()
7253 ret = ath10k_mac_reset_tid_config(ar, sta, arvif, in ath10k_sta_tid_cfg_wk()
7254 arvif->tids_rst); in ath10k_sta_tid_cfg_wk()
7262 changed = arvif->tid_conf_changed[i]; in ath10k_sta_tid_cfg_wk()
7269 arg.ack_policy = arvif->noack[i]; in ath10k_sta_tid_cfg_wk()
7270 arg.aggr_control = arvif->ampdu[i]; in ath10k_sta_tid_cfg_wk()
7271 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_sta_tid_cfg_wk()
7278 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7281 arg.retry_count = arvif->retry_long[i]; in ath10k_sta_tid_cfg_wk()
7289 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7292 arg.aggr_control = arvif->ampdu[i]; in ath10k_sta_tid_cfg_wk()
7299 nss = ATH10K_HW_NSS(arvif->rate_code[i]); in ath10k_sta_tid_cfg_wk()
7301 arvif->rate_code[i], in ath10k_sta_tid_cfg_wk()
7304 arvif->rate_ctrl[i] > WMI_TID_CONFIG_RATE_CONTROL_AUTO) { in ath10k_sta_tid_cfg_wk()
7312 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) { in ath10k_sta_tid_cfg_wk()
7316 arg.rate_ctrl = arvif->rate_ctrl[i]; in ath10k_sta_tid_cfg_wk()
7317 arg.rcode_flags = arvif->rate_code[i]; in ath10k_sta_tid_cfg_wk()
7327 arg.rtscts_ctrl = arvif->rtscts[i] - 1; in ath10k_sta_tid_cfg_wk()
7359 struct ieee80211_vif *sta_vif = arsta->arvif->vif; in ath10k_mac_vif_stations_tid_conf()
7374 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_state() local
7383 arsta->arvif = arvif; in ath10k_sta_state()
7411 arvif->vdev_id, sta->addr, in ath10k_sta_state()
7420 arvif->vdev_id, in ath10k_sta_state()
7428 ret = ath10k_mac_inc_num_stations(arvif, sta); in ath10k_sta_state()
7439 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7445 ret = ath10k_peer_create(ar, vif, sta, arvif->vdev_id, in ath10k_sta_state()
7449 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7450 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7457 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7460 vif->addr, arvif->vdev_id); in ath10k_sta_state()
7462 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7463 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7477 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7481 arvif->vdev_id, ret); in ath10k_sta_state()
7482 ath10k_peer_delete(ar, arvif->vdev_id, in ath10k_sta_state()
7484 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7489 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta, in ath10k_sta_state()
7494 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7495 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7496 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7501 ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7511 arvif->vdev_id, sta->addr, sta); in ath10k_sta_state()
7514 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, in ath10k_sta_state()
7523 ret = ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath10k_sta_state()
7526 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7528 ath10k_mac_dec_num_stations(arvif, sta); in ath10k_sta_state()
7538 sta->addr, peer, i, arvif->vdev_id); in ath10k_sta_state()
7567 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id, in ath10k_sta_state()
7571 arvif->vdev_id, ret); in ath10k_sta_state()
7587 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7600 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7604 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta, in ath10k_sta_state()
7608 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7623 sta->addr, arvif->vdev_id, ret); in ath10k_sta_state()
7633 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_conf_tx_uapsd() local
7641 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath10k_conf_tx_uapsd()
7672 arvif->u.sta.uapsd |= value; in ath10k_conf_tx_uapsd()
7674 arvif->u.sta.uapsd &= ~value; in ath10k_conf_tx_uapsd()
7676 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7678 arvif->u.sta.uapsd); in ath10k_conf_tx_uapsd()
7684 if (arvif->u.sta.uapsd) in ath10k_conf_tx_uapsd()
7689 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7695 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif); in ath10k_conf_tx_uapsd()
7698 arvif->vdev_id, ret); in ath10k_conf_tx_uapsd()
7702 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif); in ath10k_conf_tx_uapsd()
7705 arvif->vdev_id, ret); in ath10k_conf_tx_uapsd()
7723 ret = ath10k_wmi_vdev_sta_uapsd(ar, arvif->vdev_id, in ath10k_conf_tx_uapsd()
7724 arvif->bssid, &arg, 1); in ath10k_conf_tx_uapsd()
7741 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_conf_tx() local
7749 p = &arvif->wmm_params.ac_vo; in ath10k_conf_tx()
7752 p = &arvif->wmm_params.ac_vi; in ath10k_conf_tx()
7755 p = &arvif->wmm_params.ac_be; in ath10k_conf_tx()
7758 p = &arvif->wmm_params.ac_bk; in ath10k_conf_tx()
7779 ret = ath10k_wmi_vdev_wmm_conf(ar, arvif->vdev_id, in ath10k_conf_tx()
7780 &arvif->wmm_params); in ath10k_conf_tx()
7783 arvif->vdev_id, ret); in ath10k_conf_tx()
7790 ret = ath10k_wmi_pdev_set_wmm_params(ar, &arvif->wmm_params); in ath10k_conf_tx()
7813 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_remain_on_channel() local
7833 ar->scan.vdev_id = arvif->vdev_id; in ath10k_remain_on_channel()
7853 arg.vdev_id = arvif->vdev_id; in ath10k_remain_on_channel()
7922 struct ath10k_vif *arvif; in ath10k_set_rts_threshold() local
7926 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_set_rts_threshold()
7928 arvif->vdev_id, value); in ath10k_set_rts_threshold()
7930 ret = ath10k_mac_set_rts(arvif, value); in ath10k_set_rts_threshold()
7933 arvif->vdev_id, ret); in ath10k_set_rts_threshold()
7992 struct ath10k_vif *arvif; in ath10k_flush() local
7998 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_flush()
7999 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath10k_flush()
8000 ath10k_wmi_peer_flush(ar, arvif->vdev_id, in ath10k_flush()
8001 arvif->bssid, bitmap); in ath10k_flush()
8167 static int ath10k_mac_set_fixed_rate_params(struct ath10k_vif *arvif, in ath10k_mac_set_fixed_rate_params() argument
8170 struct ath10k *ar = arvif->ar; in ath10k_mac_set_fixed_rate_params()
8177 arvif->vdev_id, rate, nss, sgi); in ath10k_mac_set_fixed_rate_params()
8180 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); in ath10k_mac_set_fixed_rate_params()
8188 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, nss); in ath10k_mac_set_fixed_rate_params()
8195 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, sgi); in ath10k_mac_set_fixed_rate_params()
8202 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, ldpc); in ath10k_mac_set_fixed_rate_params()
8244 struct ath10k_vif *arvif, in ath10k_mac_set_vht_bitrate_mask_fixup() argument
8248 u8 rate = arvif->vht_pfr; in ath10k_mac_set_vht_bitrate_mask_fixup()
8251 if (!sta->vht_cap.vht_supported || arvif->vht_num_rates != 1) in ath10k_mac_set_vht_bitrate_mask_fixup()
8254 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_mac_set_vht_bitrate_mask_fixup()
8266 struct ath10k_vif *arvif = data; in ath10k_mac_set_bitrate_mask_iter() local
8268 struct ath10k *ar = arvif->ar; in ath10k_mac_set_bitrate_mask_iter()
8270 if (arsta->arvif != arvif) in ath10k_mac_set_bitrate_mask_iter()
8273 if (ath10k_mac_set_vht_bitrate_mask_fixup(ar, arvif, sta)) in ath10k_mac_set_bitrate_mask_iter()
8286 struct ath10k_vif *arvif = data; in ath10k_mac_clr_bitrate_mask_iter() local
8288 struct ath10k *ar = arvif->ar; in ath10k_mac_clr_bitrate_mask_iter()
8292 if (arsta->arvif != arvif || !sta->vht_cap.vht_supported) in ath10k_mac_clr_bitrate_mask_iter()
8295 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr, in ath10k_mac_clr_bitrate_mask_iter()
8307 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_set_bitrate_mask() local
8309 struct ath10k *ar = arvif->ar; in ath10k_mac_op_set_bitrate_mask()
8341 arvif); in ath10k_mac_op_set_bitrate_mask()
8352 arvif->vdev_id, ret); in ath10k_mac_op_set_bitrate_mask()
8388 arvif->bitrate_mask = *mask; in ath10k_mac_op_set_bitrate_mask()
8389 arvif->vht_num_rates = vht_num_rates; in ath10k_mac_op_set_bitrate_mask()
8390 arvif->vht_pfr = vht_pfr; in ath10k_mac_op_set_bitrate_mask()
8393 arvif); in ath10k_mac_op_set_bitrate_mask()
8400 ret = ath10k_mac_set_fixed_rate_params(arvif, rate, nss, sgi, ldpc); in ath10k_mac_op_set_bitrate_mask()
8403 arvif->vdev_id, ret); in ath10k_mac_op_set_bitrate_mask()
8420 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_sta_rc_update() local
8426 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr); in ath10k_sta_rc_update()
8430 sta->addr, arvif->vdev_id); in ath10k_sta_rc_update()
8503 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_offset_tsf() local
8515 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, in ath10k_offset_tsf()
8528 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_ampdu_action() local
8534 arvif->vdev_id, sta->addr, tid, action); in ath10k_ampdu_action()
8613 struct ath10k_vif *arvif; in ath10k_mac_update_vif_chan() local
8626 arvif = (void *)vifs[i].vif->drv_priv; in ath10k_mac_update_vif_chan()
8630 arvif->vdev_id, in ath10k_mac_update_vif_chan()
8636 if (WARN_ON(!arvif->is_started)) in ath10k_mac_update_vif_chan()
8639 if (WARN_ON(!arvif->is_up)) in ath10k_mac_update_vif_chan()
8642 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_update_vif_chan()
8645 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8659 arvif = (void *)vifs[i].vif->drv_priv; in ath10k_mac_update_vif_chan()
8661 if (WARN_ON(!arvif->is_started)) in ath10k_mac_update_vif_chan()
8664 if (WARN_ON(!arvif->is_up)) in ath10k_mac_update_vif_chan()
8667 ret = ath10k_mac_setup_bcn_tmpl(arvif); in ath10k_mac_update_vif_chan()
8672 ret = ath10k_mac_setup_prb_tmpl(arvif); in ath10k_mac_update_vif_chan()
8677 ret = ath10k_vdev_restart(arvif, &vifs[i].new_ctx->def); in ath10k_mac_update_vif_chan()
8680 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8684 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath10k_mac_update_vif_chan()
8685 arvif->bssid); in ath10k_mac_update_vif_chan()
8688 arvif->vdev_id, ret); in ath10k_mac_update_vif_chan()
8844 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_assign_vif_chanctx() local
8851 ctx, arvif->vdev_id); in ath10k_mac_op_assign_vif_chanctx()
8853 if (WARN_ON(arvif->is_started)) { in ath10k_mac_op_assign_vif_chanctx()
8858 ret = ath10k_vdev_start(arvif, &ctx->def); in ath10k_mac_op_assign_vif_chanctx()
8861 arvif->vdev_id, vif->addr, in ath10k_mac_op_assign_vif_chanctx()
8866 arvif->is_started = true; in ath10k_mac_op_assign_vif_chanctx()
8868 ret = ath10k_mac_vif_setup_ps(arvif); in ath10k_mac_op_assign_vif_chanctx()
8871 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
8876 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, 0, vif->addr); in ath10k_mac_op_assign_vif_chanctx()
8879 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
8883 arvif->is_up = true; in ath10k_mac_op_assign_vif_chanctx()
8886 if (ath10k_mac_can_set_cts_prot(arvif)) { in ath10k_mac_op_assign_vif_chanctx()
8887 ret = ath10k_mac_set_cts_prot(arvif); in ath10k_mac_op_assign_vif_chanctx()
8890 arvif->vdev_id, ret); in ath10k_mac_op_assign_vif_chanctx()
8908 ath10k_vdev_stop(arvif); in ath10k_mac_op_assign_vif_chanctx()
8909 arvif->is_started = false; in ath10k_mac_op_assign_vif_chanctx()
8910 ath10k_mac_vif_setup_ps(arvif); in ath10k_mac_op_assign_vif_chanctx()
8923 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_unassign_vif_chanctx() local
8930 ctx, arvif->vdev_id); in ath10k_mac_op_unassign_vif_chanctx()
8932 WARN_ON(!arvif->is_started); in ath10k_mac_op_unassign_vif_chanctx()
8935 WARN_ON(!arvif->is_up); in ath10k_mac_op_unassign_vif_chanctx()
8937 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id); in ath10k_mac_op_unassign_vif_chanctx()
8940 arvif->vdev_id, ret); in ath10k_mac_op_unassign_vif_chanctx()
8942 arvif->is_up = false; in ath10k_mac_op_unassign_vif_chanctx()
8945 ret = ath10k_vdev_stop(arvif); in ath10k_mac_op_unassign_vif_chanctx()
8948 arvif->vdev_id, ret); in ath10k_mac_op_unassign_vif_chanctx()
8950 arvif->is_started = false; in ath10k_mac_op_unassign_vif_chanctx()
9165 arsta->arvif->vdev_type == WMI_VDEV_TYPE_STA)) in ath10k_mac_sta_get_peer_stats_info()
9169 peer = ath10k_peer_find(ar, arsta->arvif->vdev_id, sta->addr); in ath10k_mac_sta_get_peer_stats_info()
9177 arsta->arvif->vdev_id, in ath10k_mac_sta_get_peer_stats_info()
9179 arsta->arvif->bssid, in ath10k_mac_sta_get_peer_stats_info()
9219 struct ath10k *ar = arsta->arvif->ar; in ath10k_sta_statistics()
9260 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_set_tid_config() local
9266 arg.vdev_id = arvif->vdev_id; in ath10k_mac_op_set_tid_config()
9268 arvif->tids_rst = 0; in ath10k_mac_op_set_tid_config()
9269 memset(arvif->tid_conf_changed, 0, sizeof(arvif->tid_conf_changed)); in ath10k_mac_op_set_tid_config()
9284 arvif->tids_rst = 0; in ath10k_mac_op_set_tid_config()
9301 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_mac_op_reset_tid_config() local
9309 arvif->tids_rst = 0; in ath10k_mac_op_reset_tid_config()
9310 ret = ath10k_mac_reset_tid_config(ar, sta, arvif, tids); in ath10k_mac_op_reset_tid_config()
9314 arvif->tids_rst = tids; in ath10k_mac_op_reset_tid_config()
9696 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_get_arvif_iter() local
9698 if (arvif->vdev_id == arvif_iter->vdev_id) in ath10k_get_arvif_iter()
9699 arvif_iter->arvif = arvif; in ath10k_get_arvif_iter()
9713 if (!arvif_iter.arvif) { in ath10k_get_arvif()
9718 return arvif_iter.arvif; in ath10k_get_arvif()