Lines Matching refs:vif

160 				 struct ieee80211_vif *vif,
775 if (!sta && info->control.vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_mac_tx()
778 iwl_mvm_vif_from_mac80211(info->control.vif); in iwl_mvm_mac_tx()
896 iwl_mvm_ampdu_check_trigger(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_ampdu_check_trigger() argument
903 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_ampdu_check_trigger()
941 struct ieee80211_vif *vif, in iwl_mvm_mac_ampdu_action() argument
964 if (iwl_mvm_vif_from_mac80211(vif)->ap_sta_id == in iwl_mvm_mac_ampdu_action()
967 u16 macid = iwl_mvm_vif_from_mac80211(vif)->id; in iwl_mvm_mac_ampdu_action()
971 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ampdu_action()
990 ret = iwl_mvm_sta_tx_agg_start(mvm, vif, sta, tid, ssn); in iwl_mvm_mac_ampdu_action()
993 ret = iwl_mvm_sta_tx_agg_stop(mvm, vif, sta, tid); in iwl_mvm_mac_ampdu_action()
997 ret = iwl_mvm_sta_tx_agg_flush(mvm, vif, sta, tid); in iwl_mvm_mac_ampdu_action()
1000 ret = iwl_mvm_sta_tx_agg_oper(mvm, vif, sta, tid, in iwl_mvm_mac_ampdu_action()
1015 iwl_mvm_ampdu_check_trigger(mvm, vif, sta, tid, in iwl_mvm_mac_ampdu_action()
1024 struct ieee80211_vif *vif) in iwl_mvm_cleanup_iterator() argument
1027 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_cleanup_iterator()
1289 static int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_set_tx_power() argument
1296 cpu_to_le32(iwl_mvm_vif_from_mac80211(vif)->id), in iwl_mvm_set_tx_power()
1324 struct ieee80211_vif *vif) in iwl_mvm_post_channel_switch() argument
1326 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_post_channel_switch()
1332 if (vif->type == NL80211_IFTYPE_STATION) { in iwl_mvm_post_channel_switch()
1346 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_post_channel_switch()
1350 ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); in iwl_mvm_post_channel_switch()
1354 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_post_channel_switch()
1371 struct ieee80211_vif *vif) in iwl_mvm_abort_channel_switch() argument
1374 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_abort_channel_switch()
1386 iwl_mvm_remove_csa_period(mvm, vif); in iwl_mvm_abort_channel_switch()
1395 iwl_mvm_post_channel_switch(hw, vif); in iwl_mvm_abort_channel_switch()
1401 struct ieee80211_vif *vif; in iwl_mvm_channel_switch_disconnect_wk() local
1404 vif = container_of((void *)mvmvif, struct ieee80211_vif, drv_priv); in iwl_mvm_channel_switch_disconnect_wk()
1407 ieee80211_chswitch_done(vif, false); in iwl_mvm_channel_switch_disconnect_wk()
1411 struct ieee80211_vif *vif) in iwl_mvm_mac_add_interface() argument
1414 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_add_interface()
1434 ret = iwl_mvm_mac_ctxt_init(mvm, vif); in iwl_mvm_mac_add_interface()
1438 rcu_assign_pointer(mvm->vif_id_to_mac[mvmvif->id], vif); in iwl_mvm_mac_add_interface()
1441 if (vif->type != NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_add_interface()
1455 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_add_interface()
1456 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mac_add_interface()
1457 ret = iwl_mvm_alloc_bcast_sta(mvm, vif); in iwl_mvm_mac_add_interface()
1468 0, vif->type, in iwl_mvm_mac_add_interface()
1473 iwl_mvm_vif_dbgfs_register(mvm, vif); in iwl_mvm_mac_add_interface()
1479 ret = iwl_mvm_mac_ctxt_add(mvm, vif); in iwl_mvm_mac_add_interface()
1488 ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_mac_add_interface()
1493 vif->type == NL80211_IFTYPE_STATION && !vif->p2p) { in iwl_mvm_mac_add_interface()
1495 vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mac_add_interface()
1504 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_add_interface()
1513 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_mac_add_interface()
1517 ret = iwl_mvm_add_p2p_bcast_sta(mvm, vif); in iwl_mvm_mac_add_interface()
1523 mvm->p2p_device_vif = vif; in iwl_mvm_mac_add_interface()
1526 iwl_mvm_tcm_add_vif(mvm, vif); in iwl_mvm_mac_add_interface()
1530 if (vif->type == NL80211_IFTYPE_MONITOR) in iwl_mvm_mac_add_interface()
1533 iwl_mvm_vif_dbgfs_register(mvm, vif); in iwl_mvm_mac_add_interface()
1537 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_mac_add_interface()
1543 vif->driver_flags &= ~(IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mac_add_interface()
1548 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_mac_add_interface()
1550 if (vif->type != NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_add_interface()
1559 struct ieee80211_vif *vif) in iwl_mvm_prepare_mac_removal() argument
1561 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_prepare_mac_removal()
1572 struct ieee80211_vif *vif) in iwl_mvm_mac_remove_interface() argument
1575 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_remove_interface()
1578 iwl_mvm_prepare_mac_removal(mvm, vif); in iwl_mvm_mac_remove_interface()
1580 if (!(vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_remove_interface()
1581 vif->type == NL80211_IFTYPE_ADHOC)) in iwl_mvm_mac_remove_interface()
1582 iwl_mvm_tcm_rm_vif(mvm, vif); in iwl_mvm_mac_remove_interface()
1594 vif->driver_flags &= ~(IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mac_remove_interface()
1598 if (vif->bss_conf.ftm_responder) in iwl_mvm_mac_remove_interface()
1601 iwl_mvm_vif_dbgfs_clean(mvm, vif); in iwl_mvm_mac_remove_interface()
1607 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_remove_interface()
1608 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mac_remove_interface()
1610 if (vif == mvm->noa_vif) { in iwl_mvm_mac_remove_interface()
1616 iwl_mvm_dealloc_bcast_sta(mvm, vif); in iwl_mvm_mac_remove_interface()
1620 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_remove_interface()
1622 iwl_mvm_rm_p2p_bcast_sta(mvm, vif); in iwl_mvm_mac_remove_interface()
1623 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_mac_remove_interface()
1628 if (mvm->vif_count && vif->type != NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_remove_interface()
1632 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_mac_remove_interface()
1636 if (vif->type == NL80211_IFTYPE_MONITOR) in iwl_mvm_mac_remove_interface()
1654 struct ieee80211_vif *vif) in iwl_mvm_mc_iface_iterator() argument
1670 if (vif->type != NL80211_IFTYPE_STATION || in iwl_mvm_mc_iface_iterator()
1671 !vif->bss_conf.assoc) in iwl_mvm_mc_iface_iterator()
1675 memcpy(cmd->bssid, vif->bss_conf.bssid, ETH_ALEN); in iwl_mvm_mc_iface_iterator()
1769 struct ieee80211_vif *vif, in iwl_mvm_config_iface_filter() argument
1780 if (vif->type != NL80211_IFTYPE_STATION || !vif->bss_conf.assoc || in iwl_mvm_config_iface_filter()
1781 !vif->p2p) in iwl_mvm_config_iface_filter()
1785 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_config_iface_filter()
1797 iwl_mvm_set_bcast_filter(struct ieee80211_vif *vif, in iwl_mvm_set_bcast_filter() argument
1814 if (vif->bss_conf.arp_addr_cnt != 1) { in iwl_mvm_set_bcast_filter()
1819 attr->val = vif->bss_conf.arp_addr_list[0]; in iwl_mvm_set_bcast_filter()
1822 attr->val = *(__be32 *)&vif->addr[2]; in iwl_mvm_set_bcast_filter()
1833 struct ieee80211_vif *vif) in iwl_mvm_bcast_filter_iterator() argument
1838 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bcast_filter_iterator()
1851 if (vif->type != NL80211_IFTYPE_STATION || vif->p2p || in iwl_mvm_bcast_filter_iterator()
1852 !vif->bss_conf.assoc) in iwl_mvm_bcast_filter_iterator()
1871 iwl_mvm_set_bcast_filter(vif, in iwl_mvm_bcast_filter_iterator()
1946 struct ieee80211_vif *vif) in iwl_mvm_update_mu_groups() argument
1950 memcpy(cmd.membership_status, vif->bss_conf.mu_group.membership, in iwl_mvm_update_mu_groups()
1952 memcpy(cmd.user_position, vif->bss_conf.mu_group.position, in iwl_mvm_update_mu_groups()
1962 struct ieee80211_vif *vif) in iwl_mvm_mu_mimo_iface_iterator() argument
1964 if (vif->mu_mimo_owner) { in iwl_mvm_mu_mimo_iface_iterator()
1972 ieee80211_update_mu_groups(vif, in iwl_mvm_mu_mimo_iface_iterator()
2017 struct ieee80211_vif *vif, u8 sta_id) in iwl_mvm_cfg_he_sta() argument
2019 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_cfg_he_sta()
2023 .bss_color = vif->bss_conf.he_bss_color.color, in iwl_mvm_cfg_he_sta()
2024 .htc_trig_based_pkt_ext = vif->bss_conf.htc_trig_based_pkt_ext, in iwl_mvm_cfg_he_sta()
2026 cpu_to_le16(vif->bss_conf.frame_time_rts_th), in iwl_mvm_cfg_he_sta()
2041 chanctx_conf = rcu_dereference(vif->chanctx_conf); in iwl_mvm_cfg_he_sta()
2049 ieee80211_vif_type_p2p(vif)); in iwl_mvm_cfg_he_sta()
2228 if (vif->bss_conf.uora_exists) { in iwl_mvm_cfg_he_sta()
2232 vif->bss_conf.uora_ocw_range & 0x7; in iwl_mvm_cfg_he_sta()
2234 (vif->bss_conf.uora_ocw_range >> 3) & 0x7; in iwl_mvm_cfg_he_sta()
2241 if (vif->bss_conf.nontransmitted) { in iwl_mvm_cfg_he_sta()
2244 vif->bss_conf.transmitter_bssid); in iwl_mvm_cfg_he_sta()
2246 vif->bss_conf.bssid_indicator; in iwl_mvm_cfg_he_sta()
2247 sta_ctxt_cmd.bssid_index = vif->bss_conf.bssid_index; in iwl_mvm_cfg_he_sta()
2248 sta_ctxt_cmd.ema_ap = vif->bss_conf.ema_ap; in iwl_mvm_cfg_he_sta()
2250 vif->bss_conf.profile_periodicity; in iwl_mvm_cfg_he_sta()
2262 struct ieee80211_vif *vif, in iwl_mvm_protect_assoc() argument
2282 iwl_mvm_schedule_session_protection(mvm, vif, 900, in iwl_mvm_protect_assoc()
2285 iwl_mvm_protect_session(mvm, vif, duration, in iwl_mvm_protect_assoc()
2290 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed_station() argument
2294 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bss_info_changed_station()
2303 if (vif->bss_conf.he_support && in iwl_mvm_bss_info_changed_station()
2305 iwl_mvm_cfg_he_sta(mvm, vif, mvmvif->ap_sta_id); in iwl_mvm_bss_info_changed_station()
2307 iwl_mvm_mac_ctxt_recalc_tsf_id(mvm, vif); in iwl_mvm_bss_info_changed_station()
2312 bss_conf->assoc && vif->bss_conf.he_support && in iwl_mvm_bss_info_changed_station()
2314 iwl_mvm_cfg_he_sta(mvm, vif, mvmvif->ap_sta_id); in iwl_mvm_bss_info_changed_station()
2325 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, mvmvif->bssid); in iwl_mvm_bss_info_changed_station()
2327 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_bss_info_changed_station()
2369 u32 dur = (11 * vif->bss_conf.beacon_int) / 10; in iwl_mvm_bss_info_changed_station()
2370 iwl_mvm_protect_session(mvm, vif, dur, dur, in iwl_mvm_bss_info_changed_station()
2374 !vif->bss_conf.dtim_period) { in iwl_mvm_bss_info_changed_station()
2385 iwl_mvm_protect_assoc(mvm, vif, 0); in iwl_mvm_bss_info_changed_station()
2388 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station()
2389 iwl_mvm_power_vif_assoc(mvm, vif); in iwl_mvm_bss_info_changed_station()
2390 if (vif->p2p) { in iwl_mvm_bss_info_changed_station()
2391 iwl_mvm_update_smps(mvm, vif, in iwl_mvm_bss_info_changed_station()
2400 ret = iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station()
2420 ret = iwl_mvm_rm_sta_id(mvm, vif, in iwl_mvm_bss_info_changed_station()
2435 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_bss_info_changed_station()
2439 vif->addr); in iwl_mvm_bss_info_changed_station()
2447 (changes & BSS_CHANGED_MU_GROUPS) && vif->mu_mimo_owner) { in iwl_mvm_bss_info_changed_station()
2448 ret = iwl_mvm_update_mu_groups(mvm, vif); in iwl_mvm_bss_info_changed_station()
2461 iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_TT, in iwl_mvm_bss_info_changed_station()
2476 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_bss_info_changed_station()
2478 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station()
2479 WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0)); in iwl_mvm_bss_info_changed_station()
2498 ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); in iwl_mvm_bss_info_changed_station()
2511 iwl_mvm_apply_fw_smps_request(vif); in iwl_mvm_bss_info_changed_station()
2515 struct ieee80211_vif *vif) in iwl_mvm_start_ap_ibss() argument
2518 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_start_ap_ibss()
2524 ret = iwl_mvm_mac_ctxt_beacon_changed(mvm, vif); in iwl_mvm_start_ap_ibss()
2533 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_start_ap_ibss()
2534 iwl_mvm_mac_ctxt_recalc_tsf_id(mvm, vif); in iwl_mvm_start_ap_ibss()
2539 ret = iwl_mvm_mac_ctxt_add(mvm, vif); in iwl_mvm_start_ap_ibss()
2544 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_start_ap_ibss()
2556 ret = iwl_mvm_add_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2563 ret = iwl_mvm_send_add_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2565 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2573 ret = iwl_mvm_send_add_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2576 ret = iwl_mvm_add_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2578 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2595 ret = __iwl_mvm_mac_set_key(hw, SET_KEY, vif, NULL, key); in iwl_mvm_start_ap_ibss()
2600 if (vif->type == NL80211_IFTYPE_AP && !vif->p2p) { in iwl_mvm_start_ap_ibss()
2614 if (vif->p2p && mvm->p2p_device_vif) in iwl_mvm_start_ap_ibss()
2623 iwl_mvm_ftm_restart_responder(mvm, vif); in iwl_mvm_start_ap_ibss()
2630 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2631 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2633 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_start_ap_ibss()
2635 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_start_ap_ibss()
2642 struct ieee80211_vif *vif) in iwl_mvm_stop_ap_ibss() argument
2645 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_stop_ap_ibss()
2647 iwl_mvm_prepare_mac_removal(mvm, vif); in iwl_mvm_stop_ap_ibss()
2652 if (rcu_access_pointer(mvm->csa_vif) == vif) { in iwl_mvm_stop_ap_ibss()
2659 if (rcu_access_pointer(mvm->csa_tx_blocked_vif) == vif) { in iwl_mvm_stop_ap_ibss()
2667 if (vif->type == NL80211_IFTYPE_AP && !vif->p2p) { in iwl_mvm_stop_ap_ibss()
2676 if (vif->p2p && mvm->p2p_device_vif) in iwl_mvm_stop_ap_ibss()
2681 iwl_mvm_ftm_responder_clear(mvm, vif); in iwl_mvm_stop_ap_ibss()
2692 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
2693 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
2695 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
2696 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_stop_ap_ibss()
2700 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_stop_ap_ibss()
2707 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed_ap_ibss() argument
2711 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bss_info_changed_ap_ibss()
2719 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL)) in iwl_mvm_bss_info_changed_ap_ibss()
2720 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_bss_info_changed_ap_ibss()
2724 iwl_mvm_mac_ctxt_beacon_changed(mvm, vif)) in iwl_mvm_bss_info_changed_ap_ibss()
2728 int ret = iwl_mvm_ftm_start_responder(mvm, vif); in iwl_mvm_bss_info_changed_ap_ibss()
2738 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed() argument
2749 switch (vif->type) { in iwl_mvm_bss_info_changed()
2751 iwl_mvm_bss_info_changed_station(mvm, vif, bss_conf, changes); in iwl_mvm_bss_info_changed()
2755 iwl_mvm_bss_info_changed_ap_ibss(mvm, vif, bss_conf, changes); in iwl_mvm_bss_info_changed()
2759 iwl_mvm_update_mu_groups(mvm, vif); in iwl_mvm_bss_info_changed()
2769 iwl_mvm_set_tx_power(mvm, vif, bss_conf->txpower); in iwl_mvm_bss_info_changed()
2776 struct ieee80211_vif *vif, in iwl_mvm_mac_hw_scan() argument
2787 ret = iwl_mvm_reg_scan_start(mvm, vif, &hw_req->req, &hw_req->ies); in iwl_mvm_mac_hw_scan()
2794 struct ieee80211_vif *vif) in iwl_mvm_mac_cancel_hw_scan() argument
2903 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_notify() argument
2930 if (!mvmsta->vif || in iwl_mvm_sta_pm_notif()
2931 mvmsta->vif->type != NL80211_IFTYPE_AP) { in iwl_mvm_sta_pm_notif()
2964 struct ieee80211_vif *vif, in iwl_mvm_sta_pre_rcu_remove() argument
2986 static void iwl_mvm_check_uapsd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_check_uapsd() argument
2994 mdata = &mvm->tcm.data[iwl_mvm_vif_from_mac80211(vif)->id]; in iwl_mvm_check_uapsd()
3002 if (vif->p2p && !iwl_mvm_is_p2p_scm_uapsd_supported(mvm)) { in iwl_mvm_check_uapsd()
3003 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
3007 if (!vif->p2p && in iwl_mvm_check_uapsd()
3009 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
3015 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
3020 vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
3025 struct ieee80211_vif *vif, u8 *peer_addr, in iwl_mvm_tdls_check_trigger() argument
3031 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_tdls_check_trigger()
3076 struct ieee80211_vif *vif) in iwl_mvm_check_he_obss_narrow_bw_ru() argument
3078 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_check_he_obss_narrow_bw_ru()
3083 if (!(vif->bss_conf.chandef.chan->flags & IEEE80211_CHAN_RADAR)) { in iwl_mvm_check_he_obss_narrow_bw_ru()
3088 cfg80211_bss_iter(hw->wiphy, &vif->bss_conf.chandef, in iwl_mvm_check_he_obss_narrow_bw_ru()
3100 struct ieee80211_vif *vif) in iwl_mvm_reset_cca_40mhz_workaround() argument
3105 if (vif->type != NL80211_IFTYPE_STATION) in iwl_mvm_reset_cca_40mhz_workaround()
3121 ieee80211_vif_type_p2p(vif)); in iwl_mvm_reset_cca_40mhz_workaround()
3133 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_state() argument
3139 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_sta_state()
3176 iwl_mvm_reset_cca_40mhz_workaround(mvm, vif); in iwl_mvm_mac_sta_state()
3192 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_mac_sta_state()
3193 vif->bss_conf.beacon_int < 16) { in iwl_mvm_mac_sta_state()
3196 sta->addr, vif->bss_conf.beacon_int); in iwl_mvm_mac_sta_state()
3201 if (vif->type == NL80211_IFTYPE_STATION) in iwl_mvm_mac_sta_state()
3202 vif->bss_conf.he_support = sta->he_cap.has_he; in iwl_mvm_mac_sta_state()
3205 (vif->p2p || in iwl_mvm_mac_sta_state()
3214 ret = iwl_mvm_add_sta(mvm, vif, sta); in iwl_mvm_mac_sta_state()
3216 iwl_mvm_recalc_tdls_state(mvm, vif, true); in iwl_mvm_mac_sta_state()
3217 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_mac_sta_state()
3229 iwl_mvm_check_uapsd(mvm, vif, sta->addr); in iwl_mvm_mac_sta_state()
3233 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mvm_mac_sta_state()
3234 vif->bss_conf.he_support = sta->he_cap.has_he; in iwl_mvm_mac_sta_state()
3236 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3237 if (vif->bss_conf.he_support && in iwl_mvm_mac_sta_state()
3239 iwl_mvm_cfg_he_sta(mvm, vif, mvm_sta->sta_id); in iwl_mvm_mac_sta_state()
3240 } else if (vif->type == NL80211_IFTYPE_STATION) { in iwl_mvm_mac_sta_state()
3241 vif->bss_conf.he_support = sta->he_cap.has_he; in iwl_mvm_mac_sta_state()
3245 iwl_mvm_check_he_obss_narrow_bw_ru(hw, vif); in iwl_mvm_mac_sta_state()
3247 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3252 ret = iwl_mvm_update_sta(mvm, vif, sta); in iwl_mvm_mac_sta_state()
3262 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_mac_sta_state()
3266 WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0)); in iwl_mvm_mac_sta_state()
3275 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3284 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3293 ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_mac_sta_state()
3301 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mvm_mac_sta_state()
3303 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3304 } else if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) { in iwl_mvm_mac_sta_state()
3306 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_mac_sta_state()
3314 ret = iwl_mvm_rm_sta(mvm, vif, sta); in iwl_mvm_mac_sta_state()
3316 iwl_mvm_recalc_tdls_state(mvm, vif, false); in iwl_mvm_mac_sta_state()
3317 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_mac_sta_state()
3353 struct ieee80211_vif *vif, in iwl_mvm_sta_rc_update() argument
3357 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_sta_rc_update()
3365 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_sta_rc_update()
3367 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_sta_rc_update()
3371 struct ieee80211_vif *vif, u16 ac, in iwl_mvm_mac_conf_tx() argument
3375 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_conf_tx()
3383 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_conf_tx()
3387 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_conf_tx()
3395 struct ieee80211_vif *vif, in iwl_mvm_mac_mgd_prepare_tx() argument
3401 iwl_mvm_protect_assoc(mvm, vif, info->duration); in iwl_mvm_mac_mgd_prepare_tx()
3406 struct ieee80211_vif *vif, in iwl_mvm_mac_mgd_complete_tx() argument
3416 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_mac_mgd_complete_tx()
3421 struct ieee80211_vif *vif, in iwl_mvm_mac_sched_scan_start() argument
3431 if (!vif->bss_conf.idle) { in iwl_mvm_mac_sched_scan_start()
3436 ret = iwl_mvm_sched_scan_start(mvm, vif, req, ies, IWL_MVM_SCAN_SCHED); in iwl_mvm_mac_sched_scan_start()
3444 struct ieee80211_vif *vif) in iwl_mvm_mac_sched_scan_stop() argument
3473 struct ieee80211_vif *vif, in __iwl_mvm_mac_set_key() argument
3477 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_mac_set_key()
3490 } else if (vif->type == NL80211_IFTYPE_STATION) { in __iwl_mvm_mac_set_key()
3510 if (vif->type == NL80211_IFTYPE_STATION) in __iwl_mvm_mac_set_key()
3531 if ((vif->type == NL80211_IFTYPE_ADHOC || in __iwl_mvm_mac_set_key()
3532 vif->type == NL80211_IFTYPE_AP) && !sta) { in __iwl_mvm_mac_set_key()
3621 ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, key_offset); in __iwl_mvm_mac_set_key()
3675 ret = iwl_mvm_remove_sta_key(mvm, vif, sta, key); in __iwl_mvm_mac_set_key()
3686 struct ieee80211_vif *vif, in iwl_mvm_mac_set_key() argument
3694 ret = __iwl_mvm_mac_set_key(hw, cmd, vif, sta, key); in iwl_mvm_mac_set_key()
3701 struct ieee80211_vif *vif, in iwl_mvm_mac_update_tkip_key() argument
3711 iwl_mvm_update_tkip_key(mvm, vif, keyconf, sta, iv32, phase1key); in iwl_mvm_mac_update_tkip_key()
3756 struct ieee80211_vif *vif, in iwl_mvm_send_aux_roc_cmd() argument
3760 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_send_aux_roc_cmd()
3764 u32 dtim_interval = vif->bss_conf.dtim_period * in iwl_mvm_send_aux_roc_cmd()
3765 vif->bss_conf.beacon_int; in iwl_mvm_send_aux_roc_cmd()
3798 if (vif->bss_conf.assoc) { in iwl_mvm_send_aux_roc_cmd()
3820 memcpy(tail->node_addr, vif->addr, ETH_ALEN); in iwl_mvm_send_aux_roc_cmd()
3831 te_data->vif = vif; in iwl_mvm_send_aux_roc_cmd()
3876 struct ieee80211_vif *vif, in iwl_mvm_roc() argument
3882 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_roc()
3899 switch (vif->type) { in iwl_mvm_roc()
3916 vif, duration); in iwl_mvm_roc()
3926 IWL_ERR(mvm, "vif isn't P2P_DEVICE: %d\n", vif->type); in iwl_mvm_roc()
3941 ret = iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_roc()
3950 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_roc()
4005 ret = iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_roc()
4014 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_roc()
4023 ret = iwl_mvm_start_p2p_roc(mvm, vif, duration, type); in iwl_mvm_roc()
4032 struct ieee80211_vif *vif) in iwl_mvm_cancel_roc() argument
4039 iwl_mvm_stop_roc(mvm, vif); in iwl_mvm_cancel_roc()
4052 struct ieee80211_vif *vif) in iwl_mvm_ftm_responder_chanctx_iter() argument
4056 if (rcu_access_pointer(vif->chanctx_conf) == data->ctx && in iwl_mvm_ftm_responder_chanctx_iter()
4057 vif->type == NL80211_IFTYPE_AP && vif->bss_conf.ftmr_params) in iwl_mvm_ftm_responder_chanctx_iter()
4185 struct ieee80211_vif *vif, in __iwl_mvm_assign_vif_chanctx() argument
4191 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_assign_vif_chanctx()
4198 switch (vif->type) { in __iwl_mvm_assign_vif_chanctx()
4225 ret = iwl_mvm_binding_add_vif(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
4239 if (vif->type == NL80211_IFTYPE_MONITOR) { in __iwl_mvm_assign_vif_chanctx()
4245 ret = iwl_mvm_add_snif_sta(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
4252 if (vif->type == NL80211_IFTYPE_AP) { in __iwl_mvm_assign_vif_chanctx()
4254 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in __iwl_mvm_assign_vif_chanctx()
4257 if (switching_chanctx && vif->type == NL80211_IFTYPE_STATION) { in __iwl_mvm_assign_vif_chanctx()
4262 u32 duration = 3 * vif->bss_conf.beacon_int; in __iwl_mvm_assign_vif_chanctx()
4267 iwl_mvm_protect_session(mvm, vif, duration, duration, in __iwl_mvm_assign_vif_chanctx()
4268 vif->bss_conf.beacon_int / 2, in __iwl_mvm_assign_vif_chanctx()
4278 iwl_mvm_binding_remove_vif(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
4286 struct ieee80211_vif *vif, in iwl_mvm_assign_vif_chanctx() argument
4293 ret = __iwl_mvm_assign_vif_chanctx(mvm, vif, ctx, false); in iwl_mvm_assign_vif_chanctx()
4300 struct ieee80211_vif *vif, in __iwl_mvm_unassign_vif_chanctx() argument
4304 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_unassign_vif_chanctx()
4310 switch (vif->type) { in __iwl_mvm_unassign_vif_chanctx()
4316 iwl_mvm_rm_snif_sta(mvm, vif); in __iwl_mvm_unassign_vif_chanctx()
4329 rcu_assign_pointer(mvm->csa_tx_blocked_vif, vif); in __iwl_mvm_unassign_vif_chanctx()
4337 disabled_vif = vif; in __iwl_mvm_unassign_vif_chanctx()
4341 iwl_mvm_mac_ctxt_changed(mvm, vif, true, NULL); in __iwl_mvm_unassign_vif_chanctx()
4348 iwl_mvm_binding_remove_vif(mvm, vif); in __iwl_mvm_unassign_vif_chanctx()
4359 struct ieee80211_vif *vif, in iwl_mvm_unassign_vif_chanctx() argument
4365 __iwl_mvm_unassign_vif_chanctx(mvm, vif, ctx, false); in iwl_mvm_unassign_vif_chanctx()
4376 __iwl_mvm_unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, true); in iwl_mvm_switch_vif_chanctx_swap()
4385 ret = __iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].new_ctx, in iwl_mvm_switch_vif_chanctx_swap()
4408 if (__iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, in iwl_mvm_switch_vif_chanctx_swap()
4433 __iwl_mvm_unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, true); in iwl_mvm_switch_vif_chanctx_reassign()
4435 ret = __iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].new_ctx, in iwl_mvm_switch_vif_chanctx_reassign()
4446 if (__iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, in iwl_mvm_switch_vif_chanctx_reassign()
4505 if (!mvm_sta || !mvm_sta->vif) { in iwl_mvm_set_tim()
4510 return iwl_mvm_mac_ctxt_beacon_changed(mvm, mvm_sta->vif); in iwl_mvm_set_tim()
4521 struct ieee80211_vif *vif, in __iwl_mvm_mac_testmode_cmd() argument
4538 if (!vif || vif->type != NL80211_IFTYPE_AP || !vif->p2p || in __iwl_mvm_mac_testmode_cmd()
4539 !vif->bss_conf.enable_beacon || in __iwl_mvm_mac_testmode_cmd()
4544 if (noa_duration >= vif->bss_conf.beacon_int) in __iwl_mvm_mac_testmode_cmd()
4548 mvm->noa_vif = vif; in __iwl_mvm_mac_testmode_cmd()
4553 if (!vif || vif->type != NL80211_IFTYPE_STATION || in __iwl_mvm_mac_testmode_cmd()
4554 !vif->bss_conf.assoc || !vif->bss_conf.dtim_period || in __iwl_mvm_mac_testmode_cmd()
4559 return iwl_mvm_enable_beacon_filter(mvm, vif, 0); in __iwl_mvm_mac_testmode_cmd()
4560 return iwl_mvm_disable_beacon_filter(mvm, vif, 0); in __iwl_mvm_mac_testmode_cmd()
4567 struct ieee80211_vif *vif, in iwl_mvm_mac_testmode_cmd() argument
4574 err = __iwl_mvm_mac_testmode_cmd(mvm, vif, data, len); in iwl_mvm_mac_testmode_cmd()
4582 struct ieee80211_vif *vif, in iwl_mvm_channel_switch() argument
4596 struct ieee80211_vif *vif, in iwl_mvm_schedule_client_csa() argument
4599 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_schedule_client_csa()
4613 DIV_ROUND_UP(chsw->delay, vif->bss_conf.beacon_int); in iwl_mvm_schedule_client_csa()
4622 struct ieee80211_vif *vif, in iwl_mvm_old_pre_chan_sw_sta() argument
4625 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_old_pre_chan_sw_sta()
4638 ((vif->bss_conf.beacon_int * (chsw->count - 1) - in iwl_mvm_old_pre_chan_sw_sta()
4642 iwl_mvm_csa_client_absent(mvm, vif); in iwl_mvm_old_pre_chan_sw_sta()
4645 int ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_old_pre_chan_sw_sta()
4651 iwl_mvm_schedule_csa_period(mvm, vif, vif->bss_conf.beacon_int, in iwl_mvm_old_pre_chan_sw_sta()
4659 struct ieee80211_vif *vif, in iwl_mvm_pre_channel_switch() argument
4664 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_pre_channel_switch()
4675 ieee80211_vif_to_wdev(vif), in iwl_mvm_pre_channel_switch()
4678 switch (vif->type) { in iwl_mvm_pre_channel_switch()
4696 rcu_assign_pointer(mvm->csa_vif, vif); in iwl_mvm_pre_channel_switch()
4713 if (!vif->bss_conf.assoc || !vif->bss_conf.dtim_period) { in iwl_mvm_pre_channel_switch()
4727 chsw->count * vif->bss_conf.beacon_int > in iwl_mvm_pre_channel_switch()
4735 ret = iwl_mvm_old_pre_chan_sw_sta(mvm, vif, chsw); in iwl_mvm_pre_channel_switch()
4739 iwl_mvm_schedule_client_csa(mvm, vif, chsw); in iwl_mvm_pre_channel_switch()
4765 struct ieee80211_vif *vif, in iwl_mvm_channel_switch_rx_beacon() argument
4769 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_channel_switch_rx_beacon()
4788 iwl_mvm_abort_channel_switch(hw, vif); in iwl_mvm_channel_switch_rx_beacon()
4789 ieee80211_chswitch_done(vif, false); in iwl_mvm_channel_switch_rx_beacon()
4844 struct ieee80211_vif *vif, u32 queues, bool drop) in iwl_mvm_mac_flush() argument
4853 if (!vif) { in iwl_mvm_mac_flush()
4858 if (vif->type != NL80211_IFTYPE_STATION) in iwl_mvm_mac_flush()
4865 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_flush()
4875 if (mvmsta->vif != vif) in iwl_mvm_mac_flush()
5080 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_statistics() argument
5085 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_sta_statistics()
5101 if (!(vif->driver_flags & IEEE80211_VIF_BEACON_FILTER)) in iwl_mvm_mac_sta_statistics()
5104 if (!vif->bss_conf.assoc) in iwl_mvm_mac_sta_statistics()
5128 struct ieee80211_vif *vif, in iwl_mvm_event_mlme_callback_ini() argument
5148 struct ieee80211_vif *vif, in iwl_mvm_event_mlme_callback() argument
5162 iwl_mvm_event_mlme_callback_ini(mvm, vif, &event->u.mlme); in iwl_mvm_event_mlme_callback()
5166 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_event_mlme_callback()
5200 struct ieee80211_vif *vif, in iwl_mvm_event_bar_rx_callback() argument
5206 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_event_bar_rx_callback()
5223 struct ieee80211_vif *vif, in iwl_mvm_mac_event_callback() argument
5230 iwl_mvm_event_mlme_callback(mvm, vif, event); in iwl_mvm_mac_event_callback()
5233 iwl_mvm_event_bar_rx_callback(mvm, vif, event); in iwl_mvm_mac_event_callback()
5236 iwl_mvm_event_frame_timeout_callback(mvm, vif, event->u.ba.sta, in iwl_mvm_mac_event_callback()
5317 struct ieee80211_vif *vif, in iwl_mvm_mac_get_ftm_responder_stats() argument
5321 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_get_ftm_responder_stats()
5323 if (vif->p2p || vif->type != NL80211_IFTYPE_AP || in iwl_mvm_mac_get_ftm_responder_stats()
5324 !mvmvif->ap_ibss_active || !vif->bss_conf.ftm_responder) in iwl_mvm_mac_get_ftm_responder_stats()
5345 struct ieee80211_vif *vif, in iwl_mvm_start_pmsr() argument
5352 ret = iwl_mvm_ftm_start(mvm, vif, request); in iwl_mvm_start_pmsr()
5359 struct ieee80211_vif *vif, in iwl_mvm_abort_pmsr() argument