Lines Matching refs:arvif

456 	struct ath11k_vif *arvif = (void *)vif->drv_priv;  in ath11k_get_arvif_iter()  local
458 if (arvif->vdev_id == arvif_iter->vdev_id) in ath11k_get_arvif_iter()
459 arvif_iter->arvif = arvif; in ath11k_get_arvif_iter()
475 if (!arvif_iter.arvif) { in ath11k_mac_get_arvif()
480 return arvif_iter.arvif; in ath11k_mac_get_arvif()
488 struct ath11k_vif *arvif; in ath11k_mac_get_arvif_by_vdev_id() local
493 arvif = ath11k_mac_get_arvif(pdev->ar, vdev_id); in ath11k_mac_get_arvif_by_vdev_id()
494 if (arvif) in ath11k_mac_get_arvif_by_vdev_id()
495 return arvif; in ath11k_mac_get_arvif_by_vdev_id()
587 struct ath11k_vif *arvif; in ath11k_mac_txpower_recalc() local
593 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_mac_txpower_recalc()
594 if (arvif->txpower <= 0) in ath11k_mac_txpower_recalc()
598 txpower = arvif->txpower; in ath11k_mac_txpower_recalc()
600 txpower = min(txpower, arvif->txpower); in ath11k_mac_txpower_recalc()
641 static int ath11k_recalc_rtscts_prot(struct ath11k_vif *arvif) in ath11k_recalc_rtscts_prot() argument
643 struct ath11k *ar = arvif->ar; in ath11k_recalc_rtscts_prot()
657 if (arvif->num_legacy_stations > 0) in ath11k_recalc_rtscts_prot()
663 if (arvif->rtscts_prot_mode == rts_cts) in ath11k_recalc_rtscts_prot()
666 arvif->rtscts_prot_mode = rts_cts; in ath11k_recalc_rtscts_prot()
669 arvif->vdev_id, rts_cts); in ath11k_recalc_rtscts_prot()
671 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_recalc_rtscts_prot()
675 arvif->vdev_id, ret); in ath11k_recalc_rtscts_prot()
680 static int ath11k_mac_set_kickout(struct ath11k_vif *arvif) in ath11k_mac_set_kickout() argument
682 struct ath11k *ar = arvif->ar; in ath11k_mac_set_kickout()
691 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
696 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
700 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
705 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
709 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
714 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
718 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
770 static int ath11k_mac_setup_bcn_tmpl(struct ath11k_vif *arvif) in ath11k_mac_setup_bcn_tmpl() argument
772 struct ath11k *ar = arvif->ar; in ath11k_mac_setup_bcn_tmpl()
775 struct ieee80211_vif *vif = arvif->vif; in ath11k_mac_setup_bcn_tmpl()
782 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath11k_mac_setup_bcn_tmpl()
795 arvif->rsnie_present = true; in ath11k_mac_setup_bcn_tmpl()
797 arvif->rsnie_present = false; in ath11k_mac_setup_bcn_tmpl()
802 arvif->wpaie_present = true; in ath11k_mac_setup_bcn_tmpl()
804 arvif->wpaie_present = false; in ath11k_mac_setup_bcn_tmpl()
806 ret = ath11k_wmi_bcn_tmpl(ar, arvif->vdev_id, &offs, bcn); in ath11k_mac_setup_bcn_tmpl()
817 static void ath11k_control_beaconing(struct ath11k_vif *arvif, in ath11k_control_beaconing() argument
820 struct ath11k *ar = arvif->ar; in ath11k_control_beaconing()
823 lockdep_assert_held(&arvif->ar->conf_mutex); in ath11k_control_beaconing()
826 ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_control_beaconing()
829 arvif->vdev_id, ret); in ath11k_control_beaconing()
831 arvif->is_up = false; in ath11k_control_beaconing()
836 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_control_beaconing()
843 arvif->tx_seq_no = 0x1000; in ath11k_control_beaconing()
845 arvif->aid = 0; in ath11k_control_beaconing()
847 ether_addr_copy(arvif->bssid, info->bssid); in ath11k_control_beaconing()
849 ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath11k_control_beaconing()
850 arvif->bssid); in ath11k_control_beaconing()
853 arvif->vdev_id, ret); in ath11k_control_beaconing()
857 arvif->is_up = true; in ath11k_control_beaconing()
859 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "mac vdev %d up\n", arvif->vdev_id); in ath11k_control_beaconing()
867 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_basic() local
878 arg->vdev_id = arvif->vdev_id; in ath11k_peer_assoc_h_basic()
895 struct ath11k_vif *arvif = (struct ath11k_vif *)vif->drv_priv; in ath11k_peer_assoc_h_crypto() local
907 if (arvif->rsnie_present || arvif->wpaie_present) { in ath11k_peer_assoc_h_crypto()
909 if (arvif->wpaie_present) in ath11k_peer_assoc_h_crypto()
953 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_rates() local
971 ratemask &= arvif->bitrate_mask.control[band].legacy; in ath11k_peer_assoc_h_rates()
1016 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_ht() local
1033 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_peer_assoc_h_ht()
1057 if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) { in ath11k_peer_assoc_h_ht()
1177 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_vht() local
1192 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_peer_assoc_h_vht()
1412 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_qos() local
1414 switch (arvif->vdev_type) { in ath11k_peer_assoc_h_qos()
1444 struct ath11k_vif *arvif, in ath11k_peer_assoc_qos_ap() argument
1454 params.vdev_id = arvif->vdev_id; in ath11k_peer_assoc_qos_ap()
1506 params.param, arvif->vdev_id, ret); in ath11k_peer_assoc_qos_ap()
1575 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_phymode() local
1586 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_peer_assoc_h_phymode()
1587 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_peer_assoc_h_phymode()
1671 static int ath11k_setup_peer_smps(struct ath11k *ar, struct ath11k_vif *arvif, in ath11k_setup_peer_smps() argument
1686 return ath11k_wmi_set_peer_param(ar, addr, arvif->vdev_id, in ath11k_setup_peer_smps()
1696 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_bss_assoc() local
1704 arvif->vdev_id, arvif->bssid, arvif->aid); in ath11k_bss_assoc()
1711 bss_conf->bssid, arvif->vdev_id); in ath11k_bss_assoc()
1723 bss_conf->bssid, arvif->vdev_id, ret); in ath11k_bss_assoc()
1729 bss_conf->bssid, arvif->vdev_id); in ath11k_bss_assoc()
1733 ret = ath11k_setup_peer_smps(ar, arvif, bss_conf->bssid, in ath11k_bss_assoc()
1737 arvif->vdev_id, ret); in ath11k_bss_assoc()
1741 WARN_ON(arvif->is_up); in ath11k_bss_assoc()
1743 arvif->aid = bss_conf->aid; in ath11k_bss_assoc()
1744 ether_addr_copy(arvif->bssid, bss_conf->bssid); in ath11k_bss_assoc()
1746 ret = ath11k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid); in ath11k_bss_assoc()
1749 arvif->vdev_id, ret); in ath11k_bss_assoc()
1753 arvif->is_up = true; in ath11k_bss_assoc()
1757 arvif->vdev_id, bss_conf->bssid, bss_conf->aid); in ath11k_bss_assoc()
1760 ret = ath11k_wmi_set_peer_param(ar, arvif->bssid, in ath11k_bss_assoc()
1761 arvif->vdev_id, in ath11k_bss_assoc()
1767 ret = ath11k_wmi_send_obss_spr_cmd(ar, arvif->vdev_id, in ath11k_bss_assoc()
1771 arvif->vdev_id, ret); in ath11k_bss_assoc()
1778 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_bss_disassoc() local
1784 arvif->vdev_id, arvif->bssid); in ath11k_bss_disassoc()
1786 ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_bss_disassoc()
1789 arvif->vdev_id, ret); in ath11k_bss_disassoc()
1791 arvif->is_up = false; in ath11k_bss_disassoc()
1825 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_recalculate_mgmt_rate() local
1846 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, vdev_param, in ath11k_recalculate_mgmt_rate()
1852 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, vdev_param, in ath11k_recalculate_mgmt_rate()
1864 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_bss_info_changed() local
1880 arvif->beacon_interval = info->beacon_int; in ath11k_mac_op_bss_info_changed()
1883 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1885 arvif->beacon_interval); in ath11k_mac_op_bss_info_changed()
1888 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1892 arvif->beacon_interval, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1902 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1906 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1908 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_mac_op_bss_info_changed()
1914 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1920 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1924 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1929 arvif->dtim_period = info->dtim_period; in ath11k_mac_op_bss_info_changed()
1932 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1934 arvif->dtim_period); in ath11k_mac_op_bss_info_changed()
1938 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
1942 arvif->dtim_period, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1947 arvif->u.ap.ssid_len = info->ssid_len; in ath11k_mac_op_bss_info_changed()
1949 memcpy(arvif->u.ap.ssid, info->ssid, info->ssid_len); in ath11k_mac_op_bss_info_changed()
1950 arvif->u.ap.hidden_ssid = info->hidden_ssid; in ath11k_mac_op_bss_info_changed()
1954 ether_addr_copy(arvif->bssid, info->bssid); in ath11k_mac_op_bss_info_changed()
1957 ath11k_control_beaconing(arvif, info); in ath11k_mac_op_bss_info_changed()
1965 if (arvif->is_started) { in ath11k_mac_op_bss_info_changed()
1966 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1970 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1973 cts_prot, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1989 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
1993 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
1997 slottime, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
2009 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2013 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
2017 preamble, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
2029 arvif->vdev_id, info->txpower); in ath11k_mac_op_bss_info_changed()
2031 arvif->txpower = info->txpower; in ath11k_mac_op_bss_info_changed()
2036 !ath11k_mac_vif_chan(arvif->vif, &def)) { in ath11k_mac_op_bss_info_changed()
2060 arvif->vdev_id, rate); in ath11k_mac_op_bss_info_changed()
2063 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2068 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2071 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2076 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2080 !ath11k_mac_vif_chan(arvif->vif, &def)) in ath11k_mac_op_bss_info_changed()
2091 ath11k_wmi_send_obss_spr_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2097 ar, arvif->vdev_id, info->he_bss_color.color, in ath11k_mac_op_bss_info_changed()
2102 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2105 arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
2109 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2111 ar, arvif->vdev_id, 0, in ath11k_mac_op_bss_info_changed()
2115 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
2289 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_hw_scan() local
2304 ar->scan.vdev_id = arvif->vdev_id; in ath11k_mac_op_hw_scan()
2320 arg.vdev_id = arvif->vdev_id; in ath11k_mac_op_hw_scan()
2382 static int ath11k_install_key(struct ath11k_vif *arvif, in ath11k_install_key() argument
2388 struct ath11k *ar = arvif->ar; in ath11k_install_key()
2390 .vdev_id = arvif->vdev_id, in ath11k_install_key()
2398 lockdep_assert_held(&arvif->ar->conf_mutex); in ath11k_install_key()
2439 ret = ath11k_wmi_vdev_install_key(arvif->ar, &arg); in ath11k_install_key()
2450 static int ath11k_clear_peer_keys(struct ath11k_vif *arvif, in ath11k_clear_peer_keys() argument
2453 struct ath11k *ar = arvif->ar; in ath11k_clear_peer_keys()
2464 peer = ath11k_peer_find(ab, arvif->vdev_id, addr); in ath11k_clear_peer_keys()
2475 ret = ath11k_install_key(arvif, peer->keys[i], in ath11k_clear_peer_keys()
2498 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_set_key() local
2522 else if (arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_op_set_key()
2533 peer = ath11k_peer_find(ab, arvif->vdev_id, peer_addr); in ath11k_mac_op_set_key()
2561 ret = ath11k_install_key(arvif, key, cmd, peer_addr, flags); in ath11k_mac_op_set_key()
2567 ret = ath11k_dp_peer_rx_pn_replay_config(arvif, peer_addr, cmd, key); in ath11k_mac_op_set_key()
2574 peer = ath11k_peer_find(ab, arvif->vdev_id, peer_addr); in ath11k_mac_op_set_key()
2636 ath11k_mac_set_peer_vht_fixed_rate(struct ath11k_vif *arvif, in ath11k_mac_set_peer_vht_fixed_rate() argument
2641 struct ath11k *ar = arvif->ar; in ath11k_mac_set_peer_vht_fixed_rate()
2670 arvif->vdev_id, in ath11k_mac_set_peer_vht_fixed_rate()
2686 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_station_assoc() local
2700 mask = &arvif->bitrate_mask; in ath11k_station_assoc()
2707 sta->addr, arvif->vdev_id, ret); in ath11k_station_assoc()
2713 sta->addr, arvif->vdev_id); in ath11k_station_assoc()
2725 ret = ath11k_mac_set_peer_vht_fixed_rate(arvif, sta, mask, in ath11k_station_assoc()
2737 ret = ath11k_setup_peer_smps(ar, arvif, sta->addr, in ath11k_station_assoc()
2741 arvif->vdev_id, ret); in ath11k_station_assoc()
2746 arvif->num_legacy_stations++; in ath11k_station_assoc()
2747 ret = ath11k_recalc_rtscts_prot(arvif); in ath11k_station_assoc()
2753 ret = ath11k_peer_assoc_qos_ap(ar, arvif, sta); in ath11k_station_assoc()
2756 sta->addr, arvif->vdev_id, ret); in ath11k_station_assoc()
2768 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_station_disassoc() local
2774 arvif->num_legacy_stations--; in ath11k_station_disassoc()
2775 ret = ath11k_recalc_rtscts_prot(arvif); in ath11k_station_disassoc()
2780 ret = ath11k_clear_peer_keys(arvif, sta->addr); in ath11k_station_disassoc()
2783 arvif->vdev_id, ret); in ath11k_station_disassoc()
2792 struct ath11k_vif *arvif; in ath11k_sta_rc_update_wk() local
2806 arvif = arsta->arvif; in ath11k_sta_rc_update_wk()
2807 ar = arvif->ar; in ath11k_sta_rc_update_wk()
2809 if (WARN_ON(ath11k_mac_vif_chan(arvif->vif, &def))) in ath11k_sta_rc_update_wk()
2813 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_sta_rc_update_wk()
2814 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_sta_rc_update_wk()
2834 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
2845 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
2856 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
2864 mask = &arvif->bitrate_mask; in ath11k_sta_rc_update_wk()
2880 ath11k_mac_set_peer_vht_fixed_rate(arvif, sta, mask, in ath11k_sta_rc_update_wk()
2887 ath11k_peer_assoc_prepare(ar, arvif->vif, sta, in ath11k_sta_rc_update_wk()
2893 sta->addr, arvif->vdev_id, err); in ath11k_sta_rc_update_wk()
2897 sta->addr, arvif->vdev_id); in ath11k_sta_rc_update_wk()
2904 static int ath11k_mac_inc_num_stations(struct ath11k_vif *arvif, in ath11k_mac_inc_num_stations() argument
2907 struct ath11k *ar = arvif->ar; in ath11k_mac_inc_num_stations()
2911 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath11k_mac_inc_num_stations()
2922 static void ath11k_mac_dec_num_stations(struct ath11k_vif *arvif, in ath11k_mac_dec_num_stations() argument
2925 struct ath11k *ar = arvif->ar; in ath11k_mac_dec_num_stations()
2929 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath11k_mac_dec_num_stations()
2940 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_station_add() local
2947 ret = ath11k_mac_inc_num_stations(arvif, sta); in ath11k_mac_station_add()
2960 peer_param.vdev_id = arvif->vdev_id; in ath11k_mac_station_add()
2964 ret = ath11k_peer_create(ar, arvif, sta, &peer_param); in ath11k_mac_station_add()
2967 sta->addr, arvif->vdev_id); in ath11k_mac_station_add()
2972 sta->addr, arvif->vdev_id); in ath11k_mac_station_add()
2984 arvif->vdev_id, in ath11k_mac_station_add()
2993 ret = ath11k_dp_peer_setup(ar, arvif->vdev_id, sta->addr); in ath11k_mac_station_add()
2996 sta->addr, arvif->vdev_id, ret); in ath11k_mac_station_add()
3001 !arvif->is_started && in ath11k_mac_station_add()
3002 arvif->vdev_type != WMI_VDEV_TYPE_AP) { in ath11k_mac_station_add()
3016 ath11k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath11k_mac_station_add()
3021 ath11k_mac_dec_num_stations(arvif, sta); in ath11k_mac_station_add()
3033 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_sta_state() local
3048 arsta->arvif = arvif; in ath11k_mac_op_sta_state()
3054 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
3057 ath11k_dp_peer_cleanup(ar, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
3059 ret = ath11k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
3062 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
3065 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
3067 ath11k_mac_dec_num_stations(arvif, sta); in ath11k_mac_op_sta_state()
3069 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
3072 vif->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
3114 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_sta_set_txpwr() local
3131 ret = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_mac_op_sta_set_txpwr()
3151 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_sta_rc_update() local
3157 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_rc_update()
3161 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_rc_update()
3237 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_conf_tx_uapsd() local
3241 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath11k_conf_tx_uapsd()
3264 arvif->u.sta.uapsd |= value; in ath11k_conf_tx_uapsd()
3266 arvif->u.sta.uapsd &= ~value; in ath11k_conf_tx_uapsd()
3268 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_conf_tx_uapsd()
3270 arvif->u.sta.uapsd); in ath11k_conf_tx_uapsd()
3276 if (arvif->u.sta.uapsd) in ath11k_conf_tx_uapsd()
3281 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_conf_tx_uapsd()
3296 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_conf_tx() local
3304 p = &arvif->wmm_params.ac_vo; in ath11k_mac_op_conf_tx()
3307 p = &arvif->wmm_params.ac_vi; in ath11k_mac_op_conf_tx()
3310 p = &arvif->wmm_params.ac_be; in ath11k_mac_op_conf_tx()
3313 p = &arvif->wmm_params.ac_bk; in ath11k_mac_op_conf_tx()
3327 ret = ath11k_wmi_send_wmm_update_cmd_tlv(ar, arvif->vdev_id, in ath11k_mac_op_conf_tx()
3328 &arvif->wmm_params); in ath11k_mac_op_conf_tx()
3410 static int ath11k_mac_set_txbf_conf(struct ath11k_vif *arvif) in ath11k_mac_set_txbf_conf() argument
3413 struct ath11k *ar = arvif->ar; in ath11k_mac_set_txbf_conf()
3443 arvif->vdev_type == WMI_VDEV_TYPE_AP) in ath11k_mac_set_txbf_conf()
3453 arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_set_txbf_conf()
3457 return ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_txbf_conf()
3944 static int ath11k_mac_mgmt_tx_wmi(struct ath11k *ar, struct ath11k_vif *arvif, in ath11k_mac_mgmt_tx_wmi() argument
3982 ret = ath11k_wmi_mgmt_send(ar, arvif->vdev_id, buf_id, skb); in ath11k_mac_mgmt_tx_wmi()
4013 struct ath11k_vif *arvif; in ath11k_mgmt_over_wmi_tx_work() local
4025 arvif = ath11k_vif_to_arvif(skb_cb->vif); in ath11k_mgmt_over_wmi_tx_work()
4027 if (ar->allocated_vdev_map & (1LL << arvif->vdev_id)) { in ath11k_mgmt_over_wmi_tx_work()
4028 ret = ath11k_mac_mgmt_tx_wmi(ar, arvif, skb); in ath11k_mgmt_over_wmi_tx_work()
4031 arvif->vdev_id, ret); in ath11k_mgmt_over_wmi_tx_work()
4039 arvif->vdev_id, in ath11k_mgmt_over_wmi_tx_work()
4040 arvif->is_started); in ath11k_mgmt_over_wmi_tx_work()
4086 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_tx() local
4114 ret = ath11k_dp_tx(ar, arvif, skb); in ath11k_mac_op_tx()
4309 ath11k_mac_setup_vdev_create_params(struct ath11k_vif *arvif, in ath11k_mac_setup_vdev_create_params() argument
4312 struct ath11k *ar = arvif->ar; in ath11k_mac_setup_vdev_create_params()
4315 params->if_id = arvif->vdev_id; in ath11k_mac_setup_vdev_create_params()
4316 params->type = arvif->vdev_type; in ath11k_mac_setup_vdev_create_params()
4317 params->subtype = arvif->vdev_subtype; in ath11k_mac_setup_vdev_create_params()
4368 struct ath11k_vif *arvif) in ath11k_set_he_mu_sounding_mode() argument
4375 param_value = ath11k_mac_prepare_he_mode(ar->pdev, arvif->vif->type); in ath11k_set_he_mu_sounding_mode()
4376 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_he_mu_sounding_mode()
4380 arvif->vdev_id, ret, param_value); in ath11k_set_he_mu_sounding_mode()
4388 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_he_mu_sounding_mode()
4392 arvif->vdev_id, ret); in ath11k_set_he_mu_sounding_mode()
4403 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_update_vif_offload() local
4420 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_update_vif_offload()
4424 arvif->vdev_id, ret); in ath11k_mac_op_update_vif_offload()
4434 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_add_interface() local
4461 memset(arvif, 0, sizeof(*arvif)); in ath11k_mac_op_add_interface()
4463 arvif->ar = ar; in ath11k_mac_op_add_interface()
4464 arvif->vif = vif; in ath11k_mac_op_add_interface()
4466 INIT_LIST_HEAD(&arvif->list); in ath11k_mac_op_add_interface()
4472 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) { in ath11k_mac_op_add_interface()
4473 arvif->bitrate_mask.control[i].legacy = 0xffffffff; in ath11k_mac_op_add_interface()
4474 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff, in ath11k_mac_op_add_interface()
4475 sizeof(arvif->bitrate_mask.control[i].ht_mcs)); in ath11k_mac_op_add_interface()
4476 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff, in ath11k_mac_op_add_interface()
4477 sizeof(arvif->bitrate_mask.control[i].vht_mcs)); in ath11k_mac_op_add_interface()
4482 arvif->vdev_id = bit; in ath11k_mac_op_add_interface()
4483 arvif->vdev_subtype = WMI_VDEV_SUBTYPE_NONE; in ath11k_mac_op_add_interface()
4488 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath11k_mac_op_add_interface()
4491 arvif->vdev_subtype = WMI_VDEV_SUBTYPE_MESH_11S; in ath11k_mac_op_add_interface()
4494 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath11k_mac_op_add_interface()
4497 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR; in ath11k_mac_op_add_interface()
4505 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype, in ath11k_mac_op_add_interface()
4508 vif->cab_queue = arvif->vdev_id % (ATH11K_HW_MAX_QUEUES - 1); in ath11k_mac_op_add_interface()
4512 ath11k_mac_setup_vdev_create_params(arvif, &vdev_param); in ath11k_mac_op_add_interface()
4517 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4523 vif->addr, arvif->vdev_id); in ath11k_mac_op_add_interface()
4524 ar->allocated_vdev_map |= 1LL << arvif->vdev_id; in ath11k_mac_op_add_interface()
4525 ab->free_vdev_map &= ~(1LL << arvif->vdev_id); in ath11k_mac_op_add_interface()
4528 list_add(&arvif->list, &ar->arvifs); in ath11k_mac_op_add_interface()
4534 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4538 arvif->vdev_id, ar->cfg_tx_chainmask, nss, ret); in ath11k_mac_op_add_interface()
4542 switch (arvif->vdev_type) { in ath11k_mac_op_add_interface()
4544 peer_param.vdev_id = arvif->vdev_id; in ath11k_mac_op_add_interface()
4547 ret = ath11k_peer_create(ar, arvif, NULL, &peer_param); in ath11k_mac_op_add_interface()
4550 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4554 ret = ath11k_mac_set_kickout(arvif); in ath11k_mac_op_add_interface()
4557 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4564 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4568 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4574 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4578 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4584 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4588 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4592 ret = ath11k_wmi_pdev_set_ps_mode(ar, arvif->vdev_id, false); in ath11k_mac_op_add_interface()
4595 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4603 arvif->txpower = vif->bss_conf.txpower; in ath11k_mac_op_add_interface()
4610 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4614 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
4617 ath11k_dp_vdev_tx_attach(ar, arvif); in ath11k_mac_op_add_interface()
4624 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_op_add_interface()
4628 arvif->vdev_id); in ath11k_mac_op_add_interface()
4631 arvif->vdev_id, vif->addr); in ath11k_mac_op_add_interface()
4635 ret = ath11k_wait_for_peer_delete_done(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
4644 ath11k_wmi_vdev_delete(ar, arvif->vdev_id); in ath11k_mac_op_add_interface()
4646 ar->allocated_vdev_map &= ~(1LL << arvif->vdev_id); in ath11k_mac_op_add_interface()
4647 ab->free_vdev_map |= 1LL << arvif->vdev_id; in ath11k_mac_op_add_interface()
4649 list_del(&arvif->list); in ath11k_mac_op_add_interface()
4673 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_remove_interface() local
4681 arvif->vdev_id); in ath11k_mac_op_remove_interface()
4684 list_del(&arvif->list); in ath11k_mac_op_remove_interface()
4687 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_op_remove_interface()
4688 ret = ath11k_peer_delete(ar, arvif->vdev_id, vif->addr); in ath11k_mac_op_remove_interface()
4691 arvif->vdev_id, ret); in ath11k_mac_op_remove_interface()
4694 ret = ath11k_wmi_vdev_delete(ar, arvif->vdev_id); in ath11k_mac_op_remove_interface()
4697 arvif->vdev_id, ret); in ath11k_mac_op_remove_interface()
4701 vif->addr, arvif->vdev_id); in ath11k_mac_op_remove_interface()
4702 ar->allocated_vdev_map &= ~(1LL << arvif->vdev_id); in ath11k_mac_op_remove_interface()
4703 ab->free_vdev_map |= 1LL << (arvif->vdev_id); in ath11k_mac_op_remove_interface()
4705 ath11k_peer_cleanup(ar, arvif->vdev_id); in ath11k_mac_op_remove_interface()
4891 ath11k_mac_vdev_start_restart(struct ath11k_vif *arvif, in ath11k_mac_vdev_start_restart() argument
4895 struct ath11k *ar = arvif->ar; in ath11k_mac_vdev_start_restart()
4898 int he_support = arvif->vif->bss_conf.he_support; in ath11k_mac_vdev_start_restart()
4905 arg.vdev_id = arvif->vdev_id; in ath11k_mac_vdev_start_restart()
4906 arg.dtim_period = arvif->dtim_period; in ath11k_mac_vdev_start_restart()
4907 arg.bcn_intval = arvif->beacon_interval; in ath11k_mac_vdev_start_restart()
4923 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_vdev_start_restart()
4924 arg.ssid = arvif->u.ap.ssid; in ath11k_mac_vdev_start_restart()
4925 arg.ssid_len = arvif->u.ap.ssid_len; in ath11k_mac_vdev_start_restart()
4926 arg.hidden_ssid = arvif->u.ap.hidden_ssid; in ath11k_mac_vdev_start_restart()
4940 ret = ath11k_set_he_mu_sounding_mode(ar, arvif); in ath11k_mac_vdev_start_restart()
4972 arvif->vif->addr, arvif->vdev_id); in ath11k_mac_vdev_start_restart()
4981 if (arvif->vdev_type == WMI_VDEV_TYPE_AP && in ath11k_mac_vdev_start_restart()
4990 ret = ath11k_mac_set_txbf_conf(arvif); in ath11k_mac_vdev_start_restart()
4993 arvif->vdev_id, ret); in ath11k_mac_vdev_start_restart()
4998 static int ath11k_mac_vdev_stop(struct ath11k_vif *arvif) in ath11k_mac_vdev_stop() argument
5000 struct ath11k *ar = arvif->ar; in ath11k_mac_vdev_stop()
5010 ar->vdev_stop_status.vdev_id = arvif->vdev_id; in ath11k_mac_vdev_stop()
5014 ret = ath11k_wmi_vdev_stop(ar, arvif->vdev_id); in ath11k_mac_vdev_stop()
5017 arvif->vdev_id, ret); in ath11k_mac_vdev_stop()
5024 arvif->vdev_id, ret); in ath11k_mac_vdev_stop()
5032 arvif->vif->addr, arvif->vdev_id); in ath11k_mac_vdev_stop()
5037 arvif->vdev_id); in ath11k_mac_vdev_stop()
5049 static int ath11k_mac_vdev_start(struct ath11k_vif *arvif, in ath11k_mac_vdev_start() argument
5052 return ath11k_mac_vdev_start_restart(arvif, chandef, false); in ath11k_mac_vdev_start()
5055 static int ath11k_mac_vdev_restart(struct ath11k_vif *arvif, in ath11k_mac_vdev_restart() argument
5058 return ath11k_mac_vdev_start_restart(arvif, chandef, true); in ath11k_mac_vdev_restart()
5106 struct ath11k_vif *arvif; in ath11k_mac_update_vif_chan() local
5113 arvif = (void *)vifs[i].vif->drv_priv; in ath11k_mac_update_vif_chan()
5117 arvif->vdev_id, in ath11k_mac_update_vif_chan()
5123 if (WARN_ON(!arvif->is_started)) in ath11k_mac_update_vif_chan()
5126 if (WARN_ON(!arvif->is_up)) in ath11k_mac_update_vif_chan()
5129 ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_mac_update_vif_chan()
5132 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
5144 arvif = (void *)vifs[i].vif->drv_priv; in ath11k_mac_update_vif_chan()
5146 if (WARN_ON(!arvif->is_started)) in ath11k_mac_update_vif_chan()
5149 if (WARN_ON(!arvif->is_up)) in ath11k_mac_update_vif_chan()
5152 ret = ath11k_mac_vdev_restart(arvif, &vifs[i].new_ctx->def); in ath11k_mac_update_vif_chan()
5155 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
5159 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_mac_update_vif_chan()
5164 ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath11k_mac_update_vif_chan()
5165 arvif->bssid); in ath11k_mac_update_vif_chan()
5168 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
5236 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_start_vdev_delay() local
5239 if (WARN_ON(arvif->is_started)) in ath11k_start_vdev_delay()
5242 ret = ath11k_mac_vdev_start(arvif, &arvif->chanctx.def); in ath11k_start_vdev_delay()
5245 arvif->vdev_id, vif->addr, in ath11k_start_vdev_delay()
5246 arvif->chanctx.def.chan->center_freq, ret); in ath11k_start_vdev_delay()
5250 if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_start_vdev_delay()
5251 ret = ath11k_monitor_vdev_up(ar, arvif->vdev_id); in ath11k_start_vdev_delay()
5258 arvif->is_started = true; in ath11k_start_vdev_delay()
5271 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_assign_vif_chanctx() local
5279 ctx, arvif->vdev_id); in ath11k_mac_op_assign_vif_chanctx()
5283 arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath11k_mac_op_assign_vif_chanctx()
5284 arvif->vdev_type != WMI_VDEV_TYPE_MONITOR && in ath11k_mac_op_assign_vif_chanctx()
5285 !ath11k_peer_find_by_vdev_id(ab, arvif->vdev_id)) { in ath11k_mac_op_assign_vif_chanctx()
5286 memcpy(&arvif->chanctx, ctx, sizeof(*ctx)); in ath11k_mac_op_assign_vif_chanctx()
5291 if (WARN_ON(arvif->is_started)) { in ath11k_mac_op_assign_vif_chanctx()
5297 arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath11k_mac_op_assign_vif_chanctx()
5298 arvif->vdev_type != WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_assign_vif_chanctx()
5299 param.vdev_id = arvif->vdev_id; in ath11k_mac_op_assign_vif_chanctx()
5303 ret = ath11k_peer_create(ar, arvif, NULL, &param); in ath11k_mac_op_assign_vif_chanctx()
5311 ret = ath11k_mac_vdev_start(arvif, &ctx->def); in ath11k_mac_op_assign_vif_chanctx()
5314 arvif->vdev_id, vif->addr, in ath11k_mac_op_assign_vif_chanctx()
5318 if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_assign_vif_chanctx()
5319 ret = ath11k_monitor_vdev_up(ar, arvif->vdev_id); in ath11k_mac_op_assign_vif_chanctx()
5324 arvif->is_started = true; in ath11k_mac_op_assign_vif_chanctx()
5343 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_unassign_vif_chanctx() local
5351 ctx, arvif->vdev_id); in ath11k_mac_op_unassign_vif_chanctx()
5353 WARN_ON(!arvif->is_started); in ath11k_mac_op_unassign_vif_chanctx()
5356 arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_unassign_vif_chanctx()
5361 ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr); in ath11k_mac_op_unassign_vif_chanctx()
5364 ret = ath11k_mac_vdev_stop(arvif); in ath11k_mac_op_unassign_vif_chanctx()
5367 arvif->vdev_id, ret); in ath11k_mac_op_unassign_vif_chanctx()
5369 arvif->is_started = false; in ath11k_mac_op_unassign_vif_chanctx()
5372 arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) in ath11k_mac_op_unassign_vif_chanctx()
5373 ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_mac_op_unassign_vif_chanctx()
5401 struct ath11k_vif *arvif; in ath11k_set_vdev_param_to_all_vifs() local
5405 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_set_vdev_param_to_all_vifs()
5407 param, arvif->vdev_id, value); in ath11k_set_vdev_param_to_all_vifs()
5409 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_vdev_param_to_all_vifs()
5413 param, arvif->vdev_id, ret); in ath11k_set_vdev_param_to_all_vifs()
5578 static int ath11k_mac_set_fixed_rate_params(struct ath11k_vif *arvif, in ath11k_mac_set_fixed_rate_params() argument
5581 struct ath11k *ar = arvif->ar; in ath11k_mac_set_fixed_rate_params()
5588 arvif->vdev_id, rate, nss, sgi); in ath11k_mac_set_fixed_rate_params()
5591 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_params()
5600 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_params()
5609 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_params()
5618 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_params()
5657 struct ath11k_vif *arvif = data; in ath11k_mac_set_bitrate_mask_iter() local
5659 struct ath11k *ar = arvif->ar; in ath11k_mac_set_bitrate_mask_iter()
5671 struct ath11k_vif *arvif = data; in ath11k_mac_disable_peer_fixed_rate() local
5672 struct ath11k *ar = arvif->ar; in ath11k_mac_disable_peer_fixed_rate()
5676 arvif->vdev_id, in ath11k_mac_disable_peer_fixed_rate()
5690 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_set_bitrate_mask() local
5692 struct ath11k *ar = arvif->ar; in ath11k_mac_op_set_bitrate_mask()
5729 arvif->vdev_id, ret); in ath11k_mac_op_set_bitrate_mask()
5734 arvif); in ath11k_mac_op_set_bitrate_mask()
5780 arvif); in ath11k_mac_op_set_bitrate_mask()
5784 arvif->bitrate_mask = *mask; in ath11k_mac_op_set_bitrate_mask()
5787 arvif); in ath11k_mac_op_set_bitrate_mask()
5794 ret = ath11k_mac_set_fixed_rate_params(arvif, rate, nss, sgi, ldpc); in ath11k_mac_op_set_bitrate_mask()
5797 arvif->vdev_id, ret); in ath11k_mac_op_set_bitrate_mask()