Lines Matching full:vif

8 					 struct ieee80211_vif *vif)  in iwl_mvm_mld_mac_add_interface()  argument
11 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_mac_add_interface()
29 ret = iwl_mvm_mac_ctxt_init(mvm, vif); in iwl_mvm_mld_mac_add_interface()
33 rcu_assign_pointer(mvm->vif_id_to_mac[mvmvif->id], vif); in iwl_mvm_mld_mac_add_interface()
43 ret = iwl_mvm_mld_mac_ctxt_add(mvm, vif); in iwl_mvm_mld_mac_add_interface()
48 ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_mld_mac_add_interface()
53 vif->type == NL80211_IFTYPE_STATION && !vif->p2p) { in iwl_mvm_mld_mac_add_interface()
55 vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mld_mac_add_interface()
64 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mld_mac_add_interface()
72 ret = iwl_mvm_add_link(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_mac_add_interface()
76 ret = iwl_mvm_link_changed(mvm, vif, &vif->bss_conf, in iwl_mvm_mld_mac_add_interface()
83 ret = iwl_mvm_mld_add_bcast_sta(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_mac_add_interface()
87 /* Save a pointer to p2p device vif, so it can later be used to in iwl_mvm_mld_mac_add_interface()
90 mvm->p2p_device_vif = vif; in iwl_mvm_mld_mac_add_interface()
92 ret = iwl_mvm_add_link(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_mac_add_interface()
101 iwl_mvm_tcm_add_vif(mvm, vif); in iwl_mvm_mld_mac_add_interface()
105 if (vif->type == NL80211_IFTYPE_MONITOR) { in iwl_mvm_mld_mac_add_interface()
110 iwl_mvm_vif_dbgfs_register(mvm, vif); in iwl_mvm_mld_mac_add_interface()
113 vif->type == NL80211_IFTYPE_STATION && !vif->p2p && in iwl_mvm_mld_mac_add_interface()
115 iwl_mei_set_nic_info(vif->addr, mvm->nvm_data->hw_addr); in iwl_mvm_mld_mac_add_interface()
116 iwl_mei_set_netdev(ieee80211_vif_to_wdev(vif)->netdev); in iwl_mvm_mld_mac_add_interface()
117 mvm->csme_vif = vif; in iwl_mvm_mld_mac_add_interface()
123 iwl_mvm_disable_link(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_mac_add_interface()
129 vif->driver_flags &= ~(IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mld_mac_add_interface()
135 iwl_mvm_mld_mac_ctxt_remove(mvm, vif); in iwl_mvm_mld_mac_add_interface()
143 struct ieee80211_vif *vif) in iwl_mvm_mld_mac_remove_interface() argument
146 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_mac_remove_interface()
149 iwl_mvm_prepare_mac_removal(mvm, vif); in iwl_mvm_mld_mac_remove_interface()
151 if (!(vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mld_mac_remove_interface()
152 vif->type == NL80211_IFTYPE_ADHOC)) in iwl_mvm_mld_mac_remove_interface()
153 iwl_mvm_tcm_rm_vif(mvm, vif); in iwl_mvm_mld_mac_remove_interface()
157 if (vif == mvm->csme_vif) { in iwl_mvm_mld_mac_remove_interface()
164 vif->driver_flags &= ~(IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mld_mac_remove_interface()
168 if (vif->bss_conf.ftm_responder) in iwl_mvm_mld_mac_remove_interface()
171 iwl_mvm_vif_dbgfs_clean(mvm, vif); in iwl_mvm_mld_mac_remove_interface()
176 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mld_mac_remove_interface()
177 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mld_mac_remove_interface()
179 if (vif == mvm->noa_vif) { in iwl_mvm_mld_mac_remove_interface()
188 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mld_mac_remove_interface()
192 iwl_mvm_mld_rm_bcast_sta(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_mac_remove_interface()
193 iwl_mvm_disable_link(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_mac_remove_interface()
197 iwl_mvm_disable_link(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_mac_remove_interface()
200 iwl_mvm_mld_mac_ctxt_remove(mvm, vif); in iwl_mvm_mld_mac_remove_interface()
210 if (vif->type == NL80211_IFTYPE_MONITOR) { in iwl_mvm_mld_mac_remove_interface()
218 static unsigned int iwl_mvm_mld_count_active_links(struct ieee80211_vif *vif) in iwl_mvm_mld_count_active_links() argument
226 link_conf = link_conf_dereference_protected(vif, i); in iwl_mvm_mld_count_active_links()
236 struct ieee80211_vif *vif) in iwl_mvm_esr_mode_active() argument
238 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_esr_mode_active()
244 vif->driver_flags |= IEEE80211_VIF_DISABLE_SMPS_OVERRIDE; in iwl_mvm_esr_mode_active()
246 iwl_mvm_update_smps_on_active_links(mvm, vif, IWL_MVM_SMPS_REQ_FW, in iwl_mvm_esr_mode_active()
267 struct ieee80211_vif *vif, in __iwl_mvm_mld_assign_vif_chanctx() argument
274 unsigned int n_active = iwl_mvm_mld_count_active_links(vif); in __iwl_mvm_mld_assign_vif_chanctx()
275 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_mld_assign_vif_chanctx()
283 if (n_active > iwl_mvm_max_active_links(mvm, vif)) in __iwl_mvm_mld_assign_vif_chanctx()
293 if (vif->type == NL80211_IFTYPE_AP) { in __iwl_mvm_mld_assign_vif_chanctx()
294 ret = iwl_mvm_mld_mac_ctxt_changed(mvm, vif, false); in __iwl_mvm_mld_assign_vif_chanctx()
296 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in __iwl_mvm_mld_assign_vif_chanctx()
303 ret = iwl_mvm_esr_mode_active(mvm, vif); in __iwl_mvm_mld_assign_vif_chanctx()
314 if (vif->type == NL80211_IFTYPE_AP) in __iwl_mvm_mld_assign_vif_chanctx()
319 ret = iwl_mvm_link_changed(mvm, vif, link_conf, 0, false); in __iwl_mvm_mld_assign_vif_chanctx()
341 iwl_mvm_rs_rate_init(mvm, vif, mvmvif->ap_sta, in __iwl_mvm_mld_assign_vif_chanctx()
348 ret = iwl_mvm_link_changed(mvm, vif, link_conf, in __iwl_mvm_mld_assign_vif_chanctx()
361 if (vif->type == NL80211_IFTYPE_MONITOR) { in __iwl_mvm_mld_assign_vif_chanctx()
362 ret = iwl_mvm_mld_add_snif_sta(mvm, vif, link_conf); in __iwl_mvm_mld_assign_vif_chanctx()
370 iwl_mvm_link_changed(mvm, vif, link_conf, LINK_CONTEXT_MODIFY_ACTIVE, in __iwl_mvm_mld_assign_vif_chanctx()
379 struct ieee80211_vif *vif, in iwl_mvm_mld_assign_vif_chanctx() argument
387 ret = __iwl_mvm_mld_assign_vif_chanctx(mvm, vif, link_conf, ctx, false); in iwl_mvm_mld_assign_vif_chanctx()
394 struct ieee80211_vif *vif) in iwl_mvm_esr_mode_inactive() argument
396 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_esr_mode_inactive()
402 vif->driver_flags &= ~IEEE80211_VIF_DISABLE_SMPS_OVERRIDE; in iwl_mvm_esr_mode_inactive()
404 iwl_mvm_update_smps_on_active_links(mvm, vif, IWL_MVM_SMPS_REQ_FW, in iwl_mvm_esr_mode_inactive()
407 for_each_vif_active_link(vif, link_conf, link_id) { in iwl_mvm_esr_mode_inactive()
441 struct ieee80211_vif *vif, in __iwl_mvm_mld_unassign_vif_chanctx() argument
447 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_mld_unassign_vif_chanctx()
448 unsigned int n_active = iwl_mvm_mld_count_active_links(vif); in __iwl_mvm_mld_unassign_vif_chanctx()
455 if (vif->type == NL80211_IFTYPE_AP && switching_chanctx) { in __iwl_mvm_mld_unassign_vif_chanctx()
462 rcu_assign_pointer(mvm->csa_tx_blocked_vif, vif); in __iwl_mvm_mld_unassign_vif_chanctx()
468 int ret = iwl_mvm_esr_mode_inactive(mvm, vif); in __iwl_mvm_mld_unassign_vif_chanctx()
475 if (vif->type == NL80211_IFTYPE_MONITOR) in __iwl_mvm_mld_unassign_vif_chanctx()
476 iwl_mvm_mld_rm_snif_sta(mvm, vif); in __iwl_mvm_mld_unassign_vif_chanctx()
478 iwl_mvm_link_changed(mvm, vif, link_conf, in __iwl_mvm_mld_unassign_vif_chanctx()
488 struct ieee80211_vif *vif, in iwl_mvm_mld_unassign_vif_chanctx() argument
495 __iwl_mvm_mld_unassign_vif_chanctx(mvm, vif, link_conf, ctx, false); in iwl_mvm_mld_unassign_vif_chanctx()
500 struct ieee80211_vif *vif, in iwl_mvm_mld_start_ap_ibss() argument
504 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_start_ap_ibss()
509 ret = iwl_mvm_mac_ctxt_beacon_changed(mvm, vif, link_conf); in iwl_mvm_mld_start_ap_ibss()
514 ret = iwl_mvm_link_changed(mvm, vif, link_conf, in iwl_mvm_mld_start_ap_ibss()
521 ret = iwl_mvm_mld_add_mcast_sta(mvm, vif, link_conf); in iwl_mvm_mld_start_ap_ibss()
528 ret = iwl_mvm_mld_add_bcast_sta(mvm, vif, link_conf); in iwl_mvm_mld_start_ap_ibss()
532 if (iwl_mvm_start_ap_ibss_common(hw, vif, &ret)) in iwl_mvm_mld_start_ap_ibss()
535 /* Need to update the P2P Device MAC (only GO, IBSS is single vif) */ in iwl_mvm_mld_start_ap_ibss()
536 if (vif->p2p && mvm->p2p_device_vif) in iwl_mvm_mld_start_ap_ibss()
545 iwl_mvm_ftm_restart_responder(mvm, vif, link_conf); in iwl_mvm_mld_start_ap_ibss()
552 iwl_mvm_mld_rm_bcast_sta(mvm, vif, link_conf); in iwl_mvm_mld_start_ap_ibss()
554 iwl_mvm_mld_rm_mcast_sta(mvm, vif, link_conf); in iwl_mvm_mld_start_ap_ibss()
561 struct ieee80211_vif *vif, in iwl_mvm_mld_start_ap() argument
564 return iwl_mvm_mld_start_ap_ibss(hw, vif, link_conf); in iwl_mvm_mld_start_ap()
568 struct ieee80211_vif *vif) in iwl_mvm_mld_start_ibss() argument
570 return iwl_mvm_mld_start_ap_ibss(hw, vif, &vif->bss_conf); in iwl_mvm_mld_start_ibss()
574 struct ieee80211_vif *vif, in iwl_mvm_mld_stop_ap_ibss() argument
581 iwl_mvm_stop_ap_ibss_common(mvm, vif); in iwl_mvm_mld_stop_ap_ibss()
583 /* Need to update the P2P Device MAC (only GO, IBSS is single vif) */ in iwl_mvm_mld_stop_ap_ibss()
584 if (vif->p2p && mvm->p2p_device_vif) in iwl_mvm_mld_stop_ap_ibss()
587 iwl_mvm_ftm_responder_clear(mvm, vif); in iwl_mvm_mld_stop_ap_ibss()
589 iwl_mvm_mld_rm_bcast_sta(mvm, vif, link_conf); in iwl_mvm_mld_stop_ap_ibss()
590 iwl_mvm_mld_rm_mcast_sta(mvm, vif, link_conf); in iwl_mvm_mld_stop_ap_ibss()
597 struct ieee80211_vif *vif, in iwl_mvm_mld_stop_ap() argument
600 iwl_mvm_mld_stop_ap_ibss(hw, vif, link_conf); in iwl_mvm_mld_stop_ap()
604 struct ieee80211_vif *vif) in iwl_mvm_mld_stop_ibss() argument
606 iwl_mvm_mld_stop_ap_ibss(hw, vif, &vif->bss_conf); in iwl_mvm_mld_stop_ibss()
610 struct ieee80211_vif *vif, in iwl_mvm_mld_mac_sta_state() argument
622 return iwl_mvm_mac_sta_state_common(hw, vif, sta, old_state, new_state, in iwl_mvm_mld_mac_sta_state()
628 struct ieee80211_vif *vif, in iwl_mvm_mld_link_info_changed_station() argument
632 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_link_info_changed_station()
644 if (changes & BSS_CHANGED_QOS && vif->cfg.assoc && link_conf->qos) in iwl_mvm_mld_link_info_changed_station()
650 if (vif->cfg.assoc && (has_he || has_eht)) { in iwl_mvm_mld_link_info_changed_station()
656 if (changes & BSS_CHANGED_EHT_PUNCTURING && vif->cfg.assoc && has_eht) in iwl_mvm_mld_link_info_changed_station()
660 ret = iwl_mvm_link_changed(mvm, vif, link_conf, link_changes, in iwl_mvm_mld_link_info_changed_station()
666 ret = iwl_mvm_mld_mac_ctxt_changed(mvm, vif, false); in iwl_mvm_mld_link_info_changed_station()
668 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_mld_link_info_changed_station()
673 iwl_mvm_bss_info_changed_station_common(mvm, vif, link_conf, changes); in iwl_mvm_mld_link_info_changed_station()
689 struct ieee80211_vif *vif) in iwl_mvm_mld_vif_delete_all_stas() argument
691 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_vif_delete_all_stas()
703 iwl_mvm_sec_key_remove_ap(mvm, vif, link, i); in iwl_mvm_mld_vif_delete_all_stas()
713 struct ieee80211_vif *vif, in iwl_mvm_mld_vif_cfg_changed_station() argument
716 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_vif_cfg_changed_station()
728 ret = iwl_mvm_mld_mac_ctxt_changed(mvm, vif, false); in iwl_mvm_mld_vif_cfg_changed_station()
730 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_mld_vif_cfg_changed_station()
732 mvmvif->associated = vif->cfg.assoc; in iwl_mvm_mld_vif_cfg_changed_station()
735 if (vif->cfg.assoc) { in iwl_mvm_mld_vif_cfg_changed_station()
738 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_mld_vif_cfg_changed_station()
739 iwl_mvm_power_vif_assoc(mvm, vif); in iwl_mvm_mld_vif_cfg_changed_station()
745 if (vif->p2p) { in iwl_mvm_mld_vif_cfg_changed_station()
746 iwl_mvm_update_smps(mvm, vif, in iwl_mvm_mld_vif_cfg_changed_station()
752 link_conf = rcu_dereference(vif->link_conf[i]); in iwl_mvm_mld_vif_cfg_changed_station()
769 iwl_mvm_protect_assoc(mvm, vif, 0); in iwl_mvm_mld_vif_cfg_changed_station()
772 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_mld_vif_cfg_changed_station()
775 iwl_mvm_power_vif_assoc(mvm, vif); in iwl_mvm_mld_vif_cfg_changed_station()
782 ret = iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_mld_vif_cfg_changed_station()
789 * station has been added, but before the vif is set in iwl_mvm_mld_vif_cfg_changed_station()
791 * then configure the vif. Since the vif is not in iwl_mvm_mld_vif_cfg_changed_station()
795 iwl_mvm_mld_vif_delete_all_stas(mvm, vif); in iwl_mvm_mld_vif_cfg_changed_station()
798 iwl_mvm_bss_info_changed_station_assoc(mvm, vif, changes); in iwl_mvm_mld_vif_cfg_changed_station()
810 struct ieee80211_vif *vif, in iwl_mvm_mld_link_info_changed_ap_ibss() argument
814 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_link_info_changed_ap_ibss()
832 iwl_mvm_link_changed(mvm, vif, link_conf, in iwl_mvm_mld_link_info_changed_ap_ibss()
834 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_mld_link_info_changed_ap_ibss()
838 iwl_mvm_mac_ctxt_beacon_changed(mvm, vif, link_conf)) in iwl_mvm_mld_link_info_changed_ap_ibss()
843 int ret = iwl_mvm_ftm_start_responder(mvm, vif, link_conf); in iwl_mvm_mld_link_info_changed_ap_ibss()
852 struct ieee80211_vif *vif, in iwl_mvm_mld_link_info_changed() argument
860 switch (vif->type) { in iwl_mvm_mld_link_info_changed()
862 iwl_mvm_mld_link_info_changed_station(mvm, vif, link_conf, in iwl_mvm_mld_link_info_changed()
867 iwl_mvm_mld_link_info_changed_ap_ibss(mvm, vif, link_conf, in iwl_mvm_mld_link_info_changed()
872 iwl_mvm_update_mu_groups(mvm, vif); in iwl_mvm_mld_link_info_changed()
882 iwl_mvm_set_tx_power(mvm, vif, link_conf->txpower); in iwl_mvm_mld_link_info_changed()
889 struct ieee80211_vif *vif, in iwl_mvm_mld_vif_cfg_changed() argument
896 if (changes & BSS_CHANGED_IDLE && !vif->cfg.idle) in iwl_mvm_mld_vif_cfg_changed()
899 if (vif->type == NL80211_IFTYPE_STATION) in iwl_mvm_mld_vif_cfg_changed()
900 iwl_mvm_mld_vif_cfg_changed_station(mvm, vif, changes); in iwl_mvm_mld_vif_cfg_changed()
920 struct ieee80211_vif *vif, in iwl_mvm_mld_config_iface_filter() argument
931 if (vif->type != NL80211_IFTYPE_STATION || !vif->cfg.assoc || in iwl_mvm_mld_config_iface_filter()
932 !vif->p2p) in iwl_mvm_mld_config_iface_filter()
936 iwl_mvm_mld_mac_ctxt_changed(mvm, vif, false); in iwl_mvm_mld_config_iface_filter()
942 struct ieee80211_vif *vif, in iwl_mvm_mld_mac_conf_tx() argument
947 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_mac_conf_tx()
958 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mld_mac_conf_tx()
962 ret = iwl_mvm_link_changed(mvm, vif, &vif->bss_conf, in iwl_mvm_mld_mac_conf_tx()
972 struct ieee80211_vif *vif, in iwl_mvm_link_switch_phy_ctx() argument
975 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_link_switch_phy_ctx()
984 ret = iwl_mvm_link_changed(mvm, vif, &vif->bss_conf, in iwl_mvm_link_switch_phy_ctx()
993 ret = iwl_mvm_link_changed(mvm, vif, &vif->bss_conf, 0, false); in iwl_mvm_link_switch_phy_ctx()
997 ret = iwl_mvm_link_changed(mvm, vif, &vif->bss_conf, in iwl_mvm_link_switch_phy_ctx()
1003 static int iwl_mvm_mld_roc(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_mld_roc() argument
1012 return iwl_mvm_roc_common(hw, vif, channel, duration, type, &ops); in iwl_mvm_mld_roc()
1017 struct ieee80211_vif *vif, in iwl_mvm_mld_change_vif_links() argument
1022 unsigned int n_active = iwl_mvm_mld_count_active_links(vif); in iwl_mvm_mld_change_vif_links()
1023 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mld_change_vif_links()
1030 n_active > iwl_mvm_max_active_links(mvm, vif)) in iwl_mvm_mld_change_vif_links()
1060 err = iwl_mvm_disable_link(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_change_vif_links()
1070 err = iwl_mvm_disable_link(mvm, vif, link_conf); in iwl_mvm_mld_change_vif_links()
1078 link_conf = link_conf_dereference_protected(vif, i); in iwl_mvm_mld_change_vif_links()
1086 err = iwl_mvm_add_link(mvm, vif, link_conf); in iwl_mvm_mld_change_vif_links()
1098 err = iwl_mvm_add_link(mvm, vif, &vif->bss_conf); in iwl_mvm_mld_change_vif_links()
1113 struct ieee80211_vif *vif, in iwl_mvm_mld_change_sta_links() argument
1121 ret = iwl_mvm_mld_update_sta_links(mvm, vif, sta, old_links, new_links); in iwl_mvm_mld_change_sta_links()