Lines Matching refs:arvif

235 static int ath10k_send_key(struct ath10k_vif *arvif,
240 struct ath10k *ar = arvif->ar;
242 .vdev_id = arvif->vdev_id,
250 lockdep_assert_held(&arvif->ar->conf_mutex);
293 return ath10k_wmi_vdev_install_key(arvif->ar, &arg);
296 static int ath10k_install_key(struct ath10k_vif *arvif,
301 struct ath10k *ar = arvif->ar;
309 if (arvif->nohwcrypt)
312 ret = ath10k_send_key(arvif, key, cmd, macaddr, flags);
323 static int ath10k_install_peer_wep_keys(struct ath10k_vif *arvif,
326 struct ath10k *ar = arvif->ar;
334 if (WARN_ON(arvif->vif->type != NL80211_IFTYPE_AP &&
335 arvif->vif->type != NL80211_IFTYPE_ADHOC &&
336 arvif->vif->type != NL80211_IFTYPE_MESH_POINT))
340 peer = ath10k_peer_find(ar, arvif->vdev_id, addr);
346 for (i = 0; i < ARRAY_SIZE(arvif->wep_keys); i++) {
347 if (arvif->wep_keys[i] == NULL)
350 switch (arvif->vif->type) {
354 if (arvif->def_wep_key_idx == i)
357 ret = ath10k_install_key(arvif, arvif->wep_keys[i],
363 ret = ath10k_install_key(arvif, arvif->wep_keys[i],
369 ret = ath10k_install_key(arvif, arvif->wep_keys[i],
380 peer->keys[i] = arvif->wep_keys[i];
392 if (arvif->vif->type != NL80211_IFTYPE_ADHOC)
395 if (arvif->def_wep_key_idx == -1)
398 ret = ath10k_wmi_vdev_set_param(arvif->ar,
399 arvif->vdev_id,
400 arvif->ar->wmi.vdev_param->def_keyid,
401 arvif->def_wep_key_idx);
404 arvif->vdev_id, ret);
411 static int ath10k_clear_peer_keys(struct ath10k_vif *arvif,
414 struct ath10k *ar = arvif->ar;
424 peer = ath10k_peer_find(ar, arvif->vdev_id, addr);
435 ret = ath10k_install_key(arvif, peer->keys[i],
477 static int ath10k_clear_vdev_key(struct ath10k_vif *arvif,
480 struct ath10k *ar = arvif->ar;
513 ret = ath10k_install_key(arvif, key, DISABLE_KEY, addr, flags);
525 static int ath10k_mac_vif_update_wep_key(struct ath10k_vif *arvif,
528 struct ath10k *ar = arvif->ar;
535 if (ether_addr_equal(peer->addr, arvif->vif->addr))
538 if (ether_addr_equal(peer->addr, arvif->bssid))
545 arvif->vdev_id, key->keyidx);
547 ret = ath10k_install_peer_wep_keys(arvif, peer->addr);
550 arvif->vdev_id, peer->addr, ret);
731 struct ath10k_vif *arvif;
741 list_for_each_entry(arvif, &ar->arvifs, list)
782 static int ath10k_mac_set_kickout(struct ath10k_vif *arvif)
784 struct ath10k *ar = arvif->ar;
793 arvif->vdev_id, ret);
798 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param,
802 arvif->vdev_id, ret);
807 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param,
811 arvif->vdev_id, ret);
816 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param,
820 arvif->vdev_id, ret);
827 static int ath10k_mac_set_rts(struct ath10k_vif *arvif, u32 value)
829 struct ath10k *ar = arvif->ar;
833 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, value);
971 void ath10k_mac_vif_beacon_free(struct ath10k_vif *arvif)
973 struct ath10k *ar = arvif->ar;
977 if (!arvif->beacon)
980 if (!arvif->beacon_buf)
981 dma_unmap_single(ar->dev, ATH10K_SKB_CB(arvif->beacon)->paddr,
982 arvif->beacon->len, DMA_TO_DEVICE);
984 if (WARN_ON(arvif->beacon_state != ATH10K_BEACON_SCHEDULED &&
985 arvif->beacon_state != ATH10K_BEACON_SENT))
988 dev_kfree_skb_any(arvif->beacon);
990 arvif->beacon = NULL;
991 arvif->beacon_state = ATH10K_BEACON_SCHEDULED;
994 static void ath10k_mac_vif_beacon_cleanup(struct ath10k_vif *arvif)
996 struct ath10k *ar = arvif->ar;
1000 ath10k_mac_vif_beacon_free(arvif);
1002 if (arvif->beacon_buf) {
1004 kfree(arvif->beacon_buf);
1007 arvif->beacon_buf,
1008 arvif->beacon_paddr);
1009 arvif->beacon_buf = NULL;
1310 static bool ath10k_mac_can_set_cts_prot(struct ath10k_vif *arvif)
1312 struct ath10k *ar = arvif->ar;
1316 if (!arvif->is_started) {
1324 static int ath10k_mac_set_cts_prot(struct ath10k_vif *arvif)
1326 struct ath10k *ar = arvif->ar;
1334 arvif->vdev_id, arvif->use_cts_prot);
1336 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
1337 arvif->use_cts_prot ? 1 : 0);
1340 static int ath10k_recalc_rtscts_prot(struct ath10k_vif *arvif)
1342 struct ath10k *ar = arvif->ar;
1351 if (arvif->num_legacy_stations > 0)
1359 arvif->vdev_id, rts_cts);
1361 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
1449 static int ath10k_vdev_stop(struct ath10k_vif *arvif)
1451 struct ath10k *ar = arvif->ar;
1459 ret = ath10k_wmi_vdev_stop(ar, arvif->vdev_id);
1462 arvif->vdev_id, ret);
1469 arvif->vdev_id, ret);
1483 static int ath10k_vdev_start_restart(struct ath10k_vif *arvif,
1487 struct ath10k *ar = arvif->ar;
1496 arg.vdev_id = arvif->vdev_id;
1497 arg.dtim_period = arvif->dtim_period;
1498 arg.bcn_intval = arvif->beacon_interval;
1510 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
1511 arg.ssid = arvif->u.ap.ssid;
1512 arg.ssid_len = arvif->u.ap.ssid_len;
1513 arg.hidden_ssid = arvif->u.ap.hidden_ssid;
1518 } else if (arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
1519 arg.ssid = arvif->vif->cfg.ssid;
1520 arg.ssid_len = arvif->vif->cfg.ssid_len;
1553 static int ath10k_vdev_start(struct ath10k_vif *arvif,
1556 return ath10k_vdev_start_restart(arvif, def, false);
1559 static int ath10k_vdev_restart(struct ath10k_vif *arvif,
1562 return ath10k_vdev_start_restart(arvif, def, true);
1565 static int ath10k_mac_setup_bcn_p2p_ie(struct ath10k_vif *arvif,
1568 struct ath10k *ar = arvif->ar;
1573 if (arvif->vif->type != NL80211_IFTYPE_AP || !arvif->vif->p2p)
1584 ret = ath10k_wmi_p2p_go_bcn_ie(ar, arvif->vdev_id, p2p_ie);
1587 arvif->vdev_id, ret);
1624 static int ath10k_mac_setup_bcn_tmpl(struct ath10k_vif *arvif)
1626 struct ath10k *ar = arvif->ar;
1628 struct ieee80211_vif *vif = arvif->vif;
1636 if (arvif->vdev_type != WMI_VDEV_TYPE_AP &&
1637 arvif->vdev_type != WMI_VDEV_TYPE_IBSS)
1646 ret = ath10k_mac_setup_bcn_p2p_ie(arvif, bcn);
1661 ret = ath10k_wmi_bcn_tmpl(ar, arvif->vdev_id, offs.tim_offset, bcn, 0,
1674 static int ath10k_mac_setup_prb_tmpl(struct ath10k_vif *arvif)
1676 struct ath10k *ar = arvif->ar;
1678 struct ieee80211_vif *vif = arvif->vif;
1685 if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
1698 ret = ath10k_wmi_prb_tmpl(ar, arvif->vdev_id, prb);
1710 static int ath10k_mac_vif_fix_hidden_ssid(struct ath10k_vif *arvif)
1712 struct ath10k *ar = arvif->ar;
1734 if (WARN_ON(!arvif->is_started))
1737 if (WARN_ON(!arvif->is_up))
1740 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def)))
1743 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
1746 arvif->vdev_id, ret);
1754 ret = ath10k_mac_setup_bcn_tmpl(arvif);
1760 ret = ath10k_mac_setup_prb_tmpl(arvif);
1766 ret = ath10k_vdev_restart(arvif, &def);
1769 arvif->vdev_id, ret);
1773 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
1774 arvif->bssid);
1777 arvif->vdev_id, ret);
1784 static void ath10k_control_beaconing(struct ath10k_vif *arvif,
1787 struct ath10k *ar = arvif->ar;
1790 lockdep_assert_held(&arvif->ar->conf_mutex);
1793 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
1796 arvif->vdev_id, ret);
1798 arvif->is_up = false;
1800 spin_lock_bh(&arvif->ar->data_lock);
1801 ath10k_mac_vif_beacon_free(arvif);
1802 spin_unlock_bh(&arvif->ar->data_lock);
1807 arvif->tx_seq_no = 0x1000;
1809 arvif->aid = 0;
1810 ether_addr_copy(arvif->bssid, info->bssid);
1812 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
1813 arvif->bssid);
1816 arvif->vdev_id, ret);
1820 arvif->is_up = true;
1822 ret = ath10k_mac_vif_fix_hidden_ssid(arvif);
1825 arvif->vdev_id, ret);
1829 ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vdev %d up\n", arvif->vdev_id);
1832 static void ath10k_control_ibss(struct ath10k_vif *arvif,
1835 struct ath10k *ar = arvif->ar;
1839 lockdep_assert_held(&arvif->ar->conf_mutex);
1842 if (is_zero_ether_addr(arvif->bssid))
1845 eth_zero_addr(arvif->bssid);
1850 vdev_param = arvif->ar->wmi.vdev_param->atim_window;
1851 ret = ath10k_wmi_vdev_set_param(arvif->ar, arvif->vdev_id, vdev_param,
1855 arvif->vdev_id, ret);
1858 static int ath10k_mac_vif_recalc_ps_wake_threshold(struct ath10k_vif *arvif)
1860 struct ath10k *ar = arvif->ar;
1865 lockdep_assert_held(&arvif->ar->conf_mutex);
1867 if (arvif->u.sta.uapsd)
1873 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param, value);
1876 value, arvif->vdev_id, ret);
1883 static int ath10k_mac_vif_recalc_ps_poll_count(struct ath10k_vif *arvif)
1885 struct ath10k *ar = arvif->ar;
1890 lockdep_assert_held(&arvif->ar->conf_mutex);
1892 if (arvif->u.sta.uapsd)
1898 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
1902 value, arvif->vdev_id, ret);
1911 struct ath10k_vif *arvif;
1916 list_for_each_entry(arvif, &ar->arvifs, list)
1917 if (arvif->is_started)
1923 static int ath10k_mac_vif_setup_ps(struct ath10k_vif *arvif)
1925 struct ath10k *ar = arvif->ar;
1926 struct ieee80211_vif *vif = arvif->vif;
1934 lockdep_assert_held(&arvif->ar->conf_mutex);
1936 if (arvif->vif->type != NL80211_IFTYPE_STATION)
1939 enable_ps = arvif->ps;
1945 arvif->vdev_id);
1949 if (!arvif->is_started) {
1967 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id, param,
1971 arvif->vdev_id, ret);
1979 arvif->vdev_id, psmode ? "enable" : "disable");
1981 ret = ath10k_wmi_set_psmode(ar, arvif->vdev_id, psmode);
1984 psmode, arvif->vdev_id, ret);
1991 static int ath10k_mac_vif_disable_keepalive(struct ath10k_vif *arvif)
1993 struct ath10k *ar = arvif->ar;
1997 lockdep_assert_held(&arvif->ar->conf_mutex);
1999 if (arvif->vdev_type != WMI_VDEV_TYPE_STA)
2008 arg.vdev_id = arvif->vdev_id;
2016 arvif->vdev_id, ret);
2023 static void ath10k_mac_vif_ap_csa_count_down(struct ath10k_vif *arvif)
2025 struct ath10k *ar = arvif->ar;
2026 struct ieee80211_vif *vif = arvif->vif;
2029 lockdep_assert_held(&arvif->ar->conf_mutex);
2034 if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
2040 if (!arvif->is_up)
2046 ret = ath10k_mac_setup_bcn_tmpl(arvif);
2051 ret = ath10k_mac_setup_prb_tmpl(arvif);
2062 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif,
2064 struct ath10k *ar = arvif->ar;
2067 ath10k_mac_vif_ap_csa_count_down(arvif);
2076 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2084 cancel_delayed_work(&arvif->connection_loss_work);
2099 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2100 struct ath10k *ar = arvif->ar;
2103 if (arvif->vdev_id != *vdev_id)
2106 if (!arvif->is_up)
2116 ieee80211_queue_delayed_work(hw, &arvif->connection_loss_work,
2130 struct ath10k_vif *arvif = container_of(work, struct ath10k_vif,
2132 struct ieee80211_vif *vif = arvif->vif;
2134 if (!arvif->is_up)
2166 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2177 arg->vdev_id = arvif->vdev_id;
2179 arg->peer_flags |= arvif->ar->wmi.peer_flags->auth;
2244 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2262 ratemask &= arvif->bitrate_mask.control[band].legacy;
2307 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2325 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
2326 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
2350 if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) {
2409 struct ath10k_vif *arvif,
2438 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id,
2444 arvif->vdev_id, ret);
2448 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id,
2454 arvif->vdev_id, ret);
2463 ret = ath10k_wmi_set_ap_ps_param(ar, arvif->vdev_id, sta->addr,
2468 arvif->vdev_id, ret);
2557 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2573 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
2664 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2666 switch (arvif->vdev_type) {
2669 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
2672 arg->peer_flags |= arvif->ar->wmi.peer_flags->apsd;
2678 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
2682 arg->peer_flags |= arvif->ar->wmi.peer_flags->qos;
2690 arvif->ar->wmi.peer_flags->qos));
2733 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2744 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
2745 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
2824 static int ath10k_setup_peer_smps(struct ath10k *ar, struct ath10k_vif *arvif,
2839 return ath10k_wmi_peer_set_param(ar, arvif->vdev_id, addr,
2848 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2899 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, param, value);
2911 struct ath10k_vif *arvif;
2913 list_for_each_entry(arvif, &ar->arvifs, list) {
2914 if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA)
2968 struct ath10k_vif *arvif;
2973 list_for_each_entry(arvif, &ar->arvifs, list) {
2975 if (arvif->txpower == INT_MIN)
2979 txpower = arvif->txpower;
2981 txpower = min(txpower, arvif->txpower);
3005 /* if connected, then arvif->txpower must be valid */
3067 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3077 arvif->vdev_id, arvif->bssid, arvif->aid);
3084 bss_conf->bssid, arvif->vdev_id);
3098 bss_conf->bssid, arvif->vdev_id, ret);
3108 bss_conf->bssid, arvif->vdev_id, ret);
3112 ret = ath10k_setup_peer_smps(ar, arvif, bss_conf->bssid, &ht_cap);
3115 arvif->vdev_id, ret);
3122 arvif->vdev_id, bss_conf->bssid, ret);
3128 arvif->vdev_id, bss_conf->bssid, vif->cfg.aid);
3130 WARN_ON(arvif->is_up);
3132 arvif->aid = vif->cfg.aid;
3133 ether_addr_copy(arvif->bssid, bss_conf->bssid);
3140 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid);
3143 arvif->vdev_id, ret);
3147 arvif->is_up = true;
3155 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, arvif->bssid,
3159 arvif->bssid, arvif->vdev_id, ret);
3168 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3175 arvif->vdev_id, arvif->bssid);
3177 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
3180 arvif->vdev_id, ret);
3182 arvif->def_wep_key_idx = -1;
3187 arvif->vdev_id, ret);
3191 arvif->is_up = false;
3195 cancel_delayed_work_sync(&arvif->connection_loss_work);
3200 struct ath10k_vif *arvif)
3209 if (arvif->retry_long[i] || arvif->ampdu[i] ||
3210 arvif->rate_ctrl[i] || arvif->rtscts[i]) {
3213 arg.vdev_id = arvif->vdev_id;
3214 arg.retry_count = arvif->retry_long[i];
3215 arg.aggr_control = arvif->ampdu[i];
3216 arg.rate_ctrl = arvif->rate_ctrl[i];
3217 arg.rcode_flags = arvif->rate_code[i];
3219 if (arvif->rtscts[i])
3225 arg.rtscts_ctrl = arvif->rtscts[i];
3228 if (arvif->noack[i]) {
3229 arg.ack_policy = arvif->noack[i];
3266 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3275 sta->addr, arvif->vdev_id, ret);
3282 sta->addr, arvif->vdev_id, ret);
3290 ret = ath10k_setup_peer_smps(ar, arvif, sta->addr,
3294 arvif->vdev_id, ret);
3298 ret = ath10k_peer_assoc_qos_ap(ar, arvif, sta);
3301 sta->addr, arvif->vdev_id, ret);
3306 arvif->num_legacy_stations++;
3307 ret = ath10k_recalc_rtscts_prot(arvif);
3310 arvif->vdev_id, ret);
3316 if ((arvif->def_wep_key_idx != -1) && (!sta->tdls)) {
3317 ret = ath10k_install_peer_wep_keys(arvif, sta->addr);
3320 arvif->vdev_id, ret);
3329 return ath10k_new_peer_tid_config(ar, sta, arvif);
3336 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3342 arvif->num_legacy_stations--;
3343 ret = ath10k_recalc_rtscts_prot(arvif);
3346 arvif->vdev_id, ret);
3351 ret = ath10k_clear_peer_keys(arvif, sta->addr);
3354 arvif->vdev_id, ret);
3599 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3601 if (arvif->tx_paused)
3604 ieee80211_wake_queue(ar->hw, arvif->vdev_id);
3625 void ath10k_mac_vif_tx_lock(struct ath10k_vif *arvif, int reason)
3627 struct ath10k *ar = arvif->ar;
3632 arvif->tx_paused |= BIT(reason);
3633 ieee80211_stop_queue(ar->hw, arvif->vdev_id);
3636 void ath10k_mac_vif_tx_unlock(struct ath10k_vif *arvif, int reason)
3638 struct ath10k *ar = arvif->ar;
3643 arvif->tx_paused &= ~BIT(reason);
3648 if (arvif->tx_paused)
3651 ieee80211_wake_queue(ar->hw, arvif->vdev_id);
3654 static void ath10k_mac_vif_handle_tx_pause(struct ath10k_vif *arvif,
3658 struct ath10k *ar = arvif->ar;
3664 ath10k_mac_vif_tx_lock(arvif, pause_id);
3667 ath10k_mac_vif_tx_unlock(arvif, pause_id);
3672 action, arvif->vdev_id);
3686 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3689 if (arvif->vdev_id != arg->vdev_id)
3692 ath10k_mac_vif_handle_tx_pause(arvif, arg->pause_id, arg->action);
3852 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3860 if (arvif->u.ap.noa_data)
3861 if (!pskb_expand_head(skb, 0, arvif->u.ap.noa_len,
3863 skb_put_data(skb, arvif->u.ap.noa_data,
3864 arvif->u.ap.noa_len);
3880 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3903 if (arvif->noack[tid] == WMI_PEER_TID_CONFIG_NOACK)
4106 struct ath10k_vif *arvif;
4167 arvif = ath10k_get_arvif(ar, vdev_id);
4168 if (arvif) {
4169 vif = arvif->vif;
4777 struct ath10k_vif *arvif;
4799 list_for_each_entry(arvif, &ar->arvifs, list)
4800 ath10k_mac_vif_beacon_cleanup(arvif);
5405 struct ath10k_vif *arvif;
5410 list_for_each_entry(arvif, &ar->arvifs, list) {
5411 ret = ath10k_mac_vif_setup_ps(arvif);
5454 static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif)
5457 struct ath10k *ar = arvif->ar;
5491 return ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
5498 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5510 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5515 arvif->vdev_id, ret);
5530 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5543 memset(arvif, 0, sizeof(*arvif));
5546 arvif->ar = ar;
5547 arvif->vif = vif;
5549 INIT_LIST_HEAD(&arvif->list);
5550 INIT_WORK(&arvif->ap_csa_work, ath10k_mac_vif_ap_csa_work);
5551 INIT_DELAYED_WORK(&arvif->connection_loss_work,
5554 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) {
5555 arvif->bitrate_mask.control[i].legacy = 0xffffffff;
5556 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff,
5557 sizeof(arvif->bitrate_mask.control[i].ht_mcs));
5558 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff,
5559 sizeof(arvif->bitrate_mask.control[i].vht_mcs));
5578 arvif->vdev_id = bit;
5579 arvif->vdev_subtype =
5584 arvif->vdev_type = WMI_VDEV_TYPE_STA;
5585 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5590 arvif->vdev_type = WMI_VDEV_TYPE_STA;
5592 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5596 arvif->vdev_type = WMI_VDEV_TYPE_IBSS;
5600 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5607 arvif->vdev_type = WMI_VDEV_TYPE_AP;
5610 arvif->vdev_type = WMI_VDEV_TYPE_AP;
5613 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5617 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR;
5629 vif->cab_queue = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1);
5631 vif->hw_queue[i] = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1);
5653 arvif->beacon_buf = kmalloc(IEEE80211_MAX_FRAME_LEN,
5663 arvif->beacon_paddr = DMA_MAPPING_ERROR;
5665 arvif->beacon_buf =
5668 &arvif->beacon_paddr,
5671 if (!arvif->beacon_buf) {
5679 arvif->nohwcrypt = true;
5681 if (arvif->nohwcrypt &&
5689 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype,
5690 arvif->beacon_buf ? "single-buf" : "per-skb");
5692 ret = ath10k_wmi_vdev_create(ar, arvif->vdev_id, arvif->vdev_type,
5693 arvif->vdev_subtype, vif->addr);
5696 arvif->vdev_id, ret);
5703 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5707 arvif->vdev_id, ret);
5711 ar->free_vdev_map &= ~(1LL << arvif->vdev_id);
5713 list_add(&arvif->list, &ar->arvifs);
5719 ret = ath10k_mac_vif_disable_keepalive(arvif);
5722 arvif->vdev_id, ret);
5726 arvif->def_wep_key_idx = -1;
5737 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5741 arvif->vdev_id, ar->cfg_tx_chainmask, nss,
5747 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5748 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5749 ret = ath10k_peer_create(ar, vif, NULL, arvif->vdev_id,
5753 arvif->vdev_id, ret);
5759 peer = ath10k_peer_find(ar, arvif->vdev_id, vif->addr);
5762 vif->addr, arvif->vdev_id);
5768 arvif->peer_id = find_first_bit(peer->peer_ids,
5773 arvif->peer_id = HTT_INVALID_PEERID;
5776 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
5777 ret = ath10k_mac_set_kickout(arvif);
5780 arvif->vdev_id, ret);
5785 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) {
5788 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
5792 arvif->vdev_id, ret);
5796 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif);
5799 arvif->vdev_id, ret);
5803 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif);
5806 arvif->vdev_id, ret);
5811 ret = ath10k_mac_set_txbf_conf(arvif);
5814 arvif->vdev_id, ret);
5818 ret = ath10k_mac_set_rts(arvif, ar->hw->wiphy->rts_threshold);
5821 arvif->vdev_id, ret);
5825 arvif->txpower = vif->bss_conf.txpower;
5834 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5835 arvif->ftm_responder);
5840 arvif->vdev_id, ret);
5844 ar->monitor_arvif = arvif;
5854 ieee80211_wake_queue(ar->hw, arvif->vdev_id);
5861 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5862 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5863 ath10k_wmi_peer_delete(ar, arvif->vdev_id, vif->addr);
5864 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id,
5869 ath10k_wmi_vdev_delete(ar, arvif->vdev_id);
5870 ar->free_vdev_map |= 1LL << arvif->vdev_id;
5872 list_del(&arvif->list);
5876 if (arvif->beacon_buf) {
5878 kfree(arvif->beacon_buf);
5881 arvif->beacon_buf,
5882 arvif->beacon_paddr);
5883 arvif->beacon_buf = NULL;
5891 static void ath10k_mac_vif_tx_unlock_all(struct ath10k_vif *arvif)
5896 ath10k_mac_vif_tx_unlock(arvif, i);
5903 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5909 cancel_work_sync(&arvif->ap_csa_work);
5910 cancel_delayed_work_sync(&arvif->connection_loss_work);
5914 ret = ath10k_spectral_vif_stop(arvif);
5917 arvif->vdev_id, ret);
5919 ar->free_vdev_map |= 1LL << arvif->vdev_id;
5921 list_del(&arvif->list);
5924 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5925 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5926 ret = ath10k_wmi_peer_delete(arvif->ar, arvif->vdev_id,
5930 arvif->vdev_id, ret);
5932 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id,
5934 kfree(arvif->u.ap.noa_data);
5938 arvif->vdev_id);
5940 ret = ath10k_wmi_vdev_delete(ar, arvif->vdev_id);
5943 arvif->vdev_id, ret);
5957 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5958 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5959 ret = ath10k_wait_for_peer_deleted(ar, arvif->vdev_id,
5963 arvif->vdev_id, ret);
5978 vif->addr, arvif->vdev_id);
5986 ath10k_mac_vif_beacon_cleanup(arvif);
5989 ath10k_peer_cleanup(ar, arvif->vdev_id);
6004 ath10k_mac_vif_tx_unlock_all(arvif);
6049 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6070 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6082 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6093 ath10k_control_ibss(arvif, vif);
6096 arvif->beacon_interval = info->beacon_int;
6098 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6099 arvif->beacon_interval);
6102 arvif->vdev_id, arvif->beacon_interval);
6106 arvif->vdev_id, ret);
6112 arvif->vdev_id);
6119 arvif->vdev_id, ret);
6121 ret = ath10k_mac_setup_bcn_tmpl(arvif);
6128 strncpy(arvif->u.ap.ssid, "mesh",
6129 sizeof(arvif->u.ap.ssid));
6130 arvif->u.ap.ssid_len = 4;
6135 ret = ath10k_mac_setup_prb_tmpl(arvif);
6138 arvif->vdev_id, ret);
6142 arvif->dtim_period = info->dtim_period;
6146 arvif->vdev_id, arvif->dtim_period);
6149 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6150 arvif->dtim_period);
6153 arvif->vdev_id, ret);
6158 arvif->u.ap.ssid_len = vif->cfg.ssid_len;
6160 memcpy(arvif->u.ap.ssid, vif->cfg.ssid,
6162 arvif->u.ap.hidden_ssid = info->hidden_ssid;
6166 ether_addr_copy(arvif->bssid, info->bssid);
6169 arvif->ftm_responder != info->ftm_responder &&
6171 arvif->ftm_responder = info->ftm_responder;
6174 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6175 arvif->ftm_responder);
6179 arvif->vdev_id, arvif->ftm_responder, ret);
6183 ath10k_control_beaconing(arvif, info);
6186 arvif->use_cts_prot = info->use_cts_prot;
6188 ret = ath10k_recalc_rtscts_prot(arvif);
6191 arvif->vdev_id, ret);
6193 if (ath10k_mac_can_set_cts_prot(arvif)) {
6194 ret = ath10k_mac_set_cts_prot(arvif);
6197 arvif->vdev_id, ret);
6209 arvif->vdev_id, slottime);
6212 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6216 arvif->vdev_id, ret);
6227 arvif->vdev_id, preamble);
6230 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6234 arvif->vdev_id, ret);
6254 arvif->vdev_id, info->txpower);
6256 arvif->txpower = info->txpower;
6263 arvif->ps = vif->cfg.ps;
6268 arvif->vdev_id, ret);
6272 !ath10k_mac_vif_chan(arvif->vif, &def)) {
6294 arvif->vdev_id, rate);
6297 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
6302 arvif->vdev_id, ret);
6305 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
6310 arvif->vdev_id, ret);
6314 !ath10k_mac_vif_chan(arvif->vif, &def))
6344 struct ieee80211_vif *sta_vif = arsta->arvif->vif;
6368 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6389 ar->scan.vdev_id = arvif->vdev_id;
6405 arg.vdev_id = arvif->vdev_id;
6481 struct ath10k_vif *arvif,
6485 u32 vdev_param = arvif->ar->wmi.vdev_param->def_keyid;
6499 if (arvif->vdev_type != WMI_VDEV_TYPE_AP &&
6500 arvif->vdev_type != WMI_VDEV_TYPE_IBSS)
6515 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
6519 arvif->vdev_id, ret);
6527 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6545 if (arvif->nohwcrypt)
6559 } else if (arvif->vdev_type == WMI_VDEV_TYPE_STA) {
6569 arvif->wep_keys[key->keyidx] = key;
6571 arvif->wep_keys[key->keyidx] = NULL;
6578 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr);
6600 ath10k_clear_vdev_key(arvif, key);
6608 ath10k_mac_vif_update_wep_key(arvif, key);
6616 if (cmd == SET_KEY && arvif->def_wep_key_idx == -1)
6620 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags);
6624 arvif->vdev_id, peer_addr, ret);
6636 ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags2);
6640 arvif->vdev_id, peer_addr, ret);
6641 ret2 = ath10k_install_key(arvif, key, DISABLE_KEY,
6646 arvif->vdev_id, peer_addr, ret2);
6652 ath10k_set_key_h_def_keyidx(ar, arvif, cmd, key);
6655 peer = ath10k_peer_find(ar, arvif->vdev_id, peer_addr);
6666 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6669 ath10k_wmi_peer_set_param(ar, arvif->vdev_id, peer_addr,
6682 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6685 mutex_lock(&arvif->ar->conf_mutex);
6687 if (arvif->ar->state != ATH10K_STATE_ON)
6691 arvif->vdev_id, keyidx);
6693 ret = ath10k_wmi_vdev_set_param(arvif->ar,
6694 arvif->vdev_id,
6695 arvif->ar->wmi.vdev_param->def_keyid,
6700 arvif->vdev_id,
6705 arvif->def_wep_key_idx = keyidx;
6708 mutex_unlock(&arvif->ar->conf_mutex);
6714 struct ath10k_vif *arvif;
6726 arvif = arsta->arvif;
6727 ar = arvif->ar;
6729 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def)))
6733 ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
6734 vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
6760 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6768 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6779 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6790 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6801 err = ath10k_station_assoc(ar, arvif->vif, sta, true);
6811 static int ath10k_mac_inc_num_stations(struct ath10k_vif *arvif,
6814 struct ath10k *ar = arvif->ar;
6818 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls)
6829 static void ath10k_mac_dec_num_stations(struct ath10k_vif *arvif,
6832 struct ath10k *ar = arvif->ar;
6836 if (arvif->vdev_type == WMI_VDEV_TYPE_STA && !sta->tdls)
6847 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6864 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
7061 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7087 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) {
7096 arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) {
7140 if ((arvif->retry_long[arg->tid] ||
7141 arvif->rate_code[arg->tid] ||
7142 arvif->ampdu[arg->tid] ==
7147 arvif->noack[arg->tid] = arg->ack_policy;
7148 arvif->ampdu[arg->tid] = arg->aggr_control;
7149 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl;
7154 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK)
7157 arvif->retry_long[arg->tid] = arg->retry_count;
7161 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK)
7164 arvif->ampdu[arg->tid] = arg->aggr_control;
7169 if (arvif->noack[arg->tid] == WMI_PEER_TID_CONFIG_NOACK) {
7173 arvif->rate_ctrl[arg->tid] = arg->rate_ctrl;
7174 arvif->rate_code[arg->tid] = arg->rcode_flags;
7179 arvif->rtscts[arg->tid] = arg->rtscts_ctrl;
7184 arvif->tid_conf_changed[arg->tid] |= changed;
7271 struct ath10k_vif *arvif,
7278 arg.vdev_id = arvif->vdev_id;
7299 if (!arvif->tids_rst) {
7307 arvif->retry_long[i] = 0;
7308 arvif->noack[i] = 0;
7309 arvif->ampdu[i] = 0;
7310 arvif->rate_code[i] = 0;
7311 arvif->rate_ctrl[i] = 0;
7312 arvif->rtscts[i] = 0;
7326 struct ath10k_vif *arvif;
7335 arvif = arsta->arvif;
7336 ar = arvif->ar;
7340 if (arvif->tids_rst) {
7341 ret = ath10k_mac_reset_tid_config(ar, sta, arvif,
7342 arvif->tids_rst);
7350 changed = arvif->tid_conf_changed[i];
7357 arg.ack_policy = arvif->noack[i];
7358 arg.aggr_control = arvif->ampdu[i];
7359 arg.rate_ctrl = arvif->rate_ctrl[i];
7366 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) {
7369 arg.retry_count = arvif->retry_long[i];
7377 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) {
7380 arg.aggr_control = arvif->ampdu[i];
7387 nss = ATH10K_HW_NSS(arvif->rate_code[i]);
7389 arvif->rate_code[i],
7392 arvif->rate_ctrl[i] > WMI_TID_CONFIG_RATE_CONTROL_AUTO) {
7400 arvif->noack[i] == WMI_PEER_TID_CONFIG_NOACK) {
7404 arg.rate_ctrl = arvif->rate_ctrl[i];
7405 arg.rcode_flags = arvif->rate_code[i];
7415 arg.rtscts_ctrl = arvif->rtscts[i] - 1;
7447 struct ieee80211_vif *sta_vif = arsta->arvif->vif;
7462 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7471 arsta->arvif = arvif;
7499 arvif->vdev_id, sta->addr,
7508 arvif->vdev_id,
7516 ret = ath10k_mac_inc_num_stations(arvif, sta);
7527 ath10k_mac_dec_num_stations(arvif, sta);
7533 ret = ath10k_peer_create(ar, vif, sta, arvif->vdev_id,
7537 sta->addr, arvif->vdev_id, ret);
7538 ath10k_mac_dec_num_stations(arvif, sta);
7545 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr);
7548 vif->addr, arvif->vdev_id);
7550 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
7551 ath10k_mac_dec_num_stations(arvif, sta);
7565 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id,
7569 arvif->vdev_id, ret);
7570 ath10k_peer_delete(ar, arvif->vdev_id,
7572 ath10k_mac_dec_num_stations(arvif, sta);
7577 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta,
7582 sta->addr, arvif->vdev_id, ret);
7583 ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
7584 ath10k_mac_dec_num_stations(arvif, sta);
7589 ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id,
7599 arvif->vdev_id, sta->addr, sta);
7602 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id,
7611 ret = ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
7614 sta->addr, arvif->vdev_id, ret);
7616 ath10k_mac_dec_num_stations(arvif, sta);
7626 sta->addr, peer, i, arvif->vdev_id);
7652 ret = ath10k_wmi_update_fw_tdls_state(ar, arvif->vdev_id,
7656 arvif->vdev_id, ret);
7672 sta->addr, arvif->vdev_id, ret);
7685 sta->addr, arvif->vdev_id, ret);
7689 ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id, sta,
7693 sta->addr, arvif->vdev_id, ret);
7708 sta->addr, arvif->vdev_id, ret);
7718 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7726 if (arvif->vdev_type != WMI_VDEV_TYPE_STA)
7757 arvif->u.sta.uapsd |= value;
7759 arvif->u.sta.uapsd &= ~value;
7761 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
7763 arvif->u.sta.uapsd);
7769 if (arvif->u.sta.uapsd)
7774 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
7780 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif);
7783 arvif->vdev_id, ret);
7787 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif);
7790 arvif->vdev_id, ret);
7808 ret = ath10k_wmi_vdev_sta_uapsd(ar, arvif->vdev_id,
7809 arvif->bssid, &arg, 1);
7827 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7835 p = &arvif->wmm_params.ac_vo;
7838 p = &arvif->wmm_params.ac_vi;
7841 p = &arvif->wmm_params.ac_be;
7844 p = &arvif->wmm_params.ac_bk;
7865 ret = ath10k_wmi_vdev_wmm_conf(ar, arvif->vdev_id,
7866 &arvif->wmm_params);
7869 arvif->vdev_id, ret);
7876 ret = ath10k_wmi_pdev_set_wmm_params(ar, &arvif->wmm_params);
7899 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7919 ar->scan.vdev_id = arvif->vdev_id;
7939 arg.vdev_id = arvif->vdev_id;
8008 struct ath10k_vif *arvif;
8012 list_for_each_entry(arvif, &ar->arvifs, list) {
8014 arvif->vdev_id, value);
8016 ret = ath10k_mac_set_rts(arvif, value);
8019 arvif->vdev_id, ret);
8078 struct ath10k_vif *arvif;
8084 list_for_each_entry(arvif, &ar->arvifs, list) {
8085 if (arvif->vdev_type == WMI_VDEV_TYPE_STA)
8086 ath10k_wmi_peer_flush(ar, arvif->vdev_id,
8087 arvif->bssid, bitmap);
8112 struct ath10k_vif *arvif;
8128 list_for_each_entry(arvif, &ar->arvifs, list) {
8129 if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA)
8130 ieee80211_hw_restart_disconnect(arvif->vif);
8260 static int ath10k_mac_set_fixed_rate_params(struct ath10k_vif *arvif,
8263 struct ath10k *ar = arvif->ar;
8270 arvif->vdev_id, rate, nss, sgi);
8273 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate);
8281 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, nss);
8288 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, sgi);
8295 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, ldpc);
8337 struct ath10k_vif *arvif,
8341 u8 rate = arvif->vht_pfr;
8344 if (!sta->deflink.vht_cap.vht_supported || arvif->vht_num_rates != 1)
8347 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
8359 struct ath10k_vif *arvif = data;
8361 struct ath10k *ar = arvif->ar;
8363 if (arsta->arvif != arvif)
8366 if (ath10k_mac_set_vht_bitrate_mask_fixup(ar, arvif, sta))
8379 struct ath10k_vif *arvif = data;
8381 struct ath10k *ar = arvif->ar;
8385 if (arsta->arvif != arvif || !sta->deflink.vht_cap.vht_supported)
8388 err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
8400 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8402 struct ath10k *ar = arvif->ar;
8434 arvif);
8445 arvif->vdev_id, ret);
8481 arvif->bitrate_mask = *mask;
8482 arvif->vht_num_rates = vht_num_rates;
8483 arvif->vht_pfr = vht_pfr;
8486 arvif);
8493 ret = ath10k_mac_set_fixed_rate_params(arvif, rate, nss, sgi, ldpc);
8496 arvif->vdev_id, ret);
8513 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8519 peer = ath10k_peer_find(ar, arvif->vdev_id, sta->addr);
8523 sta->addr, arvif->vdev_id);
8597 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8609 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
8622 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8628 arvif->vdev_id, sta->addr, tid, action);
8707 struct ath10k_vif *arvif;
8720 arvif = (void *)vifs[i].vif->drv_priv;
8724 arvif->vdev_id,
8730 if (WARN_ON(!arvif->is_started))
8733 if (WARN_ON(!arvif->is_up))
8736 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
8739 arvif->vdev_id, ret);
8753 arvif = (void *)vifs[i].vif->drv_priv;
8755 if (WARN_ON(!arvif->is_started))
8758 if (WARN_ON(!arvif->is_up))
8761 ret = ath10k_mac_setup_bcn_tmpl(arvif);
8766 ret = ath10k_mac_setup_prb_tmpl(arvif);
8771 ret = ath10k_vdev_restart(arvif, &vifs[i].new_ctx->def);
8774 arvif->vdev_id, ret);
8778 ret = ath10k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
8779 arvif->bssid);
8782 arvif->vdev_id, ret);
8939 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8946 ctx, arvif->vdev_id);
8948 if (WARN_ON(arvif->is_started)) {
8953 ret = ath10k_vdev_start(arvif, &ctx->def);
8956 arvif->vdev_id, vif->addr,
8961 arvif->is_started = true;
8963 ret = ath10k_mac_vif_setup_ps(arvif);
8966 arvif->vdev_id, ret);
8971 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, 0, vif->addr);
8974 arvif->vdev_id, ret);
8978 arvif->is_up = true;
8981 if (ath10k_mac_can_set_cts_prot(arvif)) {
8982 ret = ath10k_mac_set_cts_prot(arvif);
8985 arvif->vdev_id, ret);
9003 ath10k_vdev_stop(arvif);
9004 arvif->is_started = false;
9005 ath10k_mac_vif_setup_ps(arvif);
9019 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9026 ctx, arvif->vdev_id);
9028 WARN_ON(!arvif->is_started);
9031 WARN_ON(!arvif->is_up);
9033 ret = ath10k_wmi_vdev_down(ar, arvif->vdev_id);
9036 arvif->vdev_id, ret);
9038 arvif->is_up = false;
9041 ret = ath10k_vdev_stop(arvif);
9044 arvif->vdev_id, ret);
9046 arvif->is_started = false;
9261 arsta->arvif->vdev_type == WMI_VDEV_TYPE_STA))
9265 peer = ath10k_peer_find(ar, arsta->arvif->vdev_id, sta->addr);
9273 arsta->arvif->vdev_id,
9275 arsta->arvif->bssid,
9315 struct ath10k *ar = arsta->arvif->ar;
9356 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9362 arg.vdev_id = arvif->vdev_id;
9364 arvif->tids_rst = 0;
9365 memset(arvif->tid_conf_changed, 0, sizeof(arvif->tid_conf_changed));
9380 arvif->tids_rst = 0;
9397 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9405 arvif->tids_rst = 0;
9406 ret = ath10k_mac_reset_tid_config(ar, sta, arvif, tids);
9410 arvif->tids_rst = tids;
9793 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9795 if (arvif->vdev_id == arvif_iter->vdev_id)
9796 arvif_iter->arvif = arvif;
9810 if (!arvif_iter.arvif) {
9815 return arvif_iter.arvif;