Lines Matching full:vif
19 void iwl_mld_cleanup_vif(void *data, u8 *mac, struct ieee80211_vif *vif) in iwl_mld_cleanup_vif() argument
21 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_cleanup_vif()
31 vif->driver_flags &= ~IEEE80211_VIF_EML_ACTIVE; in iwl_mld_cleanup_vif()
42 if (!ieee80211_vif_is_mld(vif) && in iwl_mld_cleanup_vif()
46 if (vif->active_links & BIT(link_id)) in iwl_mld_cleanup_vif()
56 ieee80211_iter_keys(mld->hw, vif, iwl_mld_cleanup_keys_iter, NULL); in iwl_mld_cleanup_vif()
79 int iwl_mld_mac80211_iftype_to_fw(const struct ieee80211_vif *vif) in iwl_mld_mac80211_iftype_to_fw() argument
81 switch (vif->type) { in iwl_mld_mac80211_iftype_to_fw()
83 return vif->p2p ? FW_MAC_TYPE_P2P_STA : FW_MAC_TYPE_BSS_STA; in iwl_mld_mac80211_iftype_to_fw()
99 struct ieee80211_vif *vif) in iwl_mld_is_nic_ack_enabled() argument
110 own_he_cap = ieee80211_get_he_iftype_cap_vif(sband, vif); in iwl_mld_is_nic_ack_enabled()
117 struct ieee80211_vif *vif, in iwl_mld_set_he_support() argument
121 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mld_set_he_support()
136 struct ieee80211_vif *vif, in iwl_mld_mac_cmd_fill_common() argument
140 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_mac_cmd_fill_common()
153 cpu_to_le32(iwl_mld_mac80211_iftype_to_fw(vif)); in iwl_mld_mac_cmd_fill_common()
155 memcpy(cmd->local_mld_addr, vif->addr, ETH_ALEN); in iwl_mld_mac_cmd_fill_common()
161 cpu_to_le32(!iwl_mld_is_nic_ack_enabled(mld, vif)); in iwl_mld_mac_cmd_fill_common()
171 if (ieee80211_vif_is_mld(vif)) { in iwl_mld_mac_cmd_fill_common()
172 iwl_mld_set_he_support(mld, vif, cmd, cmd_ver); in iwl_mld_mac_cmd_fill_common()
180 for_each_vif_active_link(vif, link_conf, link_id) { in iwl_mld_mac_cmd_fill_common()
184 iwl_mld_set_he_support(mld, vif, cmd, cmd_ver); in iwl_mld_mac_cmd_fill_common()
192 struct ieee80211_vif *vif, u32 action, in iwl_mld_fill_mac_cmd_sta() argument
201 WARN_ON(vif->type != NL80211_IFTYPE_STATION); in iwl_mld_fill_mac_cmd_sta()
211 if (vif->cfg.assoc && action != FW_CTXT_ACTION_ADD) { in iwl_mld_fill_mac_cmd_sta()
214 if (!iwl_mld_vif_from_mac80211(vif)->authorized) in iwl_mld_fill_mac_cmd_sta()
224 cmd->client.assoc_id = cpu_to_le16(vif->cfg.aid); in iwl_mld_fill_mac_cmd_sta()
226 if (ieee80211_vif_is_mld(vif)) { in iwl_mld_fill_mac_cmd_sta()
228 u16_get_bits(vif->cfg.eml_cap, in iwl_mld_fill_mac_cmd_sta()
235 cpu_to_le16(vif->cfg.eml_med_sync_delay); in iwl_mld_fill_mac_cmd_sta()
238 for_each_vif_active_link(vif, link, link_id) { in iwl_mld_fill_mac_cmd_sta()
253 if (vif->probe_req_reg && vif->cfg.assoc && vif->p2p) in iwl_mld_fill_mac_cmd_sta()
259 struct ieee80211_vif *vif, in iwl_mld_fill_mac_cmd_ap() argument
262 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_fill_mac_cmd_ap()
266 WARN_ON(vif->type != NL80211_IFTYPE_AP); in iwl_mld_fill_mac_cmd_ap()
279 static void iwl_mld_go_iterator(void *_data, u8 *mac, struct ieee80211_vif *vif) in iwl_mld_go_iterator() argument
283 if (ieee80211_vif_type_p2p(vif) == NL80211_IFTYPE_P2P_GO && in iwl_mld_go_iterator()
284 iwl_mld_vif_from_mac80211(vif)->ap_ibss_active) in iwl_mld_go_iterator()
307 struct ieee80211_vif *vif, in iwl_mld_fill_mac_cmd_p2p_dev() argument
325 struct ieee80211_vif *vif, in iwl_mld_fill_mac_cmd_ibss() argument
330 WARN_ON(vif->type != NL80211_IFTYPE_ADHOC); in iwl_mld_fill_mac_cmd_ibss()
338 iwl_mld_rm_mac_from_fw(struct iwl_mld *mld, struct ieee80211_vif *vif) in iwl_mld_rm_mac_from_fw() argument
340 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_rm_mac_from_fw()
349 int iwl_mld_mac_fw_action(struct iwl_mld *mld, struct ieee80211_vif *vif, in iwl_mld_mac_fw_action() argument
357 return iwl_mld_rm_mac_from_fw(mld, vif); in iwl_mld_mac_fw_action()
359 iwl_mld_mac_cmd_fill_common(mld, vif, &cmd, action); in iwl_mld_mac_fw_action()
361 switch (vif->type) { in iwl_mld_mac_fw_action()
363 iwl_mld_fill_mac_cmd_sta(mld, vif, action, &cmd); in iwl_mld_mac_fw_action()
366 iwl_mld_fill_mac_cmd_ap(mld, vif, &cmd); in iwl_mld_mac_fw_action()
377 iwl_mld_fill_mac_cmd_p2p_dev(mld, vif, &cmd); in iwl_mld_mac_fw_action()
380 iwl_mld_fill_mac_cmd_ibss(mld, vif, &cmd); in iwl_mld_mac_fw_action()
401 IWL_MLD_ALLOC_FN(vif, vif) in IWL_MLD_ALLOC_FN() argument
405 iwl_mld_init_vif(struct iwl_mld *mld, struct ieee80211_vif *vif) in IWL_MLD_ALLOC_FN()
407 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in IWL_MLD_ALLOC_FN()
415 ret = iwl_mld_allocate_vif_fw_id(mld, &mld_vif->fw_id, vif); in IWL_MLD_ALLOC_FN()
436 int iwl_mld_add_vif(struct iwl_mld *mld, struct ieee80211_vif *vif) in iwl_mld_add_vif() argument
438 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_add_vif()
443 ret = iwl_mld_init_vif(mld, vif); in iwl_mld_add_vif()
447 ret = iwl_mld_mac_fw_action(mld, vif, FW_CTXT_ACTION_ADD); in iwl_mld_add_vif()
454 int iwl_mld_rm_vif(struct iwl_mld *mld, struct ieee80211_vif *vif) in iwl_mld_rm_vif() argument
456 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_rm_vif()
461 ret = iwl_mld_mac_fw_action(mld, vif, FW_CTXT_ACTION_REMOVE); in iwl_mld_rm_vif()
475 struct ieee80211_vif *vif) in iwl_mld_set_vif_associated() argument
480 for_each_vif_active_link(vif, link, link_id) { in iwl_mld_set_vif_associated()
481 if (iwl_mld_link_set_associated(mld, vif, link)) in iwl_mld_set_vif_associated()
489 struct ieee80211_vif *vif) in iwl_mld_get_fw_id_bss_bitmap_iter() argument
492 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_get_fw_id_bss_bitmap_iter()
494 if (ieee80211_vif_type_p2p(vif) != NL80211_IFTYPE_STATION) in iwl_mld_get_fw_id_bss_bitmap_iter()
517 struct ieee80211_vif *vif; in iwl_mld_handle_probe_resp_data_notif() local
529 vif = wiphy_dereference(mld->wiphy, in iwl_mld_handle_probe_resp_data_notif()
533 * gets a vif and not a link, bottom line, this flow is not MLD ready in iwl_mld_handle_probe_resp_data_notif()
536 if (WARN_ON(!vif) || ieee80211_vif_is_mld(vif)) in iwl_mld_handle_probe_resp_data_notif()
541 ieee80211_beacon_set_cntdwn(vif, notif->csa_counter); in iwl_mld_handle_probe_resp_data_notif()
543 if (!vif->p2p) in iwl_mld_handle_probe_resp_data_notif()
546 mld_link = &iwl_mld_vif_from_mac80211(vif)->deflink; in iwl_mld_handle_probe_resp_data_notif()
577 struct ieee80211_vif *vif; in iwl_mld_handle_uapsd_misbehaving_ap_notif() local
583 vif = wiphy_dereference(mld->wiphy, mld->fw_id_to_vif[notif->mac_id]); in iwl_mld_handle_uapsd_misbehaving_ap_notif()
585 if (WARN_ON(!vif) || ieee80211_vif_is_mld(vif)) in iwl_mld_handle_uapsd_misbehaving_ap_notif()
588 IWL_WARN(mld, "uapsd misbehaving AP: %pM\n", vif->bss_conf.bssid); in iwl_mld_handle_uapsd_misbehaving_ap_notif()
598 struct ieee80211_vif *vif; in iwl_mld_handle_datapath_monitor_notif() local
608 vif = link->vif; in iwl_mld_handle_datapath_monitor_notif()
609 if (WARN_ON(!vif) || vif->type != NL80211_IFTYPE_STATION || in iwl_mld_handle_datapath_monitor_notif()
610 !vif->cfg.assoc) in iwl_mld_handle_datapath_monitor_notif()
618 mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_handle_datapath_monitor_notif()
639 he_cap = ieee80211_get_he_iftype_cap_vif(sband, vif); in iwl_mld_handle_datapath_monitor_notif()
652 ieee80211_disconnect(vif, true); in iwl_mld_handle_datapath_monitor_notif()
656 struct ieee80211_vif *vif) in iwl_mld_reset_cca_40mhz_workaround() argument
660 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_reset_cca_40mhz_workaround()
662 if (vif->type != NL80211_IFTYPE_STATION) in iwl_mld_reset_cca_40mhz_workaround()
682 he_cap = ieee80211_get_he_iftype_cap_vif(sband, vif); in iwl_mld_reset_cca_40mhz_workaround()