Lines Matching refs:vif
83 struct ieee80211_vif *vif; member
96 struct ieee80211_vif *vif) in iwl_mvm_mac_tsf_id_iter() argument
99 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_tsf_id_iter()
103 if (vif == data->vif) in iwl_mvm_mac_tsf_id_iter()
122 switch (data->vif->type) { in iwl_mvm_mac_tsf_id_iter()
132 if (vif->type != NL80211_IFTYPE_AP || in iwl_mvm_mac_tsf_id_iter()
137 min_bi = min(data->vif->bss_conf.beacon_int, in iwl_mvm_mac_tsf_id_iter()
138 vif->bss_conf.beacon_int); in iwl_mvm_mac_tsf_id_iter()
143 if ((data->vif->bss_conf.beacon_int - in iwl_mvm_mac_tsf_id_iter()
144 vif->bss_conf.beacon_int) % min_bi == 0) { in iwl_mvm_mac_tsf_id_iter()
160 if ((vif->type != NL80211_IFTYPE_AP && in iwl_mvm_mac_tsf_id_iter()
161 vif->type != NL80211_IFTYPE_STATION) || in iwl_mvm_mac_tsf_id_iter()
166 min_bi = min(data->vif->bss_conf.beacon_int, in iwl_mvm_mac_tsf_id_iter()
167 vif->bss_conf.beacon_int); in iwl_mvm_mac_tsf_id_iter()
172 if ((data->vif->bss_conf.beacon_int - in iwl_mvm_mac_tsf_id_iter()
173 vif->bss_conf.beacon_int) % min_bi == 0) { in iwl_mvm_mac_tsf_id_iter()
204 u32 iwl_mvm_mac_get_queues_mask(struct ieee80211_vif *vif) in iwl_mvm_mac_get_queues_mask() argument
208 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_get_queues_mask()
212 if (vif->hw_queue[ac] != IEEE80211_INVAL_HW_QUEUE) in iwl_mvm_mac_get_queues_mask()
213 qmask |= BIT(vif->hw_queue[ac]); in iwl_mvm_mac_get_queues_mask()
216 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_get_queues_mask()
217 qmask |= BIT(vif->cab_queue); in iwl_mvm_mac_get_queues_mask()
223 struct ieee80211_vif *vif) in iwl_mvm_iface_hw_queues_iter() argument
228 if (vif == data->exclude_vif) in iwl_mvm_iface_hw_queues_iter()
231 data->used_hw_queues |= iwl_mvm_mac_get_queues_mask(vif); in iwl_mvm_iface_hw_queues_iter()
279 struct ieee80211_vif *vif) in iwl_mvm_mac_iface_iterator() argument
282 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_iface_iterator()
285 if (vif == data->vif) { in iwl_mvm_mac_iface_iterator()
299 iwl_mvm_mac_tsf_id_iter(_data, mac, vif); in iwl_mvm_mac_iface_iterator()
303 struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_recalc_tsf_id() argument
305 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_recalc_tsf_id()
308 .vif = vif, in iwl_mvm_mac_ctxt_recalc_tsf_id()
326 struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_allocate_resources() argument
328 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_allocate_resources()
331 .vif = vif, in iwl_mvm_mac_ctxt_allocate_resources()
359 switch (vif->type) { in iwl_mvm_mac_ctxt_allocate_resources()
363 if (!vif->p2p) in iwl_mvm_mac_ctxt_allocate_resources()
374 used_hw_queues = iwl_mvm_get_used_hw_queues(mvm, vif); in iwl_mvm_mac_ctxt_allocate_resources()
418 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_ctxt_allocate_resources()
420 vif->hw_queue[ac] = IEEE80211_INVAL_HW_QUEUE; in iwl_mvm_mac_ctxt_allocate_resources()
437 vif->hw_queue[ac] = queue; in iwl_mvm_mac_ctxt_allocate_resources()
441 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mvm_mac_ctxt_allocate_resources()
451 vif->cab_queue = queue; in iwl_mvm_mac_ctxt_allocate_resources()
453 vif->cab_queue = IEEE80211_INVAL_HW_QUEUE; in iwl_mvm_mac_ctxt_allocate_resources()
466 memset(vif->hw_queue, IEEE80211_INVAL_HW_QUEUE, sizeof(vif->hw_queue)); in iwl_mvm_mac_ctxt_allocate_resources()
467 vif->cab_queue = IEEE80211_INVAL_HW_QUEUE; in iwl_mvm_mac_ctxt_allocate_resources()
471 int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_init() argument
474 iwl_mvm_get_wd_timeout(mvm, vif, false, false); in iwl_mvm_mac_ctxt_init()
480 ret = iwl_mvm_mac_ctxt_allocate_resources(mvm, vif); in iwl_mvm_mac_ctxt_init()
484 switch (vif->type) { in iwl_mvm_mac_ctxt_init()
490 iwl_mvm_enable_ac_txq(mvm, vif->cab_queue, in iwl_mvm_mac_ctxt_init()
495 iwl_mvm_enable_ac_txq(mvm, vif->hw_queue[ac], in iwl_mvm_mac_ctxt_init()
504 void iwl_mvm_mac_ctxt_release(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_release() argument
510 switch (vif->type) { in iwl_mvm_mac_ctxt_release()
515 iwl_mvm_disable_txq(mvm, vif->cab_queue, 0); in iwl_mvm_mac_ctxt_release()
519 iwl_mvm_disable_txq(mvm, vif->hw_queue[ac], 0); in iwl_mvm_mac_ctxt_release()
524 struct ieee80211_vif *vif, in iwl_mvm_ack_rates() argument
529 unsigned long basic = vif->bss_conf.basic_rates; in iwl_mvm_ack_rates()
610 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_set_ht_flags() argument
614 u8 protection_mode = vif->bss_conf.ht_operation_mode & in iwl_mvm_mac_ctxt_set_ht_flags()
633 if (vif->bss_conf.chandef.width > NL80211_CHAN_WIDTH_20) in iwl_mvm_mac_ctxt_set_ht_flags()
644 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_common() argument
649 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_common()
651 bool ht_enabled = !!(vif->bss_conf.ht_operation_mode & in iwl_mvm_mac_ctxt_cmd_common()
654 const u8 *bssid = bssid_override ?: vif->bss_conf.bssid; in iwl_mvm_mac_ctxt_cmd_common()
661 switch (vif->type) { in iwl_mvm_mac_ctxt_cmd_common()
663 if (vif->p2p) in iwl_mvm_mac_ctxt_cmd_common()
686 memcpy(cmd->node_addr, vif->addr, ETH_ALEN); in iwl_mvm_mac_ctxt_cmd_common()
694 chanctx = rcu_dereference(vif->chanctx_conf); in iwl_mvm_mac_ctxt_cmd_common()
695 iwl_mvm_ack_rates(mvm, vif, chanctx ? chanctx->def.chan->band in iwl_mvm_mac_ctxt_cmd_common()
704 cpu_to_le32(vif->bss_conf.use_short_preamble ? in iwl_mvm_mac_ctxt_cmd_common()
707 cpu_to_le32(vif->bss_conf.use_short_slot ? in iwl_mvm_mac_ctxt_cmd_common()
724 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_ctxt_cmd_common()
728 if (vif->bss_conf.qos) in iwl_mvm_mac_ctxt_cmd_common()
731 if (vif->bss_conf.use_cts_prot) in iwl_mvm_mac_ctxt_cmd_common()
735 vif->bss_conf.use_cts_prot, in iwl_mvm_mac_ctxt_cmd_common()
736 vif->bss_conf.ht_operation_mode); in iwl_mvm_mac_ctxt_cmd_common()
737 if (vif->bss_conf.chandef.width != NL80211_CHAN_WIDTH_20_NOHT) in iwl_mvm_mac_ctxt_cmd_common()
740 iwl_mvm_mac_ctxt_set_ht_flags(mvm, vif, cmd); in iwl_mvm_mac_ctxt_cmd_common()
757 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_sta() argument
764 WARN_ON(vif->type != NL80211_IFTYPE_STATION); in iwl_mvm_mac_ctxt_cmd_sta()
767 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, bssid_override, action); in iwl_mvm_mac_ctxt_cmd_sta()
769 if (vif->p2p) { in iwl_mvm_mac_ctxt_cmd_sta()
771 &vif->bss_conf.p2p_noa_attr; in iwl_mvm_mac_ctxt_cmd_sta()
781 if (vif->bss_conf.assoc && vif->bss_conf.dtim_period && in iwl_mvm_mac_ctxt_cmd_sta()
800 dtim_offs = vif->bss_conf.sync_dtim_count * in iwl_mvm_mac_ctxt_cmd_sta()
801 vif->bss_conf.beacon_int; in iwl_mvm_mac_ctxt_cmd_sta()
806 cpu_to_le64(vif->bss_conf.sync_tsf + dtim_offs); in iwl_mvm_mac_ctxt_cmd_sta()
808 cpu_to_le32(vif->bss_conf.sync_device_ts + dtim_offs); in iwl_mvm_mac_ctxt_cmd_sta()
825 ctxt_sta->bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_sta()
827 cpu_to_le32(iwl_mvm_reciprocal(vif->bss_conf.beacon_int)); in iwl_mvm_mac_ctxt_cmd_sta()
828 ctxt_sta->dtim_interval = cpu_to_le32(vif->bss_conf.beacon_int * in iwl_mvm_mac_ctxt_cmd_sta()
829 vif->bss_conf.dtim_period); in iwl_mvm_mac_ctxt_cmd_sta()
831 cpu_to_le32(iwl_mvm_reciprocal(vif->bss_conf.beacon_int * in iwl_mvm_mac_ctxt_cmd_sta()
832 vif->bss_conf.dtim_period)); in iwl_mvm_mac_ctxt_cmd_sta()
835 ctxt_sta->assoc_id = cpu_to_le32(vif->bss_conf.aid); in iwl_mvm_mac_ctxt_cmd_sta()
841 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_listener() argument
846 WARN_ON(vif->type != NL80211_IFTYPE_MONITOR); in iwl_mvm_mac_ctxt_cmd_listener()
848 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_listener()
861 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_ibss() argument
864 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_ibss()
867 WARN_ON(vif->type != NL80211_IFTYPE_ADHOC); in iwl_mvm_mac_ctxt_cmd_ibss()
869 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_ibss()
875 cmd.ibss.bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_ibss()
877 cpu_to_le32(iwl_mvm_reciprocal(vif->bss_conf.beacon_int)); in iwl_mvm_mac_ctxt_cmd_ibss()
889 static void iwl_mvm_go_iterator(void *_data, u8 *mac, struct ieee80211_vif *vif) in iwl_mvm_go_iterator() argument
892 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_go_iterator()
894 if (vif->type == NL80211_IFTYPE_AP && vif->p2p && in iwl_mvm_go_iterator()
900 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_p2p_device() argument
906 WARN_ON(vif->type != NL80211_IFTYPE_P2P_DEVICE); in iwl_mvm_mac_ctxt_cmd_p2p_device()
908 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_p2p_device()
957 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon() argument
960 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_send_beacon()
998 if (info->band == IEEE80211_BAND_5GHZ || vif->p2p) { in iwl_mvm_mac_ctxt_send_beacon()
1008 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_ctxt_send_beacon()
1026 struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_beacon_changed() argument
1031 WARN_ON(vif->type != NL80211_IFTYPE_AP && in iwl_mvm_mac_ctxt_beacon_changed()
1032 vif->type != NL80211_IFTYPE_ADHOC); in iwl_mvm_mac_ctxt_beacon_changed()
1034 beacon = ieee80211_beacon_get_template(mvm->hw, vif, NULL); in iwl_mvm_mac_ctxt_beacon_changed()
1038 ret = iwl_mvm_mac_ctxt_send_beacon(mvm, vif, beacon); in iwl_mvm_mac_ctxt_beacon_changed()
1045 struct ieee80211_vif *vif; member
1052 struct ieee80211_vif *vif) in iwl_mvm_mac_ap_iterator() argument
1056 if (vif->type != NL80211_IFTYPE_STATION || !vif->bss_conf.assoc) in iwl_mvm_mac_ap_iterator()
1060 if (vif->p2p && data->beacon_device_ts) in iwl_mvm_mac_ap_iterator()
1063 data->beacon_device_ts = vif->bss_conf.sync_device_ts; in iwl_mvm_mac_ap_iterator()
1064 data->beacon_int = vif->bss_conf.beacon_int; in iwl_mvm_mac_ap_iterator()
1071 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_fill_ap() argument
1075 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1078 .vif = vif, in iwl_mvm_mac_ctxt_cmd_fill_ap()
1082 ctxt_ap->bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1084 cpu_to_le32(iwl_mvm_reciprocal(vif->bss_conf.beacon_int)); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1085 ctxt_ap->dtim_interval = cpu_to_le32(vif->bss_conf.beacon_int * in iwl_mvm_mac_ctxt_cmd_fill_ap()
1086 vif->bss_conf.dtim_period); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1088 cpu_to_le32(iwl_mvm_reciprocal(vif->bss_conf.beacon_int * in iwl_mvm_mac_ctxt_cmd_fill_ap()
1089 vif->bss_conf.dtim_period)); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1091 ctxt_ap->mcast_qid = cpu_to_le32(vif->cab_queue); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1128 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_ap() argument
1133 WARN_ON(vif->type != NL80211_IFTYPE_AP || vif->p2p); in iwl_mvm_mac_ctxt_cmd_ap()
1136 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_ap()
1146 iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd.ap, in iwl_mvm_mac_ctxt_cmd_ap()
1153 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_go() argument
1157 struct ieee80211_p2p_noa_attr *noa = &vif->bss_conf.p2p_noa_attr; in iwl_mvm_mac_ctxt_cmd_go()
1159 WARN_ON(vif->type != NL80211_IFTYPE_AP || !vif->p2p); in iwl_mvm_mac_ctxt_cmd_go()
1162 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_go()
1172 iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd.go.ap, in iwl_mvm_mac_ctxt_cmd_go()
1184 static int iwl_mvm_mac_ctx_send(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_mac_ctx_send() argument
1188 switch (vif->type) { in iwl_mvm_mac_ctx_send()
1190 return iwl_mvm_mac_ctxt_cmd_sta(mvm, vif, action, in iwl_mvm_mac_ctx_send()
1195 if (!vif->p2p) in iwl_mvm_mac_ctx_send()
1196 return iwl_mvm_mac_ctxt_cmd_ap(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1198 return iwl_mvm_mac_ctxt_cmd_go(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1201 return iwl_mvm_mac_ctxt_cmd_listener(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1203 return iwl_mvm_mac_ctxt_cmd_p2p_device(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1205 return iwl_mvm_mac_ctxt_cmd_ibss(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1213 int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_add() argument
1215 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_add()
1219 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_add()
1222 ret = iwl_mvm_mac_ctx_send(mvm, vif, FW_CTXT_ACTION_ADD, in iwl_mvm_mac_ctxt_add()
1228 iwl_mvm_set_last_nonqos_seq(mvm, vif); in iwl_mvm_mac_ctxt_add()
1234 int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_changed() argument
1237 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_changed()
1240 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_changed()
1243 return iwl_mvm_mac_ctx_send(mvm, vif, FW_CTXT_ACTION_MODIFY, in iwl_mvm_mac_ctxt_changed()
1247 int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_remove() argument
1249 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_remove()
1254 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_remove()
1272 if (vif->type == NL80211_IFTYPE_MONITOR) in iwl_mvm_mac_ctxt_remove()
1373 struct ieee80211_vif *vif) in iwl_mvm_beacon_loss_iterator() argument
1376 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_beacon_loss_iterator()
1395 ieee80211_beacon_loss(vif); in iwl_mvm_beacon_loss_iterator()
1410 if (!iwl_fw_dbg_trigger_check_stop(mvm, vif, trigger)) in iwl_mvm_beacon_loss_iterator()