Lines Matching full:vif

469 			rcu_dereference(info->control.vif->link_conf[link_id]);  in iwl_mld_mac80211_tx()
601 struct ieee80211_vif *vif) in iwl_mld_mac80211_add_interface() argument
609 ret = iwl_mld_add_vif(mld, vif); in iwl_mld_mac80211_add_interface()
614 * Add the default link, but not if this is an MLD vif as that implies in iwl_mld_mac80211_add_interface()
617 if (!ieee80211_vif_is_mld(vif)) in iwl_mld_mac80211_add_interface()
618 ret = iwl_mld_add_link(mld, &vif->bss_conf); in iwl_mld_mac80211_add_interface()
622 if (vif->type == NL80211_IFTYPE_STATION) { in iwl_mld_mac80211_add_interface()
623 vif->driver_flags |= IEEE80211_VIF_REMOVE_AP_AFTER_DISASSOC; in iwl_mld_mac80211_add_interface()
624 if (!vif->p2p) in iwl_mld_mac80211_add_interface()
625 vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | in iwl_mld_mac80211_add_interface()
629 if (vif->p2p || iwl_fw_lookup_cmd_ver(mld->fw, PHY_CONTEXT_CMD, 0) < 5) in iwl_mld_mac80211_add_interface()
630 vif->driver_flags |= IEEE80211_VIF_IGNORE_OFDMA_WIDER_BW; in iwl_mld_mac80211_add_interface()
633 * For an MLD vif (in restart) we may not have a link; delay the call in iwl_mld_mac80211_add_interface()
636 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mld_mac80211_add_interface()
637 !ieee80211_vif_is_mld(vif)) in iwl_mld_mac80211_add_interface()
638 iwl_mld_update_mac_power(mld, vif, false); in iwl_mld_mac80211_add_interface()
640 if (vif->type == NL80211_IFTYPE_MONITOR) { in iwl_mld_mac80211_add_interface()
645 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) in iwl_mld_mac80211_add_interface()
646 mld->p2p_device_vif = vif; in iwl_mld_mac80211_add_interface()
651 iwl_mld_rm_vif(mld, vif); in iwl_mld_mac80211_add_interface()
657 struct ieee80211_vif *vif) in iwl_mld_mac80211_remove_interface() argument
663 if (ieee80211_vif_type_p2p(vif) == NL80211_IFTYPE_STATION) in iwl_mld_mac80211_remove_interface()
664 vif->driver_flags &= ~(IEEE80211_VIF_BEACON_FILTER | in iwl_mld_mac80211_remove_interface()
667 if (vif->type == NL80211_IFTYPE_MONITOR) { in iwl_mld_mac80211_remove_interface()
672 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) in iwl_mld_mac80211_remove_interface()
675 iwl_mld_remove_link(mld, &vif->bss_conf); in iwl_mld_mac80211_remove_interface()
678 debugfs_remove(iwl_mld_vif_from_mac80211(vif)->dbgfs_slink); in iwl_mld_mac80211_remove_interface()
679 iwl_mld_vif_from_mac80211(vif)->dbgfs_slink = NULL; in iwl_mld_mac80211_remove_interface()
682 iwl_mld_rm_vif(mld, vif); in iwl_mld_mac80211_remove_interface()
691 struct ieee80211_vif *vif) in iwl_mld_mc_iface_iterator() argument
706 if (vif->type != NL80211_IFTYPE_STATION || !vif->cfg.assoc) in iwl_mld_mc_iface_iterator()
710 ether_addr_copy(cmd->bssid, vif->bss_conf.bssid); in iwl_mld_mc_iface_iterator()
849 ieee80211_tdls_oper_request(mld_sta->vif, link_sta->addr, in iwl_mld_teardown_tdls_peers()
952 struct ieee80211_vif *vif, in iwl_mld_can_activate_link() argument
955 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_can_activate_link()
960 if (!mld_vif->ap_sta || !vif->cfg.assoc) in iwl_mld_can_activate_link()
977 struct ieee80211_vif *vif, in iwl_mld_assign_vif_chanctx() argument
983 unsigned int n_active = iwl_mld_count_active_links(mld, vif); in iwl_mld_assign_vif_chanctx()
996 if (ieee80211_vif_type_p2p(vif) != NL80211_IFTYPE_STATION) { in iwl_mld_assign_vif_chanctx()
1004 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mld_assign_vif_chanctx()
1005 ret = iwl_mld_mac_fw_action(mld, vif, FW_CTXT_ACTION_MODIFY); in iwl_mld_assign_vif_chanctx()
1008 IWL_ERR(mld, "failed to update MAC %pM\n", vif->addr); in iwl_mld_assign_vif_chanctx()
1016 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_assign_vif_chanctx()
1019 vif->driver_flags |= IEEE80211_VIF_EML_ACTIVE; in iwl_mld_assign_vif_chanctx()
1022 if (vif->active_links & BIT(mld_vif->emlsr.selected_links)) in iwl_mld_assign_vif_chanctx()
1025 mld_vif->emlsr.primary = __ffs(vif->active_links); in iwl_mld_assign_vif_chanctx()
1047 if (iwl_mld_can_activate_link(mld, vif, link)) { in iwl_mld_assign_vif_chanctx()
1053 if (vif->type == NL80211_IFTYPE_STATION) in iwl_mld_assign_vif_chanctx()
1054 iwl_mld_send_ap_tx_power_constraint_cmd(mld, vif, link); in iwl_mld_assign_vif_chanctx()
1056 if (vif->type == NL80211_IFTYPE_MONITOR) { in iwl_mld_assign_vif_chanctx()
1057 ret = iwl_mld_add_mon_sta(mld, vif, link); in iwl_mld_assign_vif_chanctx()
1062 iwl_mld_chandef_get_primary_80(&vif->bss_conf.chanreq.oper); in iwl_mld_assign_vif_chanctx()
1077 struct ieee80211_vif *vif, in iwl_mld_unassign_vif_chanctx() argument
1082 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_unassign_vif_chanctx()
1084 unsigned int n_active = iwl_mld_count_active_links(mld, vif); in iwl_mld_unassign_vif_chanctx()
1090 if (ieee80211_vif_type_p2p(vif) != NL80211_IFTYPE_STATION) in iwl_mld_unassign_vif_chanctx()
1095 if (vif->type == NL80211_IFTYPE_MONITOR) in iwl_mld_unassign_vif_chanctx()
1096 iwl_mld_remove_mon_sta(mld, vif, link); in iwl_mld_unassign_vif_chanctx()
1100 vif->driver_flags &= ~IEEE80211_VIF_EML_ACTIVE; in iwl_mld_unassign_vif_chanctx()
1112 if (!ieee80211_vif_is_mld(vif) && !mld_vif->ap_sta && in iwl_mld_unassign_vif_chanctx()
1113 !WARN_ON_ONCE(vif->cfg.assoc) && in iwl_mld_unassign_vif_chanctx()
1114 vif->type != NL80211_IFTYPE_AP && !mld->fw_status.in_hw_restart) { in iwl_mld_unassign_vif_chanctx()
1129 struct ieee80211_vif *vif, in iwl_mld_link_info_changed_ap_ibss() argument
1151 iwl_mld_update_beacon_template(mld, vif, link); in iwl_mld_link_info_changed_ap_ibss()
1156 struct ieee80211_vif *vif, in iwl_mld_link_changed_mapping() argument
1163 if (changes & BSS_CHANGED_QOS && vif->cfg.assoc && link_conf->qos) in iwl_mld_link_changed_mapping()
1180 if (vif->cfg.assoc && (has_he || has_eht)) { in iwl_mld_link_changed_mapping()
1190 struct ieee80211_vif *vif, in iwl_mld_mac80211_link_info_changed_sta() argument
1194 u32 link_changes = iwl_mld_link_changed_mapping(mld, vif, link_conf, in iwl_mld_mac80211_link_info_changed_sta()
1201 iwl_mld_send_ap_tx_power_constraint_cmd(mld, vif, link_conf); in iwl_mld_mac80211_link_info_changed_sta()
1204 iwl_mld_update_mac_power(mld, vif, false); in iwl_mld_mac80211_link_info_changed_sta()
1214 iwl_mld_retry_emlsr(mld, vif); in iwl_mld_mac80211_link_info_changed_sta()
1240 struct ieee80211_vif *vif, in iwl_mld_mac80211_link_info_changed() argument
1246 switch (vif->type) { in iwl_mld_mac80211_link_info_changed()
1248 iwl_mld_mac80211_link_info_changed_sta(mld, vif, link_conf, in iwl_mld_mac80211_link_info_changed()
1253 iwl_mld_link_info_changed_ap_ibss(mld, vif, link_conf, in iwl_mld_mac80211_link_info_changed()
1272 iwl_mld_mac_fw_action(mld, vif, FW_CTXT_ACTION_MODIFY); in iwl_mld_mac80211_link_info_changed()
1279 iwl_mld_smps_workaround(struct iwl_mld *mld, struct ieee80211_vif *vif, bool enable) in iwl_mld_smps_workaround() argument
1281 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_smps_workaround()
1302 struct ieee80211_vif *vif, in iwl_mld_mac80211_vif_cfg_changed() argument
1310 if (vif->type != NL80211_IFTYPE_STATION) in iwl_mld_mac80211_vif_cfg_changed()
1314 ret = iwl_mld_mac_fw_action(mld, vif, FW_CTXT_ACTION_MODIFY); in iwl_mld_mac80211_vif_cfg_changed()
1318 if (vif->cfg.assoc) { in iwl_mld_mac80211_vif_cfg_changed()
1326 iwl_mld_set_vif_associated(mld, vif); in iwl_mld_mac80211_vif_cfg_changed()
1333 iwl_mld_smps_workaround(mld, vif, vif->cfg.ps); in iwl_mld_mac80211_vif_cfg_changed()
1334 iwl_mld_update_mac_power(mld, vif, false); in iwl_mld_mac80211_vif_cfg_changed()
1342 struct ieee80211_vif *vif, in iwl_mld_mac80211_hw_scan() argument
1353 ret = iwl_mld_regular_scan_start(mld, vif, &hw_req->req, &hw_req->ies); in iwl_mld_mac80211_hw_scan()
1366 struct ieee80211_vif *vif) in iwl_mld_mac80211_cancel_hw_scan() argument
1386 struct ieee80211_vif *vif, in iwl_mld_mac80211_sched_scan_start() argument
1392 return iwl_mld_sched_scan_start(mld, vif, req, ies, IWL_MLD_SCAN_SCHED); in iwl_mld_mac80211_sched_scan_start()
1397 struct ieee80211_vif *vif) in iwl_mld_mac80211_sched_scan_stop() argument
1439 struct ieee80211_vif *vif, in iwl_mld_mac80211_mgd_prepare_tx() argument
1454 iwl_mld_schedule_session_protection(mld, vif, duration, in iwl_mld_mac80211_mgd_prepare_tx()
1461 struct ieee80211_vif *vif, in iwl_mld_mac_mgd_complete_tx() argument
1476 /* The firmware will be on medium after we configure the vif as in iwl_mld_mac_mgd_complete_tx()
1479 * presence on medium, we need first to configure the vif as associated in iwl_mld_mac_mgd_complete_tx()
1488 !vif->cfg.assoc); in iwl_mld_mac_mgd_complete_tx()
1490 iwl_mld_cancel_session_protection(mld, vif, info->link_id); in iwl_mld_mac_mgd_complete_tx()
1495 struct ieee80211_vif *vif, in iwl_mld_mac80211_conf_tx() argument
1500 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_mac80211_conf_tx()
1514 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) in iwl_mld_mac80211_conf_tx()
1515 iwl_mld_change_link_in_fw(mld, &vif->bss_conf, in iwl_mld_mac80211_conf_tx()
1521 static void iwl_mld_set_uapsd(struct iwl_mld *mld, struct ieee80211_vif *vif) in iwl_mld_set_uapsd() argument
1523 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mld_set_uapsd()
1525 if (vif->type != NL80211_IFTYPE_STATION) in iwl_mld_set_uapsd()
1528 if (vif->p2p && in iwl_mld_set_uapsd()
1530 vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mld_set_uapsd()
1532 if (!vif->p2p && in iwl_mld_set_uapsd()
1534 vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mld_set_uapsd()
1606 struct ieee80211_vif *vif, in iwl_mld_link_set_2mhz_block() argument
1612 for_each_sta_active_link(vif, sta, link_sta, link_id) { in iwl_mld_link_set_2mhz_block()
1614 link_conf_dereference_protected(vif, link_id); in iwl_mld_link_set_2mhz_block()
1628 struct ieee80211_vif *vif, in iwl_mld_move_sta_state_up() argument
1633 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_move_sta_state_up()
1640 if (vif->p2p || hweight8(mld->used_phy_ids) != 1) in iwl_mld_move_sta_state_up()
1648 ret = iwl_mld_add_sta(mld, sta, vif, STATION_TYPE_PEER); in iwl_mld_move_sta_state_up()
1654 iwl_mld_update_mac_power(mld, vif, false); in iwl_mld_move_sta_state_up()
1656 if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) in iwl_mld_move_sta_state_up()
1669 iwl_mld_config_tlc(mld, vif, sta); in iwl_mld_move_sta_state_up()
1674 iwl_mld_set_uapsd(mld, vif); in iwl_mld_move_sta_state_up()
1680 if (vif->type == NL80211_IFTYPE_STATION) in iwl_mld_move_sta_state_up()
1681 iwl_mld_link_set_2mhz_block(mld, vif, sta); in iwl_mld_move_sta_state_up()
1683 iwl_mld_config_tlc(mld, vif, sta); in iwl_mld_move_sta_state_up()
1685 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mld_move_sta_state_up()
1690 ret = iwl_mld_mac_fw_action(mld, vif, in iwl_mld_move_sta_state_up()
1708 iwl_mld_block_emlsr(mld_vif->mld, vif, in iwl_mld_move_sta_state_up()
1713 ret = iwl_mld_mac_fw_action(mld, vif, in iwl_mld_move_sta_state_up()
1717 iwl_mld_smps_workaround(mld, vif, vif->cfg.ps); in iwl_mld_move_sta_state_up()
1727 iwl_mld_config_tlc(mld, vif, sta); in iwl_mld_move_sta_state_up()
1736 struct ieee80211_vif *vif, in iwl_mld_move_sta_state_down() argument
1741 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_move_sta_state_down()
1759 iwl_mld_reset_cca_40mhz_workaround(mld, vif); in iwl_mld_move_sta_state_down()
1760 iwl_mld_smps_workaround(mld, vif, true); in iwl_mld_move_sta_state_down()
1766 iwl_mld_config_tlc(mld, vif, sta); in iwl_mld_move_sta_state_down()
1769 if (vif->type == NL80211_IFTYPE_AP && in iwl_mld_move_sta_state_down()
1775 iwl_mld_mac_fw_action(mld, vif, in iwl_mld_move_sta_state_down()
1787 iwl_mld_update_mac_power(mld, vif, false); in iwl_mld_move_sta_state_down()
1796 struct ieee80211_vif *vif, in iwl_mld_mac80211_sta_state() argument
1810 return iwl_mld_move_sta_state_up(mld, vif, sta, old_state, in iwl_mld_mac80211_sta_state()
1813 return iwl_mld_move_sta_state_down(mld, vif, sta, old_state, in iwl_mld_mac80211_sta_state()
1818 struct ieee80211_vif *vif, in iwl_mld_mac80211_flush() argument
1834 /* Check that the sta belongs to the given vif */ in iwl_mld_mac80211_flush()
1835 if (vif && vif != iwl_mld_sta_from_mac80211(link_sta->sta)->vif) in iwl_mld_mac80211_flush()
1846 struct ieee80211_vif *vif, in iwl_mld_mac80211_flush_sta() argument
1856 struct ieee80211_vif *vif, in iwl_mld_mac80211_ampdu_action() argument
1927 struct ieee80211_vif *vif, in iwl_mld_sta_rc_update() argument
1937 link_conf_dereference_check(vif, link_sta->link_id); in iwl_mld_sta_rc_update()
1942 iwl_mld_config_tlc_link(mld, vif, link, link_sta); in iwl_mld_sta_rc_update()
2031 struct ieee80211_vif *vif, in iwl_mld_set_key_add() argument
2035 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_set_key_add()
2051 if (vif->type == NL80211_IFTYPE_STATION) { in iwl_mld_set_key_add()
2068 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mld_set_key_add()
2077 if ((vif->type == NL80211_IFTYPE_ADHOC || in iwl_mld_set_key_add()
2078 vif->type == NL80211_IFTYPE_AP) && !sta && in iwl_mld_set_key_add()
2095 ret = iwl_mld_add_key(mld, vif, sta, key); in iwl_mld_set_key_add()
2110 struct ieee80211_vif *vif, in iwl_mld_set_key_remove() argument
2114 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_set_key_remove()
2119 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mld_set_key_remove()
2149 iwl_mld_remove_key(mld, vif, sta, key); in iwl_mld_set_key_remove()
2154 struct ieee80211_vif *vif, in iwl_mld_mac80211_set_key() argument
2163 ret = iwl_mld_set_key_add(mld, vif, sta, key); in iwl_mld_mac80211_set_key()
2168 iwl_mld_set_key_remove(mld, vif, sta, key); in iwl_mld_mac80211_set_key()
2181 struct ieee80211_vif *vif, in iwl_mld_pre_channel_switch() argument
2185 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_pre_channel_switch()
2199 if (!iwl_mld_emlsr_active(vif)) in iwl_mld_pre_channel_switch()
2202 primary = iwl_mld_get_primary_link(vif); in iwl_mld_pre_channel_switch()
2206 selected = iwl_mld_get_other_link(vif, primary); in iwl_mld_pre_channel_switch()
2223 iwl_mld_exit_emlsr(mld, vif, IWL_MLD_EMLSR_EXIT_CSA, selected); in iwl_mld_pre_channel_switch()
2230 struct ieee80211_vif *vif, in iwl_mld_channel_switch() argument
2246 struct ieee80211_vif *vif, in iwl_mld_post_channel_switch() argument
2261 struct ieee80211_vif *vif, in iwl_mld_abort_channel_switch() argument
2279 iwl_mld_unassign_vif_chanctx(hw, vifs[0].vif, vifs[0].link_conf, in iwl_mld_switch_vif_chanctx_swap()
2289 ret = iwl_mld_assign_vif_chanctx(hw, vifs[0].vif, vifs[0].link_conf, in iwl_mld_switch_vif_chanctx_swap()
2307 if (iwl_mld_assign_vif_chanctx(hw, vifs[0].vif, vifs[0].link_conf, in iwl_mld_switch_vif_chanctx_swap()
2321 iwl_mld_unassign_vif_chanctx(hw, vifs[0].vif, vifs[0].link_conf, in iwl_mld_switch_vif_chanctx_reassign()
2323 ret = iwl_mld_assign_vif_chanctx(hw, vifs[0].vif, vifs[0].link_conf, in iwl_mld_switch_vif_chanctx_reassign()
2334 if (iwl_mld_assign_vif_chanctx(hw, vifs[0].vif, vifs[0].link_conf, in iwl_mld_switch_vif_chanctx_reassign()
2349 /* we only support a single-vif right now */ in iwl_mld_switch_vif_chanctx()
2369 struct ieee80211_vif *vif, in iwl_mld_sta_pre_rcu_remove() argument
2374 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_sta_pre_rcu_remove()
2397 struct ieee80211_vif *vif, in iwl_mld_mac80211_mgd_protect_tdls_discover() argument
2405 link_conf = wiphy_dereference(hw->wiphy, vif->link_conf[link_id]); in iwl_mld_mac80211_mgd_protect_tdls_discover()
2413 ret = iwl_mld_start_session_protection(mld, vif, duration, duration, in iwl_mld_mac80211_mgd_protect_tdls_discover()
2422 struct ieee80211_vif *vif, in iwl_mld_can_activate_links() argument
2429 return n_links <= iwl_mld_max_active_links(mld, vif); in iwl_mld_can_activate_links()
2434 struct ieee80211_vif *vif, in iwl_mld_change_vif_links() argument
2438 struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif); in iwl_mld_change_vif_links()
2467 link_conf = link_conf_dereference_protected(vif, i); in iwl_mld_change_vif_links()
2490 iwl_mld_update_mac_power(mld, vif, false); in iwl_mld_change_vif_links()
2499 link_conf = link_conf_dereference_protected(vif, i); in iwl_mld_change_vif_links()
2514 struct ieee80211_vif *vif, in iwl_mld_change_sta_links() argument
2520 return iwl_mld_update_link_stas(mld, vif, sta, old_links, new_links); in iwl_mld_change_sta_links()
2524 struct ieee80211_vif *vif) in iwl_mld_mac80211_join_ibss() argument
2526 return iwl_mld_start_ap_ibss(hw, vif, &vif->bss_conf); in iwl_mld_mac80211_join_ibss()
2530 struct ieee80211_vif *vif) in iwl_mld_mac80211_leave_ibss() argument
2532 return iwl_mld_stop_ap_ibss(hw, vif, &vif->bss_conf); in iwl_mld_mac80211_leave_ibss()
2558 struct ieee80211_vif *vif, in iwl_mld_set_hw_timestamp() argument
2576 struct ieee80211_vif *vif, in iwl_mld_start_pmsr() argument
2581 return iwl_mld_ftm_start(mld, vif, request); in iwl_mld_start_pmsr()
2585 iwl_mld_can_neg_ttlm(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mld_can_neg_ttlm() argument