Lines Matching defs:arvif
224 static int ath10k_send_key(struct ath10k_vif *arvif,
229 struct ath10k *ar = arvif->ar;
231 .vdev_id = arvif->vdev_id,
239 lockdep_assert_held(&arvif->ar->conf_mutex);
282 return ath10k_wmi_vdev_install_key(arvif->ar, &arg);
285 static int ath10k_install_key(struct ath10k_vif *arvif,
290 struct ath10k *ar = arvif->ar;
298 if (arvif->nohwcrypt)
301 ret = ath10k_send_key(arvif, key, cmd, macaddr, flags);
312 static int ath10k_install_peer_wep_keys(struct ath10k_vif *arvif,
315 struct ath10k *ar = arvif->ar;
323 if (WARN_ON(arvif->vif->type != NL80211_IFTYPE_AP &&
324 arvif->vif->type != NL80211_IFTYPE_ADHOC &&
325 arvif->vif->type != NL80211_IFTYPE_MESH_POINT))
329 peer = ath10k_peer_find(ar, arvif->vdev_id, addr);
335 for (i = 0; i < ARRAY_SIZE(arvif->wep_keys); i++) {
336 if (arvif->wep_keys[i] == NULL)
339 switch (arvif->vif->type) {
343 if (arvif->def_wep_key_idx == i)
346 ret = ath10k_install_key(arvif, arvif->wep_keys[i],
352 ret = ath10k_install_key(arvif, arvif->wep_keys[i],
358 ret = ath10k_install_key(arvif, arvif->wep_keys[i],
369 peer->keys[i] = arvif->wep_keys[i];
381 if (arvif->vif->type != NL80211_IFTYPE_ADHOC)
384 if (arvif->def_wep_key_idx == -1)
387 ret = ath10k_wmi_vdev_set_param(arvif->ar,
388 arvif->vdev_id,
389 arvif->ar->wmi.vdev_param->def_keyid,
390 arvif->def_wep_key_idx);
393 arvif->vdev_id, ret);
400 static int ath10k_clear_peer_keys(struct ath10k_vif *arvif,
403 struct ath10k *ar = arvif->ar;
413 peer = ath10k_peer_find(ar, arvif->vdev_id, addr);
424 ret = ath10k_install_key(arvif, peer->keys[i],
466 static int ath10k_clear_vdev_key(struct ath10k_vif *arvif,
469 struct ath10k *ar = arvif->ar;
502 ret = ath10k_install_key(arvif, key, DISABLE_KEY, addr, flags);
514 static int ath10k_mac_vif_update_wep_key(struct ath10k_vif *arvif,
517 struct ath10k *ar = arvif->ar;
524 if (ether_addr_equal(peer->addr, arvif->vif->addr))
527 if (ether_addr_equal(peer->addr, arvif->bssid))
534 arvif->vdev_id, key->keyidx);
536 ret = ath10k_install_peer_wep_keys(arvif, peer->addr);
539 arvif->vdev_id, peer->addr, ret);
720 struct ath10k_vif *arvif;
730 list_for_each_entry(arvif, &ar->arvifs, list)
771 static int ath10k_mac_set_kickout(struct ath10k_vif *arvif)
773 struct ath10k *ar = arvif->ar;
782 arvif->vdev_id, ret);
787 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param,
791 arvif->vdev_id, ret);
796 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param,
800 arvif->vdev_id, ret);
805 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param,
809 arvif->vdev_id, ret);
816 static int ath10k_mac_set_rts(struct ath10k_vif *arvif, u32 value)
818 struct ath10k *ar = arvif->ar;
822 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, value);
960 void ath10k_mac_vif_beacon_free(struct ath10k_vif *arvif)
962 struct ath10k *ar = arvif->ar;
966 if (!arvif->beacon)
969 if (!arvif->beacon_buf)
970 dma_unmap_single(ar->dev, ATH10K_SKB_CB(arvif->beacon)->paddr,
971 arvif->beacon->len, DMA_TO_DEVICE);
973 if (WARN_ON(arvif->beacon_state != ATH10K_BEACON_SCHEDULED &&
974 arvif->beacon_state != ATH10K_BEACON_SENT))
977 dev_kfree_skb_any(arvif->beacon);
979 arvif->beacon = NULL;
980 arvif->beacon_state = ATH10K_BEACON_SCHEDULED;
983 static void ath10k_mac_vif_beacon_cleanup(struct ath10k_vif *arvif)
985 struct ath10k *ar = arvif->ar;
989 ath10k_mac_vif_beacon_free(arvif);
991 if (arvif->beacon_buf) {
993 kfree(arvif->beacon_buf);
996 arvif->beacon_buf,
997 arvif->beacon_paddr);
998 arvif->beacon_buf = NULL;
1299 static bool ath10k_mac_can_set_cts_prot(struct ath10k_vif *arvif)
1301 struct ath10k *ar = arvif->ar;
1305 if (!arvif->is_started) {
1313 static int ath10k_mac_set_cts_prot(struct ath10k_vif *arvif)
1315 struct ath10k *ar = arvif->ar;
1323 arvif->vdev_id, arvif->use_cts_prot);
1325 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
1326 arvif->use_cts_prot ? 1 : 0);
1329 static int ath10k_recalc_rtscts_prot(struct ath10k_vif *arvif)
1331 struct ath10k *ar = arvif->ar;
1340 if (arvif->num_legacy_stations > 0)
1348 arvif->vdev_id, rts_cts);
1350 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
1438 static int ath10k_vdev_stop(struct ath10k_vif *arvif)
1440 struct ath10k *ar = arvif->ar;
1448 ret = ath10k_wmi_vdev_stop(ar, arvif->vdev_id);
1451 arvif->vdev_id, ret);
1458 arvif->vdev_id, ret);
1472 static int ath10k_vdev_start_restart(struct ath10k_vif *arvif,
1476 struct ath10k *ar = arvif->ar;
1485 arg.vdev_id = arvif->vdev_id;
1486 arg.dtim_period = arvif->dtim_period;
1487 arg.bcn_intval = arvif->beacon_interval;
1499 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
1500 arg.ssid = arvif->u.ap.ssid;
1501 arg.ssid_len = arvif->u.ap.ssid_len;
1502 arg.hidden_ssid = arvif->u.ap.hidden_ssid;
1507 } else if (arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
1508 arg.ssid = arvif->vif->bss_conf.ssid;
1509 arg.ssid_len = arvif->vif->bss_conf.ssid_len;
1542 static int ath10k_vdev_start(struct ath10k_vif *arvif,
1545 return ath10k_vdev_start_restart(arvif, def, false);
1548 static int ath10k_vdev_restart(struct ath10k_vif *arvif,
1551 return ath10k_vdev_start_restart(arvif, def, true);
1554 static int ath10k_mac_setup_bcn_p2p_ie(struct ath10k_vif *arvif,
1557 struct ath10k *ar = arvif->ar;
1562 if (arvif->vif->type != NL80211_IFTYPE_AP || !arvif->vif->p2p)
1573 ret = ath10k_wmi_p2p_go_bcn_ie(ar, arvif->vdev_id, p2p_ie);
1576 arvif->vdev_id, ret);
1613 static int ath10k_mac_setup_bcn_tmpl(struct ath10k_vif *arvif)
1615 struct ath10k *ar = arvif->ar;
1617 struct ieee80211_vif *vif = arvif->vif;
1625 if (arvif->vdev_type != WMI_VDEV_TYPE_AP &&
1626 arvif->vdev_type != WMI_VDEV_TYPE_IBSS)
1635 ret = ath10k_mac_setup_bcn_p2p_ie(arvif, bcn);
1650 ret = ath10k_wmi_bcn_tmpl(ar, arvif->vdev_id, offs.tim_offset, bcn, 0,
1663 static int ath10k_mac_setup_prb_tmpl(struct ath10k_vif *arvif)
1665 struct ath10k *ar = arvif->ar;
1667 struct ieee80211_vif *vif = arvif->vif;
1674 if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
1687 ret = ath10k_wmi_prb_tmpl(ar, arvif->vdev_id, prb);
1699 static int ath10k_mac_vif_fix_hidden_ssid(struct ath10k_vif *arvif)
1701 struct ath10k *ar = arvif->ar;
1723 if (WARN_ON(!arvif->is_started))
1726 if (WARN_ON(!arvif->is_up))
1729 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def)))
1732 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
1735 arvif->vdev_id, ret);
1743 ret = ath10k_mac_setup_bcn_tmpl(arvif);
1749 ret = ath10k_mac_setup_prb_tmpl(arvif);
1755 ret = ath10k_vdev_restart(arvif, &def);
1758 arvif->vdev_id, ret);
1762 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
1763 arvif->bssid);
1766 arvif->vdev_id, ret);
1773 static void ath10k_control_beaconing(struct ath10k_vif *arvif,
1776 struct ath10k *ar = arvif->ar;
1779 lockdep_assert_held(&arvif->ar->conf_mutex);
1782 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
1785 arvif->vdev_id, ret);
1787 arvif->is_up = false;
1789 spin_lock_bh(&arvif->ar->data_lock);
1790 ath10k_mac_vif_beacon_free(arvif);
1791 spin_unlock_bh(&arvif->ar->data_lock);
1796 arvif->tx_seq_no = 0x1000;
1798 arvif->aid = 0;
1799 ether_addr_copy(arvif->bssid, info->bssid);
1801 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
1802 arvif->bssid);
1805 arvif->vdev_id, ret);
1809 arvif->is_up = true;
1811 ret = ath10k_mac_vif_fix_hidden_ssid(arvif);
1814 arvif->vdev_id, ret);
1818 ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vdev %d up\n", arvif->vdev_id);
1821 static void ath10k_control_ibss(struct ath10k_vif *arvif,
1825 struct ath10k *ar = arvif->ar;
1829 lockdep_assert_held(&arvif->ar->conf_mutex);
1832 if (is_zero_ether_addr(arvif->bssid))
1835 eth_zero_addr(arvif->bssid);
1840 vdev_param = arvif->ar->wmi.vdev_param->atim_window;
1841 ret = ath10k_wmi_vdev_set_param(arvif->ar, arvif->vdev_id, vdev_param,
1845 arvif->vdev_id, ret);
1848 static int ath10k_mac_vif_recalc_ps_wake_threshold(struct ath10k_vif *arvif)
1850 struct ath10k *ar = arvif->ar;
1855 lockdep_assert_held(&arvif->ar->conf_mutex);
1857 if (arvif->u.sta.uapsd)
1863 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, value);
1866 value, arvif->vdev_id, ret);
1873 static int ath10k_mac_vif_recalc_ps_poll_count(struct ath10k_vif *arvif)
1875 struct ath10k *ar = arvif->ar;
1880 lockdep_assert_held(&arvif->ar->conf_mutex);
1882 if (arvif->u.sta.uapsd)
1888 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
1892 value, arvif->vdev_id, ret);
1901 struct ath10k_vif *arvif;
1906 list_for_each_entry(arvif, &ar->arvifs, list)
1907 if (arvif->is_started)
1913 static int ath10k_mac_vif_setup_ps(struct ath10k_vif *arvif)
1915 struct ath10k *ar = arvif->ar;
1916 struct ieee80211_vif *vif = arvif->vif;
1924 lockdep_assert_held(&arvif->ar->conf_mutex);
1926 if (arvif->vif->type != NL80211_IFTYPE_STATION)
1929 enable_ps = arvif->ps;
1935 arvif->vdev_id);
1939 if (!arvif->is_started) {
1957 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param,
1961 arvif->vdev_id, ret);
1969 arvif->vdev_id, psmode ? "enable" : "disable");
1971 ret = ath10k_wmi_set_psmode(ar, arvif->vdev_id, psmode);
1974 psmode, arvif->vdev_id, ret);
1981 static int ath10k_mac_vif_disable_keepalive(struct ath10k_vif *arvif)
1983 struct ath10k *ar = arvif->ar;
1987 lockdep_assert_held(&arvif->ar->conf_mutex);
1989 if (arvif->vdev_type != WMI_VDEV_TYPE_STA)
1998 arg.vdev_id = arvif->vdev_id;
2006 arvif->vdev_id, ret);
2013 static void ath10k_mac_vif_ap_csa_count_down(struct ath10k_vif *arvif)
2015 struct ath10k *ar = arvif->ar;
2016 struct ieee80211_vif *vif = arvif->vif;
2019 lockdep_assert_held(&arvif->ar->conf_mutex);
2024 if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
2030 if (!arvif->is_up)
2036 ret = ath10k_mac_setup_bcn_tmpl(arvif);
2041 ret = ath10k_mac_setup_prb_tmpl(arvif);
2052 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif,
2054 struct ath10k *ar = arvif->ar;
2057 ath10k_mac_vif_ap_csa_count_down(arvif);
2066 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2074 cancel_delayed_work(&arvif->connection_loss_work);
2089 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2090 struct ath10k *ar = arvif->ar;
2093 if (arvif->vdev_id != *vdev_id)
2096 if (!arvif->is_up)
2106 ieee80211_queue_delayed_work(hw, &arvif->connection_loss_work,
2120 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif,
2122 struct ieee80211_vif *vif = arvif->vif;
2124 if (!arvif->is_up)
2156 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2167 arg->vdev_id = arvif->vdev_id;
2169 arg->peer_flags |= arvif->ar->wmi.peer_flags->auth;
2232 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2250 ratemask &= arvif->bitrate_mask.control[band].legacy;
2295 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2313 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
2314 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
2338 if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) {
2396 struct ath10k_vif *arvif,
2425 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id,
2431 arvif->vdev_id, ret);
2435 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id,
2441 arvif->vdev_id, ret);
2450 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, sta->addr,
2455 arvif->vdev_id, ret);
2544 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2560 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
2651 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2653 switch (arvif->vdev_type) {
2656 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
2659 arg->peer_flags |= arvif->ar->wmi.peer_flags->apsd;
2665 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
2669 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
2677 arvif->ar->wmi.peer_flags->qos));
2718 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2729 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
2730 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
2809 static int ath10k_setup_peer_smps(struct ath10k *ar, struct ath10k_vif *arvif,
2824 return ath10k_wmi_peer_set_param(ar, arvif->vdev_id, addr,
2833 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2884 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, value);
2900 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2910 arvif->vdev_id, arvif->bssid, arvif->aid);
2917 bss_conf->bssid, arvif->vdev_id);
2931 bss_conf->bssid, arvif->vdev_id, ret);
2941 bss_conf->bssid, arvif->vdev_id, ret);
2945 ret = ath10k_setup_peer_smps(ar, arvif, bss_conf->bssid, &ht_cap);
2948 arvif->vdev_id, ret);
2955 arvif->vdev_id, bss_conf->bssid, ret);
2961 arvif->vdev_id, bss_conf->bssid, bss_conf->aid);
2963 WARN_ON(arvif->is_up);
2965 arvif->aid = bss_conf->aid;
2966 ether_addr_copy(arvif->bssid, bss_conf->bssid);
2973 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid);
2976 arvif->vdev_id, ret);
2980 arvif->is_up = true;
2986 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, arvif->bssid,
2990 arvif->bssid, arvif->vdev_id, ret);
2999 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3006 arvif->vdev_id, arvif->bssid);
3008 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
3011 arvif->vdev_id, ret);
3013 arvif->def_wep_key_idx = -1;
3018 arvif->vdev_id, ret);
3022 arvif->is_up = false;
3024 cancel_delayed_work_sync(&arvif->connection_loss_work);
3029 struct ath10k_vif *arvif)
3038 if (arvif->retry_long[i] || arvif->ampdu[i] ||
3039 arvif->rate_ctrl[i] || arvif->rtscts[i]) {
3042 arg.vdev_id = arvif->vdev_id;
3043 arg.retry_count = arvif->retry_long[i];
3044 arg.aggr_control = arvif->ampdu[i];
3045 arg.rate_ctrl = arvif->rate_ctrl[i];
3046 arg.rcode_flags = arvif->rate_code[i];
3048 if (arvif->rtscts[i])
3054 arg.rtscts_ctrl = arvif->rtscts[i];
3057 if (arvif->noack[i]) {
3058 arg.ack_policy = arvif->noack[i];
3095 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3104 sta->addr, arvif->vdev_id, ret);
3111 sta->addr, arvif->vdev_id, ret);
3119 ret = ath10k_setup_peer_smps(ar, arvif, sta->addr,
3123 arvif->vdev_id, ret);
3127 ret = ath10k_peer_assoc_qos_ap(ar, arvif, sta);
3130 sta->addr, arvif->vdev_id, ret);
3135 arvif->num_legacy_stations++;
3136 ret = ath10k_recalc_rtscts_prot(arvif);
3139 arvif->vdev_id, ret);
3145 if ((arvif->def_wep_key_idx != -1) && (!sta->tdls)) {
3146 ret = ath10k_install_peer_wep_keys(arvif, sta->addr);
3149 arvif->vdev_id, ret);
3158 return ath10k_new_peer_tid_config(ar, sta, arvif);
3165 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3171 arvif->num_legacy_stations--;
3172 ret = ath10k_recalc_rtscts_prot(arvif);
3175 arvif->vdev_id, ret);
3180 ret = ath10k_clear_peer_keys(arvif, sta->addr);
3183 arvif->vdev_id, ret);
3428 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3430 if (arvif->tx_paused)
3433 ieee80211_wake_queue(ar->hw, arvif->vdev_id);
3454 void ath10k_mac_vif_tx_lock(struct ath10k_vif *arvif, int reason)
3456 struct ath10k *ar = arvif->ar;
3461 arvif->tx_paused |= BIT(reason);
3462 ieee80211_stop_queue(ar->hw, arvif->vdev_id);
3465 void ath10k_mac_vif_tx_unlock(struct ath10k_vif *arvif, int reason)
3467 struct ath10k *ar = arvif->ar;
3472 arvif->tx_paused &= ~BIT(reason);
3477 if (arvif->tx_paused)
3480 ieee80211_wake_queue(ar->hw, arvif->vdev_id);
3483 static void ath10k_mac_vif_handle_tx_pause(struct ath10k_vif *arvif,
3487 struct ath10k *ar = arvif->ar;
3493 ath10k_mac_vif_tx_lock(arvif, pause_id);
3496 ath10k_mac_vif_tx_unlock(arvif, pause_id);
3501 action, arvif->vdev_id);
3515 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3518 if (arvif->vdev_id != arg->vdev_id)
3521 ath10k_mac_vif_handle_tx_pause(arvif, arg->pause_id, arg->action);
3678 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3686 if (arvif->u.ap.noa_data)
3687 if (!pskb_expand_head(skb, 0, arvif->u.ap.noa_len,
3689 skb_put_data(skb, arvif->u.ap.noa_data,
3690 arvif->u.ap.noa_len);
3706 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3723 if (arvif->noack[tid] == WMI_PEER_TID_CONFIG_NOACK)
3921 struct ath10k_vif *arvif;
3984 arvif = ath10k_get_arvif(ar, vdev_id);
3985 if (arvif) {
3986 vif = arvif->vif;
4586 struct ath10k_vif *arvif;
4608 list_for_each_entry(arvif, &ar->arvifs, list)
4609 ath10k_mac_vif_beacon_cleanup(arvif);
5214 struct ath10k_vif *arvif;
5219 list_for_each_entry(arvif, &ar->arvifs, list) {
5220 ret = ath10k_mac_vif_setup_ps(arvif);
5260 struct ath10k_vif *arvif;
5265 list_for_each_entry(arvif, &ar->arvifs, list) {
5267 if (arvif->txpower == INT_MIN)
5271 txpower = arvif->txpower;
5273 txpower = min(txpower, arvif->txpower);
5322 static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif)
5325 struct ath10k *ar = arvif->ar;
5359 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
5374 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5387 memset(arvif, 0, sizeof(*arvif));
5390 arvif->ar = ar;
5391 arvif->vif = vif;
5393 INIT_LIST_HEAD(&arvif->list);
5394 INIT_WORK(&arvif->ap_csa_work, ath10k_mac_vif_ap_csa_work);
5395 INIT_DELAYED_WORK(&arvif->connection_loss_work,
5398 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) {
5399 arvif->bitrate_mask.control[i].legacy = 0xffffffff;
5400 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff,
5401 sizeof(arvif->bitrate_mask.control[i].ht_mcs));
5402 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff,
5403 sizeof(arvif->bitrate_mask.control[i].vht_mcs));
5422 arvif->vdev_id = bit;
5423 arvif->vdev_subtype =
5428 arvif->vdev_type = WMI_VDEV_TYPE_STA;
5429 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5434 arvif->vdev_type = WMI_VDEV_TYPE_STA;
5436 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5440 arvif->vdev_type = WMI_VDEV_TYPE_IBSS;
5444 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5451 arvif->vdev_type = WMI_VDEV_TYPE_AP;
5454 arvif->vdev_type = WMI_VDEV_TYPE_AP;
5457 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5461 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR;
5473 vif->cab_queue = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1);
5475 vif->hw_queue[i] = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1);
5497 arvif->beacon_buf = kmalloc(IEEE80211_MAX_FRAME_LEN,
5507 arvif->beacon_paddr = DMA_MAPPING_ERROR;
5509 arvif->beacon_buf =
5512 &arvif->beacon_paddr,
5515 if (!arvif->beacon_buf) {
5523 arvif->nohwcrypt = true;
5525 if (arvif->nohwcrypt &&
5533 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype,
5534 arvif->beacon_buf ? "single-buf" : "per-skb");
5536 ret = ath10k_wmi_vdev_create(ar, arvif->vdev_id, arvif->vdev_type,
5537 arvif->vdev_subtype, vif->addr);
5540 arvif->vdev_id, ret);
5547 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5551 arvif->vdev_id, ret);
5555 ar->free_vdev_map &= ~(1LL << arvif->vdev_id);
5557 list_add(&arvif->list, &ar->arvifs);
5563 ret = ath10k_mac_vif_disable_keepalive(arvif);
5566 arvif->vdev_id, ret);
5570 arvif->def_wep_key_idx = -1;
5573 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5578 arvif->vdev_id, ret);
5589 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5593 arvif->vdev_id, ar->cfg_tx_chainmask, nss,
5599 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5600 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5601 ret = ath10k_peer_create(ar, vif, NULL, arvif->vdev_id,
5605 arvif->vdev_id, ret);
5611 peer = ath10k_peer_find(ar, arvif->vdev_id, vif->addr);
5614 vif->addr, arvif->vdev_id);
5620 arvif->peer_id = find_first_bit(peer->peer_ids,
5625 arvif->peer_id = HTT_INVALID_PEERID;
5628 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
5629 ret = ath10k_mac_set_kickout(arvif);
5632 arvif->vdev_id, ret);
5637 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) {
5640 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
5644 arvif->vdev_id, ret);
5648 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif);
5651 arvif->vdev_id, ret);
5655 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif);
5658 arvif->vdev_id, ret);
5663 ret = ath10k_mac_set_txbf_conf(arvif);
5666 arvif->vdev_id, ret);
5670 ret = ath10k_mac_set_rts(arvif, ar->hw->wiphy->rts_threshold);
5673 arvif->vdev_id, ret);
5677 arvif->txpower = vif->bss_conf.txpower;
5686 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5687 arvif->ftm_responder);
5692 arvif->vdev_id, ret);
5696 ar->monitor_arvif = arvif;
5706 ieee80211_wake_queue(ar->hw, arvif->vdev_id);
5713 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5714 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5715 ath10k_wmi_peer_delete(ar, arvif->vdev_id, vif->addr);
5716 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id,
5721 ath10k_wmi_vdev_delete(ar, arvif->vdev_id);
5722 ar->free_vdev_map |= 1LL << arvif->vdev_id;
5724 list_del(&arvif->list);
5728 if (arvif->beacon_buf) {
5730 kfree(arvif->beacon_buf);
5733 arvif->beacon_buf,
5734 arvif->beacon_paddr);
5735 arvif->beacon_buf = NULL;
5743 static void ath10k_mac_vif_tx_unlock_all(struct ath10k_vif *arvif)
5748 ath10k_mac_vif_tx_unlock(arvif, i);
5755 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5761 cancel_work_sync(&arvif->ap_csa_work);
5762 cancel_delayed_work_sync(&arvif->connection_loss_work);
5766 ret = ath10k_spectral_vif_stop(arvif);
5769 arvif->vdev_id, ret);
5771 ar->free_vdev_map |= 1LL << arvif->vdev_id;
5773 list_del(&arvif->list);
5776 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5777 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5778 ret = ath10k_wmi_peer_delete(arvif->ar, arvif->vdev_id,
5782 arvif->vdev_id, ret);
5784 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id,
5786 kfree(arvif->u.ap.noa_data);
5790 arvif->vdev_id);
5792 ret = ath10k_wmi_vdev_delete(ar, arvif->vdev_id);
5795 arvif->vdev_id, ret);
5809 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5810 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5811 ret = ath10k_wait_for_peer_deleted(ar, arvif->vdev_id,
5815 arvif->vdev_id, ret);
5830 vif->addr, arvif->vdev_id);
5838 ath10k_mac_vif_beacon_cleanup(arvif);
5841 ath10k_peer_cleanup(ar, arvif->vdev_id);
5856 ath10k_mac_vif_tx_unlock_all(arvif);
5902 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5923 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5935 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5946 ath10k_control_ibss(arvif, info, vif->addr);
5949 arvif->beacon_interval = info->beacon_int;
5951 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5952 arvif->beacon_interval);
5955 arvif->vdev_id, arvif->beacon_interval);
5959 arvif->vdev_id, ret);
5965 arvif->vdev_id);
5972 arvif->vdev_id, ret);
5974 ret = ath10k_mac_setup_bcn_tmpl(arvif);
5981 strncpy(arvif->u.ap.ssid, "mesh",
5982 sizeof(arvif->u.ap.ssid));
5983 arvif->u.ap.ssid_len = 4;
5988 ret = ath10k_mac_setup_prb_tmpl(arvif);
5991 arvif->vdev_id, ret);
5995 arvif->dtim_period = info->dtim_period;
5999 arvif->vdev_id, arvif->dtim_period);
6002 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6003 arvif->dtim_period);
6006 arvif->vdev_id, ret);
6011 arvif->u.ap.ssid_len = info->ssid_len;
6013 memcpy(arvif->u.ap.ssid, info->ssid, info->ssid_len);
6014 arvif->u.ap.hidden_ssid = info->hidden_ssid;
6018 ether_addr_copy(arvif->bssid, info->bssid);
6021 arvif->ftm_responder != info->ftm_responder &&
6023 arvif->ftm_responder = info->ftm_responder;
6026 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6027 arvif->ftm_responder);
6031 arvif->vdev_id, arvif->ftm_responder, ret);
6035 ath10k_control_beaconing(arvif, info);
6038 arvif->use_cts_prot = info->use_cts_prot;
6040 ret = ath10k_recalc_rtscts_prot(arvif);
6043 arvif->vdev_id, ret);
6045 if (ath10k_mac_can_set_cts_prot(arvif)) {
6046 ret = ath10k_mac_set_cts_prot(arvif);
6049 arvif->vdev_id, ret);
6061 arvif->vdev_id, slottime);
6064 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6068 arvif->vdev_id, ret);
6079 arvif->vdev_id, preamble);
6082 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6086 arvif->vdev_id, ret);
6106 arvif->vdev_id, info->txpower);
6108 arvif->txpower = info->txpower;
6115 arvif->ps = vif->bss_conf.ps;
6120 arvif->vdev_id, ret);
6124 !ath10k_mac_vif_chan(arvif->vif, &def)) {
6146 arvif->vdev_id, rate);
6149 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
6154 arvif->vdev_id, ret);
6157 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
6162 arvif->vdev_id, ret);
6166 !ath10k_mac_vif_chan(arvif->vif, &def))
6196 struct ieee80211_vif *sta_vif = arsta->arvif->vif;
6220 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6241 ar->scan.vdev_id = arvif->vdev_id;
6257 arg.vdev_id = arvif->vdev_id;
6332 struct ath10k_vif *arvif,
6336 u32 vdev_param = arvif->ar->wmi.vdev_param->def_keyid;
6350 if (arvif->vdev_type != WMI_VDEV_TYPE_AP &&
6351 arvif->vdev_type != WMI_VDEV_TYPE_IBSS)
6366 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6370 arvif->vdev_id, ret);
6378 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6396 if (arvif->nohwcrypt)
6410 } else if (arvif->vdev_type == WMI_VDEV_TYPE_STA) {
6420 arvif->wep_keys[key->keyidx] = key;
6422 arvif->wep_keys[key->keyidx] = NULL;
6429 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr);
6451 ath10k_clear_vdev_key(arvif, key);
6459 ath10k_mac_vif_update_wep_key(arvif, key);
6467 if (cmd == SET_KEY && arvif->def_wep_key_idx == -1)
6471 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags);
6475 arvif->vdev_id, peer_addr, ret);
6487 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags2);
6491 arvif->vdev_id, peer_addr, ret);
6492 ret2 = ath10k_install_key(arvif, key, DISABLE_KEY,
6497 arvif->vdev_id, peer_addr, ret2);
6503 ath10k_set_key_h_def_keyidx(ar, arvif, cmd, key);
6506 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr);
6517 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6520 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, peer_addr,
6533 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6536 mutex_lock(&arvif->ar->conf_mutex);
6538 if (arvif->ar->state != ATH10K_STATE_ON)
6542 arvif->vdev_id, keyidx);
6544 ret = ath10k_wmi_vdev_set_param(arvif->ar,
6545 arvif->vdev_id,
6546 arvif->ar->wmi.vdev_param->def_keyid,
6551 arvif->vdev_id,
6556 arvif->def_wep_key_idx = keyidx;
6559 mutex_unlock(&arvif->ar->conf_mutex);
6565 struct ath10k_vif *arvif;
6577 arvif = arsta->arvif;
6578 ar = arvif->ar;
6580 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def)))
6584 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
6585 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
6611 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6619 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6630 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6641 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6652 err = ath10k_station_assoc(ar, arvif->vif, sta, true);
6662 static int ath10k_mac_inc_num_stations(struct ath10k_vif *arvif,
6665 struct ath10k *ar = arvif->ar;
6669 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls)
6680 static void ath10k_mac_dec_num_stations(struct ath10k_vif *arvif,
6683 struct ath10k *ar = arvif->ar;
6687 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls)
6698 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6715 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6909 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6935 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) {
6944 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) {
6988 if ((arvif->retry_long[arg->tid] ||
6989 arvif->rate_code[arg->tid] ||
6990 arvif->ampdu[arg->tid] ==
6995 arvif->noack[arg->tid] = arg->ack_policy;
6996 arvif->ampdu[arg->tid] = arg->aggr_control;
6997 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl;
7002 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK)
7005 arvif->retry_long[arg->tid] = arg->retry_count;
7009 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK)
7012 arvif->ampdu[arg->tid] = arg->aggr_control;
7017 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) {
7021 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl;
7022 arvif->rate_code[arg->tid] = arg->rcode_flags;
7027 arvif->rtscts[arg->tid] = arg->rtscts_ctrl;
7032 arvif->tid_conf_changed[arg->tid] |= changed;
7119 struct ath10k_vif *arvif,
7126 arg.vdev_id = arvif->vdev_id;
7147 if (!arvif->tids_rst) {
7155 arvif->retry_long[i] = 0;
7156 arvif->noack[i] = 0;
7157 arvif->ampdu[i] = 0;
7158 arvif->rate_code[i] = 0;
7159 arvif->rate_ctrl[i] = 0;
7160 arvif->rtscts[i] = 0;
7174 struct ath10k_vif *arvif;
7183 arvif = arsta->arvif;
7184 ar = arvif->ar;
7188 if (arvif->tids_rst) {
7189 ret = ath10k_mac_reset_tid_config(ar, sta, arvif,
7190 arvif->tids_rst);
7198 changed = arvif->tid_conf_changed[i];
7205 arg.ack_policy = arvif->noack[i];
7206 arg.aggr_control = arvif->ampdu[i];
7207 arg.rate_ctrl = arvif->rate_ctrl[i];
7214 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) {
7217 arg.retry_count = arvif->retry_long[i];
7225 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) {
7228 arg.aggr_control = arvif->ampdu[i];
7235 nss = ATH10K_HW_NSS(arvif->rate_code[i]);
7237 arvif->rate_code[i],
7240 arvif->rate_ctrl[i] > WMI_TID_CONFIG_RATE_CONTROL_AUTO) {
7248 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) {
7252 arg.rate_ctrl = arvif->rate_ctrl[i];
7253 arg.rcode_flags = arvif->rate_code[i];
7263 arg.rtscts_ctrl = arvif->rtscts[i] - 1;
7295 struct ieee80211_vif *sta_vif = arsta->arvif->vif;
7310 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7319 arsta->arvif = arvif;
7347 arvif->vdev_id, sta->addr,
7356 arvif->vdev_id,
7364 ret = ath10k_mac_inc_num_stations(arvif, sta);
7375 ath10k_mac_dec_num_stations(arvif, sta);
7381 ret = ath10k_peer_create(ar, vif, sta, arvif->vdev_id,
7385 sta->addr, arvif->vdev_id, ret);
7386 ath10k_mac_dec_num_stations(arvif, sta);
7393 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr);
7396 vif->addr, arvif->vdev_id);
7398 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
7399 ath10k_mac_dec_num_stations(arvif, sta);
7413 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id,
7417 arvif->vdev_id, ret);
7418 ath10k_peer_delete(ar, arvif->vdev_id,
7420 ath10k_mac_dec_num_stations(arvif, sta);
7425 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta,
7430 sta->addr, arvif->vdev_id, ret);
7431 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
7432 ath10k_mac_dec_num_stations(arvif, sta);
7437 ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id,
7447 arvif->vdev_id, sta->addr, sta);
7450 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id,
7459 ret = ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
7462 sta->addr, arvif->vdev_id, ret);
7464 ath10k_mac_dec_num_stations(arvif, sta);
7474 sta->addr, peer, i, arvif->vdev_id);
7500 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id,
7504 arvif->vdev_id, ret);
7520 sta->addr, arvif->vdev_id, ret);
7533 sta->addr, arvif->vdev_id, ret);
7537 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta,
7541 sta->addr, arvif->vdev_id, ret);
7556 sta->addr, arvif->vdev_id, ret);
7566 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7574 if (arvif->vdev_type != WMI_VDEV_TYPE_STA)
7605 arvif->u.sta.uapsd |= value;
7607 arvif->u.sta.uapsd &= ~value;
7609 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
7611 arvif->u.sta.uapsd);
7617 if (arvif->u.sta.uapsd)
7622 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
7628 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif);
7631 arvif->vdev_id, ret);
7635 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif);
7638 arvif->vdev_id, ret);
7656 ret = ath10k_wmi_vdev_sta_uapsd(ar, arvif->vdev_id,
7657 arvif->bssid, &arg, 1);
7674 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7682 p = &arvif->wmm_params.ac_vo;
7685 p = &arvif->wmm_params.ac_vi;
7688 p = &arvif->wmm_params.ac_be;
7691 p = &arvif->wmm_params.ac_bk;
7712 ret = ath10k_wmi_vdev_wmm_conf(ar, arvif->vdev_id,
7713 &arvif->wmm_params);
7716 arvif->vdev_id, ret);
7723 ret = ath10k_wmi_pdev_set_wmm_params(ar, &arvif->wmm_params);
7746 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7766 ar->scan.vdev_id = arvif->vdev_id;
7786 arg.vdev_id = arvif->vdev_id;
7855 struct ath10k_vif *arvif;
7859 list_for_each_entry(arvif, &ar->arvifs, list) {
7861 arvif->vdev_id, value);
7863 ret = ath10k_mac_set_rts(arvif, value);
7866 arvif->vdev_id, ret);
7925 struct ath10k_vif *arvif;
7931 list_for_each_entry(arvif, &ar->arvifs, list) {
7932 if (arvif->vdev_type == WMI_VDEV_TYPE_STA)
7933 ath10k_wmi_peer_flush(ar, arvif->vdev_id,
7934 arvif->bssid, bitmap);
8099 static int ath10k_mac_set_fixed_rate_params(struct ath10k_vif *arvif,
8102 struct ath10k *ar = arvif->ar;
8109 arvif->vdev_id, rate, nss, sgi);
8112 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate);
8120 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, nss);
8127 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, sgi);
8134 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, ldpc);
8176 struct ath10k_vif *arvif,
8180 u8 rate = arvif->vht_pfr;
8183 if (!sta->vht_cap.vht_supported || arvif->vht_num_rates != 1)
8186 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
8198 struct ath10k_vif *arvif = data;
8200 struct ath10k *ar = arvif->ar;
8202 if (arsta->arvif != arvif)
8205 if (ath10k_mac_set_vht_bitrate_mask_fixup(ar, arvif, sta))
8218 struct ath10k_vif *arvif = data;
8220 struct ath10k *ar = arvif->ar;
8224 if (arsta->arvif != arvif || !sta->vht_cap.vht_supported)
8227 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
8239 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8241 struct ath10k *ar = arvif->ar;
8273 arvif);
8284 arvif->vdev_id, ret);
8320 arvif->bitrate_mask = *mask;
8321 arvif->vht_num_rates = vht_num_rates;
8322 arvif->vht_pfr = vht_pfr;
8325 arvif);
8332 ret = ath10k_mac_set_fixed_rate_params(arvif, rate, nss, sgi, ldpc);
8335 arvif->vdev_id, ret);
8352 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8358 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr);
8362 sta->addr, arvif->vdev_id);
8435 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8447 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
8460 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8466 arvif->vdev_id, sta->addr, tid, action);
8545 struct ath10k_vif *arvif;
8558 arvif = (void *)vifs[i].vif->drv_priv;
8562 arvif->vdev_id,
8568 if (WARN_ON(!arvif->is_started))
8571 if (WARN_ON(!arvif->is_up))
8574 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
8577 arvif->vdev_id, ret);
8591 arvif = (void *)vifs[i].vif->drv_priv;
8593 if (WARN_ON(!arvif->is_started))
8596 if (WARN_ON(!arvif->is_up))
8599 ret = ath10k_mac_setup_bcn_tmpl(arvif);
8604 ret = ath10k_mac_setup_prb_tmpl(arvif);
8609 ret = ath10k_vdev_restart(arvif, &vifs[i].new_ctx->def);
8612 arvif->vdev_id, ret);
8616 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
8617 arvif->bssid);
8620 arvif->vdev_id, ret);
8776 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8783 ctx, arvif->vdev_id);
8785 if (WARN_ON(arvif->is_started)) {
8790 ret = ath10k_vdev_start(arvif, &ctx->def);
8793 arvif->vdev_id, vif->addr,
8798 arvif->is_started = true;
8800 ret = ath10k_mac_vif_setup_ps(arvif);
8803 arvif->vdev_id, ret);
8808 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, 0, vif->addr);
8811 arvif->vdev_id, ret);
8815 arvif->is_up = true;
8818 if (ath10k_mac_can_set_cts_prot(arvif)) {
8819 ret = ath10k_mac_set_cts_prot(arvif);
8822 arvif->vdev_id, ret);
8840 ath10k_vdev_stop(arvif);
8841 arvif->is_started = false;
8842 ath10k_mac_vif_setup_ps(arvif);
8855 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8862 ctx, arvif->vdev_id);
8864 WARN_ON(!arvif->is_started);
8867 WARN_ON(!arvif->is_up);
8869 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
8872 arvif->vdev_id, ret);
8874 arvif->is_up = false;
8877 ret = ath10k_vdev_stop(arvif);
8880 arvif->vdev_id, ret);
8882 arvif->is_started = false;
9097 arsta->arvif->vdev_type == WMI_VDEV_TYPE_STA))
9101 peer = ath10k_peer_find(ar, arsta->arvif->vdev_id, sta->addr);
9109 arsta->arvif->vdev_id,
9111 arsta->arvif->bssid,
9151 struct ath10k *ar = arsta->arvif->ar;
9192 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9198 arg.vdev_id = arvif->vdev_id;
9200 arvif->tids_rst = 0;
9201 memset(arvif->tid_conf_changed, 0, sizeof(arvif->tid_conf_changed));
9215 arvif->tids_rst = 0;
9232 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9240 arvif->tids_rst = 0;
9241 ret = ath10k_mac_reset_tid_config(ar, sta, arvif, tids);
9245 arvif->tids_rst = tids;
9626 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9628 if (arvif->vdev_id == arvif_iter->vdev_id)
9629 arvif_iter->arvif = arvif;
9645 if (!arvif_iter.arvif) {
9650 return arvif_iter.arvif;