Lines Matching defs:vif
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))
350 switch (arvif->vif->type) {
392 if (arvif->vif->type != NL80211_IFTYPE_ADHOC)
535 if (ether_addr_equal(peer->addr, arvif->vif->addr))
544 ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vif vdev %i update key %i needs update\n",
656 int ath10k_mac_vif_chan(struct ieee80211_vif *vif,
662 conf = rcu_dereference(vif->bss_conf.chanctx_conf);
725 struct ieee80211_vif *vif,
772 peer->vif = vif;
1519 arg.ssid = arvif->vif->cfg.ssid;
1520 arg.ssid_len = arvif->vif->cfg.ssid_len;
1573 if (arvif->vif->type != NL80211_IFTYPE_AP || !arvif->vif->p2p)
1628 struct ieee80211_vif *vif = arvif->vif;
1640 bcn = ieee80211_beacon_get_template(hw, vif, &offs, 0);
1678 struct ieee80211_vif *vif = arvif->vif;
1689 if (ieee80211_vif_is_mesh(vif))
1692 prb = ieee80211_proberesp_get(hw, vif);
1740 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def)))
1833 struct ieee80211_vif *vif)
1841 if (!vif->cfg.ibss_joined) {
1926 struct ieee80211_vif *vif = arvif->vif;
1936 if (arvif->vif->type != NL80211_IFTYPE_STATION)
1950 /* mac80211 can update vif powersave state while disconnected.
1964 vif->bss_conf.beacon_int) / 1000;
2026 struct ieee80211_vif *vif = arvif->vif;
2037 if (!vif->bss_conf.csa_active)
2043 if (!ieee80211_beacon_cntdwn_is_complete(vif)) {
2044 ieee80211_beacon_update_cntdwn(vif);
2056 ieee80211_csa_finish(vif);
2072 struct ieee80211_vif *vif)
2076 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2078 if (vif->type != NL80211_IFTYPE_STATION)
2081 if (!ether_addr_equal(mgmt->bssid, vif->bss_conf.bssid))
2096 struct ieee80211_vif *vif)
2099 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2109 ieee80211_beacon_loss(vif);
2132 struct ieee80211_vif *vif = arvif->vif;
2137 ieee80211_connection_loss(vif);
2145 struct ieee80211_vif *vif)
2155 if (vif->type == NL80211_IFTYPE_STATION)
2162 struct ieee80211_vif *vif,
2166 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2171 if (vif->type == NL80211_IFTYPE_STATION)
2172 aid = vif->cfg.aid;
2180 arg->peer_listen_intval = ath10k_peer_assoc_h_listen_intval(ar, vif);
2182 arg->peer_caps = vif->bss_conf.assoc_capability;
2186 struct ieee80211_vif *vif,
2190 struct ieee80211_bss_conf *info = &vif->bss_conf;
2198 if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
2202 vif->cfg.ssid_len ? vif->cfg.ssid : NULL,
2203 vif->cfg.ssid_len,
2240 struct ieee80211_vif *vif,
2244 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2256 if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
2302 struct ieee80211_vif *vif,
2307 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2318 if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
2552 struct ieee80211_vif *vif,
2557 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2566 if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
2660 struct ieee80211_vif *vif,
2664 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2729 struct ieee80211_vif *vif,
2733 struct ath10k_vif *arvif = (void *)vif->drv_priv;
2740 if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
2798 struct ieee80211_vif *vif,
2806 ath10k_peer_assoc_h_basic(ar, vif, sta, arg);
2807 ath10k_peer_assoc_h_crypto(ar, vif, sta, arg);
2808 ath10k_peer_assoc_h_rates(ar, vif, sta, arg);
2809 ath10k_peer_assoc_h_ht(ar, vif, sta, arg);
2810 ath10k_peer_assoc_h_phymode(ar, vif, sta, arg);
2811 ath10k_peer_assoc_h_vht(ar, vif, sta, arg);
2812 ath10k_peer_assoc_h_qos(ar, vif, sta, arg);
2845 struct ieee80211_vif *vif,
2848 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3063 struct ieee80211_vif *vif,
3067 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3081 ap_sta = ieee80211_find_sta(vif, bss_conf->bssid);
3095 ret = ath10k_peer_assoc_prepare(ar, vif, ap_sta, &peer_arg);
3119 ret = ath10k_mac_vif_recalc_txbf(ar, vif, vht_cap);
3128 arvif->vdev_id, bss_conf->bssid, vif->cfg.aid);
3132 arvif->aid = vif->cfg.aid;
3165 struct ieee80211_vif *vif)
3168 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3184 ret = ath10k_mac_vif_recalc_txbf(ar, vif, vht_cap);
3262 struct ieee80211_vif *vif,
3266 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3272 ret = ath10k_peer_assoc_prepare(ar, vif, sta, &peer_arg);
3333 struct ieee80211_vif *vif,
3336 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3596 struct ieee80211_vif *vif)
3599 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3684 struct ieee80211_vif *vif)
3686 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3715 struct ieee80211_vif *vif,
3726 if (!vif || vif->type == NL80211_IFTYPE_MONITOR)
3772 static bool ath10k_tx_h_use_hwcrypto(struct ieee80211_vif *vif,
3786 if (vif)
3787 return !((struct ath10k_vif *)vif->drv_priv)->nohwcrypt;
3848 struct ieee80211_vif *vif,
3852 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3855 if (vif->type != NL80211_IFTYPE_AP || !vif->p2p)
3870 struct ieee80211_vif *vif,
3880 struct ath10k_vif *arvif = (void *)vif->drv_priv;
3892 if (!ath10k_tx_h_use_hwcrypto(vif, skb))
3931 cb->vif = vif;
4032 struct ieee80211_vif *vif,
4050 ath10k_tx_h_add_p2p_noa_ie(ar, vif, skb);
4051 ath10k_tx_h_seq_no(vif, skb);
4110 struct ieee80211_vif *vif;
4163 /* It's safe to access vif and sta - conf_mutex guarantees that
4169 vif = arvif->vif;
4170 sta = ieee80211_find_sta(vif, peer_addr);
4172 vif = NULL;
4176 txmode = ath10k_mac_tx_h_get_txmode(ar, vif, sta, skb);
4179 ret = ath10k_mac_tx(ar, vif, txmode, txpath, skb, true);
4304 else if (peer->vif)
4305 return peer->vif->txq;
4381 struct ieee80211_vif *vif = txq->vif;
4409 ath10k_mac_tx_h_fill_cb(ar, vif, txq, sta, skb, airtime);
4412 txmode = ath10k_mac_tx_h_get_txmode(ar, vif, sta, skb);
4431 ret = ath10k_mac_tx(ar, vif, txmode, txpath, skb, false);
4666 struct ieee80211_vif *vif = info->control.vif;
4677 ath10k_mac_tx_h_fill_cb(ar, vif, txq, sta, skb, airtime);
4679 txmode = ath10k_mac_tx_h_get_txmode(ar, vif, sta, skb);
4716 ret = ath10k_mac_tx(ar, vif, txmode, txpath, skb, false);
5496 struct ieee80211_vif *vif)
5498 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5505 (vif->type != NL80211_IFTYPE_STATION &&
5506 vif->type != NL80211_IFTYPE_AP))
5507 vif->offload_flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;
5527 struct ieee80211_vif *vif)
5530 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5539 vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD;
5544 ath10k_mac_txq_init(vif->txq);
5547 arvif->vif = vif;
5582 switch (vif->type) {
5591 if (vif->p2p)
5612 if (vif->p2p)
5624 /* Using vdev_id as queue number will make it very easy to do per-vif
5627 * queues for regular vif tx.
5629 vif->cab_queue = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1);
5630 for (i = 0; i < ARRAY_SIZE(vif->hw_queue); i++)
5631 vif->hw_queue[i] = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1);
5645 * DMA-coherent buffer for a lifetime of a vif and use it for all
5649 if (vif->type == NL80211_IFTYPE_ADHOC ||
5650 vif->type == NL80211_IFTYPE_MESH_POINT ||
5651 vif->type == NL80211_IFTYPE_AP) {
5693 arvif->vdev_subtype, vif->addr);
5728 ath10k_update_vif_offload(hw, vif);
5733 if (ar->cfg_tx_chainmask && (vif->type != NL80211_IFTYPE_MONITOR)) {
5749 ret = ath10k_peer_create(ar, vif, NULL, arvif->vdev_id,
5750 vif->addr, WMI_PEER_TYPE_DEFAULT);
5759 peer = ath10k_peer_find(ar, arvif->vdev_id, vif->addr);
5762 vif->addr, arvif->vdev_id);
5825 arvif->txpower = vif->bss_conf.txpower;
5843 if (vif->type == NL80211_IFTYPE_MONITOR) {
5863 ath10k_wmi_peer_delete(ar, arvif->vdev_id, vif->addr);
5865 vif->addr);
5900 struct ieee80211_vif *vif)
5903 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5927 vif->addr);
5933 vif->addr);
5960 vif->addr);
5976 if (peer->vif == vif) {
5977 ath10k_warn(ar, "found vif peer %pM entry on vdev %i after it was supposedly removed\n",
5978 vif->addr, arvif->vdev_id);
5979 peer->vif = NULL;
5990 ath10k_mac_txq_unref(ar, vif->txq);
5992 if (vif->type == NL80211_IFTYPE_MONITOR) {
6007 ath10k_mac_txq_unref(ar, vif->txq);
6046 struct ieee80211_vif *vif,
6049 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6060 basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1;
6077 struct ieee80211_vif *vif,
6082 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6093 ath10k_control_ibss(arvif, vif);
6126 if (ieee80211_vif_is_mesh(vif)) {
6157 vif->type == NL80211_IFTYPE_AP) {
6158 arvif->u.ap.ssid_len = vif->cfg.ssid_len;
6159 if (vif->cfg.ssid_len)
6160 memcpy(arvif->u.ap.ssid, vif->cfg.ssid,
6161 vif->cfg.ssid_len);
6238 if (vif->cfg.assoc) {
6245 ath10k_bss_assoc(hw, vif, info);
6248 ath10k_bss_disassoc(hw, vif);
6263 arvif->ps = vif->cfg.ps;
6272 !ath10k_mac_vif_chan(arvif->vif, &def)) {
6274 mcast_rate = vif->bss_conf.mcast_rate[band];
6278 rateidx = ffs(vif->bss_conf.basic_rates) - 1;
6314 !ath10k_mac_vif_chan(arvif->vif, &def))
6315 ath10k_recalculate_mgmt_rate(ar, vif, &def);
6344 struct ieee80211_vif *sta_vif = arsta->arvif->vif;
6351 struct ieee80211_vif *vif)
6355 data.curr_vif = vif;
6364 struct ieee80211_vif *vif,
6368 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6377 if (ath10k_mac_tdls_vif_stations_count(hw, vif) > 0) {
6469 struct ieee80211_vif *vif)
6490 * frames with multi-vif APs. This is not required for main firmware
6495 * FIXME: It remains unknown if this is required for multi-vif STA
6523 struct ieee80211_vif *vif, struct ieee80211_sta *sta,
6527 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6560 peer_addr = vif->bss_conf.bssid;
6562 peer_addr = vif->addr;
6606 if (vif->type == NL80211_IFTYPE_ADHOC &&
6631 if (is_wep && !sta && vif->type == NL80211_IFTYPE_STATION) {
6678 struct ieee80211_vif *vif,
6682 struct ath10k_vif *arvif = (void *)vif->drv_priv;
6729 if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def)))
6801 err = ath10k_station_assoc(ar, arvif->vif, sta, true);
6843 struct ieee80211_vif *vif,
6847 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7005 struct ieee80211_vif *vif,
7016 if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
7058 struct ieee80211_vif *vif, u32 changed,
7061 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7193 struct ieee80211_vif *vif,
7240 ret = ath10k_mac_tid_bitrate_config(ar, vif, sta,
7260 ret = ath10k_mac_set_tid_config(ar, sta, vif, changed, arg);
7447 struct ieee80211_vif *sta_vif = arsta->arvif->vif;
7456 struct ieee80211_vif *vif,
7462 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7503 num_tdls_stations = ath10k_mac_tdls_vif_stations_count(hw, vif);
7533 ret = ath10k_peer_create(ar, vif, sta, arvif->vdev_id,
7548 vif->addr, arvif->vdev_id);
7648 if (ath10k_mac_tdls_vif_stations_count(hw, vif))
7651 /* This was the last tdls peer in current vif */
7660 (vif->type == NL80211_IFTYPE_AP ||
7661 vif->type == NL80211_IFTYPE_MESH_POINT ||
7662 vif->type == NL80211_IFTYPE_ADHOC)) {
7669 ret = ath10k_station_assoc(ar, vif, sta, false);
7682 ret = ath10k_station_assoc(ar, vif, sta, false);
7696 (vif->type == NL80211_IFTYPE_AP ||
7697 vif->type == NL80211_IFTYPE_MESH_POINT ||
7698 vif->type == NL80211_IFTYPE_ADHOC)) {
7705 ret = ath10k_station_disassoc(ar, vif, sta);
7715 static int ath10k_conf_tx_uapsd(struct ath10k *ar, struct ieee80211_vif *vif,
7718 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7822 struct ieee80211_vif *vif,
7827 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7883 ret = ath10k_conf_tx_uapsd(ar, vif, ac, params->uapsd);
7893 struct ieee80211_vif *vif,
7899 struct ath10k_vif *arvif = (void *)vif->drv_priv;
7906 if (ath10k_mac_tdls_vif_stations_count(hw, vif) > 0) {
7981 struct ieee80211_vif *vif)
8074 static void ath10k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
8082 if (vif && vif->type == NL80211_IFTYPE_STATION) {
8130 ieee80211_hw_restart_disconnect(arvif->vif);
8397 struct ieee80211_vif *vif,
8400 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8416 if (ath10k_mac_vif_chan(vif, &def))
8466 * single vht rate, and don't update vif birate_mask, as
8507 struct ieee80211_vif *vif,
8513 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8594 struct ieee80211_vif *vif, s64 tsf_offset)
8597 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8618 struct ieee80211_vif *vif,
8622 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8669 * on a linked list now. Doing a lookup peer -> vif -> chanctx for each
8720 arvif = (void *)vifs[i].vif->drv_priv;
8753 arvif = (void *)vifs[i].vif->drv_priv;
8845 struct ieee80211_vif *vif)
8849 if (rcu_access_pointer(vif->bss_conf.chanctx_conf) != arg->ctx)
8857 struct ieee80211_vif *vif)
8862 ctx = rcu_access_pointer(vif->bss_conf.chanctx_conf);
8869 arg->vifs[arg->next_vif].vif = vif;
8934 struct ieee80211_vif *vif,
8939 struct ath10k_vif *arvif = (void *)vif->drv_priv;
8956 arvif->vdev_id, vif->addr,
8970 if (vif->type == NL80211_IFTYPE_MONITOR) {
8971 ret = ath10k_wmi_vdev_up(ar, arvif->vdev_id, 0, vif->addr);
9014 struct ieee80211_vif *vif,
9019 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9030 if (vif->type == NL80211_IFTYPE_MONITOR) {
9071 struct ieee80211_vif *vif,
9310 struct ieee80211_vif *vif,
9351 struct ieee80211_vif *vif,
9356 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9368 ret = ath10k_mac_parse_tid_config(ar, sta, vif,
9381 data.curr_vif = vif;
9393 struct ieee80211_vif *vif,
9397 struct ath10k_vif *arvif = (void *)vif->drv_priv;
9411 data.curr_vif = vif;
9790 struct ieee80211_vif *vif)
9793 struct ath10k_vif *arvif = (void *)vif->drv_priv;
10144 ar->hw->wiphy->tid_config_support.vif |=
10154 ar->hw->wiphy->tid_config_support.vif |=
10159 ar->hw->wiphy->tid_config_support.vif;