Lines Matching full:vif

63  *	be the vif's ip address. in case there is not a single
67 * the LSB bytes of the vif's mac address
158 struct ieee80211_vif *vif,
773 if (!sta && info->control.vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_mac_tx()
776 iwl_mvm_vif_from_mac80211(info->control.vif); in iwl_mvm_mac_tx()
894 iwl_mvm_ampdu_check_trigger(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_ampdu_check_trigger() argument
901 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_ampdu_check_trigger()
939 struct ieee80211_vif *vif, in iwl_mvm_mac_ampdu_action() argument
962 if (iwl_mvm_vif_from_mac80211(vif)->ap_sta_id == in iwl_mvm_mac_ampdu_action()
965 u16 macid = iwl_mvm_vif_from_mac80211(vif)->id; in iwl_mvm_mac_ampdu_action()
969 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_ampdu_action()
988 ret = iwl_mvm_sta_tx_agg_start(mvm, vif, sta, tid, ssn); in iwl_mvm_mac_ampdu_action()
991 ret = iwl_mvm_sta_tx_agg_stop(mvm, vif, sta, tid); in iwl_mvm_mac_ampdu_action()
995 ret = iwl_mvm_sta_tx_agg_flush(mvm, vif, sta, tid); in iwl_mvm_mac_ampdu_action()
998 ret = iwl_mvm_sta_tx_agg_oper(mvm, vif, sta, tid, in iwl_mvm_mac_ampdu_action()
1013 iwl_mvm_ampdu_check_trigger(mvm, vif, sta, tid, in iwl_mvm_mac_ampdu_action()
1022 struct ieee80211_vif *vif) in iwl_mvm_cleanup_iterator() argument
1025 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_cleanup_iterator()
1266 static int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_set_tx_power() argument
1273 cpu_to_le32(iwl_mvm_vif_from_mac80211(vif)->id), in iwl_mvm_set_tx_power()
1301 struct ieee80211_vif *vif) in iwl_mvm_post_channel_switch() argument
1303 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_post_channel_switch()
1309 if (vif->type == NL80211_IFTYPE_STATION) { in iwl_mvm_post_channel_switch()
1323 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_post_channel_switch()
1327 ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); in iwl_mvm_post_channel_switch()
1331 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_post_channel_switch()
1348 struct ieee80211_vif *vif) in iwl_mvm_abort_channel_switch() argument
1351 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_abort_channel_switch()
1363 iwl_mvm_remove_csa_period(mvm, vif); in iwl_mvm_abort_channel_switch()
1372 iwl_mvm_post_channel_switch(hw, vif); in iwl_mvm_abort_channel_switch()
1378 struct ieee80211_vif *vif; in iwl_mvm_channel_switch_disconnect_wk() local
1381 vif = container_of((void *)mvmvif, struct ieee80211_vif, drv_priv); in iwl_mvm_channel_switch_disconnect_wk()
1384 ieee80211_chswitch_done(vif, false); in iwl_mvm_channel_switch_disconnect_wk()
1388 struct ieee80211_vif *vif) in iwl_mvm_mac_add_interface() argument
1391 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_add_interface()
1411 ret = iwl_mvm_mac_ctxt_init(mvm, vif); in iwl_mvm_mac_add_interface()
1415 rcu_assign_pointer(mvm->vif_id_to_mac[mvmvif->id], vif); in iwl_mvm_mac_add_interface()
1418 if (vif->type != NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_add_interface()
1432 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_add_interface()
1433 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mac_add_interface()
1434 ret = iwl_mvm_alloc_bcast_sta(mvm, vif); in iwl_mvm_mac_add_interface()
1445 0, vif->type, in iwl_mvm_mac_add_interface()
1450 iwl_mvm_vif_dbgfs_register(mvm, vif); in iwl_mvm_mac_add_interface()
1456 ret = iwl_mvm_mac_ctxt_add(mvm, vif); in iwl_mvm_mac_add_interface()
1465 ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_mac_add_interface()
1470 vif->type == NL80211_IFTYPE_STATION && !vif->p2p) { in iwl_mvm_mac_add_interface()
1472 vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mac_add_interface()
1481 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_add_interface()
1490 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_mac_add_interface()
1494 ret = iwl_mvm_add_p2p_bcast_sta(mvm, vif); in iwl_mvm_mac_add_interface()
1498 /* Save a pointer to p2p device vif, so it can later be used to in iwl_mvm_mac_add_interface()
1500 mvm->p2p_device_vif = vif; in iwl_mvm_mac_add_interface()
1503 iwl_mvm_tcm_add_vif(mvm, vif); in iwl_mvm_mac_add_interface()
1507 if (vif->type == NL80211_IFTYPE_MONITOR) in iwl_mvm_mac_add_interface()
1510 iwl_mvm_vif_dbgfs_register(mvm, vif); in iwl_mvm_mac_add_interface()
1514 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_mac_add_interface()
1520 vif->driver_flags &= ~(IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mac_add_interface()
1525 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_mac_add_interface()
1527 if (vif->type != NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_add_interface()
1536 struct ieee80211_vif *vif) in iwl_mvm_prepare_mac_removal() argument
1538 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_prepare_mac_removal()
1549 struct ieee80211_vif *vif) in iwl_mvm_mac_remove_interface() argument
1552 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_remove_interface()
1555 iwl_mvm_prepare_mac_removal(mvm, vif); in iwl_mvm_mac_remove_interface()
1557 if (!(vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_remove_interface()
1558 vif->type == NL80211_IFTYPE_ADHOC)) in iwl_mvm_mac_remove_interface()
1559 iwl_mvm_tcm_rm_vif(mvm, vif); in iwl_mvm_mac_remove_interface()
1571 vif->driver_flags &= ~(IEEE80211_VIF_BEACON_FILTER | in iwl_mvm_mac_remove_interface()
1575 if (vif->bss_conf.ftm_responder) in iwl_mvm_mac_remove_interface()
1578 iwl_mvm_vif_dbgfs_clean(mvm, vif); in iwl_mvm_mac_remove_interface()
1584 if (vif->type == NL80211_IFTYPE_AP || in iwl_mvm_mac_remove_interface()
1585 vif->type == NL80211_IFTYPE_ADHOC) { in iwl_mvm_mac_remove_interface()
1587 if (vif == mvm->noa_vif) { in iwl_mvm_mac_remove_interface()
1593 iwl_mvm_dealloc_bcast_sta(mvm, vif); in iwl_mvm_mac_remove_interface()
1597 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_remove_interface()
1599 iwl_mvm_rm_p2p_bcast_sta(mvm, vif); in iwl_mvm_mac_remove_interface()
1600 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_mac_remove_interface()
1605 if (mvm->vif_count && vif->type != NL80211_IFTYPE_P2P_DEVICE) in iwl_mvm_mac_remove_interface()
1609 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_mac_remove_interface()
1613 if (vif->type == NL80211_IFTYPE_MONITOR) in iwl_mvm_mac_remove_interface()
1631 struct ieee80211_vif *vif) in iwl_mvm_mc_iface_iterator() argument
1647 if (vif->type != NL80211_IFTYPE_STATION || in iwl_mvm_mc_iface_iterator()
1648 !vif->bss_conf.assoc) in iwl_mvm_mc_iface_iterator()
1652 memcpy(cmd->bssid, vif->bss_conf.bssid, ETH_ALEN); in iwl_mvm_mc_iface_iterator()
1746 struct ieee80211_vif *vif, in iwl_mvm_config_iface_filter() argument
1757 if (vif->type != NL80211_IFTYPE_STATION || !vif->bss_conf.assoc || in iwl_mvm_config_iface_filter()
1758 !vif->p2p) in iwl_mvm_config_iface_filter()
1762 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_config_iface_filter()
1774 iwl_mvm_set_bcast_filter(struct ieee80211_vif *vif, in iwl_mvm_set_bcast_filter() argument
1791 if (vif->bss_conf.arp_addr_cnt != 1) { in iwl_mvm_set_bcast_filter()
1796 attr->val = vif->bss_conf.arp_addr_list[0]; in iwl_mvm_set_bcast_filter()
1799 attr->val = *(__be32 *)&vif->addr[2]; in iwl_mvm_set_bcast_filter()
1810 struct ieee80211_vif *vif) in iwl_mvm_bcast_filter_iterator() argument
1815 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bcast_filter_iterator()
1828 if (vif->type != NL80211_IFTYPE_STATION || vif->p2p || in iwl_mvm_bcast_filter_iterator()
1829 !vif->bss_conf.assoc) in iwl_mvm_bcast_filter_iterator()
1848 iwl_mvm_set_bcast_filter(vif, in iwl_mvm_bcast_filter_iterator()
1894 /* configure and attach these filters for each associated sta vif */ in iwl_mvm_bcast_filter_build_cmd()
1923 struct ieee80211_vif *vif) in iwl_mvm_update_mu_groups() argument
1927 memcpy(cmd.membership_status, vif->bss_conf.mu_group.membership, in iwl_mvm_update_mu_groups()
1929 memcpy(cmd.user_position, vif->bss_conf.mu_group.position, in iwl_mvm_update_mu_groups()
1939 struct ieee80211_vif *vif) in iwl_mvm_mu_mimo_iface_iterator() argument
1941 if (vif->mu_mimo_owner) { in iwl_mvm_mu_mimo_iface_iterator()
1949 ieee80211_update_mu_groups(vif, in iwl_mvm_mu_mimo_iface_iterator()
1994 struct ieee80211_vif *vif, u8 sta_id) in iwl_mvm_cfg_he_sta() argument
1996 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_cfg_he_sta()
2000 .bss_color = vif->bss_conf.he_bss_color.color, in iwl_mvm_cfg_he_sta()
2001 .htc_trig_based_pkt_ext = vif->bss_conf.htc_trig_based_pkt_ext, in iwl_mvm_cfg_he_sta()
2003 cpu_to_le16(vif->bss_conf.frame_time_rts_th), in iwl_mvm_cfg_he_sta()
2018 chanctx_conf = rcu_dereference(vif->chanctx_conf); in iwl_mvm_cfg_he_sta()
2025 own_he_cap = ieee80211_get_he_iftype_cap(sband, vif->type); in iwl_mvm_cfg_he_sta()
2204 if (vif->bss_conf.uora_exists) { in iwl_mvm_cfg_he_sta()
2208 vif->bss_conf.uora_ocw_range & 0x7; in iwl_mvm_cfg_he_sta()
2210 (vif->bss_conf.uora_ocw_range >> 3) & 0x7; in iwl_mvm_cfg_he_sta()
2217 if (vif->bss_conf.nontransmitted) { in iwl_mvm_cfg_he_sta()
2220 vif->bss_conf.transmitter_bssid); in iwl_mvm_cfg_he_sta()
2222 vif->bss_conf.bssid_indicator; in iwl_mvm_cfg_he_sta()
2223 sta_ctxt_cmd.bssid_index = vif->bss_conf.bssid_index; in iwl_mvm_cfg_he_sta()
2224 sta_ctxt_cmd.ema_ap = vif->bss_conf.ema_ap; in iwl_mvm_cfg_he_sta()
2226 vif->bss_conf.profile_periodicity; in iwl_mvm_cfg_he_sta()
2238 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed_station() argument
2242 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bss_info_changed_station()
2251 if (vif->bss_conf.he_support && in iwl_mvm_bss_info_changed_station()
2253 iwl_mvm_cfg_he_sta(mvm, vif, mvmvif->ap_sta_id); in iwl_mvm_bss_info_changed_station()
2255 iwl_mvm_mac_ctxt_recalc_tsf_id(mvm, vif); in iwl_mvm_bss_info_changed_station()
2260 bss_conf->assoc && vif->bss_conf.he_support && in iwl_mvm_bss_info_changed_station()
2262 iwl_mvm_cfg_he_sta(mvm, vif, mvmvif->ap_sta_id); in iwl_mvm_bss_info_changed_station()
2273 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, mvmvif->bssid); in iwl_mvm_bss_info_changed_station()
2275 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_bss_info_changed_station()
2317 u32 dur = (11 * vif->bss_conf.beacon_int) / 10; in iwl_mvm_bss_info_changed_station()
2318 iwl_mvm_protect_session(mvm, vif, dur, dur, in iwl_mvm_bss_info_changed_station()
2322 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station()
2323 iwl_mvm_power_vif_assoc(mvm, vif); in iwl_mvm_bss_info_changed_station()
2324 if (vif->p2p) { in iwl_mvm_bss_info_changed_station()
2325 iwl_mvm_update_smps(mvm, vif, in iwl_mvm_bss_info_changed_station()
2334 ret = iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station()
2342 * station has been added, but before the vif is set in iwl_mvm_bss_info_changed_station()
2344 * then configure the vif. Since the vif is not in iwl_mvm_bss_info_changed_station()
2354 ret = iwl_mvm_rm_sta_id(mvm, vif, in iwl_mvm_bss_info_changed_station()
2369 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_bss_info_changed_station()
2373 vif->addr); in iwl_mvm_bss_info_changed_station()
2381 (changes & BSS_CHANGED_MU_GROUPS) && vif->mu_mimo_owner) { in iwl_mvm_bss_info_changed_station()
2382 ret = iwl_mvm_update_mu_groups(mvm, vif); in iwl_mvm_bss_info_changed_station()
2395 iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_TT, in iwl_mvm_bss_info_changed_station()
2410 iwl_mvm_stop_session_protection(mvm, vif); in iwl_mvm_bss_info_changed_station()
2412 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_bss_info_changed_station()
2413 WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0)); in iwl_mvm_bss_info_changed_station()
2432 ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); in iwl_mvm_bss_info_changed_station()
2445 iwl_mvm_apply_fw_smps_request(vif); in iwl_mvm_bss_info_changed_station()
2449 struct ieee80211_vif *vif) in iwl_mvm_start_ap_ibss() argument
2452 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_start_ap_ibss()
2458 ret = iwl_mvm_mac_ctxt_beacon_changed(mvm, vif); in iwl_mvm_start_ap_ibss()
2467 if (vif->type == NL80211_IFTYPE_AP) in iwl_mvm_start_ap_ibss()
2468 iwl_mvm_mac_ctxt_recalc_tsf_id(mvm, vif); in iwl_mvm_start_ap_ibss()
2473 ret = iwl_mvm_mac_ctxt_add(mvm, vif); in iwl_mvm_start_ap_ibss()
2478 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_start_ap_ibss()
2490 ret = iwl_mvm_add_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2497 ret = iwl_mvm_send_add_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2499 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2507 ret = iwl_mvm_send_add_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2510 ret = iwl_mvm_add_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2512 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2529 ret = __iwl_mvm_mac_set_key(hw, SET_KEY, vif, NULL, key); in iwl_mvm_start_ap_ibss()
2534 if (vif->type == NL80211_IFTYPE_AP && !vif->p2p) { in iwl_mvm_start_ap_ibss()
2547 /* Need to update the P2P Device MAC (only GO, IBSS is single vif) */ in iwl_mvm_start_ap_ibss()
2548 if (vif->p2p && mvm->p2p_device_vif) in iwl_mvm_start_ap_ibss()
2557 iwl_mvm_ftm_restart_responder(mvm, vif); in iwl_mvm_start_ap_ibss()
2564 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2565 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_start_ap_ibss()
2567 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_start_ap_ibss()
2569 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_start_ap_ibss()
2576 struct ieee80211_vif *vif) in iwl_mvm_stop_ap_ibss() argument
2579 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_stop_ap_ibss()
2581 iwl_mvm_prepare_mac_removal(mvm, vif); in iwl_mvm_stop_ap_ibss()
2586 if (rcu_access_pointer(mvm->csa_vif) == vif) { in iwl_mvm_stop_ap_ibss()
2593 if (rcu_access_pointer(mvm->csa_tx_blocked_vif) == vif) { in iwl_mvm_stop_ap_ibss()
2601 if (vif->type == NL80211_IFTYPE_AP && !vif->p2p) { in iwl_mvm_stop_ap_ibss()
2609 /* Need to update the P2P Device MAC (only GO, IBSS is single vif) */ in iwl_mvm_stop_ap_ibss()
2610 if (vif->p2p && mvm->p2p_device_vif) in iwl_mvm_stop_ap_ibss()
2615 iwl_mvm_ftm_responder_clear(mvm, vif); in iwl_mvm_stop_ap_ibss()
2626 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
2627 iwl_mvm_send_rm_bcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
2629 iwl_mvm_rm_mcast_sta(mvm, vif); in iwl_mvm_stop_ap_ibss()
2630 iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_stop_ap_ibss()
2634 iwl_mvm_mac_ctxt_remove(mvm, vif); in iwl_mvm_stop_ap_ibss()
2641 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed_ap_ibss() argument
2645 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_bss_info_changed_ap_ibss()
2653 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL)) in iwl_mvm_bss_info_changed_ap_ibss()
2654 IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); in iwl_mvm_bss_info_changed_ap_ibss()
2658 iwl_mvm_mac_ctxt_beacon_changed(mvm, vif)) in iwl_mvm_bss_info_changed_ap_ibss()
2662 int ret = iwl_mvm_ftm_start_responder(mvm, vif); in iwl_mvm_bss_info_changed_ap_ibss()
2672 struct ieee80211_vif *vif, in iwl_mvm_bss_info_changed() argument
2683 switch (vif->type) { in iwl_mvm_bss_info_changed()
2685 iwl_mvm_bss_info_changed_station(mvm, vif, bss_conf, changes); in iwl_mvm_bss_info_changed()
2689 iwl_mvm_bss_info_changed_ap_ibss(mvm, vif, bss_conf, changes); in iwl_mvm_bss_info_changed()
2693 iwl_mvm_update_mu_groups(mvm, vif); in iwl_mvm_bss_info_changed()
2703 iwl_mvm_set_tx_power(mvm, vif, bss_conf->txpower); in iwl_mvm_bss_info_changed()
2710 struct ieee80211_vif *vif, in iwl_mvm_mac_hw_scan() argument
2721 ret = iwl_mvm_reg_scan_start(mvm, vif, &hw_req->req, &hw_req->ies); in iwl_mvm_mac_hw_scan()
2728 struct ieee80211_vif *vif) in iwl_mvm_mac_cancel_hw_scan() argument
2837 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_notify() argument
2864 if (!mvmsta->vif || in iwl_mvm_sta_pm_notif()
2865 mvmsta->vif->type != NL80211_IFTYPE_AP) { in iwl_mvm_sta_pm_notif()
2898 struct ieee80211_vif *vif, in iwl_mvm_sta_pre_rcu_remove() argument
2920 static void iwl_mvm_check_uapsd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, in iwl_mvm_check_uapsd() argument
2928 mdata = &mvm->tcm.data[iwl_mvm_vif_from_mac80211(vif)->id]; in iwl_mvm_check_uapsd()
2936 if (vif->p2p && !iwl_mvm_is_p2p_scm_uapsd_supported(mvm)) { in iwl_mvm_check_uapsd()
2937 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
2941 if (!vif->p2p && in iwl_mvm_check_uapsd()
2943 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
2949 vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
2954 vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; in iwl_mvm_check_uapsd()
2959 struct ieee80211_vif *vif, u8 *peer_addr, in iwl_mvm_tdls_check_trigger() argument
2965 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_tdls_check_trigger()
3010 struct ieee80211_vif *vif) in iwl_mvm_check_he_obss_narrow_bw_ru() argument
3012 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_check_he_obss_narrow_bw_ru()
3017 if (!(vif->bss_conf.chandef.chan->flags & IEEE80211_CHAN_RADAR)) { in iwl_mvm_check_he_obss_narrow_bw_ru()
3022 cfg80211_bss_iter(hw->wiphy, &vif->bss_conf.chandef, in iwl_mvm_check_he_obss_narrow_bw_ru()
3034 struct ieee80211_vif *vif) in iwl_mvm_reset_cca_40mhz_workaround() argument
3039 if (vif->type != NL80211_IFTYPE_STATION) in iwl_mvm_reset_cca_40mhz_workaround()
3055 ieee80211_vif_type_p2p(vif)); in iwl_mvm_reset_cca_40mhz_workaround()
3067 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_state() argument
3073 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_sta_state()
3110 iwl_mvm_reset_cca_40mhz_workaround(mvm, vif); in iwl_mvm_mac_sta_state()
3126 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_mac_sta_state()
3127 vif->bss_conf.beacon_int < 16) { in iwl_mvm_mac_sta_state()
3130 sta->addr, vif->bss_conf.beacon_int); in iwl_mvm_mac_sta_state()
3135 if (vif->type == NL80211_IFTYPE_STATION) in iwl_mvm_mac_sta_state()
3136 vif->bss_conf.he_support = sta->he_cap.has_he; in iwl_mvm_mac_sta_state()
3139 (vif->p2p || in iwl_mvm_mac_sta_state()
3148 ret = iwl_mvm_add_sta(mvm, vif, sta); in iwl_mvm_mac_sta_state()
3150 iwl_mvm_recalc_tdls_state(mvm, vif, true); in iwl_mvm_mac_sta_state()
3151 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_mac_sta_state()
3163 iwl_mvm_check_uapsd(mvm, vif, sta->addr); in iwl_mvm_mac_sta_state()
3167 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mvm_mac_sta_state()
3168 vif->bss_conf.he_support = sta->he_cap.has_he; in iwl_mvm_mac_sta_state()
3170 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3171 if (vif->bss_conf.he_support && in iwl_mvm_mac_sta_state()
3173 iwl_mvm_cfg_he_sta(mvm, vif, mvm_sta->sta_id); in iwl_mvm_mac_sta_state()
3174 } else if (vif->type == NL80211_IFTYPE_STATION) { in iwl_mvm_mac_sta_state()
3175 vif->bss_conf.he_support = sta->he_cap.has_he; in iwl_mvm_mac_sta_state()
3179 iwl_mvm_check_he_obss_narrow_bw_ru(hw, vif); in iwl_mvm_mac_sta_state()
3181 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3186 ret = iwl_mvm_update_sta(mvm, vif, sta); in iwl_mvm_mac_sta_state()
3196 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_mac_sta_state()
3200 WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0)); in iwl_mvm_mac_sta_state()
3207 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3214 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3217 ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_mac_sta_state()
3224 if (vif->type == NL80211_IFTYPE_AP) { in iwl_mvm_mac_sta_state()
3226 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_sta_state()
3234 ret = iwl_mvm_rm_sta(mvm, vif, sta); in iwl_mvm_mac_sta_state()
3236 iwl_mvm_recalc_tdls_state(mvm, vif, false); in iwl_mvm_mac_sta_state()
3237 iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, in iwl_mvm_mac_sta_state()
3273 struct ieee80211_vif *vif, in iwl_mvm_sta_rc_update() argument
3277 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_sta_rc_update()
3285 if (vif->type == NL80211_IFTYPE_STATION && in iwl_mvm_sta_rc_update()
3287 iwl_mvm_sf_update(mvm, vif, false); in iwl_mvm_sta_rc_update()
3291 struct ieee80211_vif *vif, u16 ac, in iwl_mvm_mac_conf_tx() argument
3295 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_conf_tx()
3303 if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { in iwl_mvm_mac_conf_tx()
3307 ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in iwl_mvm_mac_conf_tx()
3315 struct ieee80211_vif *vif, in iwl_mvm_mac_mgd_prepare_tx() argument
3337 iwl_mvm_schedule_session_protection(mvm, vif, 900, in iwl_mvm_mac_mgd_prepare_tx()
3340 iwl_mvm_protect_session(mvm, vif, duration, in iwl_mvm_mac_mgd_prepare_tx()
3346 struct ieee80211_vif *vif, in iwl_mvm_mac_sched_scan_start() argument
3356 if (!vif->bss_conf.idle) { in iwl_mvm_mac_sched_scan_start()
3361 ret = iwl_mvm_sched_scan_start(mvm, vif, req, ies, IWL_MVM_SCAN_SCHED); in iwl_mvm_mac_sched_scan_start()
3369 struct ieee80211_vif *vif) in iwl_mvm_mac_sched_scan_stop() argument
3398 struct ieee80211_vif *vif, in __iwl_mvm_mac_set_key() argument
3402 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_mac_set_key()
3415 } else if (vif->type == NL80211_IFTYPE_STATION) { in __iwl_mvm_mac_set_key()
3435 if (vif->type == NL80211_IFTYPE_STATION) in __iwl_mvm_mac_set_key()
3456 if ((vif->type == NL80211_IFTYPE_ADHOC || in __iwl_mvm_mac_set_key()
3457 vif->type == NL80211_IFTYPE_AP) && !sta) { in __iwl_mvm_mac_set_key()
3546 ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, key_offset); in __iwl_mvm_mac_set_key()
3600 ret = iwl_mvm_remove_sta_key(mvm, vif, sta, key); in __iwl_mvm_mac_set_key()
3611 struct ieee80211_vif *vif, in iwl_mvm_mac_set_key() argument
3619 ret = __iwl_mvm_mac_set_key(hw, cmd, vif, sta, key); in iwl_mvm_mac_set_key()
3626 struct ieee80211_vif *vif, in iwl_mvm_mac_update_tkip_key() argument
3636 iwl_mvm_update_tkip_key(mvm, vif, keyconf, sta, iv32, phase1key); in iwl_mvm_mac_update_tkip_key()
3681 struct ieee80211_vif *vif, in iwl_mvm_send_aux_roc_cmd() argument
3685 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_send_aux_roc_cmd()
3689 u32 dtim_interval = vif->bss_conf.dtim_period * in iwl_mvm_send_aux_roc_cmd()
3690 vif->bss_conf.beacon_int; in iwl_mvm_send_aux_roc_cmd()
3723 if (vif->bss_conf.assoc) { in iwl_mvm_send_aux_roc_cmd()
3745 memcpy(tail->node_addr, vif->addr, ETH_ALEN); in iwl_mvm_send_aux_roc_cmd()
3756 te_data->vif = vif; in iwl_mvm_send_aux_roc_cmd()
3801 struct ieee80211_vif *vif, in iwl_mvm_roc() argument
3807 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_roc()
3824 switch (vif->type) { in iwl_mvm_roc()
3841 vif, duration); in iwl_mvm_roc()
3851 IWL_ERR(mvm, "vif isn't P2P_DEVICE: %d\n", vif->type); in iwl_mvm_roc()
3866 ret = iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_roc()
3875 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_roc()
3930 ret = iwl_mvm_binding_remove_vif(mvm, vif); in iwl_mvm_roc()
3939 ret = iwl_mvm_binding_add_vif(mvm, vif); in iwl_mvm_roc()
3948 ret = iwl_mvm_start_p2p_roc(mvm, vif, duration, type); in iwl_mvm_roc()
3957 struct ieee80211_vif *vif) in iwl_mvm_cancel_roc() argument
3964 iwl_mvm_stop_roc(mvm, vif); in iwl_mvm_cancel_roc()
3977 struct ieee80211_vif *vif) in iwl_mvm_ftm_responder_chanctx_iter() argument
3981 if (rcu_access_pointer(vif->chanctx_conf) == data->ctx && in iwl_mvm_ftm_responder_chanctx_iter()
3982 vif->type == NL80211_IFTYPE_AP && vif->bss_conf.ftmr_params) in iwl_mvm_ftm_responder_chanctx_iter()
4110 struct ieee80211_vif *vif, in __iwl_mvm_assign_vif_chanctx() argument
4116 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_assign_vif_chanctx()
4123 switch (vif->type) { in __iwl_mvm_assign_vif_chanctx()
4150 ret = iwl_mvm_binding_add_vif(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
4164 if (vif->type == NL80211_IFTYPE_MONITOR) { in __iwl_mvm_assign_vif_chanctx()
4170 ret = iwl_mvm_add_snif_sta(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
4177 if (vif->type == NL80211_IFTYPE_AP) { in __iwl_mvm_assign_vif_chanctx()
4179 iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); in __iwl_mvm_assign_vif_chanctx()
4182 if (switching_chanctx && vif->type == NL80211_IFTYPE_STATION) { in __iwl_mvm_assign_vif_chanctx()
4187 u32 duration = 3 * vif->bss_conf.beacon_int; in __iwl_mvm_assign_vif_chanctx()
4192 iwl_mvm_protect_session(mvm, vif, duration, duration, in __iwl_mvm_assign_vif_chanctx()
4193 vif->bss_conf.beacon_int / 2, in __iwl_mvm_assign_vif_chanctx()
4203 iwl_mvm_binding_remove_vif(mvm, vif); in __iwl_mvm_assign_vif_chanctx()
4211 struct ieee80211_vif *vif, in iwl_mvm_assign_vif_chanctx() argument
4218 ret = __iwl_mvm_assign_vif_chanctx(mvm, vif, ctx, false); in iwl_mvm_assign_vif_chanctx()
4225 struct ieee80211_vif *vif, in __iwl_mvm_unassign_vif_chanctx() argument
4229 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in __iwl_mvm_unassign_vif_chanctx()
4235 switch (vif->type) { in __iwl_mvm_unassign_vif_chanctx()
4241 iwl_mvm_rm_snif_sta(mvm, vif); in __iwl_mvm_unassign_vif_chanctx()
4254 rcu_assign_pointer(mvm->csa_tx_blocked_vif, vif); in __iwl_mvm_unassign_vif_chanctx()
4262 disabled_vif = vif; in __iwl_mvm_unassign_vif_chanctx()
4266 iwl_mvm_mac_ctxt_changed(mvm, vif, true, NULL); in __iwl_mvm_unassign_vif_chanctx()
4273 iwl_mvm_binding_remove_vif(mvm, vif); in __iwl_mvm_unassign_vif_chanctx()
4284 struct ieee80211_vif *vif, in iwl_mvm_unassign_vif_chanctx() argument
4290 __iwl_mvm_unassign_vif_chanctx(mvm, vif, ctx, false); in iwl_mvm_unassign_vif_chanctx()
4301 __iwl_mvm_unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, true); in iwl_mvm_switch_vif_chanctx_swap()
4310 ret = __iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].new_ctx, in iwl_mvm_switch_vif_chanctx_swap()
4333 if (__iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, in iwl_mvm_switch_vif_chanctx_swap()
4358 __iwl_mvm_unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, true); in iwl_mvm_switch_vif_chanctx_reassign()
4360 ret = __iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].new_ctx, in iwl_mvm_switch_vif_chanctx_reassign()
4371 if (__iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, in iwl_mvm_switch_vif_chanctx_reassign()
4397 /* we only support a single-vif right now */ in iwl_mvm_switch_vif_chanctx()
4430 if (!mvm_sta || !mvm_sta->vif) { in iwl_mvm_set_tim()
4431 IWL_ERR(mvm, "Station is not associated to a vif\n"); in iwl_mvm_set_tim()
4435 return iwl_mvm_mac_ctxt_beacon_changed(mvm, mvm_sta->vif); in iwl_mvm_set_tim()
4446 struct ieee80211_vif *vif, in __iwl_mvm_mac_testmode_cmd() argument
4463 if (!vif || vif->type != NL80211_IFTYPE_AP || !vif->p2p || in __iwl_mvm_mac_testmode_cmd()
4464 !vif->bss_conf.enable_beacon || in __iwl_mvm_mac_testmode_cmd()
4469 if (noa_duration >= vif->bss_conf.beacon_int) in __iwl_mvm_mac_testmode_cmd()
4473 mvm->noa_vif = vif; in __iwl_mvm_mac_testmode_cmd()
4477 /* must be associated client vif - ignore authorized */ in __iwl_mvm_mac_testmode_cmd()
4478 if (!vif || vif->type != NL80211_IFTYPE_STATION || in __iwl_mvm_mac_testmode_cmd()
4479 !vif->bss_conf.assoc || !vif->bss_conf.dtim_period || in __iwl_mvm_mac_testmode_cmd()
4484 return iwl_mvm_enable_beacon_filter(mvm, vif, 0); in __iwl_mvm_mac_testmode_cmd()
4485 return iwl_mvm_disable_beacon_filter(mvm, vif, 0); in __iwl_mvm_mac_testmode_cmd()
4492 struct ieee80211_vif *vif, in iwl_mvm_mac_testmode_cmd() argument
4499 err = __iwl_mvm_mac_testmode_cmd(mvm, vif, data, len); in iwl_mvm_mac_testmode_cmd()
4507 struct ieee80211_vif *vif, in iwl_mvm_channel_switch() argument
4521 struct ieee80211_vif *vif, in iwl_mvm_schedule_client_csa() argument
4524 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_schedule_client_csa()
4538 DIV_ROUND_UP(chsw->delay, vif->bss_conf.beacon_int); in iwl_mvm_schedule_client_csa()
4547 struct ieee80211_vif *vif, in iwl_mvm_old_pre_chan_sw_sta() argument
4550 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_old_pre_chan_sw_sta()
4563 ((vif->bss_conf.beacon_int * (chsw->count - 1) - in iwl_mvm_old_pre_chan_sw_sta()
4567 iwl_mvm_csa_client_absent(mvm, vif); in iwl_mvm_old_pre_chan_sw_sta()
4570 int ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); in iwl_mvm_old_pre_chan_sw_sta()
4576 iwl_mvm_schedule_csa_period(mvm, vif, vif->bss_conf.beacon_int, in iwl_mvm_old_pre_chan_sw_sta()
4584 struct ieee80211_vif *vif, in iwl_mvm_pre_channel_switch() argument
4589 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_pre_channel_switch()
4600 ieee80211_vif_to_wdev(vif), in iwl_mvm_pre_channel_switch()
4603 switch (vif->type) { in iwl_mvm_pre_channel_switch()
4621 rcu_assign_pointer(mvm->csa_vif, vif); in iwl_mvm_pre_channel_switch()
4638 if (!vif->bss_conf.assoc || !vif->bss_conf.dtim_period) { in iwl_mvm_pre_channel_switch()
4652 chsw->count * vif->bss_conf.beacon_int > in iwl_mvm_pre_channel_switch()
4660 ret = iwl_mvm_old_pre_chan_sw_sta(mvm, vif, chsw); in iwl_mvm_pre_channel_switch()
4664 iwl_mvm_schedule_client_csa(mvm, vif, chsw); in iwl_mvm_pre_channel_switch()
4690 struct ieee80211_vif *vif, in iwl_mvm_channel_switch_rx_beacon() argument
4694 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_channel_switch_rx_beacon()
4710 iwl_mvm_abort_channel_switch(hw, vif); in iwl_mvm_channel_switch_rx_beacon()
4711 ieee80211_chswitch_done(vif, false); in iwl_mvm_channel_switch_rx_beacon()
4768 struct ieee80211_vif *vif, u32 queues, bool drop) in iwl_mvm_mac_flush() argument
4777 if (!vif) { in iwl_mvm_mac_flush()
4782 if (vif->type != NL80211_IFTYPE_STATION) in iwl_mvm_mac_flush()
4789 mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_flush()
4799 if (mvmsta->vif != vif) in iwl_mvm_mac_flush()
4994 struct ieee80211_vif *vif, in iwl_mvm_mac_sta_statistics() argument
4999 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_sta_statistics()
5015 if (!(vif->driver_flags & IEEE80211_VIF_BEACON_FILTER)) in iwl_mvm_mac_sta_statistics()
5018 if (!vif->bss_conf.assoc) in iwl_mvm_mac_sta_statistics()
5042 struct ieee80211_vif *vif, in iwl_mvm_event_mlme_callback_ini() argument
5062 struct ieee80211_vif *vif, in iwl_mvm_event_mlme_callback() argument
5076 iwl_mvm_event_mlme_callback_ini(mvm, vif, &event->u.mlme); in iwl_mvm_event_mlme_callback()
5080 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_event_mlme_callback()
5114 struct ieee80211_vif *vif, in iwl_mvm_event_bar_rx_callback() argument
5120 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), in iwl_mvm_event_bar_rx_callback()
5137 struct ieee80211_vif *vif, in iwl_mvm_mac_event_callback() argument
5144 iwl_mvm_event_mlme_callback(mvm, vif, event); in iwl_mvm_mac_event_callback()
5147 iwl_mvm_event_bar_rx_callback(mvm, vif, event); in iwl_mvm_mac_event_callback()
5150 iwl_mvm_event_frame_timeout_callback(mvm, vif, event->u.ba.sta, in iwl_mvm_mac_event_callback()
5231 struct ieee80211_vif *vif, in iwl_mvm_mac_get_ftm_responder_stats() argument
5235 struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); in iwl_mvm_mac_get_ftm_responder_stats()
5237 if (vif->p2p || vif->type != NL80211_IFTYPE_AP || in iwl_mvm_mac_get_ftm_responder_stats()
5238 !mvmvif->ap_ibss_active || !vif->bss_conf.ftm_responder) in iwl_mvm_mac_get_ftm_responder_stats()
5259 struct ieee80211_vif *vif, in iwl_mvm_start_pmsr() argument
5266 ret = iwl_mvm_ftm_start(mvm, vif, request); in iwl_mvm_start_pmsr()
5273 struct ieee80211_vif *vif, in iwl_mvm_abort_pmsr() argument