Lines Matching refs:mvm
75 void iwl_mvm_rx_rx_phy_cmd(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) in iwl_mvm_rx_rx_phy_cmd() argument
79 memcpy(&mvm->last_phy_info, pkt->data, sizeof(mvm->last_phy_info)); in iwl_mvm_rx_rx_phy_cmd()
80 mvm->ampdu_ref++; in iwl_mvm_rx_rx_phy_cmd()
83 if (mvm->last_phy_info.phy_flags & cpu_to_le16(RX_RES_PHY_FLAGS_AGG)) { in iwl_mvm_rx_rx_phy_cmd()
84 spin_lock(&mvm->drv_stats_lock); in iwl_mvm_rx_rx_phy_cmd()
85 mvm->drv_rx_stats.ampdu_count++; in iwl_mvm_rx_rx_phy_cmd()
86 spin_unlock(&mvm->drv_stats_lock); in iwl_mvm_rx_rx_phy_cmd()
96 static void iwl_mvm_pass_packet_to_mac80211(struct iwl_mvm *mvm, in iwl_mvm_pass_packet_to_mac80211() argument
144 ieee80211_rx_napi(mvm->hw, sta, skb, napi); in iwl_mvm_pass_packet_to_mac80211()
153 static void iwl_mvm_get_signal_strength(struct iwl_mvm *mvm, in iwl_mvm_get_signal_strength() argument
174 IWL_DEBUG_STATS(mvm, "energy In A %d B %d C %d , and max %d\n", in iwl_mvm_get_signal_strength()
195 static u32 iwl_mvm_set_mac80211_rx_flag(struct iwl_mvm *mvm, in iwl_mvm_set_mac80211_rx_flag() argument
223 if (!fw_has_api(&mvm->fw->ucode_capa, in iwl_mvm_set_mac80211_rx_flag()
248 if (!mvm->monitor_on) in iwl_mvm_set_mac80211_rx_flag()
249 IWL_ERR(mvm, "Unhandled alg: 0x%x\n", rx_pkt_status); in iwl_mvm_set_mac80211_rx_flag()
255 static void iwl_mvm_rx_handle_tcm(struct iwl_mvm *mvm, in iwl_mvm_rx_handle_tcm() argument
278 if (time_after(jiffies, mvm->tcm.ts + MVM_TCM_PERIOD)) in iwl_mvm_rx_handle_tcm()
279 schedule_delayed_work(&mvm->tcm.work, 0); in iwl_mvm_rx_handle_tcm()
280 mdata = &mvm->tcm.data[mac]; in iwl_mvm_rx_handle_tcm()
284 if (mdata->rx.last_ampdu_ref != mvm->ampdu_ref) { in iwl_mvm_rx_handle_tcm()
285 mdata->rx.last_ampdu_ref = mvm->ampdu_ref; in iwl_mvm_rx_handle_tcm()
341 void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi, in iwl_mvm_rx_rx_mpdu() argument
356 phy_info = &mvm->last_phy_info; in iwl_mvm_rx_rx_mpdu()
368 IWL_ERR(mvm, "alloc_skb failed\n"); in iwl_mvm_rx_rx_mpdu()
377 if (iwl_mvm_set_mac80211_rx_flag(mvm, hdr, rx_status, rx_pkt_status, in iwl_mvm_rx_rx_mpdu()
379 IWL_DEBUG_DROP(mvm, "Bad decryption results 0x%08x\n", in iwl_mvm_rx_rx_mpdu()
391 IWL_DEBUG_RX(mvm, "Bad CRC or FIFO: 0x%08X.\n", rx_pkt_status); in iwl_mvm_rx_rx_mpdu()
411 iwl_mvm_get_signal_strength(mvm, phy_info, rx_status); in iwl_mvm_rx_rx_mpdu()
413 IWL_DEBUG_STATS_LIMIT(mvm, "Rssi %d, TSF %llu\n", rx_status->signal, in iwl_mvm_rx_rx_mpdu()
422 if (!WARN_ON_ONCE(id >= ARRAY_SIZE(mvm->fw_id_to_mac_id))) { in iwl_mvm_rx_rx_mpdu()
423 sta = rcu_dereference(mvm->fw_id_to_mac_id[id]); in iwl_mvm_rx_rx_mpdu()
431 sta = ieee80211_find_sta_by_ifaddr(mvm->hw, hdr->addr2, NULL); in iwl_mvm_rx_rx_mpdu()
437 rcu_dereference(mvm->csa_tx_blocked_vif); in iwl_mvm_rx_rx_mpdu()
450 iwl_mvm_sta_modify_disable_tx_ap(mvm, sta, in iwl_mvm_rx_rx_mpdu()
454 rs_update_last_rssi(mvm, mvmsta, rx_status); in iwl_mvm_rx_rx_mpdu()
456 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, in iwl_mvm_rx_rx_mpdu()
468 iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, in iwl_mvm_rx_rx_mpdu()
472 if (!mvm->tcm.paused && len >= sizeof(*hdr) && in iwl_mvm_rx_rx_mpdu()
475 iwl_mvm_rx_handle_tcm(mvm, sta, hdr, len, phy_info, in iwl_mvm_rx_rx_mpdu()
494 rx_status->ampdu_reference = mvm->ampdu_ref; in iwl_mvm_rx_rx_mpdu()
549 iwl_mvm_update_frame_stats(mvm, rate_n_flags, in iwl_mvm_rx_rx_mpdu()
555 mvm->sched_scan_pass_all == SCHED_SCAN_PASS_ALL_ENABLED)) in iwl_mvm_rx_rx_mpdu()
556 mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_FOUND; in iwl_mvm_rx_rx_mpdu()
562 iwl_mvm_pass_packet_to_mac80211(mvm, sta, napi, skb, hdr, len, in iwl_mvm_rx_rx_mpdu()
567 struct iwl_mvm *mvm; member
577 struct iwl_mvm *mvm = data->mvm; in iwl_mvm_stat_iterator() local
590 if (iwl_mvm_has_new_rx_stats_api(mvm)) { in iwl_mvm_stat_iterator()
615 IWL_DEBUG_RX(mvm, "RSSI is 0 - skip signal based decision\n"); in iwl_mvm_stat_iterator()
629 IWL_DEBUG_RX(mvm, "cqm_iterator bt coex high %d\n", in iwl_mvm_stat_iterator()
631 iwl_mvm_bt_rssi_event(mvm, vif, RSSI_EVENT_HIGH); in iwl_mvm_stat_iterator()
636 IWL_DEBUG_RX(mvm, "cqm_iterator bt coex low %d\n", in iwl_mvm_stat_iterator()
638 iwl_mvm_bt_rssi_event(mvm, vif, RSSI_EVENT_LOW); in iwl_mvm_stat_iterator()
650 IWL_DEBUG_RX(mvm, "cqm_iterator cqm low %d\n", in iwl_mvm_stat_iterator()
660 IWL_DEBUG_RX(mvm, "cqm_iterator cqm high %d\n", in iwl_mvm_stat_iterator()
671 iwl_mvm_rx_stats_check_trigger(struct iwl_mvm *mvm, struct iwl_rx_packet *pkt) in iwl_mvm_rx_stats_check_trigger() argument
677 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, FW_DBG_TRIGGER_STATS); in iwl_mvm_rx_stats_check_trigger()
692 iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, NULL); in iwl_mvm_rx_stats_check_trigger()
695 void iwl_mvm_handle_rx_statistics(struct iwl_mvm *mvm, in iwl_mvm_handle_rx_statistics() argument
699 .mvm = mvm, in iwl_mvm_handle_rx_statistics()
708 if (!iwl_mvm_has_new_rx_stats_api(mvm)) { in iwl_mvm_handle_rx_statistics()
709 if (iwl_mvm_has_new_rx_api(mvm)) in iwl_mvm_handle_rx_statistics()
722 if (!iwl_mvm_has_new_rx_stats_api(mvm)) { in iwl_mvm_handle_rx_statistics()
729 mvm->rx_stats_v3 = stats->rx; in iwl_mvm_handle_rx_statistics()
731 mvm->radio_stats.rx_time = in iwl_mvm_handle_rx_statistics()
733 mvm->radio_stats.tx_time = in iwl_mvm_handle_rx_statistics()
735 mvm->radio_stats.on_time_rf = in iwl_mvm_handle_rx_statistics()
737 mvm->radio_stats.on_time_scan = in iwl_mvm_handle_rx_statistics()
750 mvm->rx_stats = stats->rx; in iwl_mvm_handle_rx_statistics()
752 mvm->radio_stats.rx_time = in iwl_mvm_handle_rx_statistics()
754 mvm->radio_stats.tx_time = in iwl_mvm_handle_rx_statistics()
756 mvm->radio_stats.on_time_rf = in iwl_mvm_handle_rx_statistics()
758 mvm->radio_stats.on_time_scan = in iwl_mvm_handle_rx_statistics()
766 iwl_mvm_rx_stats_check_trigger(mvm, pkt); in iwl_mvm_handle_rx_statistics()
768 ieee80211_iterate_active_interfaces(mvm->hw, in iwl_mvm_handle_rx_statistics()
773 if (!iwl_mvm_has_new_rx_api(mvm)) in iwl_mvm_handle_rx_statistics()
776 if (!iwl_mvm_has_new_rx_stats_api(mvm)) { in iwl_mvm_handle_rx_statistics()
791 for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { in iwl_mvm_handle_rx_statistics()
797 sta = iwl_mvm_sta_from_staid_rcu(mvm, i); in iwl_mvm_handle_rx_statistics()
812 spin_lock(&mvm->tcm.lock); in iwl_mvm_handle_rx_statistics()
814 struct iwl_mvm_tcm_mac *mdata = &mvm->tcm.data[i]; in iwl_mvm_handle_rx_statistics()
828 spin_unlock(&mvm->tcm.lock); in iwl_mvm_handle_rx_statistics()
831 void iwl_mvm_rx_statistics(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) in iwl_mvm_rx_statistics() argument
833 iwl_mvm_handle_rx_statistics(mvm, rxb_addr(rxb)); in iwl_mvm_rx_statistics()
836 void iwl_mvm_window_status_notif(struct iwl_mvm *mvm, in iwl_mvm_window_status_notif() argument
871 sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); in iwl_mvm_window_status_notif()