Lines Matching defs:vif
258 struct ieee80211_vif *vif);
506 static int ath11k_mac_vif_chan(struct ieee80211_vif *vif,
512 conf = rcu_dereference(vif->bss_conf.chanctx_conf);
566 struct ieee80211_vif *vif)
569 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
688 struct ieee80211_vif *vif = arvif->vif;
694 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
1221 struct ieee80211_vif *vif = arvif->vif;
1231 if (arvif->vif->type != NL80211_IFTYPE_STATION)
1237 /* mac80211 can update vif powersave state while disconnected.
1250 timeout = ieee80211_tu_to_usec(vif->bss_conf.beacon_int) / 1000;
1417 if (profile[2] == arvif->vif->bss_conf.bssid_index) {
1467 tx_arvif = ath11k_vif_to_arvif(arvif->vif->mbssid_tx_vif);
1470 tx_arvif->vif, 0);
1518 struct ieee80211_vif *vif = arvif->vif;
1523 if (vif->mbssid_tx_vif) {
1524 tx_arvif = ath11k_vif_to_arvif(vif->mbssid_tx_vif);
1529 vif = tx_arvif->vif;
1533 bcn = ieee80211_beacon_get_template(hw, vif, &offs, 0);
1556 struct ieee80211_vif *vif = arvif->vif;
1564 if (vif->mbssid_tx_vif &&
1565 arvif != ath11k_vif_to_arvif(vif->mbssid_tx_vif) && arvif->is_up)
1568 if (vif->bss_conf.ema_ap && vif->mbssid_tx_vif)
1576 struct ieee80211_vif *vif = arvif->vif;
1578 if (!vif->bss_conf.color_change_active && !arvif->bcca_zero_sent)
1581 if (vif->bss_conf.color_change_active &&
1582 ieee80211_beacon_cntdwn_is_complete(vif)) {
1584 ieee80211_color_change_finish(vif);
1590 if (vif->bss_conf.color_change_active)
1591 ieee80211_beacon_update_cntdwn(vif);
1628 if (arvif->vif->mbssid_tx_vif)
1629 tx_arvif = ath11k_vif_to_arvif(arvif->vif->mbssid_tx_vif);
1648 struct ieee80211_vif *vif)
1652 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
1654 if (vif->type != NL80211_IFTYPE_STATION)
1657 if (!ether_addr_equal(mgmt->bssid, vif->bss_conf.bssid))
1672 struct ieee80211_vif *vif)
1675 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
1685 ieee80211_beacon_loss(vif);
1708 struct ieee80211_vif *vif = arvif->vif;
1713 ieee80211_connection_loss(vif);
1717 struct ieee80211_vif *vif,
1721 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
1726 if (vif->type == NL80211_IFTYPE_STATION)
1727 aid = vif->cfg.aid;
1738 arg->peer_caps = vif->bss_conf.assoc_capability;
1742 struct ieee80211_vif *vif,
1746 struct ieee80211_bss_conf *info = &vif->bss_conf;
1749 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
1755 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
1803 struct ieee80211_vif *vif,
1807 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
1819 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
1865 struct ieee80211_vif *vif,
1870 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
1880 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
2062 struct ieee80211_vif *vif,
2067 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
2077 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
2260 struct ieee80211_vif *vif,
2264 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
2278 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
2340 arg->peer_he_ops = vif->bss_conf.he_oper.params;
2505 struct ieee80211_vif *vif,
2514 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
2587 struct ieee80211_vif *vif,
2591 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
2750 struct ieee80211_vif *vif,
2754 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
2762 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
2829 struct ieee80211_vif *vif,
2845 ath11k_peer_assoc_h_basic(ar, vif, sta, arg);
2846 ath11k_peer_assoc_h_crypto(ar, vif, sta, arg);
2847 ath11k_peer_assoc_h_rates(ar, vif, sta, arg);
2848 ath11k_peer_assoc_h_phymode(ar, vif, sta, arg);
2849 ath11k_peer_assoc_h_ht(ar, vif, sta, arg);
2850 ath11k_peer_assoc_h_vht(ar, vif, sta, arg);
2851 ath11k_peer_assoc_h_he(ar, vif, sta, arg);
2852 ath11k_peer_assoc_h_he_6ghz(ar, vif, sta, arg);
2853 ath11k_peer_assoc_h_qos(ar, vif, sta, arg);
2892 if (!arvif->vif->bss_conf.he_support)
2897 if (arvif->vif->bss_conf.he_su_beamformer) {
2899 if (arvif->vif->bss_conf.he_mu_beamformer &&
2904 if (arvif->vif->type != NL80211_IFTYPE_MESH_POINT) {
2908 if (arvif->vif->bss_conf.he_full_ul_mumimo)
2911 if (arvif->vif->bss_conf.he_su_beamformee)
2937 struct ieee80211_vif *vif,
2940 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
2948 if (!vif->bss_conf.he_support)
2951 if (vif->type != NL80211_IFTYPE_STATION)
2954 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
2958 cap_band = &ar->mac.iftype[NL80211_BAND_2GHZ][vif->type].he_cap;
2960 cap_band = &ar->mac.iftype[NL80211_BAND_5GHZ][vif->type].he_cap;
2971 if (vif->type != NL80211_IFTYPE_MESH_POINT) {
2998 struct ieee80211_vif *vif,
3002 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
3017 ap_sta = ieee80211_find_sta(vif, bss_conf->bssid);
3028 ath11k_peer_assoc_prepare(ar, vif, ap_sta, &peer_arg, false);
3032 if (!ath11k_mac_vif_recalc_sta_he_txbf(ar, vif, &he_cap)) {
3064 arvif->aid = vif->cfg.aid;
3080 arvif->vdev_id, bss_conf->bssid, vif->cfg.aid);
3116 struct ieee80211_vif *vif)
3119 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
3165 struct ieee80211_vif *vif,
3168 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
3179 basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1;
3218 tmpl = ieee80211_get_fils_discovery_tmpl(ar->hw, arvif->vif);
3227 arvif->vif);
3405 struct ieee80211_vif *vif,
3410 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
3467 if (vif->bss_conf.he_support) {
3500 vif->type == NL80211_IFTYPE_AP) {
3501 arvif->u.ap.ssid_len = vif->cfg.ssid_len;
3502 if (vif->cfg.ssid_len)
3503 memcpy(arvif->u.ap.ssid, vif->cfg.ssid,
3504 vif->cfg.ssid_len);
3516 if (arvif->is_up && vif->bss_conf.he_support &&
3517 vif->bss_conf.he_oper.params) {
3519 param_value = vif->bss_conf.he_oper.params;
3594 if (vif->cfg.assoc)
3595 ath11k_bss_assoc(hw, vif, info);
3597 ath11k_bss_disassoc(hw, vif);
3610 arvif->ps = vif->cfg.ps;
3619 !ath11k_mac_vif_chan(arvif->vif, &def)) {
3621 mcast_rate = vif->bss_conf.mcast_rate[band];
3626 rateidx = ffs(vif->bss_conf.basic_rates) - 1;
3663 !ath11k_mac_vif_chan(arvif->vif, &def))
3664 ath11k_recalculate_mgmt_rate(ar, vif, &def);
3682 if (vif->type == NL80211_IFTYPE_AP) {
3709 } else if (vif->type == NL80211_IFTYPE_STATION) {
3728 (vif->type == NL80211_IFTYPE_AP ||
3729 vif->type == NL80211_IFTYPE_MESH_POINT)) {
3744 ipv4_cnt = min(vif->cfg.arp_addr_cnt, ATH11K_IPV4_MAX_COUNT);
3746 vif->cfg.arp_addr_list,
3748 memcpy(arvif->arp_ns_offload.mac_addr, vif->addr, ETH_ALEN);
3751 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "arp_addr_cnt %d vif->addr %pM, offload_addr %pI4\n",
3752 vif->cfg.arp_addr_cnt,
3753 vif->addr, arvif->arp_ns_offload.ipv4_addr);
3933 struct ieee80211_vif *vif,
3937 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
4098 struct ieee80211_vif *vif)
4220 struct ieee80211_vif *vif, struct ieee80211_sta *sta,
4225 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
4250 peer_addr = vif->bss_conf.bssid;
4252 peer_addr = vif->addr;
4540 struct ieee80211_vif *vif,
4544 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
4554 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
4560 ath11k_peer_assoc_prepare(ar, vif, sta, &peer_arg, reassoc);
4637 struct ieee80211_vif *vif,
4640 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
4683 if (WARN_ON(ath11k_mac_vif_chan(arvif->vif, &def)))
4712 ath11k_peer_assoc_h_phymode(ar, arvif->vif, sta, &peer_arg);
4832 ath11k_peer_assoc_prepare(ar, arvif->vif, sta,
4908 struct ieee80211_vif *vif,
4912 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
4954 if (ieee80211_vif_is_mesh(vif)) {
4977 ret = ath11k_start_vdev_delay(ar->hw, vif);
5030 struct ieee80211_vif *vif,
5036 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
5058 ret = ath11k_mac_station_add(ar, vif, sta);
5065 vif->type == NL80211_IFTYPE_STATION;
5090 vif->addr, arvif->vdev_id);
5107 (vif->type == NL80211_IFTYPE_AP ||
5108 vif->type == NL80211_IFTYPE_MESH_POINT ||
5109 vif->type == NL80211_IFTYPE_ADHOC)) {
5110 ret = ath11k_station_assoc(ar, vif, sta, false);
5130 if (vif->type == NL80211_IFTYPE_STATION && arvif->is_up) {
5150 (vif->type == NL80211_IFTYPE_AP ||
5151 vif->type == NL80211_IFTYPE_MESH_POINT ||
5152 vif->type == NL80211_IFTYPE_ADHOC)) {
5153 ret = ath11k_station_disassoc(ar, vif, sta);
5164 struct ieee80211_vif *vif,
5168 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
5199 struct ieee80211_vif *vif,
5212 struct ieee80211_vif *vif,
5218 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
5282 static int ath11k_conf_tx_uapsd(struct ath11k *ar, struct ieee80211_vif *vif,
5285 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
5340 struct ieee80211_vif *vif,
5345 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
5383 ret = ath11k_conf_tx_uapsd(ar, vif, ac, params->uapsd);
6018 struct ieee80211_vif *vif = ctx;
6022 if (skb_cb->vif == vif)
6107 if (!skb_cb->vif) {
6108 ath11k_warn(ar->ab, "no vif found for mgmt frame\n");
6113 arvif = ath11k_vif_to_arvif(skb_cb->vif);
6176 struct ieee80211_vif *vif = info->control.vif;
6177 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
6186 skb_cb->vif = vif;
6457 tx_vif = arvif->vif->mbssid_tx_vif;
6465 if (arvif->vif->bss_conf.nontransmitted) {
6477 if (arvif->vif->bss_conf.ema_ap)
6523 struct ieee80211_vif *vif)
6527 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
6533 (vif->type != NL80211_IFTYPE_STATION &&
6534 vif->type != NL80211_IFTYPE_AP))
6535 vif->offload_flags &= ~(IEEE80211_OFFLOAD_ENCAP_ENABLED |
6538 if (vif->offload_flags & IEEE80211_OFFLOAD_ENCAP_ENABLED)
6550 vif->offload_flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;
6554 if (vif->offload_flags & IEEE80211_OFFLOAD_DECAP_ENABLED)
6566 vif->offload_flags &= ~IEEE80211_OFFLOAD_DECAP_ENABLED;
6691 struct ieee80211_vif *vif = arvif->vif;
6717 vif->addr, arvif->vdev_id);
6723 struct ieee80211_vif *vif)
6727 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
6736 vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD;
6740 if (vif->type == NL80211_IFTYPE_AP &&
6764 arvif->vif = vif;
6786 switch (vif->type) {
6810 vif->cab_queue = arvif->vdev_id % (ATH11K_HW_MAX_QUEUES - 1);
6811 for (i = 0; i < ARRAY_SIZE(vif->hw_queue); i++)
6812 vif->hw_queue[i] = i % (ATH11K_HW_MAX_QUEUES - 1);
6821 ret = ath11k_wmi_vdev_create(ar, vif->addr, &vdev_param);
6830 vif->addr, arvif->vdev_id);
6838 ath11k_mac_op_update_vif_offload(hw, vif);
6852 peer_param.peer_addr = vif->addr;
6921 arvif->txpower = vif->bss_conf.txpower;
6939 if (vif->type != NL80211_IFTYPE_MONITOR &&
6953 fbret = ath11k_peer_delete(ar, arvif->vdev_id, vif->addr);
6956 vif->addr, arvif->vdev_id, fbret);
6975 struct ieee80211_vif *vif = (struct ieee80211_vif *)ctx;
6978 if (skb_cb->vif == vif)
6979 skb_cb->vif = NULL;
6985 struct ieee80211_vif *vif)
6988 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
7009 ret = ath11k_peer_delete(ar, arvif->vdev_id, vif->addr);
7042 ath11k_mac_vif_txmgmt_idr_remove, vif);
7047 ath11k_mac_vif_unref, vif);
7113 struct ieee80211_vif *vif,
7278 arvif->vif->addr, arvif->vdev_id);
7331 arvif->vif->addr, arvif->vdev_id);
7365 struct ieee80211_vif *vif)
7369 if (rcu_access_pointer(vif->bss_conf.chanctx_conf) != arg->ctx)
7377 struct ieee80211_vif *vif)
7382 ctx = rcu_access_pointer(vif->bss_conf.chanctx_conf);
7389 arg->vifs[arg->next_vif].vif = vif;
7416 arvif = ath11k_vif_to_arvif(vifs[i].vif);
7456 mbssid_tx_vif = arvif->vif->mbssid_tx_vif;
7463 arvif->vif->bss_conf.bssid_index,
7464 1 << arvif->vif->bss_conf.bssid_indicator);
7477 ath11k_warn(ar->ab, "failed to stop monitor during vif channel update: %d",
7484 ath11k_warn(ar->ab, "failed to start monitor during vif channel update: %d",
7550 struct ieee80211_vif *vif)
7554 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
7563 arvif->vdev_id, vif->addr,
7598 struct ieee80211_vif *vif,
7604 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
7647 ath11k_warn(ar->ab, "failed to start monitor during vif channel context assignment: %d",
7659 arvif->vdev_id, vif->addr,
7670 ath11k_warn(ar->ab, "failed to start monitor during vif channel context assignment: %d",
7688 struct ieee80211_vif *vif,
7694 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
7718 ath11k_warn(ar->ab, "failed to stop monitor during vif channel context unassignment: %d",
7759 ath11k_warn(ar->ab, "failed to stop monitor during vif channel context unassignment: %d",
7870 static void ath11k_mac_op_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
8116 if (!arvif->vif->bss_conf.he_support) {
8145 if (arvif->vif->bss_conf.he_support) {
8312 struct ieee80211_vif *vif,
8315 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
8334 if (ath11k_mac_vif_chan(vif, &def))
8510 ieee80211_hw_restart_disconnect(arvif->vif);
8631 struct ieee80211_vif *vif,
8717 struct ieee80211_vif *vif,
8722 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
8737 memcpy(offload->mac_addr, vif->addr, ETH_ALEN);
8792 struct ieee80211_vif *vif,
8796 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
8886 struct ieee80211_vif *vif)
8906 struct ieee80211_vif *vif,
8912 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
9030 struct ieee80211_vif *vif,
9087 /* We didn't get txpower from FW. Hence, relying on vif->bss_conf.txpower */
9088 *dbm = vif->bss_conf.txpower;