Lines Matching refs:arvif

455 	struct ath11k_vif *arvif = (void *)vif->drv_priv;  in ath11k_get_arvif_iter()  local
457 if (arvif->vdev_id == arvif_iter->vdev_id) in ath11k_get_arvif_iter()
458 arvif_iter->arvif = arvif; in ath11k_get_arvif_iter()
474 if (!arvif_iter.arvif) { in ath11k_mac_get_arvif()
479 return arvif_iter.arvif; in ath11k_mac_get_arvif()
487 struct ath11k_vif *arvif; in ath11k_mac_get_arvif_by_vdev_id() local
492 arvif = ath11k_mac_get_arvif(pdev->ar, vdev_id); in ath11k_mac_get_arvif_by_vdev_id()
493 if (arvif) in ath11k_mac_get_arvif_by_vdev_id()
494 return arvif; in ath11k_mac_get_arvif_by_vdev_id()
586 struct ath11k_vif *arvif; in ath11k_mac_txpower_recalc() local
592 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_mac_txpower_recalc()
593 if (arvif->txpower <= 0) in ath11k_mac_txpower_recalc()
597 txpower = arvif->txpower; in ath11k_mac_txpower_recalc()
599 txpower = min(txpower, arvif->txpower); in ath11k_mac_txpower_recalc()
640 static int ath11k_recalc_rtscts_prot(struct ath11k_vif *arvif) in ath11k_recalc_rtscts_prot() argument
642 struct ath11k *ar = arvif->ar; in ath11k_recalc_rtscts_prot()
656 if (arvif->num_legacy_stations > 0) in ath11k_recalc_rtscts_prot()
662 if (arvif->rtscts_prot_mode == rts_cts) in ath11k_recalc_rtscts_prot()
665 arvif->rtscts_prot_mode = rts_cts; in ath11k_recalc_rtscts_prot()
668 arvif->vdev_id, rts_cts); in ath11k_recalc_rtscts_prot()
670 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_recalc_rtscts_prot()
674 arvif->vdev_id, ret); in ath11k_recalc_rtscts_prot()
679 static int ath11k_mac_set_kickout(struct ath11k_vif *arvif) in ath11k_mac_set_kickout() argument
681 struct ath11k *ar = arvif->ar; in ath11k_mac_set_kickout()
690 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
695 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
699 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
704 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
708 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
713 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
717 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
769 static int ath11k_mac_setup_bcn_tmpl(struct ath11k_vif *arvif) in ath11k_mac_setup_bcn_tmpl() argument
771 struct ath11k *ar = arvif->ar; in ath11k_mac_setup_bcn_tmpl()
774 struct ieee80211_vif *vif = arvif->vif; in ath11k_mac_setup_bcn_tmpl()
781 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath11k_mac_setup_bcn_tmpl()
794 arvif->rsnie_present = true; in ath11k_mac_setup_bcn_tmpl()
799 arvif->wpaie_present = true; in ath11k_mac_setup_bcn_tmpl()
801 ret = ath11k_wmi_bcn_tmpl(ar, arvif->vdev_id, &offs, bcn); in ath11k_mac_setup_bcn_tmpl()
812 static void ath11k_control_beaconing(struct ath11k_vif *arvif, in ath11k_control_beaconing() argument
815 struct ath11k *ar = arvif->ar; in ath11k_control_beaconing()
818 lockdep_assert_held(&arvif->ar->conf_mutex); in ath11k_control_beaconing()
821 ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_control_beaconing()
824 arvif->vdev_id, ret); in ath11k_control_beaconing()
826 arvif->is_up = false; in ath11k_control_beaconing()
831 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_control_beaconing()
838 arvif->tx_seq_no = 0x1000; in ath11k_control_beaconing()
840 arvif->aid = 0; in ath11k_control_beaconing()
842 ether_addr_copy(arvif->bssid, info->bssid); in ath11k_control_beaconing()
844 ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath11k_control_beaconing()
845 arvif->bssid); in ath11k_control_beaconing()
848 arvif->vdev_id, ret); in ath11k_control_beaconing()
852 arvif->is_up = true; in ath11k_control_beaconing()
854 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "mac vdev %d up\n", arvif->vdev_id); in ath11k_control_beaconing()
862 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_basic() local
873 arg->vdev_id = arvif->vdev_id; in ath11k_peer_assoc_h_basic()
890 struct ath11k_vif *arvif = (struct ath11k_vif *)vif->drv_priv; in ath11k_peer_assoc_h_crypto() local
902 if (arvif->rsnie_present || arvif->wpaie_present) { in ath11k_peer_assoc_h_crypto()
904 if (arvif->wpaie_present) in ath11k_peer_assoc_h_crypto()
948 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_rates() local
966 ratemask &= arvif->bitrate_mask.control[band].legacy; in ath11k_peer_assoc_h_rates()
1011 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_ht() local
1028 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_peer_assoc_h_ht()
1052 if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) { in ath11k_peer_assoc_h_ht()
1172 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_vht() local
1187 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_peer_assoc_h_vht()
1407 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_qos() local
1409 switch (arvif->vdev_type) { in ath11k_peer_assoc_h_qos()
1439 struct ath11k_vif *arvif, in ath11k_peer_assoc_qos_ap() argument
1449 params.vdev_id = arvif->vdev_id; in ath11k_peer_assoc_qos_ap()
1501 params.param, arvif->vdev_id, ret); in ath11k_peer_assoc_qos_ap()
1570 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_phymode() local
1581 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_peer_assoc_h_phymode()
1582 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_peer_assoc_h_phymode()
1666 static int ath11k_setup_peer_smps(struct ath11k *ar, struct ath11k_vif *arvif, in ath11k_setup_peer_smps() argument
1681 return ath11k_wmi_set_peer_param(ar, addr, arvif->vdev_id, in ath11k_setup_peer_smps()
1691 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_bss_assoc() local
1699 arvif->vdev_id, arvif->bssid, arvif->aid); in ath11k_bss_assoc()
1706 bss_conf->bssid, arvif->vdev_id); in ath11k_bss_assoc()
1718 bss_conf->bssid, arvif->vdev_id, ret); in ath11k_bss_assoc()
1724 bss_conf->bssid, arvif->vdev_id); in ath11k_bss_assoc()
1728 ret = ath11k_setup_peer_smps(ar, arvif, bss_conf->bssid, in ath11k_bss_assoc()
1732 arvif->vdev_id, ret); in ath11k_bss_assoc()
1736 WARN_ON(arvif->is_up); in ath11k_bss_assoc()
1738 arvif->aid = bss_conf->aid; in ath11k_bss_assoc()
1739 ether_addr_copy(arvif->bssid, bss_conf->bssid); in ath11k_bss_assoc()
1741 ret = ath11k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid); in ath11k_bss_assoc()
1744 arvif->vdev_id, ret); in ath11k_bss_assoc()
1748 arvif->is_up = true; in ath11k_bss_assoc()
1752 arvif->vdev_id, bss_conf->bssid, bss_conf->aid); in ath11k_bss_assoc()
1755 ret = ath11k_wmi_set_peer_param(ar, arvif->bssid, in ath11k_bss_assoc()
1756 arvif->vdev_id, in ath11k_bss_assoc()
1762 ret = ath11k_wmi_send_obss_spr_cmd(ar, arvif->vdev_id, in ath11k_bss_assoc()
1766 arvif->vdev_id, ret); in ath11k_bss_assoc()
1773 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_bss_disassoc() local
1779 arvif->vdev_id, arvif->bssid); in ath11k_bss_disassoc()
1781 ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_bss_disassoc()
1784 arvif->vdev_id, ret); in ath11k_bss_disassoc()
1786 arvif->is_up = false; in ath11k_bss_disassoc()
1820 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_recalculate_mgmt_rate() local
1841 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, vdev_param, in ath11k_recalculate_mgmt_rate()
1847 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, vdev_param, in ath11k_recalculate_mgmt_rate()
1859 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_bss_info_changed() local
1875 arvif->beacon_interval = info->beacon_int; in ath11k_mac_op_bss_info_changed()
1878 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1880 arvif->beacon_interval); in ath11k_mac_op_bss_info_changed()
1883 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1887 arvif->beacon_interval, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1897 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1901 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1903 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_mac_op_bss_info_changed()
1909 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1915 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1919 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1924 arvif->dtim_period = info->dtim_period; in ath11k_mac_op_bss_info_changed()
1927 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1929 arvif->dtim_period); in ath11k_mac_op_bss_info_changed()
1933 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
1937 arvif->dtim_period, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1942 arvif->u.ap.ssid_len = info->ssid_len; in ath11k_mac_op_bss_info_changed()
1944 memcpy(arvif->u.ap.ssid, info->ssid, info->ssid_len); in ath11k_mac_op_bss_info_changed()
1945 arvif->u.ap.hidden_ssid = info->hidden_ssid; in ath11k_mac_op_bss_info_changed()
1949 ether_addr_copy(arvif->bssid, info->bssid); in ath11k_mac_op_bss_info_changed()
1952 ath11k_control_beaconing(arvif, info); in ath11k_mac_op_bss_info_changed()
1960 if (arvif->is_started) { in ath11k_mac_op_bss_info_changed()
1961 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1965 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1968 cts_prot, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1984 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1988 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1992 slottime, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
2004 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2008 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
2012 preamble, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
2024 arvif->vdev_id, info->txpower); in ath11k_mac_op_bss_info_changed()
2026 arvif->txpower = info->txpower; in ath11k_mac_op_bss_info_changed()
2031 !ath11k_mac_vif_chan(arvif->vif, &def)) { in ath11k_mac_op_bss_info_changed()
2055 arvif->vdev_id, rate); in ath11k_mac_op_bss_info_changed()
2058 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2063 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2066 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2071 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2075 !ath11k_mac_vif_chan(arvif->vif, &def)) in ath11k_mac_op_bss_info_changed()
2086 ath11k_wmi_send_obss_spr_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2092 ar, arvif->vdev_id, info->he_bss_color.color, in ath11k_mac_op_bss_info_changed()
2097 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2100 arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2104 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2106 ar, arvif->vdev_id, 0, in ath11k_mac_op_bss_info_changed()
2110 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2284 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_hw_scan() local
2299 ar->scan.vdev_id = arvif->vdev_id; in ath11k_mac_op_hw_scan()
2315 arg.vdev_id = arvif->vdev_id; in ath11k_mac_op_hw_scan()
2374 static int ath11k_install_key(struct ath11k_vif *arvif, in ath11k_install_key() argument
2380 struct ath11k *ar = arvif->ar; in ath11k_install_key()
2382 .vdev_id = arvif->vdev_id, in ath11k_install_key()
2390 lockdep_assert_held(&arvif->ar->conf_mutex); in ath11k_install_key()
2433 ret = ath11k_wmi_vdev_install_key(arvif->ar, &arg); in ath11k_install_key()
2444 static int ath11k_clear_peer_keys(struct ath11k_vif *arvif, in ath11k_clear_peer_keys() argument
2447 struct ath11k *ar = arvif->ar; in ath11k_clear_peer_keys()
2458 peer = ath11k_peer_find(ab, arvif->vdev_id, addr); in ath11k_clear_peer_keys()
2469 ret = ath11k_install_key(arvif, peer->keys[i], in ath11k_clear_peer_keys()
2492 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_set_key() local
2516 else if (arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_op_set_key()
2527 peer = ath11k_peer_find(ab, arvif->vdev_id, peer_addr); in ath11k_mac_op_set_key()
2549 ret = ath11k_install_key(arvif, key, cmd, peer_addr, flags); in ath11k_mac_op_set_key()
2555 ret = ath11k_dp_peer_rx_pn_replay_config(arvif, peer_addr, cmd, key); in ath11k_mac_op_set_key()
2562 peer = ath11k_peer_find(ab, arvif->vdev_id, peer_addr); in ath11k_mac_op_set_key()
2624 ath11k_mac_set_peer_vht_fixed_rate(struct ath11k_vif *arvif, in ath11k_mac_set_peer_vht_fixed_rate() argument
2629 struct ath11k *ar = arvif->ar; in ath11k_mac_set_peer_vht_fixed_rate()
2658 arvif->vdev_id, in ath11k_mac_set_peer_vht_fixed_rate()
2674 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_station_assoc() local
2688 mask = &arvif->bitrate_mask; in ath11k_station_assoc()
2695 sta->addr, arvif->vdev_id, ret); in ath11k_station_assoc()
2701 sta->addr, arvif->vdev_id); in ath11k_station_assoc()
2713 ret = ath11k_mac_set_peer_vht_fixed_rate(arvif, sta, mask, in ath11k_station_assoc()
2725 ret = ath11k_setup_peer_smps(ar, arvif, sta->addr, in ath11k_station_assoc()
2729 arvif->vdev_id, ret); in ath11k_station_assoc()
2734 arvif->num_legacy_stations++; in ath11k_station_assoc()
2735 ret = ath11k_recalc_rtscts_prot(arvif); in ath11k_station_assoc()
2741 ret = ath11k_peer_assoc_qos_ap(ar, arvif, sta); in ath11k_station_assoc()
2744 sta->addr, arvif->vdev_id, ret); in ath11k_station_assoc()
2756 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_station_disassoc() local
2762 arvif->num_legacy_stations--; in ath11k_station_disassoc()
2763 ret = ath11k_recalc_rtscts_prot(arvif); in ath11k_station_disassoc()
2768 ret = ath11k_clear_peer_keys(arvif, sta->addr); in ath11k_station_disassoc()
2771 arvif->vdev_id, ret); in ath11k_station_disassoc()
2780 struct ath11k_vif *arvif; in ath11k_sta_rc_update_wk() local
2794 arvif = arsta->arvif; in ath11k_sta_rc_update_wk()
2795 ar = arvif->ar; in ath11k_sta_rc_update_wk()
2797 if (WARN_ON(ath11k_mac_vif_chan(arvif->vif, &def))) in ath11k_sta_rc_update_wk()
2801 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_sta_rc_update_wk()
2802 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_sta_rc_update_wk()
2822 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
2833 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
2844 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
2852 mask = &arvif->bitrate_mask; in ath11k_sta_rc_update_wk()
2868 ath11k_mac_set_peer_vht_fixed_rate(arvif, sta, mask, in ath11k_sta_rc_update_wk()
2875 ath11k_peer_assoc_prepare(ar, arvif->vif, sta, in ath11k_sta_rc_update_wk()
2881 sta->addr, arvif->vdev_id, err); in ath11k_sta_rc_update_wk()
2885 sta->addr, arvif->vdev_id); in ath11k_sta_rc_update_wk()
2892 static int ath11k_mac_inc_num_stations(struct ath11k_vif *arvif, in ath11k_mac_inc_num_stations() argument
2895 struct ath11k *ar = arvif->ar; in ath11k_mac_inc_num_stations()
2899 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath11k_mac_inc_num_stations()
2910 static void ath11k_mac_dec_num_stations(struct ath11k_vif *arvif, in ath11k_mac_dec_num_stations() argument
2913 struct ath11k *ar = arvif->ar; in ath11k_mac_dec_num_stations()
2917 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath11k_mac_dec_num_stations()
2928 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_station_add() local
2935 ret = ath11k_mac_inc_num_stations(arvif, sta); in ath11k_mac_station_add()
2948 peer_param.vdev_id = arvif->vdev_id; in ath11k_mac_station_add()
2952 ret = ath11k_peer_create(ar, arvif, sta, &peer_param); in ath11k_mac_station_add()
2955 sta->addr, arvif->vdev_id); in ath11k_mac_station_add()
2960 sta->addr, arvif->vdev_id); in ath11k_mac_station_add()
2972 arvif->vdev_id, in ath11k_mac_station_add()
2981 ret = ath11k_dp_peer_setup(ar, arvif->vdev_id, sta->addr); in ath11k_mac_station_add()
2984 sta->addr, arvif->vdev_id, ret); in ath11k_mac_station_add()
2989 arvif->vdev_type != WMI_VDEV_TYPE_AP) { in ath11k_mac_station_add()
3003 ath11k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath11k_mac_station_add()
3008 ath11k_mac_dec_num_stations(arvif, sta); in ath11k_mac_station_add()
3020 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_sta_state() local
3035 arsta->arvif = arvif; in ath11k_mac_op_sta_state()
3041 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
3044 ath11k_dp_peer_cleanup(ar, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
3046 ret = ath11k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
3049 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
3052 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
3054 ath11k_mac_dec_num_stations(arvif, sta); in ath11k_mac_op_sta_state()
3056 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
3059 vif->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
3101 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_sta_set_txpwr() local
3118 ret = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_mac_op_sta_set_txpwr()
3138 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_sta_rc_update() local
3144 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_rc_update()
3148 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_rc_update()
3224 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_conf_tx_uapsd() local
3228 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath11k_conf_tx_uapsd()
3251 arvif->u.sta.uapsd |= value; in ath11k_conf_tx_uapsd()
3253 arvif->u.sta.uapsd &= ~value; in ath11k_conf_tx_uapsd()
3255 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_conf_tx_uapsd()
3257 arvif->u.sta.uapsd); in ath11k_conf_tx_uapsd()
3263 if (arvif->u.sta.uapsd) in ath11k_conf_tx_uapsd()
3268 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_conf_tx_uapsd()
3283 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_conf_tx() local
3291 p = &arvif->wmm_params.ac_vo; in ath11k_mac_op_conf_tx()
3294 p = &arvif->wmm_params.ac_vi; in ath11k_mac_op_conf_tx()
3297 p = &arvif->wmm_params.ac_be; in ath11k_mac_op_conf_tx()
3300 p = &arvif->wmm_params.ac_bk; in ath11k_mac_op_conf_tx()
3314 ret = ath11k_wmi_send_wmm_update_cmd_tlv(ar, arvif->vdev_id, in ath11k_mac_op_conf_tx()
3315 &arvif->wmm_params); in ath11k_mac_op_conf_tx()
3397 static int ath11k_mac_set_txbf_conf(struct ath11k_vif *arvif) in ath11k_mac_set_txbf_conf() argument
3400 struct ath11k *ar = arvif->ar; in ath11k_mac_set_txbf_conf()
3428 arvif->vdev_type == WMI_VDEV_TYPE_AP) in ath11k_mac_set_txbf_conf()
3438 arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_set_txbf_conf()
3442 return ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_txbf_conf()
3914 static int ath11k_mac_mgmt_tx_wmi(struct ath11k *ar, struct ath11k_vif *arvif, in ath11k_mac_mgmt_tx_wmi() argument
3950 ret = ath11k_wmi_mgmt_send(ar, arvif->vdev_id, buf_id, skb); in ath11k_mac_mgmt_tx_wmi()
3981 struct ath11k_vif *arvif; in ath11k_mgmt_over_wmi_tx_work() local
3994 arvif = ath11k_vif_to_arvif(info->control.vif); in ath11k_mgmt_over_wmi_tx_work()
3995 if (ar->allocated_vdev_map & (1LL << arvif->vdev_id) && in ath11k_mgmt_over_wmi_tx_work()
3996 arvif->is_started) { in ath11k_mgmt_over_wmi_tx_work()
3997 ret = ath11k_mac_mgmt_tx_wmi(ar, arvif, skb); in ath11k_mgmt_over_wmi_tx_work()
4000 arvif->vdev_id, ret); in ath11k_mgmt_over_wmi_tx_work()
4008 arvif->vdev_id, info->control.flags, in ath11k_mgmt_over_wmi_tx_work()
4009 arvif->is_started); in ath11k_mgmt_over_wmi_tx_work()
4054 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_tx() local
4072 ret = ath11k_dp_tx(ar, arvif, skb); in ath11k_mac_op_tx()
4265 ath11k_mac_setup_vdev_create_params(struct ath11k_vif *arvif, in ath11k_mac_setup_vdev_create_params() argument
4268 struct ath11k *ar = arvif->ar; in ath11k_mac_setup_vdev_create_params()
4271 params->if_id = arvif->vdev_id; in ath11k_mac_setup_vdev_create_params()
4272 params->type = arvif->vdev_type; in ath11k_mac_setup_vdev_create_params()
4273 params->subtype = arvif->vdev_subtype; in ath11k_mac_setup_vdev_create_params()
4324 struct ath11k_vif *arvif) in ath11k_set_he_mu_sounding_mode() argument
4331 param_value = ath11k_mac_prepare_he_mode(ar->pdev, arvif->vif->type); in ath11k_set_he_mu_sounding_mode()
4332 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_he_mu_sounding_mode()
4336 arvif->vdev_id, ret, param_value); in ath11k_set_he_mu_sounding_mode()
4344 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_he_mu_sounding_mode()
4348 arvif->vdev_id, ret); in ath11k_set_he_mu_sounding_mode()
4359 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_update_vif_offload() local
4376 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_update_vif_offload()
4380 arvif->vdev_id, ret); in ath11k_mac_op_update_vif_offload()
4390 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_add_interface() local
4417 memset(arvif, 0, sizeof(*arvif)); in ath11k_mac_op_add_interface()
4419 arvif->ar = ar; in ath11k_mac_op_add_interface()
4420 arvif->vif = vif; in ath11k_mac_op_add_interface()
4422 INIT_LIST_HEAD(&arvif->list); in ath11k_mac_op_add_interface()
4428 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) { in ath11k_mac_op_add_interface()
4429 arvif->bitrate_mask.control[i].legacy = 0xffffffff; in ath11k_mac_op_add_interface()
4430 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff, in ath11k_mac_op_add_interface()
4431 sizeof(arvif->bitrate_mask.control[i].ht_mcs)); in ath11k_mac_op_add_interface()
4432 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff, in ath11k_mac_op_add_interface()
4433 sizeof(arvif->bitrate_mask.control[i].vht_mcs)); in ath11k_mac_op_add_interface()
4438 arvif->vdev_id = bit; in ath11k_mac_op_add_interface()
4439 arvif->vdev_subtype = WMI_VDEV_SUBTYPE_NONE; in ath11k_mac_op_add_interface()
4444 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath11k_mac_op_add_interface()
4447 arvif->vdev_subtype = WMI_VDEV_SUBTYPE_MESH_11S; in ath11k_mac_op_add_interface()
4450 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath11k_mac_op_add_interface()
4453 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR; in ath11k_mac_op_add_interface()
4461 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype, in ath11k_mac_op_add_interface()
4464 vif->cab_queue = arvif->vdev_id % (ATH11K_HW_MAX_QUEUES - 1); in ath11k_mac_op_add_interface()
4468 ath11k_mac_setup_vdev_create_params(arvif, &vdev_param); in ath11k_mac_op_add_interface()
4473 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4479 vif->addr, arvif->vdev_id); in ath11k_mac_op_add_interface()
4480 ar->allocated_vdev_map |= 1LL << arvif->vdev_id; in ath11k_mac_op_add_interface()
4481 ab->free_vdev_map &= ~(1LL << arvif->vdev_id); in ath11k_mac_op_add_interface()
4484 list_add(&arvif->list, &ar->arvifs); in ath11k_mac_op_add_interface()
4490 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4494 arvif->vdev_id, ar->cfg_tx_chainmask, nss, ret); in ath11k_mac_op_add_interface()
4498 switch (arvif->vdev_type) { in ath11k_mac_op_add_interface()
4500 peer_param.vdev_id = arvif->vdev_id; in ath11k_mac_op_add_interface()
4503 ret = ath11k_peer_create(ar, arvif, NULL, &peer_param); in ath11k_mac_op_add_interface()
4506 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4510 ret = ath11k_mac_set_kickout(arvif); in ath11k_mac_op_add_interface()
4513 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4520 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4524 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4530 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4534 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4540 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4544 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4548 ret = ath11k_wmi_pdev_set_ps_mode(ar, arvif->vdev_id, false); in ath11k_mac_op_add_interface()
4551 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4559 arvif->txpower = vif->bss_conf.txpower; in ath11k_mac_op_add_interface()
4566 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4570 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4573 ath11k_dp_vdev_tx_attach(ar, arvif); in ath11k_mac_op_add_interface()
4580 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_op_add_interface()
4582 ath11k_wmi_send_peer_delete_cmd(ar, vif->addr, arvif->vdev_id); in ath11k_mac_op_add_interface()
4586 ath11k_wmi_vdev_delete(ar, arvif->vdev_id); in ath11k_mac_op_add_interface()
4588 ar->allocated_vdev_map &= ~(1LL << arvif->vdev_id); in ath11k_mac_op_add_interface()
4589 ab->free_vdev_map |= 1LL << arvif->vdev_id; in ath11k_mac_op_add_interface()
4591 list_del(&arvif->list); in ath11k_mac_op_add_interface()
4615 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_remove_interface() local
4623 arvif->vdev_id); in ath11k_mac_op_remove_interface()
4626 list_del(&arvif->list); in ath11k_mac_op_remove_interface()
4629 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_op_remove_interface()
4630 ret = ath11k_peer_delete(ar, arvif->vdev_id, vif->addr); in ath11k_mac_op_remove_interface()
4633 arvif->vdev_id, ret); in ath11k_mac_op_remove_interface()
4636 ret = ath11k_wmi_vdev_delete(ar, arvif->vdev_id); in ath11k_mac_op_remove_interface()
4639 arvif->vdev_id, ret); in ath11k_mac_op_remove_interface()
4643 vif->addr, arvif->vdev_id); in ath11k_mac_op_remove_interface()
4644 ar->allocated_vdev_map &= ~(1LL << arvif->vdev_id); in ath11k_mac_op_remove_interface()
4645 ab->free_vdev_map |= 1LL << (arvif->vdev_id); in ath11k_mac_op_remove_interface()
4647 ath11k_peer_cleanup(ar, arvif->vdev_id); in ath11k_mac_op_remove_interface()
4833 ath11k_mac_vdev_start_restart(struct ath11k_vif *arvif, in ath11k_mac_vdev_start_restart() argument
4837 struct ath11k *ar = arvif->ar; in ath11k_mac_vdev_start_restart()
4840 int he_support = arvif->vif->bss_conf.he_support; in ath11k_mac_vdev_start_restart()
4847 arg.vdev_id = arvif->vdev_id; in ath11k_mac_vdev_start_restart()
4848 arg.dtim_period = arvif->dtim_period; in ath11k_mac_vdev_start_restart()
4849 arg.bcn_intval = arvif->beacon_interval; in ath11k_mac_vdev_start_restart()
4865 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_vdev_start_restart()
4866 arg.ssid = arvif->u.ap.ssid; in ath11k_mac_vdev_start_restart()
4867 arg.ssid_len = arvif->u.ap.ssid_len; in ath11k_mac_vdev_start_restart()
4868 arg.hidden_ssid = arvif->u.ap.hidden_ssid; in ath11k_mac_vdev_start_restart()
4882 ret = ath11k_set_he_mu_sounding_mode(ar, arvif); in ath11k_mac_vdev_start_restart()
4914 arvif->vif->addr, arvif->vdev_id); in ath11k_mac_vdev_start_restart()
4923 if (arvif->vdev_type == WMI_VDEV_TYPE_AP && in ath11k_mac_vdev_start_restart()
4932 ret = ath11k_mac_set_txbf_conf(arvif); in ath11k_mac_vdev_start_restart()
4935 arvif->vdev_id, ret); in ath11k_mac_vdev_start_restart()
4940 static int ath11k_mac_vdev_stop(struct ath11k_vif *arvif) in ath11k_mac_vdev_stop() argument
4942 struct ath11k *ar = arvif->ar; in ath11k_mac_vdev_stop()
4952 ar->vdev_stop_status.vdev_id = arvif->vdev_id; in ath11k_mac_vdev_stop()
4956 ret = ath11k_wmi_vdev_stop(ar, arvif->vdev_id); in ath11k_mac_vdev_stop()
4959 arvif->vdev_id, ret); in ath11k_mac_vdev_stop()
4966 arvif->vdev_id, ret); in ath11k_mac_vdev_stop()
4974 arvif->vif->addr, arvif->vdev_id); in ath11k_mac_vdev_stop()
4979 arvif->vdev_id); in ath11k_mac_vdev_stop()
4991 static int ath11k_mac_vdev_start(struct ath11k_vif *arvif, in ath11k_mac_vdev_start() argument
4994 return ath11k_mac_vdev_start_restart(arvif, chandef, false); in ath11k_mac_vdev_start()
4997 static int ath11k_mac_vdev_restart(struct ath11k_vif *arvif, in ath11k_mac_vdev_restart() argument
5000 return ath11k_mac_vdev_start_restart(arvif, chandef, true); in ath11k_mac_vdev_restart()
5048 struct ath11k_vif *arvif; in ath11k_mac_update_vif_chan() local
5055 arvif = (void *)vifs[i].vif->drv_priv; in ath11k_mac_update_vif_chan()
5059 arvif->vdev_id, in ath11k_mac_update_vif_chan()
5065 if (WARN_ON(!arvif->is_started)) in ath11k_mac_update_vif_chan()
5068 if (WARN_ON(!arvif->is_up)) in ath11k_mac_update_vif_chan()
5071 ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_mac_update_vif_chan()
5074 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
5086 arvif = (void *)vifs[i].vif->drv_priv; in ath11k_mac_update_vif_chan()
5088 if (WARN_ON(!arvif->is_started)) in ath11k_mac_update_vif_chan()
5091 if (WARN_ON(!arvif->is_up)) in ath11k_mac_update_vif_chan()
5094 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_mac_update_vif_chan()
5099 ret = ath11k_mac_vdev_restart(arvif, &vifs[i].new_ctx->def); in ath11k_mac_update_vif_chan()
5102 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
5106 ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath11k_mac_update_vif_chan()
5107 arvif->bssid); in ath11k_mac_update_vif_chan()
5110 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
5178 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_start_vdev_delay() local
5181 if (WARN_ON(arvif->is_started)) in ath11k_start_vdev_delay()
5184 ret = ath11k_mac_vdev_start(arvif, &arvif->chanctx.def); in ath11k_start_vdev_delay()
5187 arvif->vdev_id, vif->addr, in ath11k_start_vdev_delay()
5188 arvif->chanctx.def.chan->center_freq, ret); in ath11k_start_vdev_delay()
5192 if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_start_vdev_delay()
5193 ret = ath11k_monitor_vdev_up(ar, arvif->vdev_id); in ath11k_start_vdev_delay()
5200 arvif->is_started = true; in ath11k_start_vdev_delay()
5213 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_assign_vif_chanctx() local
5221 ctx, arvif->vdev_id); in ath11k_mac_op_assign_vif_chanctx()
5225 arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath11k_mac_op_assign_vif_chanctx()
5226 arvif->vdev_type != WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_assign_vif_chanctx()
5227 memcpy(&arvif->chanctx, ctx, sizeof(*ctx)); in ath11k_mac_op_assign_vif_chanctx()
5232 if (WARN_ON(arvif->is_started)) { in ath11k_mac_op_assign_vif_chanctx()
5238 param.vdev_id = arvif->vdev_id; in ath11k_mac_op_assign_vif_chanctx()
5241 ret = ath11k_peer_create(ar, arvif, NULL, &param); in ath11k_mac_op_assign_vif_chanctx()
5244 ret = ath11k_mac_vdev_start(arvif, &ctx->def); in ath11k_mac_op_assign_vif_chanctx()
5247 arvif->vdev_id, vif->addr, in ath11k_mac_op_assign_vif_chanctx()
5251 if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_assign_vif_chanctx()
5252 ret = ath11k_monitor_vdev_up(ar, arvif->vdev_id); in ath11k_mac_op_assign_vif_chanctx()
5257 arvif->is_started = true; in ath11k_mac_op_assign_vif_chanctx()
5278 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_unassign_vif_chanctx() local
5285 ctx, arvif->vdev_id); in ath11k_mac_op_unassign_vif_chanctx()
5287 WARN_ON(!arvif->is_started); in ath11k_mac_op_unassign_vif_chanctx()
5290 arvif->vdev_type == WMI_VDEV_TYPE_MONITOR && in ath11k_mac_op_unassign_vif_chanctx()
5292 ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr); in ath11k_mac_op_unassign_vif_chanctx()
5294 ret = ath11k_mac_vdev_stop(arvif); in ath11k_mac_op_unassign_vif_chanctx()
5297 arvif->vdev_id, ret); in ath11k_mac_op_unassign_vif_chanctx()
5299 arvif->is_started = false; in ath11k_mac_op_unassign_vif_chanctx()
5302 arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) in ath11k_mac_op_unassign_vif_chanctx()
5303 ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_mac_op_unassign_vif_chanctx()
5331 struct ath11k_vif *arvif; in ath11k_set_vdev_param_to_all_vifs() local
5335 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_set_vdev_param_to_all_vifs()
5337 param, arvif->vdev_id, value); in ath11k_set_vdev_param_to_all_vifs()
5339 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_vdev_param_to_all_vifs()
5343 param, arvif->vdev_id, ret); in ath11k_set_vdev_param_to_all_vifs()
5508 static int ath11k_mac_set_fixed_rate_params(struct ath11k_vif *arvif, in ath11k_mac_set_fixed_rate_params() argument
5511 struct ath11k *ar = arvif->ar; in ath11k_mac_set_fixed_rate_params()
5518 arvif->vdev_id, rate, nss, sgi); in ath11k_mac_set_fixed_rate_params()
5521 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_params()
5530 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_params()
5539 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_params()
5548 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_params()
5587 struct ath11k_vif *arvif = data; in ath11k_mac_set_bitrate_mask_iter() local
5589 struct ath11k *ar = arvif->ar; in ath11k_mac_set_bitrate_mask_iter()
5601 struct ath11k_vif *arvif = data; in ath11k_mac_disable_peer_fixed_rate() local
5602 struct ath11k *ar = arvif->ar; in ath11k_mac_disable_peer_fixed_rate()
5606 arvif->vdev_id, in ath11k_mac_disable_peer_fixed_rate()
5620 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_set_bitrate_mask() local
5622 struct ath11k *ar = arvif->ar; in ath11k_mac_op_set_bitrate_mask()
5659 arvif->vdev_id, ret); in ath11k_mac_op_set_bitrate_mask()
5664 arvif); in ath11k_mac_op_set_bitrate_mask()
5710 arvif); in ath11k_mac_op_set_bitrate_mask()
5714 arvif->bitrate_mask = *mask; in ath11k_mac_op_set_bitrate_mask()
5717 arvif); in ath11k_mac_op_set_bitrate_mask()
5724 ret = ath11k_mac_set_fixed_rate_params(arvif, rate, nss, sgi, ldpc); in ath11k_mac_op_set_bitrate_mask()
5727 arvif->vdev_id, ret); in ath11k_mac_op_set_bitrate_mask()