Lines Matching full:vif
36 struct ieee80211_vif *vif; member
44 struct ieee80211_vif *vif) in iwl_mvm_mac_tsf_id_iter() argument
47 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_tsf_id_iter()
51 if (vif == data->vif) in iwl_mvm_mac_tsf_id_iter()
70 switch (data->vif->type) { in iwl_mvm_mac_tsf_id_iter()
80 if (vif->type != NL80211_IFTYPE_AP || in iwl_mvm_mac_tsf_id_iter()
85 min_bi = min(data->vif->bss_conf.beacon_int, in iwl_mvm_mac_tsf_id_iter()
86 vif->bss_conf.beacon_int); in iwl_mvm_mac_tsf_id_iter()
91 if ((data->vif->bss_conf.beacon_int - in iwl_mvm_mac_tsf_id_iter()
92 vif->bss_conf.beacon_int) % min_bi == 0) { in iwl_mvm_mac_tsf_id_iter()
108 if ((vif->type != NL80211_IFTYPE_AP && in iwl_mvm_mac_tsf_id_iter()
109 vif->type != NL80211_IFTYPE_STATION) || in iwl_mvm_mac_tsf_id_iter()
114 min_bi = min(data->vif->bss_conf.beacon_int, in iwl_mvm_mac_tsf_id_iter()
115 vif->bss_conf.beacon_int); in iwl_mvm_mac_tsf_id_iter()
120 if ((data->vif->bss_conf.beacon_int - in iwl_mvm_mac_tsf_id_iter()
121 vif->bss_conf.beacon_int) % min_bi == 0) { in iwl_mvm_mac_tsf_id_iter()
150 struct ieee80211_vif *vif) in iwl_mvm_mac_iface_iterator() argument
153 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_iface_iterator()
156 if (vif == data->vif) { in iwl_mvm_mac_iface_iterator()
170 iwl_mvm_mac_tsf_id_iter(_data, mac, vif); in iwl_mvm_mac_iface_iterator()
174 struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_recalc_tsf_id() argument
176 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_recalc_tsf_id()
179 .vif = vif, in iwl_mvm_mac_ctxt_recalc_tsf_id()
196 int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_init() argument
198 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_init()
201 .vif = vif, in iwl_mvm_mac_ctxt_init()
228 /* Currently, MAC ID 0 should be used only for the managed/IBSS vif */ in iwl_mvm_mac_ctxt_init()
229 switch (vif->type) { in iwl_mvm_mac_ctxt_init()
233 if (!vif->p2p) in iwl_mvm_mac_ctxt_init()
247 * the vif being added already. in iwl_mvm_mac_ctxt_init()
286 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_ctxt_init()
290 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_ctxt_init()
291 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mac_ctxt_init()
314 struct ieee80211_vif *vif, in iwl_mvm_ack_rates() argument
319 unsigned long basic = vif->bss_conf.basic_rates; in iwl_mvm_ack_rates()
400 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_set_ht_flags() argument
404 u8 protection_mode = vif->bss_conf.ht_operation_mode & in iwl_mvm_mac_ctxt_set_ht_flags()
423 if (vif->bss_conf.chandef.width > NL80211_CHAN_WIDTH_20) in iwl_mvm_mac_ctxt_set_ht_flags()
434 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_common() argument
439 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_common()
441 bool ht_enabled = !!(vif->bss_conf.ht_operation_mode & in iwl_mvm_mac_ctxt_cmd_common()
444 const u8 *bssid = bssid_override ?: vif->bss_conf.bssid; in iwl_mvm_mac_ctxt_cmd_common()
451 switch (vif->type) { in iwl_mvm_mac_ctxt_cmd_common()
453 if (vif->p2p) in iwl_mvm_mac_ctxt_cmd_common()
476 memcpy(cmd->node_addr, vif->addr, ETH_ALEN); in iwl_mvm_mac_ctxt_cmd_common()
484 chanctx = rcu_dereference(vif->chanctx_conf); in iwl_mvm_mac_ctxt_cmd_common()
485 iwl_mvm_ack_rates(mvm, vif, chanctx ? chanctx->def.chan->band in iwl_mvm_mac_ctxt_cmd_common()
494 cpu_to_le32(vif->bss_conf.use_short_preamble ? in iwl_mvm_mac_ctxt_cmd_common()
497 cpu_to_le32(vif->bss_conf.use_short_slot ? in iwl_mvm_mac_ctxt_cmd_common()
516 if (vif->bss_conf.qos) in iwl_mvm_mac_ctxt_cmd_common()
519 if (vif->bss_conf.use_cts_prot) in iwl_mvm_mac_ctxt_cmd_common()
523 vif->bss_conf.use_cts_prot, in iwl_mvm_mac_ctxt_cmd_common()
524 vif->bss_conf.ht_operation_mode); in iwl_mvm_mac_ctxt_cmd_common()
525 if (vif->bss_conf.chandef.width != NL80211_CHAN_WIDTH_20_NOHT) in iwl_mvm_mac_ctxt_cmd_common()
528 iwl_mvm_mac_ctxt_set_ht_flags(mvm, vif, cmd); in iwl_mvm_mac_ctxt_cmd_common()
543 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_sta() argument
550 WARN_ON(vif->type != NL80211_IFTYPE_STATION); in iwl_mvm_mac_ctxt_cmd_sta()
553 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, bssid_override, action); in iwl_mvm_mac_ctxt_cmd_sta()
555 if (vif->p2p) { in iwl_mvm_mac_ctxt_cmd_sta()
557 &vif->bss_conf.p2p_noa_attr; in iwl_mvm_mac_ctxt_cmd_sta()
567 if (vif->bss_conf.assoc && vif->bss_conf.dtim_period && in iwl_mvm_mac_ctxt_cmd_sta()
569 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_sta()
588 dtim_offs = vif->bss_conf.sync_dtim_count * in iwl_mvm_mac_ctxt_cmd_sta()
589 vif->bss_conf.beacon_int; in iwl_mvm_mac_ctxt_cmd_sta()
594 cpu_to_le64(vif->bss_conf.sync_tsf + dtim_offs); in iwl_mvm_mac_ctxt_cmd_sta()
596 cpu_to_le32(vif->bss_conf.sync_device_ts + dtim_offs); in iwl_mvm_mac_ctxt_cmd_sta()
598 cpu_to_le32(vif->bss_conf.sync_device_ts); in iwl_mvm_mac_ctxt_cmd_sta()
638 ctxt_sta->bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_sta()
639 ctxt_sta->dtim_interval = cpu_to_le32(vif->bss_conf.beacon_int * in iwl_mvm_mac_ctxt_cmd_sta()
640 vif->bss_conf.dtim_period); in iwl_mvm_mac_ctxt_cmd_sta()
643 ctxt_sta->assoc_id = cpu_to_le32(vif->bss_conf.aid); in iwl_mvm_mac_ctxt_cmd_sta()
645 if (vif->probe_req_reg && vif->bss_conf.assoc && vif->p2p) in iwl_mvm_mac_ctxt_cmd_sta()
648 if (vif->bss_conf.he_support && !iwlwifi_mod_params.disable_11ax) { in iwl_mvm_mac_ctxt_cmd_sta()
650 if (vif->bss_conf.twt_requester && IWL_MVM_USE_TWT) in iwl_mvm_mac_ctxt_cmd_sta()
652 if (vif->bss_conf.twt_protected) in iwl_mvm_mac_ctxt_cmd_sta()
655 if (vif->bss_conf.twt_broadcast) in iwl_mvm_mac_ctxt_cmd_sta()
665 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_listener() argument
672 WARN_ON(vif->type != NL80211_IFTYPE_MONITOR); in iwl_mvm_mac_ctxt_cmd_listener()
674 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_listener()
686 vif->type, IWL_STA_GENERAL_PURPOSE); in iwl_mvm_mac_ctxt_cmd_listener()
694 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_ibss() argument
697 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_ibss()
700 WARN_ON(vif->type != NL80211_IFTYPE_ADHOC); in iwl_mvm_mac_ctxt_cmd_ibss()
702 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_ibss()
709 cmd.ibss.bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_ibss()
721 static void iwl_mvm_go_iterator(void *_data, u8 *mac, struct ieee80211_vif *vif) in iwl_mvm_go_iterator() argument
724 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_go_iterator()
726 if (vif->type == NL80211_IFTYPE_AP && vif->p2p && in iwl_mvm_go_iterator()
732 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_p2p_device() argument
738 WARN_ON(vif->type != NL80211_IFTYPE_P2P_DEVICE); in iwl_mvm_mac_ctxt_cmd_p2p_device()
740 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_p2p_device()
804 struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_get_lowest_rate() argument
807 if (info->band == NL80211_BAND_2GHZ && !vif->p2p) in iwl_mvm_mac_ctxt_get_lowest_rate()
816 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_set_tx() argument
820 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_set_tx()
845 rate = iwl_mvm_mac_ctxt_get_lowest_rate(info, vif); in iwl_mvm_mac_ctxt_set_tx()
873 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon_v6() argument
876 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_send_beacon_v6()
879 iwl_mvm_mac_ctxt_set_tx(mvm, vif, beacon, &beacon_cmd.tx); in iwl_mvm_mac_ctxt_send_beacon_v6()
883 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_ctxt_send_beacon_v6()
893 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon_v7() argument
896 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_send_beacon_v7()
899 iwl_mvm_mac_ctxt_set_tx(mvm, vif, beacon, &beacon_cmd.tx); in iwl_mvm_mac_ctxt_send_beacon_v7()
903 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_ctxt_send_beacon_v7()
922 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon_v9() argument
925 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_send_beacon_v9()
928 u8 rate = iwl_mvm_mac_ctxt_get_lowest_rate(info, vif); in iwl_mvm_mac_ctxt_send_beacon_v9()
940 ctx = rcu_dereference(vif->chanctx_conf); in iwl_mvm_mac_ctxt_send_beacon_v9()
947 cpu_to_le32(~crc32_le(~0, vif->bss_conf.ssid, in iwl_mvm_mac_ctxt_send_beacon_v9()
948 vif->bss_conf.ssid_len)); in iwl_mvm_mac_ctxt_send_beacon_v9()
956 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_ctxt_send_beacon_v9()
975 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon() argument
986 return iwl_mvm_mac_ctxt_send_beacon_v6(mvm, vif, beacon); in iwl_mvm_mac_ctxt_send_beacon()
990 return iwl_mvm_mac_ctxt_send_beacon_v9(mvm, vif, beacon); in iwl_mvm_mac_ctxt_send_beacon()
992 return iwl_mvm_mac_ctxt_send_beacon_v7(mvm, vif, beacon); in iwl_mvm_mac_ctxt_send_beacon()
997 struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_beacon_changed() argument
1002 WARN_ON(vif->type != NL80211_IFTYPE_AP && in iwl_mvm_mac_ctxt_beacon_changed()
1003 vif->type != NL80211_IFTYPE_ADHOC); in iwl_mvm_mac_ctxt_beacon_changed()
1005 beacon = ieee80211_beacon_get_template(mvm->hw, vif, NULL); in iwl_mvm_mac_ctxt_beacon_changed()
1016 ret = iwl_mvm_mac_ctxt_send_beacon(mvm, vif, beacon); in iwl_mvm_mac_ctxt_beacon_changed()
1023 struct ieee80211_vif *vif; member
1030 struct ieee80211_vif *vif) in iwl_mvm_mac_ap_iterator() argument
1034 if (vif->type != NL80211_IFTYPE_STATION || !vif->bss_conf.assoc) in iwl_mvm_mac_ap_iterator()
1038 if (vif->p2p && data->beacon_device_ts) in iwl_mvm_mac_ap_iterator()
1041 data->beacon_device_ts = vif->bss_conf.sync_device_ts; in iwl_mvm_mac_ap_iterator()
1042 data->beacon_int = vif->bss_conf.beacon_int; in iwl_mvm_mac_ap_iterator()
1049 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_fill_ap() argument
1054 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1057 .vif = vif, in iwl_mvm_mac_ctxt_cmd_fill_ap()
1078 ctxt_ap->bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1079 ctxt_ap->dtim_interval = cpu_to_le32(vif->bss_conf.beacon_int * in iwl_mvm_mac_ctxt_cmd_fill_ap()
1080 vif->bss_conf.dtim_period); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1119 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_ap() argument
1124 WARN_ON(vif->type != NL80211_IFTYPE_AP || vif->p2p); in iwl_mvm_mac_ctxt_cmd_ap()
1127 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_ap()
1130 iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd, &cmd.ap, in iwl_mvm_mac_ctxt_cmd_ap()
1137 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_go() argument
1141 struct ieee80211_p2p_noa_attr *noa = &vif->bss_conf.p2p_noa_attr; in iwl_mvm_mac_ctxt_cmd_go()
1143 WARN_ON(vif->type != NL80211_IFTYPE_AP || !vif->p2p); in iwl_mvm_mac_ctxt_cmd_go()
1146 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_go()
1149 iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd, &cmd.go.ap, in iwl_mvm_mac_ctxt_cmd_go()
1161 static int iwl_mvm_mac_ctx_send(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_mac_ctx_send() argument
1165 switch (vif->type) { in iwl_mvm_mac_ctx_send()
1167 return iwl_mvm_mac_ctxt_cmd_sta(mvm, vif, action, in iwl_mvm_mac_ctx_send()
1171 if (!vif->p2p) in iwl_mvm_mac_ctx_send()
1172 return iwl_mvm_mac_ctxt_cmd_ap(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1174 return iwl_mvm_mac_ctxt_cmd_go(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1176 return iwl_mvm_mac_ctxt_cmd_listener(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1178 return iwl_mvm_mac_ctxt_cmd_p2p_device(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1180 return iwl_mvm_mac_ctxt_cmd_ibss(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1188 int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_add() argument
1190 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_add()
1194 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_add()
1197 ret = iwl_mvm_mac_ctx_send(mvm, vif, FW_CTXT_ACTION_ADD, in iwl_mvm_mac_ctxt_add()
1203 iwl_mvm_set_last_nonqos_seq(mvm, vif); in iwl_mvm_mac_ctxt_add()
1209 int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_changed() argument
1212 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_changed()
1215 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_changed()
1218 return iwl_mvm_mac_ctx_send(mvm, vif, FW_CTXT_ACTION_MODIFY, in iwl_mvm_mac_ctxt_changed()
1222 int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_remove() argument
1224 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_remove()
1229 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_remove()
1247 if (vif->type == NL80211_IFTYPE_MONITOR) { in iwl_mvm_mac_ctxt_remove()
1376 struct ieee80211_vif *vif; in iwl_mvm_rx_missed_beacons_notif() local
1390 vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, true); in iwl_mvm_rx_missed_beacons_notif()
1391 if (!vif) in iwl_mvm_rx_missed_beacons_notif()
1402 iwl_mvm_connection_loss(mvm, vif, "missed beacons"); in iwl_mvm_rx_missed_beacons_notif()
1404 ieee80211_beacon_loss(vif); in iwl_mvm_rx_missed_beacons_notif()
1409 trigger = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_rx_missed_beacons_notif()
1496 struct ieee80211_vif *vif; in iwl_mvm_probe_resp_data_notif() local
1502 vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, false); in iwl_mvm_probe_resp_data_notif()
1503 if (!vif) in iwl_mvm_probe_resp_data_notif()
1506 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_probe_resp_data_notif()
1535 ieee80211_beacon_set_cntdwn(vif, notif->csa_counter); in iwl_mvm_probe_resp_data_notif()
1543 struct ieee80211_vif *csa_vif, *vif; in iwl_mvm_channel_switch_noa_notif() local
1554 vif = rcu_dereference(mvm->vif_id_to_mac[mac_id]); in iwl_mvm_channel_switch_noa_notif()
1555 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_channel_switch_noa_notif()
1557 switch (vif->type) { in iwl_mvm_channel_switch_noa_notif()
1561 csa_vif != vif)) in iwl_mvm_channel_switch_noa_notif()
1566 "channel switch noa notification on unexpected vif (csa_vif=%d, notif=%d)", in iwl_mvm_channel_switch_noa_notif()
1583 iwl_mvm_csa_client_absent(mvm, vif); in iwl_mvm_channel_switch_noa_notif()
1585 ieee80211_chswitch_done(vif, true); in iwl_mvm_channel_switch_noa_notif()
1601 struct ieee80211_vif *vif; in iwl_mvm_rx_missed_vap_notif() local
1612 vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, true); in iwl_mvm_rx_missed_vap_notif()
1613 if (vif) in iwl_mvm_rx_missed_vap_notif()
1614 iwl_mvm_connection_loss(mvm, vif, "missed vap beacon"); in iwl_mvm_rx_missed_vap_notif()