Lines Matching full:vif

88 				 struct ieee80211_vif *vif,
810 if (!sta && info->control.vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_mac_tx()
813 iwl_mvm_vif_from_mac80211(info->control.vif); in iwl_mvm_mac_tx()
830 rcu_dereference(info->control.vif->link_conf[link_id]); in iwl_mvm_mac_tx()
936 iwl_mvm_ampdu_check_trigger(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_ampdu_check_trigger() argument
943 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_ampdu_check_trigger()
981 struct ieee80211_vif *vif, in iwl_mvm_mac_ampdu_action() argument
1004 if (iwl_mvm_vif_from_mac80211(vif)->deflink.ap_sta_id == in iwl_mvm_mac_ampdu_action()
1007 u16 macid = iwl_mvm_vif_from_mac80211(vif)->id; in iwl_mvm_mac_ampdu_action()
1011 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ampdu_action()
1030 ret = iwl_mvm_sta_tx_agg_start(mvm, vif, sta, tid, ssn); in iwl_mvm_mac_ampdu_action()
1033 ret = iwl_mvm_sta_tx_agg_stop(mvm, vif, sta, tid); in iwl_mvm_mac_ampdu_action()
1037 ret = iwl_mvm_sta_tx_agg_flush(mvm, vif, sta, tid); in iwl_mvm_mac_ampdu_action()
1040 ret = iwl_mvm_sta_tx_agg_oper(mvm, vif, sta, tid, in iwl_mvm_mac_ampdu_action()
1055 iwl_mvm_ampdu_check_trigger(mvm, vif, sta, tid, in iwl_mvm_mac_ampdu_action()
1064 struct ieee80211_vif *vif) in iwl_mvm_cleanup_iterator() argument
1067 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_cleanup_iterator()
1369 int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_set_tx_power() argument
1377 cpu_to_le32(iwl_mvm_vif_from_mac80211(vif)->id), in iwl_mvm_set_tx_power()
1406 struct ieee80211_vif *vif, in iwl_mvm_post_channel_switch() argument
1409 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_post_channel_switch()
1415 if (vif->type == NL80211_IFTYPE_STATION) { in iwl_mvm_post_channel_switch()
1430 iwl_mvm_mld_mac_ctxt_changed(mvm, vif, false); in iwl_mvm_post_channel_switch()
1432 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_post_channel_switch()
1436 ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); in iwl_mvm_post_channel_switch()
1440 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_post_channel_switch()
1457 struct ieee80211_vif *vif) in iwl_mvm_abort_channel_switch() argument
1460 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_abort_channel_switch()
1481 iwl_mvm_remove_csa_period(mvm, vif); in iwl_mvm_abort_channel_switch()
1491 iwl_mvm_post_channel_switch(hw, vif, &vif->bss_conf); in iwl_mvm_abort_channel_switch()
1497 struct ieee80211_vif *vif; in iwl_mvm_channel_switch_disconnect_wk() local
1500 vif = container_of((void *)mvmvif, struct ieee80211_vif, drv_priv); in iwl_mvm_channel_switch_disconnect_wk()
1503 ieee80211_chswitch_done(vif, false, 0); in iwl_mvm_channel_switch_disconnect_wk()
1529 struct ieee80211_vif *vif) in iwl_mvm_alloc_bcast_mcast_sta() argument
1531 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_alloc_bcast_mcast_sta()
1536 ret = iwl_mvm_alloc_bcast_sta(mvm, vif); in iwl_mvm_alloc_bcast_mcast_sta()
1546 vif->type, in iwl_mvm_alloc_bcast_mcast_sta()
1551 struct ieee80211_vif *vif) in iwl_mvm_mac_add_interface() argument
1554 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_add_interface()
1578 ret = iwl_mvm_mac_ctxt_init(mvm, vif); in iwl_mvm_mac_add_interface()
1582 rcu_assign_pointer(mvm->vif_id_to_mac[mvmvif->id], vif); in iwl_mvm_mac_add_interface()
1585 if (vif->type == NL80211_IFTYPE_NAN) { in iwl_mvm_mac_add_interface()
1601 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_add_interface()
1602 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mac_add_interface()
1604 iwl_mvm_vif_dbgfs_add_link(mvm, vif); in iwl_mvm_mac_add_interface()
1611 ret = iwl_mvm_mac_ctxt_add(mvm, vif); in iwl_mvm_mac_add_interface()
1620 ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_mac_add_interface()
1625 vif->type == NL80211_IFTYPE_STATION && !vif->p2p) { in iwl_mvm_mac_add_interface()
1627 vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mac_add_interface()
1631 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_add_interface()
1632 mvm->p2p_device_vif = vif; in iwl_mvm_mac_add_interface()
1634 iwl_mvm_tcm_add_vif(mvm, vif); in iwl_mvm_mac_add_interface()
1638 if (vif->type == NL80211_IFTYPE_MONITOR) { in iwl_mvm_mac_add_interface()
1641 iwl_mvm_chandef_get_primary_80(&vif->bss_conf.chandef); in iwl_mvm_mac_add_interface()
1645 iwl_mvm_vif_dbgfs_add_link(mvm, vif); in iwl_mvm_mac_add_interface()
1648 vif->type == NL80211_IFTYPE_STATION && !vif->p2p && in iwl_mvm_mac_add_interface()
1650 iwl_mei_set_nic_info(vif->addr, mvm->nvm_data->hw_addr); in iwl_mvm_mac_add_interface()
1651 iwl_mei_set_netdev(ieee80211_vif_to_wdev(vif)->netdev); in iwl_mvm_mac_add_interface()
1652 mvm->csme_vif = vif; in iwl_mvm_mac_add_interface()
1656 if (!ret && (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_add_interface()
1657 vif->type == NL80211_IFTYPE_ADHOC)) in iwl_mvm_mac_add_interface()
1658 ret = iwl_mvm_alloc_bcast_mcast_sta(mvm, vif); in iwl_mvm_mac_add_interface()
1664 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_mac_add_interface()
1672 struct ieee80211_vif *vif) in iwl_mvm_prepare_mac_removal() argument
1674 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_prepare_mac_removal()
1689 struct ieee80211_vif *vif) in iwl_mvm_mac_remove_interface_common() argument
1692 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_remove_interface_common()
1695 iwl_mvm_prepare_mac_removal(mvm, vif); in iwl_mvm_mac_remove_interface_common()
1697 if (!(vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_remove_interface_common()
1698 vif->type == NL80211_IFTYPE_ADHOC)) in iwl_mvm_mac_remove_interface_common()
1699 iwl_mvm_tcm_rm_vif(mvm, vif); in iwl_mvm_mac_remove_interface_common()
1703 if (vif == mvm->csme_vif) { in iwl_mvm_mac_remove_interface_common()
1716 vif->driver_flags &= ~(IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mac_remove_interface_common()
1720 if (vif->bss_conf.ftm_responder) in iwl_mvm_mac_remove_interface_common()
1723 iwl_mvm_vif_dbgfs_rm_link(mvm, vif); in iwl_mvm_mac_remove_interface_common()
1729 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_remove_interface_common()
1730 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mac_remove_interface_common()
1732 if (vif == mvm->noa_vif) { in iwl_mvm_mac_remove_interface_common()
1745 struct ieee80211_vif *vif) in iwl_mvm_mac_remove_interface() argument
1748 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_remove_interface()
1750 if (iwl_mvm_mac_remove_interface_common(hw, vif)) in iwl_mvm_mac_remove_interface()
1758 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_remove_interface()
1766 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_mac_remove_interface()
1770 if (vif->type == NL80211_IFTYPE_MONITOR) in iwl_mvm_mac_remove_interface()
1774 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_remove_interface()
1775 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mac_remove_interface()
1777 iwl_mvm_dealloc_bcast_sta(mvm, vif); in iwl_mvm_mac_remove_interface()
1789 struct ieee80211_vif *vif) in iwl_mvm_mc_iface_iterator() argument
1805 if (vif->type != NL80211_IFTYPE_STATION || in iwl_mvm_mc_iface_iterator()
1806 !vif->cfg.assoc) in iwl_mvm_mc_iface_iterator()
1810 memcpy(cmd->bssid, vif->bss_conf.bssid, ETH_ALEN); in iwl_mvm_mc_iface_iterator()
1920 struct ieee80211_vif *vif, in iwl_mvm_config_iface_filter() argument
1931 if (vif->type != NL80211_IFTYPE_STATION || !vif->cfg.assoc || in iwl_mvm_config_iface_filter()
1932 !vif->p2p) in iwl_mvm_config_iface_filter()
1936 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_config_iface_filter()
1940 int iwl_mvm_update_mu_groups(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_update_mu_groups() argument
1944 memcpy(cmd.membership_status, vif->bss_conf.mu_group.membership, in iwl_mvm_update_mu_groups()
1946 memcpy(cmd.user_position, vif->bss_conf.mu_group.position, in iwl_mvm_update_mu_groups()
1956 struct ieee80211_vif *vif) in iwl_mvm_mu_mimo_iface_iterator() argument
1958 if (vif->bss_conf.mu_mimo_owner) { in iwl_mvm_mu_mimo_iface_iterator()
1966 ieee80211_update_mu_groups(vif, 0, in iwl_mvm_mu_mimo_iface_iterator()
2285 bool iwl_mvm_is_nic_ack_enabled(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_is_nic_ack_enabled() argument
2294 own_he_cap = ieee80211_get_he_iftype_cap_vif(sband, vif); in iwl_mvm_is_nic_ack_enabled()
2334 struct ieee80211_vif *vif, u8 sta_id) in iwl_mvm_cfg_he_sta() argument
2336 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_cfg_he_sta()
2340 .bss_color = vif->bss_conf.he_bss_color.color, in iwl_mvm_cfg_he_sta()
2341 .htc_trig_based_pkt_ext = vif->bss_conf.htc_trig_based_pkt_ext, in iwl_mvm_cfg_he_sta()
2343 cpu_to_le16(vif->bss_conf.frame_time_rts_th), in iwl_mvm_cfg_he_sta()
2417 if (vif->bss_conf.uora_exists) { in iwl_mvm_cfg_he_sta()
2421 vif->bss_conf.uora_ocw_range & 0x7; in iwl_mvm_cfg_he_sta()
2423 (vif->bss_conf.uora_ocw_range >> 3) & 0x7; in iwl_mvm_cfg_he_sta()
2426 if (!iwl_mvm_is_nic_ack_enabled(mvm, vif)) in iwl_mvm_cfg_he_sta()
2429 if (vif->bss_conf.nontransmitted) { in iwl_mvm_cfg_he_sta()
2432 vif->bss_conf.transmitter_bssid); in iwl_mvm_cfg_he_sta()
2434 vif->bss_conf.bssid_indicator; in iwl_mvm_cfg_he_sta()
2435 sta_ctxt_cmd.bssid_index = vif->bss_conf.bssid_index; in iwl_mvm_cfg_he_sta()
2436 sta_ctxt_cmd.ema_ap = vif->bss_conf.ema_ap; in iwl_mvm_cfg_he_sta()
2438 vif->bss_conf.profile_periodicity; in iwl_mvm_cfg_he_sta()
2486 void iwl_mvm_protect_assoc(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_protect_assoc() argument
2506 iwl_mvm_schedule_session_protection(mvm, vif, 900, in iwl_mvm_protect_assoc()
2510 iwl_mvm_protect_session(mvm, vif, duration, in iwl_mvm_protect_assoc()
2516 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed_station_assoc() argument
2519 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bss_info_changed_station_assoc()
2526 (changes & BSS_CHANGED_MU_GROUPS) && vif->bss_conf.mu_mimo_owner) { in iwl_mvm_bss_info_changed_station_assoc()
2527 ret = iwl_mvm_update_mu_groups(mvm, vif); in iwl_mvm_bss_info_changed_station_assoc()
2539 iwl_mvm_update_smps_on_active_links(mvm, vif, IWL_MVM_SMPS_REQ_TT, in iwl_mvm_bss_info_changed_station_assoc()
2549 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed_station_common() argument
2553 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bss_info_changed_station_common()
2560 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_bss_info_changed_station_common()
2562 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station_common()
2563 WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0)); in iwl_mvm_bss_info_changed_station_common()
2584 ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); in iwl_mvm_bss_info_changed_station_common()
2592 iwl_mvm_update_link_smps(vif, link_conf); in iwl_mvm_bss_info_changed_station_common()
2596 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed_station() argument
2600 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bss_info_changed_station()
2609 if (changes & BSS_CHANGED_ASSOC && vif->cfg.assoc) { in iwl_mvm_bss_info_changed_station()
2610 if ((vif->bss_conf.he_support && in iwl_mvm_bss_info_changed_station()
2612 (vif->bss_conf.eht_support && in iwl_mvm_bss_info_changed_station()
2614 iwl_mvm_cfg_he_sta(mvm, vif, mvmvif->deflink.ap_sta_id); in iwl_mvm_bss_info_changed_station()
2616 iwl_mvm_mac_ctxt_recalc_tsf_id(mvm, vif); in iwl_mvm_bss_info_changed_station()
2621 vif->cfg.assoc && in iwl_mvm_bss_info_changed_station()
2622 ((vif->bss_conf.he_support && in iwl_mvm_bss_info_changed_station()
2624 (vif->bss_conf.eht_support && in iwl_mvm_bss_info_changed_station()
2626 iwl_mvm_cfg_he_sta(mvm, vif, mvmvif->deflink.ap_sta_id); in iwl_mvm_bss_info_changed_station()
2637 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, mvmvif->deflink.bssid); in iwl_mvm_bss_info_changed_station()
2639 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_bss_info_changed_station()
2643 mvmvif->associated = vif->cfg.assoc; in iwl_mvm_bss_info_changed_station()
2646 if (vif->cfg.assoc) { in iwl_mvm_bss_info_changed_station()
2682 u32 dur = (11 * vif->bss_conf.beacon_int) / 10; in iwl_mvm_bss_info_changed_station()
2683 iwl_mvm_protect_session(mvm, vif, dur, dur, in iwl_mvm_bss_info_changed_station()
2687 !vif->bss_conf.dtim_period) { in iwl_mvm_bss_info_changed_station()
2698 iwl_mvm_protect_assoc(mvm, vif, 0, 0); in iwl_mvm_bss_info_changed_station()
2701 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station()
2702 iwl_mvm_power_vif_assoc(mvm, vif); in iwl_mvm_bss_info_changed_station()
2703 if (vif->p2p) { in iwl_mvm_bss_info_changed_station()
2704 iwl_mvm_update_smps(mvm, vif, in iwl_mvm_bss_info_changed_station()
2714 ret = iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station()
2722 * station has been added, but before the vif is set in iwl_mvm_bss_info_changed_station()
2724 * then configure the vif. Since the vif is not in iwl_mvm_bss_info_changed_station()
2731 iwl_mvm_sec_key_remove_ap(mvm, vif, in iwl_mvm_bss_info_changed_station()
2738 ret = iwl_mvm_rm_sta_id(mvm, vif, in iwl_mvm_bss_info_changed_station()
2753 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_bss_info_changed_station()
2757 vif->addr); in iwl_mvm_bss_info_changed_station()
2760 iwl_mvm_bss_info_changed_station_assoc(mvm, vif, changes); in iwl_mvm_bss_info_changed_station()
2763 iwl_mvm_bss_info_changed_station_common(mvm, vif, &vif->bss_conf, in iwl_mvm_bss_info_changed_station()
2768 struct ieee80211_vif *vif, in iwl_mvm_start_ap_ibss_common() argument
2772 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_start_ap_ibss_common()
2791 *ret = __iwl_mvm_mac_set_key(hw, SET_KEY, vif, NULL, key); in iwl_mvm_start_ap_ibss_common()
2796 if (vif->type == NL80211_IFTYPE_AP && !vif->p2p) { in iwl_mvm_start_ap_ibss_common()
2809 struct ieee80211_vif *vif, in iwl_mvm_start_ap_ibss() argument
2813 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_start_ap_ibss()
2823 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_start_ap_ibss()
2824 iwl_mvm_mac_ctxt_recalc_tsf_id(mvm, vif); in iwl_mvm_start_ap_ibss()
2832 ret = iwl_mvm_mac_ctxt_add(mvm, vif); in iwl_mvm_start_ap_ibss()
2837 ret = iwl_mvm_mac_ctxt_beacon_changed(mvm, vif, link_conf); in iwl_mvm_start_ap_ibss()
2842 ret = iwl_mvm_mac_ctxt_beacon_changed(mvm, vif, link_conf); in iwl_mvm_start_ap_ibss()
2847 ret = iwl_mvm_mac_ctxt_add(mvm, vif); in iwl_mvm_start_ap_ibss()
2853 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_start_ap_ibss()
2865 ret = iwl_mvm_add_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2872 ret = iwl_mvm_send_add_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2874 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2882 ret = iwl_mvm_send_add_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2885 ret = iwl_mvm_add_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2887 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2892 if (iwl_mvm_start_ap_ibss_common(hw, vif, &ret)) in iwl_mvm_start_ap_ibss()
2899 /* Need to update the P2P Device MAC (only GO, IBSS is single vif) */ in iwl_mvm_start_ap_ibss()
2900 if (vif->p2p && mvm->p2p_device_vif) in iwl_mvm_start_ap_ibss()
2909 iwl_mvm_ftm_restart_responder(mvm, vif, &vif->bss_conf); in iwl_mvm_start_ap_ibss()
2916 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2917 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2919 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_start_ap_ibss()
2921 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_start_ap_ibss()
2928 struct ieee80211_vif *vif, in iwl_mvm_start_ap() argument
2931 return iwl_mvm_start_ap_ibss(hw, vif, link_conf); in iwl_mvm_start_ap()
2935 struct ieee80211_vif *vif) in iwl_mvm_start_ibss() argument
2937 return iwl_mvm_start_ap_ibss(hw, vif, &vif->bss_conf); in iwl_mvm_start_ibss()
2942 struct ieee80211_vif *vif) in iwl_mvm_stop_ap_ibss_common() argument
2944 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_stop_ap_ibss_common()
2948 iwl_mvm_prepare_mac_removal(mvm, vif); in iwl_mvm_stop_ap_ibss_common()
2951 if (rcu_access_pointer(mvm->csa_vif) == vif) { in iwl_mvm_stop_ap_ibss_common()
2958 if (rcu_access_pointer(mvm->csa_tx_blocked_vif) == vif) { in iwl_mvm_stop_ap_ibss_common()
2966 if (vif->type == NL80211_IFTYPE_AP && !vif->p2p) { in iwl_mvm_stop_ap_ibss_common()
2976 struct ieee80211_vif *vif, in iwl_mvm_stop_ap_ibss() argument
2983 iwl_mvm_stop_ap_ibss_common(mvm, vif); in iwl_mvm_stop_ap_ibss()
2985 /* Need to update the P2P Device MAC (only GO, IBSS is single vif) */ in iwl_mvm_stop_ap_ibss()
2986 if (vif->p2p && mvm->p2p_device_vif) in iwl_mvm_stop_ap_ibss()
2991 iwl_mvm_ftm_responder_clear(mvm, vif); in iwl_mvm_stop_ap_ibss()
3002 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
3003 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
3005 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
3006 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_stop_ap_ibss()
3010 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_stop_ap_ibss()
3016 struct ieee80211_vif *vif, in iwl_mvm_stop_ap() argument
3019 iwl_mvm_stop_ap_ibss(hw, vif, link_conf); in iwl_mvm_stop_ap()
3023 struct ieee80211_vif *vif) in iwl_mvm_stop_ibss() argument
3025 iwl_mvm_stop_ap_ibss(hw, vif, &vif->bss_conf); in iwl_mvm_stop_ibss()
3030 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed_ap_ibss() argument
3034 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bss_info_changed_ap_ibss()
3042 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL)) in iwl_mvm_bss_info_changed_ap_ibss()
3043 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_bss_info_changed_ap_ibss()
3047 iwl_mvm_mac_ctxt_beacon_changed(mvm, vif, &vif->bss_conf)) in iwl_mvm_bss_info_changed_ap_ibss()
3051 int ret = iwl_mvm_ftm_start_responder(mvm, vif, &vif->bss_conf); in iwl_mvm_bss_info_changed_ap_ibss()
3061 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed() argument
3069 if (changes & BSS_CHANGED_IDLE && !vif->cfg.idle) in iwl_mvm_bss_info_changed()
3072 switch (vif->type) { in iwl_mvm_bss_info_changed()
3074 iwl_mvm_bss_info_changed_station(mvm, vif, bss_conf, changes); in iwl_mvm_bss_info_changed()
3078 iwl_mvm_bss_info_changed_ap_ibss(mvm, vif, bss_conf, changes); in iwl_mvm_bss_info_changed()
3082 iwl_mvm_update_mu_groups(mvm, vif); in iwl_mvm_bss_info_changed()
3092 iwl_mvm_set_tx_power(mvm, vif, bss_conf->txpower); in iwl_mvm_bss_info_changed()
3098 int iwl_mvm_mac_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_mac_hw_scan() argument
3109 ret = iwl_mvm_reg_scan_start(mvm, vif, &hw_req->req, &hw_req->ies); in iwl_mvm_mac_hw_scan()
3116 struct ieee80211_vif *vif) in iwl_mvm_mac_cancel_hw_scan() argument
3224 void iwl_mvm_mac_sta_notify(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_mac_sta_notify() argument
3250 if (!mvmsta->vif || in iwl_mvm_sta_pm_notif()
3251 mvmsta->vif->type != NL80211_IFTYPE_AP) { in iwl_mvm_sta_pm_notif()
3284 struct ieee80211_vif *vif, in iwl_mvm_sta_pre_rcu_remove() argument
3321 static void iwl_mvm_check_uapsd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_check_uapsd() argument
3329 mdata = &mvm->tcm.data[iwl_mvm_vif_from_mac80211(vif)->id]; in iwl_mvm_check_uapsd()
3337 if (vif->p2p && !iwl_mvm_is_p2p_scm_uapsd_supported(mvm)) { in iwl_mvm_check_uapsd()
3338 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
3342 if (!vif->p2p && in iwl_mvm_check_uapsd()
3344 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
3350 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
3355 vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
3360 struct ieee80211_vif *vif, u8 *peer_addr, in iwl_mvm_tdls_check_trigger() argument
3366 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_tdls_check_trigger()
3412 struct ieee80211_vif *vif, in iwl_mvm_check_he_obss_narrow_bw_ru() argument
3416 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_check_he_obss_narrow_bw_ru()
3442 struct ieee80211_vif *vif) in iwl_mvm_reset_cca_40mhz_workaround() argument
3447 if (vif->type != NL80211_IFTYPE_STATION) in iwl_mvm_reset_cca_40mhz_workaround()
3462 he_cap = ieee80211_get_he_iftype_cap_vif(sband, vif); in iwl_mvm_reset_cca_40mhz_workaround()
3474 struct ieee80211_vif *vif, in iwl_mvm_mei_host_associated() argument
3478 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mei_host_associated()
3480 .ssid_len = vif->cfg.ssid_len, in iwl_mvm_mei_host_associated()
3490 if (!vif->bss_conf.chandef.chan) in iwl_mvm_mei_host_associated()
3493 conn_info.channel = vif->bss_conf.chandef.chan->hw_value; in iwl_mvm_mei_host_associated()
3536 memcpy(conn_info.ssid, vif->cfg.ssid, vif->cfg.ssid_len); in iwl_mvm_mei_host_associated()
3537 memcpy(conn_info.bssid, vif->bss_conf.bssid, ETH_ALEN); in iwl_mvm_mei_host_associated()
3545 struct ieee80211_vif *vif, in iwl_mvm_mac_ctxt_changed_wrapper() argument
3548 return iwl_mvm_mac_ctxt_changed(mvm, vif, force_assoc_off, NULL); in iwl_mvm_mac_ctxt_changed_wrapper()
3552 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_state() argument
3564 return iwl_mvm_mac_sta_state_common(hw, vif, sta, old_state, new_state, in iwl_mvm_mac_sta_state()
3570 * (2) if a link is valid in sta then it's valid in vif (can
3574 struct ieee80211_vif *vif, in iwl_mvm_rs_rate_init_all_links() argument
3577 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_rs_rate_init_all_links()
3582 link_conf_dereference_check(vif, link_id); in iwl_mvm_rs_rate_init_all_links()
3589 iwl_mvm_rs_rate_init(mvm, vif, sta, conf, link_sta, in iwl_mvm_rs_rate_init_all_links()
3597 struct ieee80211_vif *vif, in iwl_mvm_vif_conf_from_sta() argument
3610 for_each_sta_active_link(vif, sta, link_sta, link_id) { in iwl_mvm_vif_conf_from_sta()
3612 link_conf_dereference_protected(vif, link_id); in iwl_mvm_vif_conf_from_sta()
3631 struct ieee80211_vif *vif, in iwl_mvm_vif_set_he_support() argument
3635 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_vif_set_he_support()
3639 for_each_sta_active_link(vif, sta, link_sta, link_id) { in iwl_mvm_vif_set_he_support()
3641 link_conf_dereference_protected(vif, link_id); in iwl_mvm_vif_set_he_support()
3651 iwl_mvm_check_he_obss_narrow_bw_ru(hw, vif, in iwl_mvm_vif_set_he_support()
3660 struct ieee80211_vif *vif, in iwl_mvm_sta_state_notexist_to_none() argument
3664 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_sta_state_notexist_to_none()
3671 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_sta_state_notexist_to_none()
3672 !iwl_mvm_vif_conf_from_sta(mvm, vif, sta)) in iwl_mvm_sta_state_notexist_to_none()
3676 (vif->p2p || in iwl_mvm_sta_state_notexist_to_none()
3683 ret = callbacks->add_sta(mvm, vif, sta); in iwl_mvm_sta_state_notexist_to_none()
3685 iwl_mvm_recalc_tdls_state(mvm, vif, true); in iwl_mvm_sta_state_notexist_to_none()
3686 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_sta_state_notexist_to_none()
3693 for_each_sta_active_link(vif, sta, link_sta, i) in iwl_mvm_sta_state_notexist_to_none()
3698 if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) in iwl_mvm_sta_state_notexist_to_none()
3707 struct ieee80211_vif *vif, in iwl_mvm_sta_state_auth_to_assoc() argument
3711 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_sta_state_auth_to_assoc()
3718 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mvm_sta_state_auth_to_assoc()
3719 iwl_mvm_vif_set_he_support(hw, vif, sta, false); in iwl_mvm_sta_state_auth_to_assoc()
3721 callbacks->mac_ctxt_changed(mvm, vif, false); in iwl_mvm_sta_state_auth_to_assoc()
3727 ((vif->bss_conf.he_support && in iwl_mvm_sta_state_auth_to_assoc()
3729 (vif->bss_conf.eht_support && in iwl_mvm_sta_state_auth_to_assoc()
3731 iwl_mvm_cfg_he_sta(mvm, vif, mvm_sta->deflink.sta_id); in iwl_mvm_sta_state_auth_to_assoc()
3732 } else if (vif->type == NL80211_IFTYPE_STATION) { in iwl_mvm_sta_state_auth_to_assoc()
3733 iwl_mvm_vif_set_he_support(hw, vif, sta, true); in iwl_mvm_sta_state_auth_to_assoc()
3735 callbacks->mac_ctxt_changed(mvm, vif, false); in iwl_mvm_sta_state_auth_to_assoc()
3740 for_each_sta_active_link(vif, sta, link_sta, link_id) { in iwl_mvm_sta_state_auth_to_assoc()
3742 link_conf_dereference_protected(vif, link_id); in iwl_mvm_sta_state_auth_to_assoc()
3749 iwl_mvm_link_changed(mvm, vif, link_conf, in iwl_mvm_sta_state_auth_to_assoc()
3757 iwl_mvm_rs_rate_init_all_links(mvm, vif, sta); in iwl_mvm_sta_state_auth_to_assoc()
3759 return callbacks->update_sta(mvm, vif, sta); in iwl_mvm_sta_state_auth_to_assoc()
3764 struct ieee80211_vif *vif, in iwl_mvm_sta_state_assoc_to_authorized() argument
3768 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_sta_state_assoc_to_authorized()
3778 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_sta_state_assoc_to_authorized()
3782 WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0)); in iwl_mvm_sta_state_assoc_to_authorized()
3786 callbacks->mac_ctxt_changed(mvm, vif, false); in iwl_mvm_sta_state_assoc_to_authorized()
3787 iwl_mvm_mei_host_associated(mvm, vif, mvm_sta); in iwl_mvm_sta_state_assoc_to_authorized()
3792 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_sta_state_assoc_to_authorized()
3794 iwl_mvm_mld_select_links(mvm, vif, false); in iwl_mvm_sta_state_assoc_to_authorized()
3799 iwl_mvm_rs_rate_init_all_links(mvm, vif, sta); in iwl_mvm_sta_state_assoc_to_authorized()
3805 return callbacks->update_sta(mvm, vif, sta); in iwl_mvm_sta_state_assoc_to_authorized()
3812 struct ieee80211_vif *vif, in iwl_mvm_sta_state_authorized_to_assoc() argument
3816 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_sta_state_authorized_to_assoc()
3826 iwl_mvm_rs_rate_init_all_links(mvm, vif, sta); in iwl_mvm_sta_state_authorized_to_assoc()
3836 iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_sta_state_authorized_to_assoc()
3844 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_state_common() argument
3851 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_sta_state_common()
3886 iwl_mvm_reset_cca_40mhz_workaround(mvm, vif); in iwl_mvm_mac_sta_state_common()
3899 for_each_sta_active_link(vif, sta, link_sta, link_id) { in iwl_mvm_mac_sta_state_common()
3913 ret = iwl_mvm_sta_state_notexist_to_none(mvm, vif, sta, in iwl_mvm_mac_sta_state_common()
3924 iwl_mvm_check_uapsd(mvm, vif, sta->addr); in iwl_mvm_mac_sta_state_common()
3928 ret = iwl_mvm_sta_state_auth_to_assoc(hw, mvm, vif, sta, in iwl_mvm_mac_sta_state_common()
3932 ret = iwl_mvm_sta_state_assoc_to_authorized(mvm, vif, sta, in iwl_mvm_mac_sta_state_common()
3936 ret = iwl_mvm_sta_state_authorized_to_assoc(mvm, vif, sta, in iwl_mvm_mac_sta_state_common()
3940 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mvm_mac_sta_state_common()
3942 callbacks->mac_ctxt_changed(mvm, vif, false); in iwl_mvm_mac_sta_state_common()
3943 } else if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) in iwl_mvm_mac_sta_state_common()
3944 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_mac_sta_state_common()
3951 if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) { in iwl_mvm_mac_sta_state_common()
3952 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_mac_sta_state_common()
3955 ret = callbacks->rm_sta(mvm, vif, sta); in iwl_mvm_mac_sta_state_common()
3957 iwl_mvm_recalc_tdls_state(mvm, vif, false); in iwl_mvm_mac_sta_state_common()
3958 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_mac_sta_state_common()
3993 void iwl_mvm_sta_rc_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_sta_rc_update() argument
4001 iwl_mvm_rs_rate_init_all_links(mvm, vif, sta); in iwl_mvm_sta_rc_update()
4003 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_sta_rc_update()
4005 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_sta_rc_update()
4009 struct ieee80211_vif *vif, in iwl_mvm_mac_conf_tx() argument
4014 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_conf_tx()
4022 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_conf_tx()
4026 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_conf_tx()
4034 struct ieee80211_vif *vif, in iwl_mvm_mac_mgd_prepare_tx() argument
4040 iwl_mvm_protect_assoc(mvm, vif, info->duration, info->link_id); in iwl_mvm_mac_mgd_prepare_tx()
4045 struct ieee80211_vif *vif, in iwl_mvm_mac_mgd_complete_tx() argument
4055 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_mac_mgd_complete_tx()
4060 struct ieee80211_vif *vif, in iwl_mvm_mac_sched_scan_start() argument
4070 if (!vif->cfg.idle) { in iwl_mvm_mac_sched_scan_start()
4075 ret = iwl_mvm_sched_scan_start(mvm, vif, req, ies, IWL_MVM_SCAN_SCHED); in iwl_mvm_mac_sched_scan_start()
4083 struct ieee80211_vif *vif) in iwl_mvm_mac_sched_scan_stop() argument
4112 struct ieee80211_vif *vif, in __iwl_mvm_mac_set_key() argument
4116 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_mac_set_key()
4134 } else if (vif->type == NL80211_IFTYPE_STATION) { in __iwl_mvm_mac_set_key()
4154 if (vif->type == NL80211_IFTYPE_STATION) in __iwl_mvm_mac_set_key()
4166 if (vif->type == NL80211_IFTYPE_STATION && in __iwl_mvm_mac_set_key()
4171 if ((vif->type == NL80211_IFTYPE_ADHOC || in __iwl_mvm_mac_set_key()
4172 vif->type == NL80211_IFTYPE_AP) && !sta) { in __iwl_mvm_mac_set_key()
4279 ret = iwl_mvm_sec_key_add(mvm, vif, sta, key); in __iwl_mvm_mac_set_key()
4281 ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, key_offset); in __iwl_mvm_mac_set_key()
4304 if (vif->type == NL80211_IFTYPE_STATION && in __iwl_mvm_mac_set_key()
4341 ret = iwl_mvm_sec_key_del(mvm, vif, sta, key); in __iwl_mvm_mac_set_key()
4343 ret = iwl_mvm_remove_sta_key(mvm, vif, sta, key); in __iwl_mvm_mac_set_key()
4353 struct ieee80211_vif *vif, struct ieee80211_sta *sta, in iwl_mvm_mac_set_key() argument
4360 ret = __iwl_mvm_mac_set_key(hw, cmd, vif, sta, key); in iwl_mvm_mac_set_key()
4367 struct ieee80211_vif *vif, in iwl_mvm_mac_update_tkip_key() argument
4377 iwl_mvm_update_tkip_key(mvm, vif, keyconf, sta, iv32, phase1key); in iwl_mvm_mac_update_tkip_key()
4421 static void iwl_mvm_roc_duration_and_delay(struct ieee80211_vif *vif, in iwl_mvm_roc_duration_and_delay() argument
4426 u32 dtim_interval = vif->bss_conf.dtim_period * in iwl_mvm_roc_duration_and_delay()
4427 vif->bss_conf.beacon_int; in iwl_mvm_roc_duration_and_delay()
4441 if (vif->cfg.assoc) { in iwl_mvm_roc_duration_and_delay()
4455 struct ieee80211_vif *vif, in iwl_mvm_send_aux_roc_cmd() argument
4459 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_send_aux_roc_cmd()
4483 iwl_mvm_roc_duration_and_delay(vif, duration, &req_dur, &delay); in iwl_mvm_send_aux_roc_cmd()
4495 memcpy(tail->node_addr, vif->addr, ETH_ALEN); in iwl_mvm_send_aux_roc_cmd()
4506 te_data->vif = vif; in iwl_mvm_send_aux_roc_cmd()
4552 struct ieee80211_vif *vif, in iwl_mvm_roc_add_cmd() argument
4571 iwl_mvm_roc_duration_and_delay(vif, duration, &duration_tu, in iwl_mvm_roc_add_cmd()
4584 memcpy(roc_req.node_addr, vif->addr, ETH_ALEN); in iwl_mvm_roc_add_cmd()
4612 static int iwl_mvm_roc_link(struct iwl_mvm *mvm, struct ieee80211_vif *vif) in iwl_mvm_roc_link() argument
4618 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_roc_link()
4625 return iwl_mvm_add_p2p_bcast_sta(mvm, vif); in iwl_mvm_roc_link()
4629 struct ieee80211_vif *vif, in iwl_mvm_roc() argument
4639 return iwl_mvm_roc_common(hw, vif, channel, duration, type, &ops); in iwl_mvm_roc()
4644 struct ieee80211_vif *vif, in iwl_mvm_roc_station() argument
4653 ret = iwl_mvm_send_aux_roc_cmd(mvm, channel, vif, duration); in iwl_mvm_roc_station()
4655 ret = iwl_mvm_roc_add_cmd(mvm, channel, vif, duration, in iwl_mvm_roc_station()
4666 struct ieee80211_vif *vif, in iwl_mvm_p2p_find_phy_ctxt() argument
4669 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_p2p_find_phy_ctxt()
4712 int iwl_mvm_roc_common(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_roc_common() argument
4732 switch (vif->type) { in iwl_mvm_roc_common()
4739 ret = iwl_mvm_roc_station(mvm, channel, vif, duration); in iwl_mvm_roc_common()
4745 IWL_ERR(mvm, "ROC: Invalid vif type=%u\n", vif->type); in iwl_mvm_roc_common()
4751 ret = iwl_mvm_p2p_find_phy_ctxt(mvm, vif, channel); in iwl_mvm_roc_common()
4755 ret = ops->link(mvm, vif); in iwl_mvm_roc_common()
4759 ret = iwl_mvm_start_p2p_roc(mvm, vif, duration, type); in iwl_mvm_roc_common()
4767 struct ieee80211_vif *vif) in iwl_mvm_cancel_roc() argument
4774 iwl_mvm_stop_roc(mvm, vif); in iwl_mvm_cancel_roc()
4787 struct ieee80211_vif *vif) in iwl_mvm_ftm_responder_chanctx_iter() argument
4791 if (rcu_access_pointer(vif->bss_conf.chanctx_conf) == data->ctx && in iwl_mvm_ftm_responder_chanctx_iter()
4792 vif->type == NL80211_IFTYPE_AP && vif->bss_conf.ftmr_params) in iwl_mvm_ftm_responder_chanctx_iter()
4927 struct ieee80211_vif *vif, in __iwl_mvm_assign_vif_chanctx_common() argument
4933 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_assign_vif_chanctx_common()
4939 switch (vif->type) { in __iwl_mvm_assign_vif_chanctx_common()
4968 struct ieee80211_vif *vif, in __iwl_mvm_assign_vif_chanctx() argument
4973 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_assign_vif_chanctx()
4979 if (__iwl_mvm_assign_vif_chanctx_common(mvm, vif, ctx, in __iwl_mvm_assign_vif_chanctx()
4983 ret = iwl_mvm_binding_add_vif(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
4997 if (vif->type == NL80211_IFTYPE_MONITOR) { in __iwl_mvm_assign_vif_chanctx()
5003 ret = iwl_mvm_add_snif_sta(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
5010 if (vif->type == NL80211_IFTYPE_AP) { in __iwl_mvm_assign_vif_chanctx()
5012 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in __iwl_mvm_assign_vif_chanctx()
5015 if (vif->type == NL80211_IFTYPE_STATION) { in __iwl_mvm_assign_vif_chanctx()
5025 u32 duration = 5 * vif->bss_conf.beacon_int; in __iwl_mvm_assign_vif_chanctx()
5030 iwl_mvm_protect_session(mvm, vif, duration, duration, in __iwl_mvm_assign_vif_chanctx()
5031 vif->bss_conf.beacon_int / 2, in __iwl_mvm_assign_vif_chanctx()
5041 iwl_mvm_binding_remove_vif(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
5050 struct ieee80211_vif *vif, in iwl_mvm_assign_vif_chanctx() argument
5058 ret = __iwl_mvm_assign_vif_chanctx(mvm, vif, link_conf, ctx, false); in iwl_mvm_assign_vif_chanctx()
5071 struct ieee80211_vif *vif, in __iwl_mvm_unassign_vif_chanctx_common() argument
5074 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_unassign_vif_chanctx_common()
5080 switch (vif->type) { in __iwl_mvm_unassign_vif_chanctx_common()
5098 rcu_assign_pointer(mvm->csa_tx_blocked_vif, vif); in __iwl_mvm_unassign_vif_chanctx_common()
5109 struct ieee80211_vif *vif, in __iwl_mvm_unassign_vif_chanctx() argument
5114 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_unassign_vif_chanctx()
5117 if (__iwl_mvm_unassign_vif_chanctx_common(mvm, vif, switching_chanctx)) in __iwl_mvm_unassign_vif_chanctx()
5120 if (vif->type == NL80211_IFTYPE_MONITOR) in __iwl_mvm_unassign_vif_chanctx()
5121 iwl_mvm_rm_snif_sta(mvm, vif); in __iwl_mvm_unassign_vif_chanctx()
5124 if (vif->type == NL80211_IFTYPE_STATION && switching_chanctx) { in __iwl_mvm_unassign_vif_chanctx()
5125 disabled_vif = vif; in __iwl_mvm_unassign_vif_chanctx()
5128 iwl_mvm_mac_ctxt_changed(mvm, vif, true, NULL); in __iwl_mvm_unassign_vif_chanctx()
5132 iwl_mvm_binding_remove_vif(mvm, vif); in __iwl_mvm_unassign_vif_chanctx()
5143 struct ieee80211_vif *vif, in iwl_mvm_unassign_vif_chanctx() argument
5150 __iwl_mvm_unassign_vif_chanctx(mvm, vif, link_conf, ctx, false); in iwl_mvm_unassign_vif_chanctx()
5162 ops->__unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].link_conf, in iwl_mvm_switch_vif_chanctx_swap()
5172 ret = ops->__assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].link_conf, in iwl_mvm_switch_vif_chanctx_swap()
5195 if (ops->__assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].link_conf, in iwl_mvm_switch_vif_chanctx_swap()
5221 ops->__unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].link_conf, in iwl_mvm_switch_vif_chanctx_reassign()
5224 ret = ops->__assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].link_conf, in iwl_mvm_switch_vif_chanctx_reassign()
5235 if (ops->__assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].link_conf, in iwl_mvm_switch_vif_chanctx_reassign()
5264 /* we only support a single-vif right now */ in iwl_mvm_switch_vif_chanctx_common()
5309 if (!mvm_sta || !mvm_sta->vif) { in iwl_mvm_set_tim()
5310 IWL_ERR(mvm, "Station is not associated to a vif\n"); in iwl_mvm_set_tim()
5314 return iwl_mvm_mac_ctxt_beacon_changed(mvm, mvm_sta->vif, in iwl_mvm_set_tim()
5315 &mvm_sta->vif->bss_conf); in iwl_mvm_set_tim()
5326 struct ieee80211_vif *vif, in __iwl_mvm_mac_testmode_cmd() argument
5343 if (!vif || vif->type != NL80211_IFTYPE_AP || !vif->p2p || in __iwl_mvm_mac_testmode_cmd()
5344 !vif->bss_conf.enable_beacon || in __iwl_mvm_mac_testmode_cmd()
5349 if (noa_duration >= vif->bss_conf.beacon_int) in __iwl_mvm_mac_testmode_cmd()
5353 mvm->noa_vif = vif; in __iwl_mvm_mac_testmode_cmd()
5357 /* must be associated client vif - ignore authorized */ in __iwl_mvm_mac_testmode_cmd()
5358 if (!vif || vif->type != NL80211_IFTYPE_STATION || in __iwl_mvm_mac_testmode_cmd()
5359 !vif->cfg.assoc || !vif->bss_conf.dtim_period || in __iwl_mvm_mac_testmode_cmd()
5364 return iwl_mvm_enable_beacon_filter(mvm, vif, 0); in __iwl_mvm_mac_testmode_cmd()
5365 return iwl_mvm_disable_beacon_filter(mvm, vif, 0); in __iwl_mvm_mac_testmode_cmd()
5372 struct ieee80211_vif *vif, in iwl_mvm_mac_testmode_cmd() argument
5379 err = __iwl_mvm_mac_testmode_cmd(mvm, vif, data, len); in iwl_mvm_mac_testmode_cmd()
5386 void iwl_mvm_channel_switch(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_channel_switch() argument
5400 struct ieee80211_vif *vif, in iwl_mvm_schedule_client_csa() argument
5403 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_schedule_client_csa()
5417 DIV_ROUND_UP(chsw->delay, vif->bss_conf.beacon_int); in iwl_mvm_schedule_client_csa()
5426 struct ieee80211_vif *vif, in iwl_mvm_old_pre_chan_sw_sta() argument
5429 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_old_pre_chan_sw_sta()
5442 ((vif->bss_conf.beacon_int * (chsw->count - 1) - in iwl_mvm_old_pre_chan_sw_sta()
5446 iwl_mvm_csa_client_absent(mvm, vif); in iwl_mvm_old_pre_chan_sw_sta()
5449 int ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_old_pre_chan_sw_sta()
5455 iwl_mvm_schedule_csa_period(mvm, vif, vif->bss_conf.beacon_int, in iwl_mvm_old_pre_chan_sw_sta()
5463 struct ieee80211_vif *vif, in iwl_mvm_pre_channel_switch() argument
5468 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_pre_channel_switch()
5479 ieee80211_vif_to_wdev(vif), in iwl_mvm_pre_channel_switch()
5482 switch (vif->type) { in iwl_mvm_pre_channel_switch()
5500 rcu_assign_pointer(mvm->csa_vif, vif); in iwl_mvm_pre_channel_switch()
5526 if (!vif->cfg.assoc || !vif->bss_conf.dtim_period) { in iwl_mvm_pre_channel_switch()
5532 hweight16(vif->valid_links) <= 1) in iwl_mvm_pre_channel_switch()
5541 chsw->count * vif->bss_conf.beacon_int > in iwl_mvm_pre_channel_switch()
5549 ret = iwl_mvm_old_pre_chan_sw_sta(mvm, vif, chsw); in iwl_mvm_pre_channel_switch()
5553 iwl_mvm_schedule_client_csa(mvm, vif, chsw); in iwl_mvm_pre_channel_switch()
5579 struct ieee80211_vif *vif, in iwl_mvm_channel_switch_rx_beacon() argument
5583 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_channel_switch_rx_beacon()
5610 iwl_mvm_abort_channel_switch(hw, vif); in iwl_mvm_channel_switch_rx_beacon()
5611 ieee80211_chswitch_done(vif, false, 0); in iwl_mvm_channel_switch_rx_beacon()
5665 void iwl_mvm_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_mac_flush() argument
5676 if (!vif) { in iwl_mvm_mac_flush()
5685 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_flush()
5695 if (mvmsta->vif != vif) in iwl_mvm_mac_flush()
5725 void iwl_mvm_mac_flush_sta(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_mac_flush_sta() argument
5735 for_each_sta_active_link(vif, sta, link_sta, link_id) { in iwl_mvm_mac_flush_sta()
5942 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_statistics() argument
5947 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_sta_statistics()
5964 if (!(vif->driver_flags & IEEE80211_VIF_BEACON_FILTER)) in iwl_mvm_mac_sta_statistics()
5967 if (!vif->cfg.assoc) in iwl_mvm_mac_sta_statistics()
5995 struct ieee80211_vif *vif, in iwl_mvm_event_mlme_callback_ini() argument
6015 struct ieee80211_vif *vif, in iwl_mvm_event_mlme_callback() argument
6029 iwl_mvm_event_mlme_callback_ini(mvm, vif, &event->u.mlme); in iwl_mvm_event_mlme_callback()
6033 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_event_mlme_callback()
6067 struct ieee80211_vif *vif, in iwl_mvm_event_bar_rx_callback() argument
6073 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_event_bar_rx_callback()
6090 struct ieee80211_vif *vif, in iwl_mvm_mac_event_callback() argument
6097 iwl_mvm_event_mlme_callback(mvm, vif, event); in iwl_mvm_mac_event_callback()
6100 iwl_mvm_event_bar_rx_callback(mvm, vif, event); in iwl_mvm_mac_event_callback()
6103 iwl_mvm_event_frame_timeout_callback(mvm, vif, event->u.ba.sta, in iwl_mvm_mac_event_callback()
6184 struct ieee80211_vif *vif, in iwl_mvm_mac_get_ftm_responder_stats() argument
6188 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_get_ftm_responder_stats()
6190 if (vif->p2p || vif->type != NL80211_IFTYPE_AP || in iwl_mvm_mac_get_ftm_responder_stats()
6191 !mvmvif->ap_ibss_active || !vif->bss_conf.ftm_responder) in iwl_mvm_mac_get_ftm_responder_stats()
6211 int iwl_mvm_start_pmsr(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_start_pmsr() argument
6218 ret = iwl_mvm_ftm_start(mvm, vif, request); in iwl_mvm_start_pmsr()
6224 void iwl_mvm_abort_pmsr(struct ieee80211_hw *hw, struct ieee80211_vif *vif, in iwl_mvm_abort_pmsr() argument
6261 struct ieee80211_vif *vif, in iwl_mvm_set_hw_timestamp() argument