Lines Matching refs:arvif
569 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_get_arvif_iter() local
571 if (arvif->vdev_id == arvif_iter->vdev_id) in ath11k_get_arvif_iter()
572 arvif_iter->arvif = arvif; in ath11k_get_arvif_iter()
588 if (!arvif_iter.arvif) { in ath11k_mac_get_arvif()
593 return arvif_iter.arvif; in ath11k_mac_get_arvif()
601 struct ath11k_vif *arvif; in ath11k_mac_get_arvif_by_vdev_id() local
607 arvif = ath11k_mac_get_arvif(pdev->ar, vdev_id); in ath11k_mac_get_arvif_by_vdev_id()
608 if (arvif) in ath11k_mac_get_arvif_by_vdev_id()
609 return arvif; in ath11k_mac_get_arvif_by_vdev_id()
659 struct ath11k_vif *arvif; in ath11k_mac_get_vif_up() local
665 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_mac_get_vif_up()
666 if (arvif->is_up) in ath11k_mac_get_vif_up()
667 return arvif; in ath11k_mac_get_vif_up()
681 u8 ath11k_mac_get_target_pdev_id_from_vif(struct ath11k_vif *arvif) in ath11k_mac_get_target_pdev_id_from_vif() argument
683 struct ath11k *ar = arvif->ar; in ath11k_mac_get_target_pdev_id_from_vif()
685 struct ieee80211_vif *vif = arvif->vif; in ath11k_mac_get_target_pdev_id_from_vif()
706 struct ath11k_vif *arvif; in ath11k_mac_get_target_pdev_id() local
708 arvif = ath11k_mac_get_vif_up(ar->ab); in ath11k_mac_get_target_pdev_id()
710 if (arvif) in ath11k_mac_get_target_pdev_id()
711 return ath11k_mac_get_target_pdev_id_from_vif(arvif); in ath11k_mac_get_target_pdev_id()
737 struct ath11k_vif *arvif; in ath11k_mac_txpower_recalc() local
743 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_mac_txpower_recalc()
744 if (arvif->txpower <= 0) in ath11k_mac_txpower_recalc()
748 txpower = arvif->txpower; in ath11k_mac_txpower_recalc()
750 txpower = min(txpower, arvif->txpower); in ath11k_mac_txpower_recalc()
791 static int ath11k_recalc_rtscts_prot(struct ath11k_vif *arvif) in ath11k_recalc_rtscts_prot() argument
793 struct ath11k *ar = arvif->ar; in ath11k_recalc_rtscts_prot()
807 if (arvif->num_legacy_stations > 0) in ath11k_recalc_rtscts_prot()
813 if (arvif->rtscts_prot_mode == rts_cts) in ath11k_recalc_rtscts_prot()
816 arvif->rtscts_prot_mode = rts_cts; in ath11k_recalc_rtscts_prot()
819 arvif->vdev_id, rts_cts); in ath11k_recalc_rtscts_prot()
821 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_recalc_rtscts_prot()
825 arvif->vdev_id, ret); in ath11k_recalc_rtscts_prot()
830 static int ath11k_mac_set_kickout(struct ath11k_vif *arvif) in ath11k_mac_set_kickout() argument
832 struct ath11k *ar = arvif->ar; in ath11k_mac_set_kickout()
841 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
846 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
850 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
855 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
859 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
864 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_set_kickout()
868 arvif->vdev_id, ret); in ath11k_mac_set_kickout()
1215 static int ath11k_mac_vif_setup_ps(struct ath11k_vif *arvif) in ath11k_mac_vif_setup_ps() argument
1217 struct ath11k *ar = arvif->ar; in ath11k_mac_vif_setup_ps()
1218 struct ieee80211_vif *vif = arvif->vif; in ath11k_mac_vif_setup_ps()
1226 lockdep_assert_held(&arvif->ar->conf_mutex); in ath11k_mac_vif_setup_ps()
1228 if (arvif->vif->type != NL80211_IFTYPE_STATION) in ath11k_mac_vif_setup_ps()
1231 enable_ps = arvif->ps; in ath11k_mac_vif_setup_ps()
1233 if (!arvif->is_started) { in ath11k_mac_vif_setup_ps()
1250 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, in ath11k_mac_vif_setup_ps()
1254 arvif->vdev_id, ret); in ath11k_mac_vif_setup_ps()
1262 arvif->vdev_id, psmode ? "enable" : "disable"); in ath11k_mac_vif_setup_ps()
1264 ret = ath11k_wmi_pdev_set_ps_mode(ar, arvif->vdev_id, psmode); in ath11k_mac_vif_setup_ps()
1267 psmode, arvif->vdev_id, ret); in ath11k_mac_vif_setup_ps()
1276 struct ath11k_vif *arvif; in ath11k_mac_config_ps() local
1281 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_mac_config_ps()
1282 ret = ath11k_mac_vif_setup_ps(arvif); in ath11k_mac_config_ps()
1354 static int ath11k_mac_setup_bcn_tmpl(struct ath11k_vif *arvif) in ath11k_mac_setup_bcn_tmpl() argument
1356 struct ath11k *ar = arvif->ar; in ath11k_mac_setup_bcn_tmpl()
1359 struct ieee80211_vif *vif = arvif->vif; in ath11k_mac_setup_bcn_tmpl()
1366 if (arvif->vdev_type != WMI_VDEV_TYPE_AP) in ath11k_mac_setup_bcn_tmpl()
1379 arvif->rsnie_present = true; in ath11k_mac_setup_bcn_tmpl()
1381 arvif->rsnie_present = false; in ath11k_mac_setup_bcn_tmpl()
1386 arvif->wpaie_present = true; in ath11k_mac_setup_bcn_tmpl()
1388 arvif->wpaie_present = false; in ath11k_mac_setup_bcn_tmpl()
1390 ret = ath11k_wmi_bcn_tmpl(ar, arvif->vdev_id, &offs, bcn); in ath11k_mac_setup_bcn_tmpl()
1401 void ath11k_mac_bcn_tx_event(struct ath11k_vif *arvif) in ath11k_mac_bcn_tx_event() argument
1403 struct ieee80211_vif *vif = arvif->vif; in ath11k_mac_bcn_tx_event()
1405 if (!vif->bss_conf.color_change_active && !arvif->bcca_zero_sent) in ath11k_mac_bcn_tx_event()
1410 arvif->bcca_zero_sent = true; in ath11k_mac_bcn_tx_event()
1415 arvif->bcca_zero_sent = false; in ath11k_mac_bcn_tx_event()
1419 ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_mac_bcn_tx_event()
1422 static void ath11k_control_beaconing(struct ath11k_vif *arvif, in ath11k_control_beaconing() argument
1425 struct ath11k *ar = arvif->ar; in ath11k_control_beaconing()
1428 lockdep_assert_held(&arvif->ar->conf_mutex); in ath11k_control_beaconing()
1431 ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_control_beaconing()
1434 arvif->vdev_id, ret); in ath11k_control_beaconing()
1436 arvif->is_up = false; in ath11k_control_beaconing()
1441 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_control_beaconing()
1448 arvif->tx_seq_no = 0x1000; in ath11k_control_beaconing()
1450 arvif->aid = 0; in ath11k_control_beaconing()
1452 ether_addr_copy(arvif->bssid, info->bssid); in ath11k_control_beaconing()
1454 ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath11k_control_beaconing()
1455 arvif->bssid); in ath11k_control_beaconing()
1458 arvif->vdev_id, ret); in ath11k_control_beaconing()
1462 arvif->is_up = true; in ath11k_control_beaconing()
1464 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "mac vdev %d up\n", arvif->vdev_id); in ath11k_control_beaconing()
1472 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_handle_beacon_iter() local
1480 cancel_delayed_work(&arvif->connection_loss_work); in ath11k_mac_handle_beacon_iter()
1495 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_handle_beacon_miss_iter() local
1496 struct ath11k *ar = arvif->ar; in ath11k_mac_handle_beacon_miss_iter()
1499 if (arvif->vdev_id != *vdev_id) in ath11k_mac_handle_beacon_miss_iter()
1502 if (!arvif->is_up) in ath11k_mac_handle_beacon_miss_iter()
1512 ieee80211_queue_delayed_work(hw, &arvif->connection_loss_work, in ath11k_mac_handle_beacon_miss_iter()
1526 struct ath11k_vif *arvif = container_of(work, struct ath11k_vif, in ath11k_mac_vif_sta_connection_loss_work() local
1528 struct ieee80211_vif *vif = arvif->vif; in ath11k_mac_vif_sta_connection_loss_work()
1530 if (!arvif->is_up) in ath11k_mac_vif_sta_connection_loss_work()
1541 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_basic() local
1552 arg->vdev_id = arvif->vdev_id; in ath11k_peer_assoc_h_basic()
1569 struct ath11k_vif *arvif = (struct ath11k_vif *)vif->drv_priv; in ath11k_peer_assoc_h_crypto() local
1581 if (arvif->rsnie_present || arvif->wpaie_present) { in ath11k_peer_assoc_h_crypto()
1583 if (arvif->wpaie_present) in ath11k_peer_assoc_h_crypto()
1627 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_rates() local
1645 ratemask &= arvif->bitrate_mask.control[band].legacy; in ath11k_peer_assoc_h_rates()
1690 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_ht() local
1707 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_peer_assoc_h_ht()
1735 if (arvif->bitrate_mask.control[band].gi == NL80211_TXRATE_DEFAULT_GI) in ath11k_peer_assoc_h_ht()
1739 if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) { in ath11k_peer_assoc_h_ht()
1887 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_vht() local
1904 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_peer_assoc_h_vht()
2084 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_he() local
2105 memcpy(he_mcs_mask, arvif->bitrate_mask.control[band].he_mcs, in ath11k_peer_assoc_h_he()
2407 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_qos() local
2409 switch (arvif->vdev_type) { in ath11k_peer_assoc_h_qos()
2439 struct ath11k_vif *arvif, in ath11k_peer_assoc_qos_ap() argument
2449 params.vdev_id = arvif->vdev_id; in ath11k_peer_assoc_qos_ap()
2501 params.param, arvif->vdev_id, ret); in ath11k_peer_assoc_qos_ap()
2570 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_peer_assoc_h_phymode() local
2582 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_peer_assoc_h_phymode()
2583 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_peer_assoc_h_phymode()
2584 he_mcs_mask = arvif->bitrate_mask.control[band].he_mcs; in ath11k_peer_assoc_h_phymode()
2677 static int ath11k_setup_peer_smps(struct ath11k *ar, struct ath11k_vif *arvif, in ath11k_setup_peer_smps() argument
2697 return ath11k_wmi_set_peer_param(ar, addr, arvif->vdev_id, in ath11k_setup_peer_smps()
2707 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_bss_assoc() local
2717 arvif->vdev_id, arvif->bssid, arvif->aid); in ath11k_bss_assoc()
2724 bss_conf->bssid, arvif->vdev_id); in ath11k_bss_assoc()
2737 bss_conf->bssid, arvif->vdev_id, ret); in ath11k_bss_assoc()
2743 bss_conf->bssid, arvif->vdev_id); in ath11k_bss_assoc()
2747 ret = ath11k_setup_peer_smps(ar, arvif, bss_conf->bssid, in ath11k_bss_assoc()
2752 arvif->vdev_id, ret); in ath11k_bss_assoc()
2756 WARN_ON(arvif->is_up); in ath11k_bss_assoc()
2758 arvif->aid = vif->cfg.aid; in ath11k_bss_assoc()
2759 ether_addr_copy(arvif->bssid, bss_conf->bssid); in ath11k_bss_assoc()
2761 ret = ath11k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid); in ath11k_bss_assoc()
2764 arvif->vdev_id, ret); in ath11k_bss_assoc()
2768 arvif->is_up = true; in ath11k_bss_assoc()
2769 arvif->rekey_data.enable_offload = false; in ath11k_bss_assoc()
2773 arvif->vdev_id, bss_conf->bssid, vif->cfg.aid); in ath11k_bss_assoc()
2777 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, arvif->bssid); in ath11k_bss_assoc()
2784 ret = ath11k_wmi_set_peer_param(ar, arvif->bssid, in ath11k_bss_assoc()
2785 arvif->vdev_id, in ath11k_bss_assoc()
2792 ret = ath11k_wmi_send_obss_spr_cmd(ar, arvif->vdev_id, in ath11k_bss_assoc()
2796 arvif->vdev_id, ret); in ath11k_bss_assoc()
2798 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_bss_assoc()
2803 arvif->vdev_id, ret); in ath11k_bss_assoc()
2812 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_bss_disassoc() local
2818 arvif->vdev_id, arvif->bssid); in ath11k_bss_disassoc()
2820 ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_bss_disassoc()
2823 arvif->vdev_id, ret); in ath11k_bss_disassoc()
2825 arvif->is_up = false; in ath11k_bss_disassoc()
2827 memset(&arvif->rekey_data, 0, sizeof(arvif->rekey_data)); in ath11k_bss_disassoc()
2829 cancel_delayed_work_sync(&arvif->connection_loss_work); in ath11k_bss_disassoc()
2861 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_recalculate_mgmt_rate() local
2882 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, vdev_param, in ath11k_recalculate_mgmt_rate()
2893 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, vdev_param, in ath11k_recalculate_mgmt_rate()
2899 static int ath11k_mac_fils_discovery(struct ath11k_vif *arvif, in ath11k_mac_fils_discovery() argument
2902 struct ath11k *ar = arvif->ar; in ath11k_mac_fils_discovery()
2911 tmpl = ieee80211_get_fils_discovery_tmpl(ar->hw, arvif->vif); in ath11k_mac_fils_discovery()
2913 ret = ath11k_wmi_fils_discovery_tmpl(ar, arvif->vdev_id, in ath11k_mac_fils_discovery()
2920 arvif->vif); in ath11k_mac_fils_discovery()
2922 ret = ath11k_wmi_probe_resp_tmpl(ar, arvif->vdev_id, in ath11k_mac_fils_discovery()
2925 return ath11k_wmi_fils_discovery(ar, arvif->vdev_id, 0, false); in ath11k_mac_fils_discovery()
2931 arvif->vdev_id, (unsol_bcast_probe_resp_enabled ? in ath11k_mac_fils_discovery()
2939 ret = ath11k_wmi_fils_discovery(ar, arvif->vdev_id, interval, in ath11k_mac_fils_discovery()
3103 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_bss_info_changed() local
3120 arvif->beacon_interval = info->beacon_int; in ath11k_mac_op_bss_info_changed()
3123 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3125 arvif->beacon_interval); in ath11k_mac_op_bss_info_changed()
3128 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3132 arvif->beacon_interval, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3142 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3146 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3148 if (!arvif->do_not_send_tmpl || !arvif->bcca_zero_sent) { in ath11k_mac_op_bss_info_changed()
3149 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_mac_op_bss_info_changed()
3155 if (arvif->bcca_zero_sent) in ath11k_mac_op_bss_info_changed()
3156 arvif->do_not_send_tmpl = true; in ath11k_mac_op_bss_info_changed()
3158 arvif->do_not_send_tmpl = false; in ath11k_mac_op_bss_info_changed()
3161 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3167 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3171 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3176 arvif->dtim_period = info->dtim_period; in ath11k_mac_op_bss_info_changed()
3179 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3181 arvif->dtim_period); in ath11k_mac_op_bss_info_changed()
3185 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3189 arvif->dtim_period, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3194 arvif->u.ap.ssid_len = vif->cfg.ssid_len; in ath11k_mac_op_bss_info_changed()
3196 memcpy(arvif->u.ap.ssid, vif->cfg.ssid, in ath11k_mac_op_bss_info_changed()
3198 arvif->u.ap.hidden_ssid = info->hidden_ssid; in ath11k_mac_op_bss_info_changed()
3202 ether_addr_copy(arvif->bssid, info->bssid); in ath11k_mac_op_bss_info_changed()
3205 ath11k_control_beaconing(arvif, info); in ath11k_mac_op_bss_info_changed()
3207 if (arvif->is_up && vif->bss_conf.he_support && in ath11k_mac_op_bss_info_changed()
3211 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3215 param_value, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3219 param_value, arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3229 if (arvif->is_started) { in ath11k_mac_op_bss_info_changed()
3230 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3234 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3237 cts_prot, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3253 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3257 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3261 slottime, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3273 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3277 arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3281 preamble, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3293 arvif->vdev_id, info->txpower); in ath11k_mac_op_bss_info_changed()
3295 arvif->txpower = info->txpower; in ath11k_mac_op_bss_info_changed()
3301 arvif->ps = vif->cfg.ps; in ath11k_mac_op_bss_info_changed()
3306 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3310 !ath11k_mac_vif_chan(arvif->vif, &def)) { in ath11k_mac_op_bss_info_changed()
3334 arvif->vdev_id, rate); in ath11k_mac_op_bss_info_changed()
3337 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3342 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3345 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3350 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3354 !ath11k_mac_vif_chan(arvif->vif, &def)) in ath11k_mac_op_bss_info_changed()
3375 ar, arvif->vdev_id, info->he_bss_color.color, in ath11k_mac_op_bss_info_changed()
3380 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3389 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3395 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3399 param_value, arvif->vdev_id); in ath11k_mac_op_bss_info_changed()
3402 arvif->vdev_id, in ath11k_mac_op_bss_info_changed()
3406 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3408 ar, arvif->vdev_id, 0, in ath11k_mac_op_bss_info_changed()
3412 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3417 arvif->ftm_responder != info->ftm_responder && in ath11k_mac_op_bss_info_changed()
3421 arvif->ftm_responder = info->ftm_responder; in ath11k_mac_op_bss_info_changed()
3423 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, param, in ath11k_mac_op_bss_info_changed()
3424 arvif->ftm_responder); in ath11k_mac_op_bss_info_changed()
3427 arvif->vdev_id, ret); in ath11k_mac_op_bss_info_changed()
3432 ath11k_mac_fils_discovery(arvif, info); in ath11k_mac_op_bss_info_changed()
3436 memcpy(arvif->arp_ns_offload.ipv4_addr, in ath11k_mac_op_bss_info_changed()
3439 memcpy(arvif->arp_ns_offload.mac_addr, vif->addr, ETH_ALEN); in ath11k_mac_op_bss_info_changed()
3440 arvif->arp_ns_offload.ipv4_count = ipv4_cnt; in ath11k_mac_op_bss_info_changed()
3444 vif->addr, arvif->arp_ns_offload.ipv4_addr); in ath11k_mac_op_bss_info_changed()
3628 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_hw_scan() local
3644 ar->scan.vdev_id = arvif->vdev_id; in ath11k_mac_op_hw_scan()
3666 arg->vdev_id = arvif->vdev_id; in ath11k_mac_op_hw_scan()
3750 ath11k_mac_11d_scan_start(ar, arvif->vdev_id); in ath11k_mac_op_hw_scan()
3767 static int ath11k_install_key(struct ath11k_vif *arvif, in ath11k_install_key() argument
3773 struct ath11k *ar = arvif->ar; in ath11k_install_key()
3775 .vdev_id = arvif->vdev_id, in ath11k_install_key()
3783 lockdep_assert_held(&arvif->ar->conf_mutex); in ath11k_install_key()
3824 ret = ath11k_wmi_vdev_install_key(arvif->ar, &arg); in ath11k_install_key()
3835 static int ath11k_clear_peer_keys(struct ath11k_vif *arvif, in ath11k_clear_peer_keys() argument
3838 struct ath11k *ar = arvif->ar; in ath11k_clear_peer_keys()
3849 peer = ath11k_peer_find(ab, arvif->vdev_id, addr); in ath11k_clear_peer_keys()
3860 ret = ath11k_install_key(arvif, peer->keys[i], in ath11k_clear_peer_keys()
3883 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_set_key() local
3907 else if (arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_op_set_key()
3918 peer = ath11k_peer_find(ab, arvif->vdev_id, peer_addr); in ath11k_mac_op_set_key()
3946 ret = ath11k_install_key(arvif, key, cmd, peer_addr, flags); in ath11k_mac_op_set_key()
3952 ret = ath11k_dp_peer_rx_pn_replay_config(arvif, peer_addr, cmd, key); in ath11k_mac_op_set_key()
3959 peer = ath11k_peer_find(ab, arvif->vdev_id, peer_addr); in ath11k_mac_op_set_key()
4035 ath11k_mac_set_peer_vht_fixed_rate(struct ath11k_vif *arvif, in ath11k_mac_set_peer_vht_fixed_rate() argument
4040 struct ath11k *ar = arvif->ar; in ath11k_mac_set_peer_vht_fixed_rate()
4073 arvif->vdev_id, in ath11k_mac_set_peer_vht_fixed_rate()
4085 ath11k_mac_set_peer_he_fixed_rate(struct ath11k_vif *arvif, in ath11k_mac_set_peer_he_fixed_rate() argument
4090 struct ath11k *ar = arvif->ar; in ath11k_mac_set_peer_he_fixed_rate()
4124 arvif->vdev_id, in ath11k_mac_set_peer_he_fixed_rate()
4140 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_station_assoc() local
4154 mask = &arvif->bitrate_mask; in ath11k_station_assoc()
4162 sta->addr, arvif->vdev_id, ret); in ath11k_station_assoc()
4168 sta->addr, arvif->vdev_id); in ath11k_station_assoc()
4181 ret = ath11k_mac_set_peer_vht_fixed_rate(arvif, sta, mask, in ath11k_station_assoc()
4186 ret = ath11k_mac_set_peer_he_fixed_rate(arvif, sta, mask, in ath11k_station_assoc()
4198 ret = ath11k_setup_peer_smps(ar, arvif, sta->addr, in ath11k_station_assoc()
4203 arvif->vdev_id, ret); in ath11k_station_assoc()
4208 arvif->num_legacy_stations++; in ath11k_station_assoc()
4209 ret = ath11k_recalc_rtscts_prot(arvif); in ath11k_station_assoc()
4215 ret = ath11k_peer_assoc_qos_ap(ar, arvif, sta); in ath11k_station_assoc()
4218 sta->addr, arvif->vdev_id, ret); in ath11k_station_assoc()
4230 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_station_disassoc() local
4236 arvif->num_legacy_stations--; in ath11k_station_disassoc()
4237 ret = ath11k_recalc_rtscts_prot(arvif); in ath11k_station_disassoc()
4242 ret = ath11k_clear_peer_keys(arvif, sta->addr); in ath11k_station_disassoc()
4245 arvif->vdev_id, ret); in ath11k_station_disassoc()
4254 struct ath11k_vif *arvif; in ath11k_sta_rc_update_wk() local
4270 arvif = arsta->arvif; in ath11k_sta_rc_update_wk()
4271 ar = arvif->ar; in ath11k_sta_rc_update_wk()
4273 if (WARN_ON(ath11k_mac_vif_chan(arvif->vif, &def))) in ath11k_sta_rc_update_wk()
4277 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; in ath11k_sta_rc_update_wk()
4278 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; in ath11k_sta_rc_update_wk()
4279 he_mcs_mask = arvif->bitrate_mask.control[band].he_mcs; in ath11k_sta_rc_update_wk()
4302 ath11k_peer_assoc_h_phymode(ar, arvif->vif, sta, &peer_arg); in ath11k_sta_rc_update_wk()
4315 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
4324 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
4337 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
4346 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
4359 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
4370 err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_sta_rc_update_wk()
4378 mask = &arvif->bitrate_mask; in ath11k_sta_rc_update_wk()
4396 ath11k_mac_set_peer_vht_fixed_rate(arvif, sta, mask, in ath11k_sta_rc_update_wk()
4399 ath11k_mac_set_peer_he_fixed_rate(arvif, sta, mask, in ath11k_sta_rc_update_wk()
4409 arvif->vdev_id, in ath11k_sta_rc_update_wk()
4417 ath11k_peer_assoc_prepare(ar, arvif->vif, sta, in ath11k_sta_rc_update_wk()
4424 sta->addr, arvif->vdev_id, err); in ath11k_sta_rc_update_wk()
4428 sta->addr, arvif->vdev_id); in ath11k_sta_rc_update_wk()
4439 struct ath11k_vif *arvif; in ath11k_sta_set_4addr_wk() local
4446 arvif = arsta->arvif; in ath11k_sta_set_4addr_wk()
4447 ar = arvif->ar; in ath11k_sta_set_4addr_wk()
4453 arvif->vdev_id, in ath11k_sta_set_4addr_wk()
4461 static int ath11k_mac_inc_num_stations(struct ath11k_vif *arvif, in ath11k_mac_inc_num_stations() argument
4464 struct ath11k *ar = arvif->ar; in ath11k_mac_inc_num_stations()
4468 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath11k_mac_inc_num_stations()
4479 static void ath11k_mac_dec_num_stations(struct ath11k_vif *arvif, in ath11k_mac_dec_num_stations() argument
4482 struct ath11k *ar = arvif->ar; in ath11k_mac_dec_num_stations()
4486 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls) in ath11k_mac_dec_num_stations()
4497 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_station_add() local
4504 ret = ath11k_mac_inc_num_stations(arvif, sta); in ath11k_mac_station_add()
4517 peer_param.vdev_id = arvif->vdev_id; in ath11k_mac_station_add()
4521 ret = ath11k_peer_create(ar, arvif, sta, &peer_param); in ath11k_mac_station_add()
4524 sta->addr, arvif->vdev_id); in ath11k_mac_station_add()
4529 sta->addr, arvif->vdev_id); in ath11k_mac_station_add()
4543 arvif->vdev_id, in ath11k_mac_station_add()
4552 ret = ath11k_dp_peer_setup(ar, arvif->vdev_id, sta->addr); in ath11k_mac_station_add()
4555 sta->addr, arvif->vdev_id, ret); in ath11k_mac_station_add()
4560 !arvif->is_started && in ath11k_mac_station_add()
4561 arvif->vdev_type != WMI_VDEV_TYPE_AP) { in ath11k_mac_station_add()
4576 ath11k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath11k_mac_station_add()
4581 ath11k_mac_dec_num_stations(arvif, sta); in ath11k_mac_station_add()
4621 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_sta_state() local
4638 arsta->arvif = arvif; in ath11k_mac_op_sta_state()
4646 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
4652 ath11k_dp_peer_cleanup(ar, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
4655 ret = ath11k_peer_delete(ar, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
4659 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
4664 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
4667 ath11k_mac_dec_num_stations(arvif, sta); in ath11k_mac_op_sta_state()
4670 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
4675 vif->addr, arvif->vdev_id); in ath11k_mac_op_sta_state()
4709 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
4715 if (vif->type == NL80211_IFTYPE_STATION && arvif->is_up) { in ath11k_mac_op_sta_state()
4717 arvif->vdev_id, in ath11k_mac_op_sta_state()
4722 sta->addr, arvif->vdev_id, ret); in ath11k_mac_op_sta_state()
4728 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_state()
4753 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_sta_set_txpwr() local
4770 ret = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id, in ath11k_mac_op_sta_set_txpwr()
4803 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_sta_rc_update() local
4809 peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr); in ath11k_mac_op_sta_rc_update()
4813 sta->addr, arvif->vdev_id); in ath11k_mac_op_sta_rc_update()
4870 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_conf_tx_uapsd() local
4874 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath11k_conf_tx_uapsd()
4897 arvif->u.sta.uapsd |= value; in ath11k_conf_tx_uapsd()
4899 arvif->u.sta.uapsd &= ~value; in ath11k_conf_tx_uapsd()
4901 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_conf_tx_uapsd()
4903 arvif->u.sta.uapsd); in ath11k_conf_tx_uapsd()
4909 if (arvif->u.sta.uapsd) in ath11k_conf_tx_uapsd()
4914 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_conf_tx_uapsd()
4930 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_conf_tx() local
4938 p = &arvif->wmm_params.ac_vo; in ath11k_mac_op_conf_tx()
4941 p = &arvif->wmm_params.ac_vi; in ath11k_mac_op_conf_tx()
4944 p = &arvif->wmm_params.ac_be; in ath11k_mac_op_conf_tx()
4947 p = &arvif->wmm_params.ac_bk; in ath11k_mac_op_conf_tx()
4961 ret = ath11k_wmi_send_wmm_update_cmd_tlv(ar, arvif->vdev_id, in ath11k_mac_op_conf_tx()
4962 &arvif->wmm_params); in ath11k_mac_op_conf_tx()
5044 static int ath11k_mac_set_txbf_conf(struct ath11k_vif *arvif) in ath11k_mac_set_txbf_conf() argument
5047 struct ath11k *ar = arvif->ar; in ath11k_mac_set_txbf_conf()
5077 arvif->vdev_type == WMI_VDEV_TYPE_AP) in ath11k_mac_set_txbf_conf()
5087 arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_set_txbf_conf()
5091 return ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_txbf_conf()
5587 static int ath11k_mac_mgmt_tx_wmi(struct ath11k *ar, struct ath11k_vif *arvif, in ath11k_mac_mgmt_tx_wmi() argument
5629 ret = ath11k_wmi_mgmt_send(ar, arvif->vdev_id, buf_id, skb); in ath11k_mac_mgmt_tx_wmi()
5660 struct ath11k_vif *arvif; in ath11k_mgmt_over_wmi_tx_work() local
5672 arvif = ath11k_vif_to_arvif(skb_cb->vif); in ath11k_mgmt_over_wmi_tx_work()
5674 if (ar->allocated_vdev_map & (1LL << arvif->vdev_id)) { in ath11k_mgmt_over_wmi_tx_work()
5675 ret = ath11k_mac_mgmt_tx_wmi(ar, arvif, skb); in ath11k_mgmt_over_wmi_tx_work()
5678 arvif->vdev_id, ret); in ath11k_mgmt_over_wmi_tx_work()
5683 arvif->vdev_id); in ath11k_mgmt_over_wmi_tx_work()
5688 arvif->vdev_id, in ath11k_mgmt_over_wmi_tx_work()
5689 arvif->is_started); in ath11k_mgmt_over_wmi_tx_work()
5736 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_tx() local
5768 ret = ath11k_dp_tx(ar, arvif, arsta, skb); in ath11k_mac_op_tx()
6003 ath11k_mac_setup_vdev_create_params(struct ath11k_vif *arvif, in ath11k_mac_setup_vdev_create_params() argument
6006 struct ath11k *ar = arvif->ar; in ath11k_mac_setup_vdev_create_params()
6009 params->if_id = arvif->vdev_id; in ath11k_mac_setup_vdev_create_params()
6010 params->type = arvif->vdev_type; in ath11k_mac_setup_vdev_create_params()
6011 params->subtype = arvif->vdev_subtype; in ath11k_mac_setup_vdev_create_params()
6062 struct ath11k_vif *arvif) in ath11k_set_he_mu_sounding_mode() argument
6069 param_value = ath11k_mac_prepare_he_mode(ar->pdev, arvif->vif->type); in ath11k_set_he_mu_sounding_mode()
6070 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_he_mu_sounding_mode()
6074 arvif->vdev_id, ret, param_value); in ath11k_set_he_mu_sounding_mode()
6082 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_he_mu_sounding_mode()
6086 arvif->vdev_id, ret); in ath11k_set_he_mu_sounding_mode()
6097 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_update_vif_offload() local
6115 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_update_vif_offload()
6119 arvif->vdev_id, ret); in ath11k_mac_op_update_vif_offload()
6131 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_update_vif_offload()
6135 arvif->vdev_id, ret); in ath11k_mac_op_update_vif_offload()
6144 struct ath11k_vif *arvif; in ath11k_mac_vif_ap_active_any() local
6150 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_mac_vif_ap_active_any()
6151 if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_AP) in ath11k_mac_vif_ap_active_any()
6258 static int ath11k_mac_vdev_delete(struct ath11k *ar, struct ath11k_vif *arvif) in ath11k_mac_vdev_delete() argument
6261 struct ieee80211_vif *vif = arvif->vif; in ath11k_mac_vdev_delete()
6268 ret = ath11k_wmi_vdev_delete(ar, arvif->vdev_id); in ath11k_mac_vdev_delete()
6271 arvif->vdev_id, ret); in ath11k_mac_vdev_delete()
6282 ar->ab->free_vdev_map |= 1LL << (arvif->vdev_id); in ath11k_mac_vdev_delete()
6283 ar->allocated_vdev_map &= ~(1LL << arvif->vdev_id); in ath11k_mac_vdev_delete()
6287 vif->addr, arvif->vdev_id); in ath11k_mac_vdev_delete()
6297 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_add_interface() local
6329 ath11k_debugfs_remove_interface(arvif); in ath11k_mac_op_add_interface()
6331 memset(arvif, 0, sizeof(*arvif)); in ath11k_mac_op_add_interface()
6333 arvif->ar = ar; in ath11k_mac_op_add_interface()
6334 arvif->vif = vif; in ath11k_mac_op_add_interface()
6336 INIT_LIST_HEAD(&arvif->list); in ath11k_mac_op_add_interface()
6337 INIT_DELAYED_WORK(&arvif->connection_loss_work, in ath11k_mac_op_add_interface()
6340 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) { in ath11k_mac_op_add_interface()
6341 arvif->bitrate_mask.control[i].legacy = 0xffffffff; in ath11k_mac_op_add_interface()
6342 arvif->bitrate_mask.control[i].gi = NL80211_TXRATE_FORCE_SGI; in ath11k_mac_op_add_interface()
6343 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff, in ath11k_mac_op_add_interface()
6344 sizeof(arvif->bitrate_mask.control[i].ht_mcs)); in ath11k_mac_op_add_interface()
6345 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff, in ath11k_mac_op_add_interface()
6346 sizeof(arvif->bitrate_mask.control[i].vht_mcs)); in ath11k_mac_op_add_interface()
6347 memset(arvif->bitrate_mask.control[i].he_mcs, 0xff, in ath11k_mac_op_add_interface()
6348 sizeof(arvif->bitrate_mask.control[i].he_mcs)); in ath11k_mac_op_add_interface()
6353 arvif->vdev_id = bit; in ath11k_mac_op_add_interface()
6354 arvif->vdev_subtype = WMI_VDEV_SUBTYPE_NONE; in ath11k_mac_op_add_interface()
6359 arvif->vdev_type = WMI_VDEV_TYPE_STA; in ath11k_mac_op_add_interface()
6362 arvif->vdev_subtype = WMI_VDEV_SUBTYPE_MESH_11S; in ath11k_mac_op_add_interface()
6365 arvif->vdev_type = WMI_VDEV_TYPE_AP; in ath11k_mac_op_add_interface()
6368 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR; in ath11k_mac_op_add_interface()
6377 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype, in ath11k_mac_op_add_interface()
6380 vif->cab_queue = arvif->vdev_id % (ATH11K_HW_MAX_QUEUES - 1); in ath11k_mac_op_add_interface()
6384 ath11k_mac_setup_vdev_create_params(arvif, &vdev_param); in ath11k_mac_op_add_interface()
6389 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
6395 vif->addr, arvif->vdev_id); in ath11k_mac_op_add_interface()
6396 ar->allocated_vdev_map |= 1LL << arvif->vdev_id; in ath11k_mac_op_add_interface()
6397 ab->free_vdev_map &= ~(1LL << arvif->vdev_id); in ath11k_mac_op_add_interface()
6400 list_add(&arvif->list, &ar->arvifs); in ath11k_mac_op_add_interface()
6406 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
6410 arvif->vdev_id, ar->cfg_tx_chainmask, nss, ret); in ath11k_mac_op_add_interface()
6414 switch (arvif->vdev_type) { in ath11k_mac_op_add_interface()
6416 peer_param.vdev_id = arvif->vdev_id; in ath11k_mac_op_add_interface()
6419 ret = ath11k_peer_create(ar, arvif, NULL, &peer_param); in ath11k_mac_op_add_interface()
6422 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
6426 ret = ath11k_mac_set_kickout(arvif); in ath11k_mac_op_add_interface()
6429 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
6438 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
6442 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
6448 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
6452 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
6458 ret = ath11k_wmi_set_sta_ps_param(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
6462 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
6466 ret = ath11k_wmi_pdev_set_ps_mode(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
6470 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
6486 arvif->txpower = vif->bss_conf.txpower; in ath11k_mac_op_add_interface()
6493 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_op_add_interface()
6497 arvif->vdev_id, ret); in ath11k_mac_op_add_interface()
6500 ath11k_dp_vdev_tx_attach(ar, arvif); in ath11k_mac_op_add_interface()
6502 ath11k_debugfs_add_interface(arvif); in ath11k_mac_op_add_interface()
6517 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_op_add_interface()
6518 fbret = ath11k_peer_delete(ar, arvif->vdev_id, vif->addr); in ath11k_mac_op_add_interface()
6521 vif->addr, arvif->vdev_id, fbret); in ath11k_mac_op_add_interface()
6527 ath11k_mac_vdev_delete(ar, arvif); in ath11k_mac_op_add_interface()
6529 list_del(&arvif->list); in ath11k_mac_op_add_interface()
6553 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_remove_interface() local
6558 cancel_delayed_work_sync(&arvif->connection_loss_work); in ath11k_mac_op_remove_interface()
6563 arvif->vdev_id); in ath11k_mac_op_remove_interface()
6565 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_op_remove_interface()
6568 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_op_remove_interface()
6569 ret = ath11k_peer_delete(ar, arvif->vdev_id, vif->addr); in ath11k_mac_op_remove_interface()
6572 arvif->vdev_id, ret); in ath11k_mac_op_remove_interface()
6575 ret = ath11k_mac_vdev_delete(ar, arvif); in ath11k_mac_op_remove_interface()
6578 arvif->vdev_id, ret); in ath11k_mac_op_remove_interface()
6582 if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_remove_interface()
6596 list_del(&arvif->list); in ath11k_mac_op_remove_interface()
6599 ath11k_peer_cleanup(ar, arvif->vdev_id); in ath11k_mac_op_remove_interface()
6614 ath11k_debugfs_remove_interface(arvif); in ath11k_mac_op_remove_interface()
6752 ath11k_mac_vdev_start_restart(struct ath11k_vif *arvif, in ath11k_mac_vdev_start_restart() argument
6756 struct ath11k *ar = arvif->ar; in ath11k_mac_vdev_start_restart()
6760 int he_support = arvif->vif->bss_conf.he_support; in ath11k_mac_vdev_start_restart()
6767 arg.vdev_id = arvif->vdev_id; in ath11k_mac_vdev_start_restart()
6768 arg.dtim_period = arvif->dtim_period; in ath11k_mac_vdev_start_restart()
6769 arg.bcn_intval = arvif->beacon_interval; in ath11k_mac_vdev_start_restart()
6785 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { in ath11k_mac_vdev_start_restart()
6786 arg.ssid = arvif->u.ap.ssid; in ath11k_mac_vdev_start_restart()
6787 arg.ssid_len = arvif->u.ap.ssid_len; in ath11k_mac_vdev_start_restart()
6788 arg.hidden_ssid = arvif->u.ap.hidden_ssid; in ath11k_mac_vdev_start_restart()
6803 ret = ath11k_set_he_mu_sounding_mode(ar, arvif); in ath11k_mac_vdev_start_restart()
6837 arvif->vif->addr, arvif->vdev_id); in ath11k_mac_vdev_start_restart()
6846 if (arvif->vdev_type == WMI_VDEV_TYPE_AP && in ath11k_mac_vdev_start_restart()
6855 ret = ath11k_mac_set_txbf_conf(arvif); in ath11k_mac_vdev_start_restart()
6858 arvif->vdev_id, ret); in ath11k_mac_vdev_start_restart()
6863 static int ath11k_mac_vdev_stop(struct ath11k_vif *arvif) in ath11k_mac_vdev_stop() argument
6865 struct ath11k *ar = arvif->ar; in ath11k_mac_vdev_stop()
6872 ret = ath11k_wmi_vdev_stop(ar, arvif->vdev_id); in ath11k_mac_vdev_stop()
6875 arvif->vdev_id, ret); in ath11k_mac_vdev_stop()
6882 arvif->vdev_id, ret); in ath11k_mac_vdev_stop()
6890 arvif->vif->addr, arvif->vdev_id); in ath11k_mac_vdev_stop()
6895 arvif->vdev_id); in ath11k_mac_vdev_stop()
6903 static int ath11k_mac_vdev_start(struct ath11k_vif *arvif, in ath11k_mac_vdev_start() argument
6906 return ath11k_mac_vdev_start_restart(arvif, ctx, false); in ath11k_mac_vdev_start()
6909 static int ath11k_mac_vdev_restart(struct ath11k_vif *arvif, in ath11k_mac_vdev_restart() argument
6912 return ath11k_mac_vdev_start_restart(arvif, ctx, true); in ath11k_mac_vdev_restart()
6960 struct ath11k_vif *arvif; in ath11k_mac_update_vif_chan() local
6974 arvif = (void *)vifs[i].vif->drv_priv; in ath11k_mac_update_vif_chan()
6976 if (WARN_ON(!arvif->is_started)) in ath11k_mac_update_vif_chan()
6986 if (arvif->is_up) { in ath11k_mac_update_vif_chan()
6987 ret = ath11k_mac_vdev_restart(arvif, vifs[i].new_ctx); in ath11k_mac_update_vif_chan()
6990 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
6994 ret = ath11k_mac_vdev_stop(arvif); in ath11k_mac_update_vif_chan()
6997 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
7001 ret = ath11k_mac_vdev_start(arvif, vifs[i].new_ctx); in ath11k_mac_update_vif_chan()
7004 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
7009 ret = ath11k_mac_setup_bcn_tmpl(arvif); in ath11k_mac_update_vif_chan()
7014 ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid, in ath11k_mac_update_vif_chan()
7015 arvif->bssid); in ath11k_mac_update_vif_chan()
7018 arvif->vdev_id, ret); in ath11k_mac_update_vif_chan()
7105 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_start_vdev_delay() local
7108 if (WARN_ON(arvif->is_started)) in ath11k_start_vdev_delay()
7111 ret = ath11k_mac_vdev_start(arvif, &arvif->chanctx); in ath11k_start_vdev_delay()
7114 arvif->vdev_id, vif->addr, in ath11k_start_vdev_delay()
7115 arvif->chanctx.def.chan->center_freq, ret); in ath11k_start_vdev_delay()
7124 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, vdev_param, in ath11k_start_vdev_delay()
7132 if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_start_vdev_delay()
7133 ret = ath11k_wmi_vdev_up(ar, arvif->vdev_id, 0, ar->mac_addr); in ath11k_start_vdev_delay()
7140 arvif->is_started = true; in ath11k_start_vdev_delay()
7154 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_assign_vif_chanctx() local
7162 ctx, arvif->vdev_id); in ath11k_mac_op_assign_vif_chanctx()
7166 arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath11k_mac_op_assign_vif_chanctx()
7167 arvif->vdev_type != WMI_VDEV_TYPE_MONITOR && in ath11k_mac_op_assign_vif_chanctx()
7168 !ath11k_peer_find_by_vdev_id(ab, arvif->vdev_id)) { in ath11k_mac_op_assign_vif_chanctx()
7169 memcpy(&arvif->chanctx, ctx, sizeof(*ctx)); in ath11k_mac_op_assign_vif_chanctx()
7174 if (WARN_ON(arvif->is_started)) { in ath11k_mac_op_assign_vif_chanctx()
7180 arvif->vdev_type != WMI_VDEV_TYPE_AP && in ath11k_mac_op_assign_vif_chanctx()
7181 arvif->vdev_type != WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_assign_vif_chanctx()
7182 param.vdev_id = arvif->vdev_id; in ath11k_mac_op_assign_vif_chanctx()
7186 ret = ath11k_peer_create(ar, arvif, NULL, ¶m); in ath11k_mac_op_assign_vif_chanctx()
7194 if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_assign_vif_chanctx()
7202 arvif->is_started = true; in ath11k_mac_op_assign_vif_chanctx()
7206 ret = ath11k_mac_vdev_start(arvif, ctx); in ath11k_mac_op_assign_vif_chanctx()
7209 arvif->vdev_id, vif->addr, in ath11k_mac_op_assign_vif_chanctx()
7214 arvif->is_started = true; in ath11k_mac_op_assign_vif_chanctx()
7216 if (arvif->vdev_type != WMI_VDEV_TYPE_MONITOR && in ath11k_mac_op_assign_vif_chanctx()
7244 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_unassign_vif_chanctx() local
7252 ctx, arvif->vdev_id); in ath11k_mac_op_unassign_vif_chanctx()
7254 WARN_ON(!arvif->is_started); in ath11k_mac_op_unassign_vif_chanctx()
7257 arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_unassign_vif_chanctx()
7262 ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr); in ath11k_mac_op_unassign_vif_chanctx()
7265 if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { in ath11k_mac_op_unassign_vif_chanctx()
7274 arvif->is_started = false; in ath11k_mac_op_unassign_vif_chanctx()
7279 ret = ath11k_mac_vdev_stop(arvif); in ath11k_mac_op_unassign_vif_chanctx()
7282 arvif->vdev_id, ret); in ath11k_mac_op_unassign_vif_chanctx()
7284 arvif->is_started = false; in ath11k_mac_op_unassign_vif_chanctx()
7287 arvif->vdev_type == WMI_VDEV_TYPE_STA) { in ath11k_mac_op_unassign_vif_chanctx()
7288 ret = ath11k_peer_delete(ar, arvif->vdev_id, arvif->bssid); in ath11k_mac_op_unassign_vif_chanctx()
7292 arvif->bssid, arvif->vdev_id, ret); in ath11k_mac_op_unassign_vif_chanctx()
7296 arvif->bssid, arvif->vdev_id); in ath11k_mac_op_unassign_vif_chanctx()
7300 arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) in ath11k_mac_op_unassign_vif_chanctx()
7301 ath11k_wmi_vdev_down(ar, arvif->vdev_id); in ath11k_mac_op_unassign_vif_chanctx()
7303 if (arvif->vdev_type != WMI_VDEV_TYPE_MONITOR && in ath11k_mac_op_unassign_vif_chanctx()
7313 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_op_unassign_vif_chanctx()
7314 ath11k_mac_11d_scan_start(ar, arvif->vdev_id); in ath11k_mac_op_unassign_vif_chanctx()
7342 struct ath11k_vif *arvif; in ath11k_set_vdev_param_to_all_vifs() local
7346 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_set_vdev_param_to_all_vifs()
7348 param, arvif->vdev_id, value); in ath11k_set_vdev_param_to_all_vifs()
7350 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_set_vdev_param_to_all_vifs()
7354 param, arvif->vdev_id, ret); in ath11k_set_vdev_param_to_all_vifs()
7579 ath11k_mac_set_fixed_rate_gi_ltf(struct ath11k_vif *arvif, u8 he_gi, u8 he_ltf) in ath11k_mac_set_fixed_rate_gi_ltf() argument
7581 struct ath11k *ar = arvif->ar; in ath11k_mac_set_fixed_rate_gi_ltf()
7588 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_gi_ltf()
7599 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_fixed_rate_gi_ltf()
7611 ath11k_mac_set_auto_rate_gi_ltf(struct ath11k_vif *arvif, u16 he_gi, u8 he_ltf) in ath11k_mac_set_auto_rate_gi_ltf() argument
7613 struct ath11k *ar = arvif->ar; in ath11k_mac_set_auto_rate_gi_ltf()
7652 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_auto_rate_gi_ltf()
7665 static int ath11k_mac_set_rate_params(struct ath11k_vif *arvif, in ath11k_mac_set_rate_params() argument
7669 struct ath11k *ar = arvif->ar; in ath11k_mac_set_rate_params()
7677 arvif->vdev_id, rate, nss, sgi, ldpc, he_gi, in ath11k_mac_set_rate_params()
7680 if (!arvif->vif->bss_conf.he_support) { in ath11k_mac_set_rate_params()
7682 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_rate_params()
7692 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_rate_params()
7701 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_rate_params()
7709 if (arvif->vif->bss_conf.he_support) { in ath11k_mac_set_rate_params()
7711 ret = ath11k_mac_set_fixed_rate_gi_ltf(arvif, he_gi, in ath11k_mac_set_rate_params()
7719 ret = ath11k_mac_set_auto_rate_gi_ltf(arvif, he_gi, in ath11k_mac_set_rate_params()
7729 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, in ath11k_mac_set_rate_params()
7794 struct ath11k_vif *arvif = data; in ath11k_mac_set_bitrate_mask_iter() local
7796 struct ath11k *ar = arvif->ar; in ath11k_mac_set_bitrate_mask_iter()
7808 struct ath11k_vif *arvif = data; in ath11k_mac_disable_peer_fixed_rate() local
7809 struct ath11k *ar = arvif->ar; in ath11k_mac_disable_peer_fixed_rate()
7813 arvif->vdev_id, in ath11k_mac_disable_peer_fixed_rate()
7879 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_set_bitrate_mask() local
7882 struct ath11k *ar = arvif->ar; in ath11k_mac_op_set_bitrate_mask()
7928 arvif->vdev_id, ret); in ath11k_mac_op_set_bitrate_mask()
7933 arvif); in ath11k_mac_op_set_bitrate_mask()
7939 arvif->bitrate_mask = *mask; in ath11k_mac_op_set_bitrate_mask()
7942 arvif); in ath11k_mac_op_set_bitrate_mask()
8004 arvif); in ath11k_mac_op_set_bitrate_mask()
8006 arvif->bitrate_mask = *mask; in ath11k_mac_op_set_bitrate_mask()
8009 arvif); in ath11k_mac_op_set_bitrate_mask()
8016 ret = ath11k_mac_set_rate_params(arvif, rate, nss, sgi, ldpc, he_gi, in ath11k_mac_op_set_bitrate_mask()
8020 arvif->vdev_id, ret); in ath11k_mac_op_set_bitrate_mask()
8035 struct ath11k_vif *arvif; in ath11k_mac_op_reconfig_complete() local
8072 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_mac_op_reconfig_complete()
8073 if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) in ath11k_mac_op_reconfig_complete()
8074 ieee80211_hw_restart_disconnect(arvif->vif); in ath11k_mac_op_reconfig_complete()
8170 struct ath11k *ar = arsta->arvif->ar; in ath11k_mac_put_chain_rssi()
8200 struct ath11k *ar = arsta->arvif->ar; in ath11k_mac_op_sta_statistics()
8229 arsta->arvif->vdev_type == WMI_VDEV_TYPE_STA && in ath11k_mac_op_sta_statistics()
8238 arsta->arvif->vdev_type == WMI_VDEV_TYPE_STA && in ath11k_mac_op_sta_statistics()
8286 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_ipv6_changed() local
8294 offload = &arvif->arp_ns_offload; in ath11k_mac_op_ipv6_changed()
8360 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); in ath11k_mac_op_set_rekey_data() local
8361 struct ath11k_rekey_data *rekey_data = &arvif->rekey_data; in ath11k_mac_op_set_rekey_data()
8364 arvif->vdev_id); in ath11k_mac_op_set_rekey_data()
8376 arvif->rekey_data.enable_offload = true; in ath11k_mac_op_set_rekey_data()
8476 struct ath11k_vif *arvif = (void *)vif->drv_priv; in ath11k_mac_op_remain_on_channel() local
8491 ar->scan.vdev_id = arvif->vdev_id; in ath11k_mac_op_remain_on_channel()
8519 arg.vdev_id = arvif->vdev_id; in ath11k_mac_op_remain_on_channel()
9357 int ath11k_mac_vif_set_keepalive(struct ath11k_vif *arvif, in ath11k_mac_vif_set_keepalive() argument
9361 struct ath11k *ar = arvif->ar; in ath11k_mac_vif_set_keepalive()
9367 if (arvif->vdev_type != WMI_VDEV_TYPE_STA) in ath11k_mac_vif_set_keepalive()
9373 arg.vdev_id = arvif->vdev_id; in ath11k_mac_vif_set_keepalive()
9381 arvif->vdev_id, ret); in ath11k_mac_vif_set_keepalive()