Lines Matching refs: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()
229 switch (vif->type) { in iwl_mvm_mac_ctxt_init()
233 if (!vif->p2p) 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()
644 ctxt_sta->bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_sta()
645 ctxt_sta->dtim_interval = cpu_to_le32(vif->bss_conf.beacon_int * in iwl_mvm_mac_ctxt_cmd_sta()
646 vif->bss_conf.dtim_period); in iwl_mvm_mac_ctxt_cmd_sta()
649 ctxt_sta->assoc_id = cpu_to_le32(vif->bss_conf.aid); in iwl_mvm_mac_ctxt_cmd_sta()
651 if (vif->probe_req_reg && vif->bss_conf.assoc && vif->p2p) in iwl_mvm_mac_ctxt_cmd_sta()
654 if (vif->bss_conf.he_support && !iwlwifi_mod_params.disable_11ax) { in iwl_mvm_mac_ctxt_cmd_sta()
656 if (vif->bss_conf.twt_requester && IWL_MVM_USE_TWT) in iwl_mvm_mac_ctxt_cmd_sta()
658 if (vif->bss_conf.twt_protected) in iwl_mvm_mac_ctxt_cmd_sta()
661 if (vif->bss_conf.twt_broadcast) in iwl_mvm_mac_ctxt_cmd_sta()
671 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_listener() argument
678 WARN_ON(vif->type != NL80211_IFTYPE_MONITOR); in iwl_mvm_mac_ctxt_cmd_listener()
680 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_listener()
692 vif->type, IWL_STA_GENERAL_PURPOSE); in iwl_mvm_mac_ctxt_cmd_listener()
700 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_ibss() argument
703 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_ibss()
706 WARN_ON(vif->type != NL80211_IFTYPE_ADHOC); in iwl_mvm_mac_ctxt_cmd_ibss()
708 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_ibss()
715 cmd.ibss.bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_ibss()
727 static void iwl_mvm_go_iterator(void *_data, u8 *mac, struct ieee80211_vif *vif) in iwl_mvm_go_iterator() argument
730 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_go_iterator()
732 if (vif->type == NL80211_IFTYPE_AP && vif->p2p && in iwl_mvm_go_iterator()
738 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_p2p_device() argument
744 WARN_ON(vif->type != NL80211_IFTYPE_P2P_DEVICE); in iwl_mvm_mac_ctxt_cmd_p2p_device()
746 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_p2p_device()
810 struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_get_lowest_rate() argument
813 if (info->band == NL80211_BAND_2GHZ && !vif->p2p) in iwl_mvm_mac_ctxt_get_lowest_rate()
837 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_set_tx() argument
841 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_set_tx()
866 rate = iwl_mvm_mac_ctxt_get_lowest_rate(info, vif); in iwl_mvm_mac_ctxt_set_tx()
895 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon_v6() argument
898 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_send_beacon_v6()
901 iwl_mvm_mac_ctxt_set_tx(mvm, vif, beacon, &beacon_cmd.tx); in iwl_mvm_mac_ctxt_send_beacon_v6()
905 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_ctxt_send_beacon_v6()
915 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon_v7() argument
918 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_send_beacon_v7()
921 iwl_mvm_mac_ctxt_set_tx(mvm, vif, beacon, &beacon_cmd.tx); in iwl_mvm_mac_ctxt_send_beacon_v7()
925 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_ctxt_send_beacon_v7()
944 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon_v9() argument
947 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_send_beacon_v9()
950 u8 rate = iwl_mvm_mac_ctxt_get_lowest_rate(info, vif); in iwl_mvm_mac_ctxt_send_beacon_v9()
958 ctx = rcu_dereference(vif->chanctx_conf); in iwl_mvm_mac_ctxt_send_beacon_v9()
969 cpu_to_le32(~crc32_le(~0, vif->bss_conf.ssid, in iwl_mvm_mac_ctxt_send_beacon_v9()
970 vif->bss_conf.ssid_len)); in iwl_mvm_mac_ctxt_send_beacon_v9()
978 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_mac_ctxt_send_beacon_v9()
997 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_send_beacon() argument
1008 return iwl_mvm_mac_ctxt_send_beacon_v6(mvm, vif, beacon); in iwl_mvm_mac_ctxt_send_beacon()
1012 return iwl_mvm_mac_ctxt_send_beacon_v9(mvm, vif, beacon); in iwl_mvm_mac_ctxt_send_beacon()
1014 return iwl_mvm_mac_ctxt_send_beacon_v7(mvm, vif, beacon); in iwl_mvm_mac_ctxt_send_beacon()
1019 struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_beacon_changed() argument
1024 WARN_ON(vif->type != NL80211_IFTYPE_AP && in iwl_mvm_mac_ctxt_beacon_changed()
1025 vif->type != NL80211_IFTYPE_ADHOC); in iwl_mvm_mac_ctxt_beacon_changed()
1027 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
1076 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1079 .vif = vif, in iwl_mvm_mac_ctxt_cmd_fill_ap()
1100 ctxt_ap->bi = cpu_to_le32(vif->bss_conf.beacon_int); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1101 ctxt_ap->dtim_interval = cpu_to_le32(vif->bss_conf.beacon_int * in iwl_mvm_mac_ctxt_cmd_fill_ap()
1102 vif->bss_conf.dtim_period); in iwl_mvm_mac_ctxt_cmd_fill_ap()
1141 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_ap() argument
1146 WARN_ON(vif->type != NL80211_IFTYPE_AP || vif->p2p); in iwl_mvm_mac_ctxt_cmd_ap()
1149 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_ap()
1152 iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd, &cmd.ap, in iwl_mvm_mac_ctxt_cmd_ap()
1159 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_cmd_go() argument
1163 struct ieee80211_p2p_noa_attr *noa = &vif->bss_conf.p2p_noa_attr; in iwl_mvm_mac_ctxt_cmd_go()
1165 WARN_ON(vif->type != NL80211_IFTYPE_AP || !vif->p2p); in iwl_mvm_mac_ctxt_cmd_go()
1168 iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); in iwl_mvm_mac_ctxt_cmd_go()
1171 iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd, &cmd.go.ap, in iwl_mvm_mac_ctxt_cmd_go()
1183 static int iwl_mvm_mac_ctx_send(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_mac_ctx_send() argument
1187 switch (vif->type) { in iwl_mvm_mac_ctx_send()
1189 return iwl_mvm_mac_ctxt_cmd_sta(mvm, vif, action, in iwl_mvm_mac_ctx_send()
1193 if (!vif->p2p) in iwl_mvm_mac_ctx_send()
1194 return iwl_mvm_mac_ctxt_cmd_ap(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1196 return iwl_mvm_mac_ctxt_cmd_go(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1198 return iwl_mvm_mac_ctxt_cmd_listener(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1200 return iwl_mvm_mac_ctxt_cmd_p2p_device(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1202 return iwl_mvm_mac_ctxt_cmd_ibss(mvm, vif, action); in iwl_mvm_mac_ctx_send()
1210 int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_add() argument
1212 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_add()
1216 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_add()
1219 ret = iwl_mvm_mac_ctx_send(mvm, vif, FW_CTXT_ACTION_ADD, in iwl_mvm_mac_ctxt_add()
1225 iwl_mvm_set_last_nonqos_seq(mvm, vif); in iwl_mvm_mac_ctxt_add()
1231 int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_changed() argument
1234 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_changed()
1237 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_changed()
1240 return iwl_mvm_mac_ctx_send(mvm, vif, FW_CTXT_ACTION_MODIFY, in iwl_mvm_mac_ctxt_changed()
1244 int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_mac_ctxt_remove() argument
1246 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ctxt_remove()
1251 vif->addr, ieee80211_vif_type_p2p(vif))) in iwl_mvm_mac_ctxt_remove()
1269 if (vif->type == NL80211_IFTYPE_MONITOR) { in iwl_mvm_mac_ctxt_remove()
1398 struct ieee80211_vif *vif; in iwl_mvm_rx_missed_beacons_notif() local
1412 vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, true); in iwl_mvm_rx_missed_beacons_notif()
1413 if (!vif) in iwl_mvm_rx_missed_beacons_notif()
1424 iwl_mvm_connection_loss(mvm, vif, "missed beacons"); in iwl_mvm_rx_missed_beacons_notif()
1426 ieee80211_beacon_loss(vif); in iwl_mvm_rx_missed_beacons_notif()
1431 trigger = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_rx_missed_beacons_notif()
1518 struct ieee80211_vif *vif; in iwl_mvm_probe_resp_data_notif() local
1524 vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, false); in iwl_mvm_probe_resp_data_notif()
1525 if (!vif) in iwl_mvm_probe_resp_data_notif()
1528 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_probe_resp_data_notif()
1557 ieee80211_beacon_set_cntdwn(vif, notif->csa_counter); in iwl_mvm_probe_resp_data_notif()
1565 struct ieee80211_vif *csa_vif, *vif; in iwl_mvm_channel_switch_start_notif() local
1576 vif = rcu_dereference(mvm->vif_id_to_mac[mac_id]); in iwl_mvm_channel_switch_start_notif()
1577 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_channel_switch_start_notif()
1579 switch (vif->type) { in iwl_mvm_channel_switch_start_notif()
1583 csa_vif != vif)) in iwl_mvm_channel_switch_start_notif()
1605 iwl_mvm_csa_client_absent(mvm, vif); in iwl_mvm_channel_switch_start_notif()
1607 ieee80211_chswitch_done(vif, true); in iwl_mvm_channel_switch_start_notif()
1623 struct ieee80211_vif *vif; in iwl_mvm_rx_missed_vap_notif() local
1634 vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, true); in iwl_mvm_rx_missed_vap_notif()
1635 if (vif) in iwl_mvm_rx_missed_vap_notif()
1636 iwl_mvm_connection_loss(mvm, vif, "missed vap beacon"); in iwl_mvm_rx_missed_vap_notif()