mvm 75 drivers/net/wireless/intel/iwlwifi/mvm/binding.c static int iwl_mvm_binding_cmd(struct iwl_mvm *mvm, u32 action, mvm 86 drivers/net/wireless/intel/iwlwifi/mvm/binding.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 90 drivers/net/wireless/intel/iwlwifi/mvm/binding.c !iwl_mvm_is_cdb_supported(mvm)) mvm 111 drivers/net/wireless/intel/iwlwifi/mvm/binding.c ret = iwl_mvm_send_cmd_pdu_status(mvm, BINDING_CONTEXT_CMD, mvm 114 drivers/net/wireless/intel/iwlwifi/mvm/binding.c IWL_ERR(mvm, "Failed to send binding (action:%d): %d\n", mvm 120 drivers/net/wireless/intel/iwlwifi/mvm/binding.c IWL_ERR(mvm, "Binding command failed: %u\n", status); mvm 147 drivers/net/wireless/intel/iwlwifi/mvm/binding.c static int iwl_mvm_binding_update(struct iwl_mvm *mvm, mvm 159 drivers/net/wireless/intel/iwlwifi/mvm/binding.c lockdep_assert_held(&mvm->mutex); mvm 161 drivers/net/wireless/intel/iwlwifi/mvm/binding.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 186 drivers/net/wireless/intel/iwlwifi/mvm/binding.c return iwl_mvm_binding_cmd(mvm, action, &data); mvm 189 drivers/net/wireless/intel/iwlwifi/mvm/binding.c int iwl_mvm_binding_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 200 drivers/net/wireless/intel/iwlwifi/mvm/binding.c if (iwl_mvm_sf_update(mvm, vif, false)) mvm 203 drivers/net/wireless/intel/iwlwifi/mvm/binding.c return iwl_mvm_binding_update(mvm, vif, mvmvif->phy_ctxt, true); mvm 206 drivers/net/wireless/intel/iwlwifi/mvm/binding.c int iwl_mvm_binding_remove_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 214 drivers/net/wireless/intel/iwlwifi/mvm/binding.c ret = iwl_mvm_binding_update(mvm, vif, mvmvif->phy_ctxt, false); mvm 217 drivers/net/wireless/intel/iwlwifi/mvm/binding.c if (iwl_mvm_sf_update(mvm, vif, true)) mvm 218 drivers/net/wireless/intel/iwlwifi/mvm/binding.c IWL_ERR(mvm, "Failed to update SF state\n"); mvm 147 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_get_coex_type(struct iwl_mvm *mvm, const struct ieee80211_vif *vif) mvm 174 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (mvm->cfg->bt_shared_single_ant) { mvm 180 drivers/net/wireless/intel/iwlwifi/mvm/coex.c primary_ch_phy_id = le32_to_cpu(mvm->last_bt_ci_cmd.primary_ch_phy_id); mvm 182 drivers/net/wireless/intel/iwlwifi/mvm/coex.c le32_to_cpu(mvm->last_bt_ci_cmd.secondary_ch_phy_id); mvm 185 drivers/net/wireless/intel/iwlwifi/mvm/coex.c ret = le32_to_cpu(mvm->last_bt_notif.primary_ch_lut); mvm 187 drivers/net/wireless/intel/iwlwifi/mvm/coex.c ret = le32_to_cpu(mvm->last_bt_notif.secondary_ch_lut); mvm 195 drivers/net/wireless/intel/iwlwifi/mvm/coex.c int iwl_mvm_send_bt_init_conf(struct iwl_mvm *mvm) mvm 200 drivers/net/wireless/intel/iwlwifi/mvm/coex.c lockdep_assert_held(&mvm->mutex); mvm 202 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (unlikely(mvm->bt_force_ant_mode != BT_FORCE_ANT_DIS)) { mvm 203 drivers/net/wireless/intel/iwlwifi/mvm/coex.c switch (mvm->bt_force_ant_mode) { mvm 226 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (iwl_mvm_is_mplut_supported(mvm)) mvm 232 drivers/net/wireless/intel/iwlwifi/mvm/coex.c memset(&mvm->last_bt_notif, 0, sizeof(mvm->last_bt_notif)); mvm 233 drivers/net/wireless/intel/iwlwifi/mvm/coex.c memset(&mvm->last_bt_ci_cmd, 0, sizeof(mvm->last_bt_ci_cmd)); mvm 235 drivers/net/wireless/intel/iwlwifi/mvm/coex.c return iwl_mvm_send_cmd_pdu(mvm, BT_CONFIG, 0, sizeof(bt_cmd), &bt_cmd); mvm 238 drivers/net/wireless/intel/iwlwifi/mvm/coex.c static int iwl_mvm_bt_coex_reduced_txp(struct iwl_mvm *mvm, u8 sta_id, mvm 245 drivers/net/wireless/intel/iwlwifi/mvm/coex.c mvmsta = iwl_mvm_sta_from_staid_protected(mvm, sta_id); mvm 258 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_DEBUG_COEX(mvm, "%sable reduced Tx Power for sta %d\n", mvm 264 drivers/net/wireless/intel/iwlwifi/mvm/coex.c return iwl_mvm_send_cmd_pdu(mvm, BT_COEX_UPDATE_REDUCED_TXP, mvm 270 drivers/net/wireless/intel/iwlwifi/mvm/coex.c struct iwl_mvm *mvm; mvm 279 drivers/net/wireless/intel/iwlwifi/mvm/coex.c void iwl_mvm_bt_coex_enable_rssi_event(struct iwl_mvm *mvm, mvm 294 drivers/net/wireless/intel/iwlwifi/mvm/coex.c static void iwl_mvm_bt_coex_tcm_based_ci(struct iwl_mvm *mvm, mvm 299 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (!time_after(now, mvm->bt_coex_last_tcm_ts + MVM_COEX_TCM_PERIOD)) mvm 302 drivers/net/wireless/intel/iwlwifi/mvm/coex.c mvm->bt_coex_last_tcm_ts = now; mvm 322 drivers/net/wireless/intel/iwlwifi/mvm/coex.c struct iwl_mvm *mvm = data->mvm; mvm 329 drivers/net/wireless/intel/iwlwifi/mvm/coex.c lockdep_assert_held(&mvm->mutex); mvm 349 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX, mvm 351 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_bt_coex_reduced_txp(mvm, mvmvif->ap_sta_id, mvm 353 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_bt_coex_enable_rssi_event(mvm, vif, false, 0); mvm 358 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_COEX_SCHEMA_2)) mvm 374 drivers/net/wireless/intel/iwlwifi/mvm/coex.c (mvm->last_bt_notif.rrc_status & BIT(mvmvif->phy_ctxt->id))) mvm 377 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_DEBUG_COEX(data->mvm, mvm 382 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX, mvm 413 drivers/net/wireless/intel/iwlwifi/mvm/coex.c data->primary_load = mvm->tcm.result.load[mvmvif->id]; mvm 415 drivers/net/wireless/intel/iwlwifi/mvm/coex.c data->secondary_load = mvm->tcm.result.load[mvmvif->id]; mvm 430 drivers/net/wireless/intel/iwlwifi/mvm/coex.c data->primary_load = mvm->tcm.result.load[mvmvif->id]; mvm 432 drivers/net/wireless/intel/iwlwifi/mvm/coex.c data->secondary_load = mvm->tcm.result.load[mvmvif->id]; mvm 440 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (iwl_get_coex_type(mvm, vif) == BT_COEX_LOOSE_LUT || mvm 441 drivers/net/wireless/intel/iwlwifi/mvm/coex.c mvm->cfg->bt_shared_single_ant || !vif->bss_conf.assoc || mvm 442 drivers/net/wireless/intel/iwlwifi/mvm/coex.c le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) == BT_OFF) { mvm 443 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_bt_coex_reduced_txp(mvm, mvmvif->ap_sta_id, false); mvm 444 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_bt_coex_enable_rssi_event(mvm, vif, false, 0); mvm 455 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (iwl_mvm_bt_coex_reduced_txp(mvm, mvmvif->ap_sta_id, true)) mvm 456 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_ERR(mvm, "Couldn't send BT_CONFIG cmd\n"); mvm 458 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (iwl_mvm_bt_coex_reduced_txp(mvm, mvmvif->ap_sta_id, false)) mvm 459 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_ERR(mvm, "Couldn't send BT_CONFIG cmd\n"); mvm 463 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_bt_coex_enable_rssi_event(mvm, vif, true, ave_rssi); mvm 466 drivers/net/wireless/intel/iwlwifi/mvm/coex.c static void iwl_mvm_bt_coex_notif_handle(struct iwl_mvm *mvm) mvm 469 drivers/net/wireless/intel/iwlwifi/mvm/coex.c .mvm = mvm, mvm 470 drivers/net/wireless/intel/iwlwifi/mvm/coex.c .notif = &mvm->last_bt_notif, mvm 476 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (unlikely(mvm->bt_force_ant_mode != BT_FORCE_ANT_DIS)) mvm 481 drivers/net/wireless/intel/iwlwifi/mvm/coex.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 484 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_bt_coex_tcm_based_ci(mvm, &data); mvm 535 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (memcmp(&cmd, &mvm->last_bt_ci_cmd, sizeof(cmd))) { mvm 536 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (iwl_mvm_send_cmd_pdu(mvm, BT_COEX_CI, 0, mvm 538 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_ERR(mvm, "Failed to send BT_CI cmd\n"); mvm 539 drivers/net/wireless/intel/iwlwifi/mvm/coex.c memcpy(&mvm->last_bt_ci_cmd, &cmd, sizeof(cmd)); mvm 543 drivers/net/wireless/intel/iwlwifi/mvm/coex.c void iwl_mvm_rx_bt_coex_notif(struct iwl_mvm *mvm, mvm 549 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_DEBUG_COEX(mvm, "BT Coex Notification received\n"); mvm 550 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_DEBUG_COEX(mvm, "\tBT ci compliance %d\n", notif->bt_ci_compliance); mvm 551 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_DEBUG_COEX(mvm, "\tBT primary_ch_lut %d\n", mvm 553 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_DEBUG_COEX(mvm, "\tBT secondary_ch_lut %d\n", mvm 555 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_DEBUG_COEX(mvm, "\tBT activity grading %d\n", mvm 559 drivers/net/wireless/intel/iwlwifi/mvm/coex.c memcpy(&mvm->last_bt_notif, notif, sizeof(mvm->last_bt_notif)); mvm 561 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_bt_coex_notif_handle(mvm); mvm 564 drivers/net/wireless/intel/iwlwifi/mvm/coex.c void iwl_mvm_bt_rssi_event(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 570 drivers/net/wireless/intel/iwlwifi/mvm/coex.c lockdep_assert_held(&mvm->mutex); mvm 573 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (unlikely(mvm->bt_force_ant_mode != BT_FORCE_ANT_DIS)) mvm 584 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) == BT_OFF) mvm 587 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_DEBUG_COEX(mvm, "RSSI for %pM is now %s\n", vif->bss_conf.bssid, mvm 594 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (rssi_event == RSSI_EVENT_LOW || mvm->cfg->bt_shared_single_ant || mvm 595 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_get_coex_type(mvm, vif) == BT_COEX_LOOSE_LUT) mvm 596 drivers/net/wireless/intel/iwlwifi/mvm/coex.c ret = iwl_mvm_bt_coex_reduced_txp(mvm, mvmvif->ap_sta_id, mvm 599 drivers/net/wireless/intel/iwlwifi/mvm/coex.c ret = iwl_mvm_bt_coex_reduced_txp(mvm, mvmvif->ap_sta_id, true); mvm 602 drivers/net/wireless/intel/iwlwifi/mvm/coex.c IWL_ERR(mvm, "couldn't send BT_CONFIG HCMD upon RSSI event\n"); mvm 608 drivers/net/wireless/intel/iwlwifi/mvm/coex.c u16 iwl_mvm_coex_agg_time_limit(struct iwl_mvm *mvm, mvm 616 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (mvm->last_bt_notif.ttc_status & BIT(phy_ctxt->id)) mvm 619 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) < mvm 623 drivers/net/wireless/intel/iwlwifi/mvm/coex.c lut_type = iwl_get_coex_type(mvm, mvmsta->vif); mvm 632 drivers/net/wireless/intel/iwlwifi/mvm/coex.c bool iwl_mvm_bt_coex_is_mimo_allowed(struct iwl_mvm *mvm, mvm 640 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (mvm->last_bt_notif.ttc_status & BIT(phy_ctxt->id)) mvm 643 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) < mvm 654 drivers/net/wireless/intel/iwlwifi/mvm/coex.c lut_type = iwl_get_coex_type(mvm, mvmsta->vif); mvm 658 drivers/net/wireless/intel/iwlwifi/mvm/coex.c bool iwl_mvm_bt_coex_is_ant_avail(struct iwl_mvm *mvm, u8 ant) mvm 661 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (mvm->cfg->bt_shared_single_ant) mvm 664 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (ant & mvm->cfg->non_shared_ant) mvm 667 drivers/net/wireless/intel/iwlwifi/mvm/coex.c return le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) < mvm 671 drivers/net/wireless/intel/iwlwifi/mvm/coex.c bool iwl_mvm_bt_coex_is_shared_ant_avail(struct iwl_mvm *mvm) mvm 674 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (mvm->cfg->bt_shared_single_ant) mvm 677 drivers/net/wireless/intel/iwlwifi/mvm/coex.c return le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) < BT_HIGH_TRAFFIC; mvm 680 drivers/net/wireless/intel/iwlwifi/mvm/coex.c bool iwl_mvm_bt_coex_is_tpc_allowed(struct iwl_mvm *mvm, mvm 683 drivers/net/wireless/intel/iwlwifi/mvm/coex.c u32 bt_activity = le32_to_cpu(mvm->last_bt_notif.bt_activity_grading); mvm 691 drivers/net/wireless/intel/iwlwifi/mvm/coex.c u8 iwl_mvm_bt_coex_get_single_ant_msk(struct iwl_mvm *mvm, u8 enabled_ants) mvm 693 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_COEX_SCHEMA_2) && mvm 694 drivers/net/wireless/intel/iwlwifi/mvm/coex.c (mvm->cfg->non_shared_ant & enabled_ants)) mvm 695 drivers/net/wireless/intel/iwlwifi/mvm/coex.c return mvm->cfg->non_shared_ant; mvm 700 drivers/net/wireless/intel/iwlwifi/mvm/coex.c u8 iwl_mvm_bt_coex_tx_prio(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr, mvm 704 drivers/net/wireless/intel/iwlwifi/mvm/coex.c bool mplut_enabled = iwl_mvm_is_mplut_supported(mvm); mvm 709 drivers/net/wireless/intel/iwlwifi/mvm/coex.c if (unlikely(mvm->bt_tx_prio)) mvm 710 drivers/net/wireless/intel/iwlwifi/mvm/coex.c return mvm->bt_tx_prio - 1; mvm 738 drivers/net/wireless/intel/iwlwifi/mvm/coex.c void iwl_mvm_bt_coex_vif_change(struct iwl_mvm *mvm) mvm 740 drivers/net/wireless/intel/iwlwifi/mvm/coex.c iwl_mvm_bt_coex_notif_handle(mvm); mvm 80 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 86 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_lock(&mvm->mutex); mvm 94 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 174 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 222 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_lock(&mvm->mutex); mvm 223 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, WEP_KEY, 0, mvm 227 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->ptk_ivlen = key->iv_len; mvm 228 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->ptk_icvlen = key->icv_len; mvm 229 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->gtk_ivlen = key->iv_len; mvm 230 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->gtk_icvlen = key->icv_len; mvm 231 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 323 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (sta && iwl_mvm_has_new_rx_api(mvm)) { mvm 331 drivers/net/wireless/intel/iwlwifi/mvm/d3.c lockdep_is_held(&mvm->mutex)); mvm 337 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->trans->num_rx_queues); mvm 363 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_lock(&mvm->mutex); mvm 369 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->ptk_ivlen = key->iv_len; mvm 370 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->ptk_icvlen = key->icv_len; mvm 371 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, 0); mvm 379 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->gtk_ivlen = key->iv_len; mvm 380 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->gtk_icvlen = key->icv_len; mvm 381 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, 1); mvm 383 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 388 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_send_patterns_v1(struct iwl_mvm *mvm, mvm 423 drivers/net/wireless/intel/iwlwifi/mvm/d3.c err = iwl_mvm_send_cmd(mvm, &cmd); mvm 428 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_send_patterns(struct iwl_mvm *mvm, mvm 467 drivers/net/wireless/intel/iwlwifi/mvm/d3.c err = iwl_mvm_send_cmd(mvm, &cmd); mvm 472 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_d3_reprogram(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 485 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (WARN_ON_ONCE(iwl_mvm_is_cdb_supported(mvm))) mvm 503 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_phy_ctxt_add(mvm, mvmvif->phy_ctxt, &chandef, mvm 514 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_mac_ctxt_add(mvm, vif); mvm 532 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu_status(mvm, BINDING_CONTEXT_CMD, mvm 536 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Failed to add binding: %d\n", ret); mvm 541 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Binding command failed: %u\n", status); mvm 545 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_sta_send_to_fw(mvm, ap_sta, false, 0); mvm 548 drivers/net/wireless/intel/iwlwifi/mvm/d3.c rcu_assign_pointer(mvm->fw_id_to_mac_id[mvmvif->ap_sta_id], ap_sta); mvm 550 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 555 drivers/net/wireless/intel/iwlwifi/mvm/d3.c quota = iwl_mvm_quota_cmd_get_quota(mvm, "a_cmd, 0); mvm 563 drivers/net/wireless/intel/iwlwifi/mvm/d3.c quota = iwl_mvm_quota_cmd_get_quota(mvm, "a_cmd, i); mvm 567 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, TIME_QUOTA_CMD, 0, mvm 568 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_quota_cmd_size(mvm), "a_cmd); mvm 570 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Failed to send quota: %d\n", ret); mvm 572 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (iwl_mvm_is_lar_supported(mvm) && iwl_mvm_init_fw_regd(mvm)) mvm 573 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Failed to initialize D3 LAR information\n"); mvm 578 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_get_last_nonqos_seq(struct iwl_mvm *mvm, mvm 598 drivers/net/wireless/intel/iwlwifi/mvm/d3.c err = iwl_mvm_send_cmd(mvm, &cmd); mvm 615 drivers/net/wireless/intel/iwlwifi/mvm/d3.c void iwl_mvm_set_last_nonqos_seq(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 632 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (iwl_mvm_send_cmd_pdu(mvm, NON_QOS_TX_COUNTER_CMD, 0, mvm 634 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "failed to set non-QoS seqno\n"); mvm 637 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_switch_to_d3(struct iwl_mvm *mvm) mvm 639 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_REGULAR, true); mvm 641 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_stop_device(mvm); mvm 652 drivers/net/wireless/intel/iwlwifi/mvm/d3.c set_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status); mvm 655 drivers/net/wireless/intel/iwlwifi/mvm/d3.c memset(mvm->fw_key_table, 0, sizeof(mvm->fw_key_table)); mvm 657 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->ptk_ivlen = 0; mvm 658 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->ptk_icvlen = 0; mvm 659 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->ptk_ivlen = 0; mvm 660 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->ptk_icvlen = 0; mvm 662 drivers/net/wireless/intel/iwlwifi/mvm/d3.c return iwl_mvm_load_d3_fw(mvm); mvm 666 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_get_wowlan_config(struct iwl_mvm *mvm, mvm 683 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_get_last_nonqos_seq(mvm, vif); mvm 738 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_wowlan_config_key_params(struct iwl_mvm *mvm, mvm 744 drivers/net/wireless/intel/iwlwifi/mvm/d3.c bool unified = fw_has_capa(&mvm->fw->ucode_capa, mvm 771 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ieee80211_iter_keys(mvm->hw, vif, iwl_mvm_wowlan_program_keys, mvm 780 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, mvm 789 drivers/net/wireless/intel/iwlwifi/mvm/d3.c !fw_has_api(&mvm->fw->ucode_capa, mvm 791 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, mvm 810 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, mvm 824 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_wowlan_config(struct iwl_mvm *mvm, mvm 831 drivers/net/wireless/intel/iwlwifi/mvm/d3.c bool unified_image = fw_has_capa(&mvm->fw->ucode_capa, mvm 834 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->offload_tid = wowlan_config_cmd->offloading_tid; mvm 837 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_switch_to_d3(mvm); mvm 841 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_d3_reprogram(mvm, vif, ap_sta); mvm 852 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 853 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_wowlan_config_key_params(mvm, vif, CMD_ASYNC); mvm 854 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_lock(&mvm->mutex); mvm 859 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, WOWLAN_CONFIGURATION, 0, mvm 865 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 867 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_patterns(mvm, wowlan); mvm 869 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_patterns_v1(mvm, wowlan); mvm 873 drivers/net/wireless/intel/iwlwifi/mvm/d3.c return iwl_mvm_send_proto_offload(mvm, vif, false, true, 0); mvm 877 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_netdetect_config(struct iwl_mvm *mvm, mvm 884 drivers/net/wireless/intel/iwlwifi/mvm/d3.c bool unified_image = fw_has_capa(&mvm->fw->ucode_capa, mvm 888 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_switch_to_d3(mvm); mvm 897 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_SCHED, true); mvm 907 drivers/net/wireless/intel/iwlwifi/mvm/d3.c wowlan_config_cmd.sta_id = mvm->aux_sta.sta_id; mvm 909 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, WOWLAN_CONFIGURATION, 0, mvm 915 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_sched_scan_start(mvm, vif, nd_config, &mvm->nd_ies, mvm 920 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (WARN_ON(mvm->nd_match_sets || mvm->nd_channels)) mvm 925 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->nd_match_sets = kmemdup(nd_config->match_sets, mvm 929 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->nd_match_sets) mvm 930 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->n_nd_match_sets = nd_config->n_match_sets; mvm 934 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->nd_channels = kmemdup(nd_config->channels, mvm 938 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->nd_channels) mvm 939 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->n_nd_channels = nd_config->n_channels; mvm 944 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static void iwl_mvm_free_nd(struct iwl_mvm *mvm) mvm 946 drivers/net/wireless/intel/iwlwifi/mvm/d3.c kfree(mvm->nd_match_sets); mvm 947 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->nd_match_sets = NULL; mvm 948 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->n_nd_match_sets = 0; mvm 949 drivers/net/wireless/intel/iwlwifi/mvm/d3.c kfree(mvm->nd_channels); mvm 950 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->nd_channels = NULL; mvm 951 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->n_nd_channels = 0; mvm 958 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 978 drivers/net/wireless/intel/iwlwifi/mvm/d3.c bool unified_image = fw_has_capa(&mvm->fw->ucode_capa, mvm 990 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_lock(&mvm->mutex); mvm 992 drivers/net/wireless/intel/iwlwifi/mvm/d3.c vif = iwl_mvm_get_bss_vif(mvm); mvm 1008 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm, wowlan, wowlan->nd_config, vif); mvm 1012 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->net_detect = true; mvm 1019 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->fw_id_to_mac_id[mvmvif->ap_sta_id], mvm 1020 drivers/net/wireless/intel/iwlwifi/mvm/d3.c lockdep_is_held(&mvm->mutex)); mvm 1026 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_get_wowlan_config(mvm, wowlan, &wowlan_config_cmd, mvm 1030 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_wowlan_config(mvm, wowlan, &wowlan_config_cmd, mvm 1035 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->net_detect = false; mvm 1038 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_power_update_device(mvm); mvm 1042 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_power_update_mac(mvm); mvm 1047 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->d3_wake_sysassert) mvm 1057 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_9000) mvm 1058 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_dbg_stop_restart_recording(&mvm->fwrt, NULL, true); mvm 1061 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd(mvm, &d3_cfg_cmd); mvm 1067 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->d3_test_pme_ptr = mvm 1073 drivers/net/wireless/intel/iwlwifi/mvm/d3.c clear_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status); mvm 1075 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_trans_d3_suspend(mvm->trans, test, !unified_image); mvm 1078 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_free_nd(mvm); mvm 1081 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->fw_restart > 0) { mvm 1082 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->fw_restart--; mvm 1083 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ieee80211_restart_hw(mvm->hw); mvm 1088 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 1095 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1096 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_trans *trans = mvm->trans; mvm 1099 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_pause_tcm(mvm, true); mvm 1101 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_runtime_suspend(&mvm->fwrt); mvm 1122 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static void iwl_mvm_report_wakeup_reasons(struct iwl_mvm *mvm, mvm 1138 drivers/net/wireless/intel/iwlwifi/mvm/d3.c pm_wakeup_event(mvm->dev, 0); mvm 1203 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ivlen = mvm->gtk_ivlen; mvm 1204 drivers/net/wireless/intel/iwlwifi/mvm/d3.c icvlen += mvm->gtk_icvlen; mvm 1206 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ivlen = mvm->ptk_ivlen; mvm 1207 drivers/net/wireless/intel/iwlwifi/mvm/d3.c icvlen += mvm->ptk_icvlen; mvm 1275 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static void iwl_mvm_set_aes_rx_seq(struct iwl_mvm *mvm, struct aes_sc *scs, mvm 1283 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (sta && iwl_mvm_has_new_rx_api(mvm)) { mvm 1290 drivers/net/wireless/intel/iwlwifi/mvm/d3.c lockdep_is_held(&mvm->mutex)); mvm 1300 drivers/net/wireless/intel/iwlwifi/mvm/d3.c for (i = 1; i < mvm->trans->num_rx_queues; i++) mvm 1329 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static void iwl_mvm_set_key_rx_seq(struct iwl_mvm *mvm, mvm 1337 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_set_aes_rx_seq(mvm, rsc->aes.multicast_rsc, NULL, key); mvm 1348 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm; mvm 1398 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_set_aes_rx_seq(data->mvm, sc->aes.unicast_rsc, mvm 1424 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_set_key_rx_seq(data->mvm, key, data->status); mvm 1427 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static bool iwl_mvm_setup_connection_keep(struct iwl_mvm *mvm, mvm 1433 drivers/net/wireless/intel/iwlwifi/mvm/d3.c .mvm = mvm, mvm 1448 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ieee80211_iter_keys(mvm->hw, vif, mvm 1463 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ieee80211_iter_keys(mvm->hw, vif, mvm 1497 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_set_key_rx_seq(mvm, key, status); mvm 1514 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_wowlan_status *iwl_mvm_send_wowlan_get_status(struct iwl_mvm *mvm) mvm 1523 drivers/net/wireless/intel/iwlwifi/mvm/d3.c lockdep_assert_held(&mvm->mutex); mvm 1525 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 1527 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "failed to query wakeup status (%d)\n", ret); mvm 1531 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (!fw_has_api(&mvm->fw->ucode_capa, mvm 1540 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Invalid WoWLAN status response!\n"); mvm 1548 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Invalid WoWLAN status response!\n"); mvm 1596 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Invalid WoWLAN status response!\n"); mvm 1603 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Invalid WoWLAN status response!\n"); mvm 1616 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_get_wakeup_status(struct iwl_mvm *mvm) mvm 1621 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, OFFLOADS_QUERY_CMD, 0, 0, NULL); mvm 1623 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "failed to query offload statistics (%d)\n", ret); mvm 1625 drivers/net/wireless/intel/iwlwifi/mvm/d3.c return iwl_mvm_send_wowlan_get_status(mvm); mvm 1629 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static bool iwl_mvm_query_wakeup_reasons(struct iwl_mvm *mvm, mvm 1638 drivers/net/wireless/intel/iwlwifi/mvm/d3.c fw_status = iwl_mvm_get_wakeup_status(mvm); mvm 1654 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm_ap_sta = iwl_mvm_sta_from_staid_protected(mvm, 0); mvm 1665 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) { mvm 1666 drivers/net/wireless/intel/iwlwifi/mvm/d3.c i = mvm->offload_tid; mvm 1667 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_trans_set_q_ptrs(mvm->trans, mvm 1673 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 1675 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_report_wakeup_reasons(mvm, vif, &status); mvm 1677 drivers/net/wireless/intel/iwlwifi/mvm/d3.c keep = iwl_mvm_setup_connection_keep(mvm, vif, fw_status); mvm 1685 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 1698 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_netdetect_query_results(struct iwl_mvm *mvm, mvm 1709 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 1711 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "failed to query matched profiles (%d)\n", ret); mvm 1715 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 1728 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Invalid scan offload profiles query response!\n"); mvm 1739 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->last_netdetect_scans = le32_to_cpu(query->n_scans_done); mvm 1747 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_query_num_match_chans(struct iwl_mvm *mvm, mvm 1753 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 1771 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static void iwl_mvm_query_set_freqs(struct iwl_mvm *mvm, mvm 1778 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 1786 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->nd_channels[i]->center_freq; mvm 1794 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->nd_channels[i]->center_freq; mvm 1798 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static void iwl_mvm_query_netdetect_reasons(struct iwl_mvm *mvm, mvm 1812 drivers/net/wireless/intel/iwlwifi/mvm/d3.c fw_status = iwl_mvm_get_wakeup_status(mvm); mvm 1824 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_netdetect_query_results(mvm, &query); mvm 1831 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->n_nd_match_sets) { mvm 1834 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "no net detect match information available\n"); mvm 1843 drivers/net/wireless/intel/iwlwifi/mvm/d3.c for_each_set_bit(i, &matched_profiles, mvm->n_nd_match_sets) { mvm 1847 drivers/net/wireless/intel/iwlwifi/mvm/d3.c n_channels = iwl_mvm_query_num_match_chans(mvm, &query, i); mvm 1859 drivers/net/wireless/intel/iwlwifi/mvm/d3.c idx = mvm->n_nd_match_sets - i - 1; mvm 1860 drivers/net/wireless/intel/iwlwifi/mvm/d3.c match->ssid.ssid_len = mvm->nd_match_sets[idx].ssid.ssid_len; mvm 1861 drivers/net/wireless/intel/iwlwifi/mvm/d3.c memcpy(match->ssid.ssid, mvm->nd_match_sets[idx].ssid.ssid, mvm 1864 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->n_nd_channels < n_channels) mvm 1867 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_query_set_freqs(mvm, &query, match, i); mvm 1873 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_free_nd(mvm); mvm 1875 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 1896 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_check_rt_status(struct iwl_mvm *mvm, mvm 1899 drivers/net/wireless/intel/iwlwifi/mvm/d3.c u32 base = mvm->trans->dbg.lmac_error_event_table[0]; mvm 1906 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_trans_read_mem_bytes(mvm->trans, base, mvm 1919 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int __iwl_mvm_resume(struct iwl_mvm *mvm, bool test) mvm 1925 drivers/net/wireless/intel/iwlwifi/mvm/d3.c bool unified_image = fw_has_capa(&mvm->fw->ucode_capa, mvm 1927 drivers/net/wireless/intel/iwlwifi/mvm/d3.c bool d0i3_first = fw_has_capa(&mvm->fw->ucode_capa, mvm 1930 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_lock(&mvm->mutex); mvm 1933 drivers/net/wireless/intel/iwlwifi/mvm/d3.c vif = iwl_mvm_get_bss_vif(mvm); mvm 1937 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_dbg_read_d3_debug_data(&mvm->fwrt); mvm 1939 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (iwl_mvm_check_rt_status(mvm, vif)) { mvm 1940 drivers/net/wireless/intel/iwlwifi/mvm/d3.c set_bit(STATUS_FW_ERROR, &mvm->trans->status); mvm 1941 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_dump_nic_error_log(mvm); mvm 1942 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_dbg_collect_desc(&mvm->fwrt, &iwl_dump_desc_assert, mvm 1948 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_trans_d3_resume(mvm->trans, &d3_status, test, !unified_image); mvm 1953 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_INFO(mvm, "Device was reset during suspend\n"); mvm 1958 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, D0I3_END_CMD, 0, 0, NULL); mvm 1960 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Failed to send D0I3_END_CMD first (%d)\n", mvm 1970 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_update_changed_regdom(mvm); mvm 1973 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_ppag_send_cmd(mvm); mvm 1977 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_sar_select_profile(mvm, 1, 1); mvm 1979 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->net_detect) { mvm 1987 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_NETDETECT, mvm 1990 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_query_netdetect_reasons(mvm, vif); mvm 1994 drivers/net/wireless/intel/iwlwifi/mvm/d3.c keep = iwl_mvm_query_wakeup_reasons(mvm, vif); mvm 1997 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->keep_vif = vif; mvm 2004 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_free_nd(mvm); mvm 2005 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mutex_unlock(&mvm->mutex); mvm 2009 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ieee80211_iterate_active_interfaces_rtnl(mvm->hw, mvm 2020 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_send_cmd_pdu(mvm, D0I3_END_CMD, 0, 0, NULL); mvm 2030 drivers/net/wireless/intel/iwlwifi/mvm/d3.c set_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status); mvm 2035 drivers/net/wireless/intel/iwlwifi/mvm/d3.c static int iwl_mvm_resume_d3(struct iwl_mvm *mvm) mvm 2037 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_trans_resume(mvm->trans); mvm 2039 drivers/net/wireless/intel/iwlwifi/mvm/d3.c return __iwl_mvm_resume(mvm, false); mvm 2044 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2047 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ret = iwl_mvm_resume_d3(mvm); mvm 2049 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->trans->system_pm_mode = IWL_PLAT_PM_MODE_DISABLED; mvm 2051 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_resume_tcm(mvm); mvm 2053 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_runtime_resume(&mvm->fwrt); mvm 2060 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2062 drivers/net/wireless/intel/iwlwifi/mvm/d3.c device_set_wakeup_enable(mvm->trans->dev, enabled); mvm 2068 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = inode->i_private; mvm 2071 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->d3_test_active) mvm 2078 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->trans->system_pm_mode = IWL_PLAT_PM_MODE_D3; mvm 2080 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_pause_tcm(mvm, true); mvm 2082 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_runtime_suspend(&mvm->fwrt); mvm 2086 drivers/net/wireless/intel/iwlwifi/mvm/d3.c err = __iwl_mvm_suspend(mvm->hw, mvm->hw->wiphy->wowlan_config, true); mvm 2093 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->d3_test_active = true; mvm 2094 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->keep_vif = NULL; mvm 2101 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = file->private_data; mvm 2106 drivers/net/wireless/intel/iwlwifi/mvm/d3.c if (mvm->d3_test_pme_ptr) { mvm 2107 drivers/net/wireless/intel/iwlwifi/mvm/d3.c pme_asserted = iwl_trans_read_mem32(mvm->trans, mvm 2108 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->d3_test_pme_ptr); mvm 2133 drivers/net/wireless/intel/iwlwifi/mvm/d3.c struct iwl_mvm *mvm = inode->i_private; mvm 2134 drivers/net/wireless/intel/iwlwifi/mvm/d3.c bool unified_image = fw_has_capa(&mvm->fw->ucode_capa, mvm 2137 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->d3_test_active = false; mvm 2139 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_dbg_read_d3_debug_data(&mvm->fwrt); mvm 2142 drivers/net/wireless/intel/iwlwifi/mvm/d3.c __iwl_mvm_resume(mvm, true); mvm 2145 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_resume_tcm(mvm); mvm 2147 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_runtime_resume(&mvm->fwrt); mvm 2149 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->trans->system_pm_mode = IWL_PLAT_PM_MODE_DISABLED; mvm 2151 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_abort_notification_waits(&mvm->notif_wait); mvm 2155 drivers/net/wireless/intel/iwlwifi/mvm/d3.c ieee80211_restart_hw(mvm->hw); mvm 2158 drivers/net/wireless/intel/iwlwifi/mvm/d3.c while (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) && mvm 2165 drivers/net/wireless/intel/iwlwifi/mvm/d3.c IWL_ERR(mvm, "Timed out waiting for HW restart!\n"); mvm 2169 drivers/net/wireless/intel/iwlwifi/mvm/d3.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 2170 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_mvm_d3_test_disconn_work_iter, mvm->keep_vif); mvm 65 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c static void iwl_dbgfs_update_pm(struct iwl_mvm *mvm, mvm 79 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "debugfs: set keep_alive= %d sec\n", val); mvm 81 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_WARN(mvm, mvm 88 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "skip_over_dtim %s\n", mvm 93 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "skip_dtim_periods=%d\n", val); mvm 97 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "rx_data_timeout=%d\n", val); mvm 101 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "tx_data_timeout=%d\n", val); mvm 105 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "lprx %s\n", val ? "enabled" : "disabled"); mvm 109 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "lprx_rssi_threshold=%d\n", val); mvm 113 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "snooze_enable=%d\n", val); mvm 117 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "uapsd_misbehaving_enable=%d\n", val); mvm 121 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_DEBUG_POWER(mvm, "use_ps_poll=%d\n", val); mvm 131 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 182 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_lock(&mvm->mutex); mvm 183 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c iwl_dbgfs_update_pm(mvm, vif, param, val); mvm 184 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c ret = iwl_mvm_power_update_mac(mvm); mvm 185 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 211 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 216 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c pos = iwl_mvm_power_mac_dbgfs_read(mvm, vif, buf, bufsz); mvm 227 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 235 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_lock(&mvm->mutex); mvm 267 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mvm->tcm.result.load[mvmvif->id]); mvm 282 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mvm_sta = iwl_mvm_sta_from_staid_protected(mvm, ap_sta_id); mvm 300 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 354 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 436 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_lock(&mvm->mutex); mvm 439 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); mvm 441 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); mvm 442 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 509 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 517 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c iwl_mvm_get_sync_time(mvm, &curr_gp2, &curr_os); mvm 529 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 539 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_lock(&mvm->mutex); mvm 540 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c iwl_mvm_update_low_latency(mvm, vif, value, LOW_LATENCY_DEBUGFS); mvm 541 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 551 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 562 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_lock(&mvm->mutex); mvm 564 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c iwl_mvm_update_low_latency(mvm, vif, false, mvm 566 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c iwl_mvm_update_low_latency(mvm, vif, false, mvm 569 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c iwl_mvm_update_low_latency(mvm, vif, mvm 572 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c iwl_mvm_update_low_latency(mvm, vif, true, mvm 575 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 625 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 628 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_lock(&mvm->mutex); mvm 630 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 639 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 649 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_lock(&mvm->mutex); mvm 656 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 660 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c phy_ctxt = &mvm->phy_ctxts[*(u16 *)chanctx_conf->drv_priv]; mvm 663 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mvm->dbgfs_rx_phyinfo = value; mvm 665 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c ret = iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, &chanctx_conf->min_def, mvm 668 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 683 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mvmvif->mvm->dbgfs_rx_phyinfo); mvm 702 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c struct iwl_mvm *mvm = mvmvif->mvm; mvm 713 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_lock(&mvm->mutex); mvm 716 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c ieee80211_iterate_interfaces(mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 720 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c iwl_mvm_update_quotas(mvm, false, NULL); mvm 722 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mutex_unlock(&mvm->mutex); mvm 762 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c void iwl_mvm_vif_dbgfs_register(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 777 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c IWL_ERR(mvm, "Failed to create debugfs directory under %pd\n", mvm 797 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mvmvif == mvm->bf_allowed_vif) mvm 812 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c mvm->debugfs_dir, buf); mvm 815 drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c void iwl_mvm_vif_dbgfs_clean(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 79 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 83 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_is_ctdp_supported(mvm)) mvm 86 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm) || mvm 87 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) mvm 90 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 91 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c budget = iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_REPORT, 0); mvm 92 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 102 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_stop_ctdp_write(struct iwl_mvm *mvm, char *buf, mvm 107 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_is_ctdp_supported(mvm)) mvm 110 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm) || mvm 111 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) mvm 114 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 115 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_STOP, 0); mvm 116 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 121 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_force_ctkill_write(struct iwl_mvm *mvm, char *buf, mvm 124 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm) || mvm 125 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) mvm 128 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_enter_ctkill(mvm); mvm 133 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_tx_flush_write(struct iwl_mvm *mvm, char *buf, mvm 139 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm) || mvm 140 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) mvm 146 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 147 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c IWL_DEBUG_TX_QUEUES(mvm, mvm 150 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 151 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_flush_sta_tids(mvm, flush_arg, 0xFF, 0) ? : count; mvm 152 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 156 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c IWL_DEBUG_TX_QUEUES(mvm, "FLUSHING queues mask to flush = 0x%x\n", mvm 159 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 160 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_flush_tx_path(mvm, flush_arg, 0) ? : count; mvm 161 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 166 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_sta_drain_write(struct iwl_mvm *mvm, char *buf, mvm 172 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm) || mvm 173 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) mvm 183 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 185 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvmsta = iwl_mvm_sta_from_staid_protected(mvm, sta_id); mvm 190 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_drain_sta(mvm, mvmsta, drain) ? : count; mvm 192 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 200 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 206 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 210 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c img = &mvm->fw->img[mvm->fwrt.cur_fw_img]; mvm 214 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (mvm->dbgfs_sram_len) { mvm 215 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ofs = mvm->dbgfs_sram_offset; mvm 216 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c len = mvm->dbgfs_sram_len; mvm 223 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_trans_read_mem_bytes(mvm->trans, ofs, ptr, len); mvm 232 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_sram_write(struct iwl_mvm *mvm, char *buf, mvm 239 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 242 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c img = &mvm->fw->img[mvm->fwrt.cur_fw_img]; mvm 253 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->dbgfs_sram_offset = offset; mvm 254 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->dbgfs_sram_len = len; mvm 256 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->dbgfs_sram_offset = 0; mvm 257 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->dbgfs_sram_len = 0; mvm 267 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 271 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!mvm->temperature_test) mvm 274 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c pos = scnprintf(buf , sizeof(buf), "%d\n", mvm->temperature); mvm 286 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_set_nic_temperature_write(struct iwl_mvm *mvm, mvm 292 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm) && !mvm->temperature_test) mvm 303 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 305 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!mvm->temperature_test) mvm 308 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->temperature_test = false; mvm 313 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->temperature = 0; mvm 315 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->temperature_test = true; mvm 316 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->temperature = temperature; mvm 318 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c IWL_DEBUG_TEMP(mvm, "%sabling debug set temperature (temp = %d)\n", mvm 319 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->temperature_test ? "En" : "Dis" , mvm 320 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->temperature); mvm 322 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_tt_handler(mvm); mvm 325 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 334 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 339 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 342 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 343 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_get_temp(mvm, &temp); mvm 344 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 359 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 366 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 369 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 370 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c tbl_idx = iwl_mvm_get_sar_geo_profile(mvm); mvm 372 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 380 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c value = &mvm->geo_profiles[tbl_idx - 1].values[0]; mvm 391 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 400 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 405 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 407 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 409 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i], mvm 410 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c lockdep_is_held(&mvm->mutex)); mvm 421 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 432 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = lq_sta->pers.drv; mvm 442 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 454 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c (iwl_mvm_get_valid_tx_ant(mvm) & ANT_A) ? "ANT_A," : "", mvm 455 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c (iwl_mvm_get_valid_tx_ant(mvm) & ANT_B) ? "ANT_B," : "", mvm 456 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c (iwl_mvm_get_valid_tx_ant(mvm) & ANT_C) ? "ANT_C" : ""); mvm 463 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 514 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 520 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->disable_power_off); mvm 522 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->disable_power_off_d3); mvm 527 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_disable_power_off_write(struct iwl_mvm *mvm, char *buf, mvm 532 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 538 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->disable_power_off = val; mvm 542 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->disable_power_off_d3 = val; mvm 547 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 548 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_power_update_device(mvm); mvm 549 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 617 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 618 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_bt_coex_profile_notif *notif = &mvm->last_bt_notif; mvm 626 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 649 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 661 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 662 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_bt_coex_ci_cmd *cmd = &mvm->last_bt_ci_cmd; mvm 667 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 677 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 683 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_dbgfs_bt_tx_prio_write(struct iwl_mvm *mvm, char *buf, mvm 693 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->bt_tx_prio = bt_tx_prio; mvm 699 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_dbgfs_bt_force_ant_write(struct iwl_mvm *mvm, char *buf, mvm 716 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 717 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (mvm->bt_force_ant_mode == bt_force_ant_mode) mvm 720 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->bt_force_ant_mode = bt_force_ant_mode; mvm 721 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c IWL_DEBUG_COEX(mvm, "Force mode: %s\n", mvm 722 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c modes_str[mvm->bt_force_ant_mode]); mvm 724 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (iwl_mvm_firmware_running(mvm)) mvm 725 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_send_bt_init_conf(mvm); mvm 730 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 737 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 750 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->trans->cfg->fw_name_pre); mvm 752 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.fw->human_readable); mvm 754 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.trans->cfg->name); mvm 756 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.dev->bus->name); mvm 773 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 781 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (iwl_mvm_has_new_rx_stats_api(mvm)) mvm 793 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 795 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (iwl_mvm_firmware_running(mvm)) mvm 796 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_request_statistics(mvm, false); mvm 800 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_has_new_rx_stats_api(mvm)) { mvm 801 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct mvm_statistics_rx_phy_v2 *ofdm = &mvm->rx_stats_v3.ofdm; mvm 824 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct mvm_statistics_rx_phy *ofdm = &mvm->rx_stats.ofdm; mvm 835 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_has_new_rx_stats_api(mvm)) { mvm 836 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct mvm_statistics_rx_phy_v2 *cck = &mvm->rx_stats_v3.cck; mvm 859 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct mvm_statistics_rx_phy *cck = &mvm->rx_stats.cck; mvm 870 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_has_new_rx_stats_api(mvm)) { mvm 872 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->rx_stats_v3.general; mvm 900 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->rx_stats.general; mvm 926 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_has_new_rx_stats_api(mvm)) { mvm 928 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->rx_stats_v3.ofdm_ht; mvm 942 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->rx_stats.ofdm_ht; mvm 950 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 959 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_frame_stats_read(struct iwl_mvm *mvm, mvm 973 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c spin_lock_bh(&mvm->drv_stats_lock); mvm 1016 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c spin_unlock_bh(&mvm->drv_stats_lock); mvm 1028 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1030 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c return iwl_dbgfs_frame_stats_read(mvm, user_buf, count, ppos, mvm 1031 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->drv_rx_stats); mvm 1034 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_fw_restart_write(struct iwl_mvm *mvm, char *buf, mvm 1039 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1042 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1045 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (mvm->fw_restart >= 0) mvm 1046 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fw_restart++; mvm 1049 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_send_cmd_pdu(mvm, REPLY_ERROR, 0, 0, NULL); mvm 1051 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1056 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_fw_nmi_write(struct iwl_mvm *mvm, char *buf, mvm 1059 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1062 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_force_nmi(mvm->trans); mvm 1072 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1079 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (mvm->scan_rx_ant & ANT_A) mvm 1081 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (mvm->scan_rx_ant & ANT_B) mvm 1083 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (mvm->scan_rx_ant & ANT_C) mvm 1085 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c pos += scnprintf(buf + pos, bufsz - pos, " (%hhx)\n", mvm->scan_rx_ant); mvm 1091 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_dbgfs_scan_ant_rxchain_write(struct iwl_mvm *mvm, char *buf, mvm 1096 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1103 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (scan_rx_ant & ~(iwl_mvm_get_valid_rx_ant(mvm))) mvm 1106 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (mvm->scan_rx_ant != scan_rx_ant) { mvm 1107 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->scan_rx_ant = scan_rx_ant; mvm 1108 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 1110 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_config_scan(mvm); mvm 1116 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_indirection_tbl_write(struct iwl_mvm *mvm, mvm 1152 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1153 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (iwl_mvm_firmware_running(mvm)) mvm 1154 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_send_cmd_pdu(mvm, RSS_CONFIG_CMD, 0, mvm 1158 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1163 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_inject_packet_write(struct iwl_mvm *mvm, mvm 1176 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c size_t mpdu_cmd_hdr_size = (mvm->trans->trans_cfg->device_family >= mvm 1181 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1185 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!mvm->trans->trans_cfg->mq_rx_supported) mvm 1213 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_rx_mpdu_mq(mvm, NULL, &rxb, 0); mvm 1223 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static int _iwl_dbgfs_inject_beacon_ie(struct iwl_mvm *mvm, char *bin, int len) mvm 1240 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1243 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_has_new_tx_api(mvm) && mvm 1244 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c !fw_has_api(&mvm->fw->ucode_capa, mvm 1251 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c vif = iwl_mvm_rcu_dereference_vif_id(mvm, i, true); mvm 1262 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->hw->extra_beacon_tailroom = len; mvm 1264 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c beacon = ieee80211_beacon_get_template(mvm->hw, vif, NULL); mvm 1273 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->beacon_inject_active = true; mvm 1287 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_mac_ctxt_set_tim(mvm, &beacon_cmd.tim_idx, mvm 1291 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1292 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_mac_ctxt_send_beacon_cmd(mvm, beacon, &beacon_cmd, mvm 1294 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1306 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_inject_beacon_ie_write(struct iwl_mvm *mvm, mvm 1310 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c int ret = _iwl_dbgfs_inject_beacon_ie(mvm, buf, count); mvm 1312 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->hw->extra_beacon_tailroom = 0; mvm 1316 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_inject_beacon_ie_restore_write(struct iwl_mvm *mvm, mvm 1321 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c int ret = _iwl_dbgfs_inject_beacon_ie(mvm, NULL, 0); mvm 1323 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->hw->extra_beacon_tailroom = 0; mvm 1324 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->beacon_inject_active = false; mvm 1332 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1338 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1339 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c conf = mvm->fwrt.dump.conf; mvm 1340 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1347 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_fw_dbg_conf_write(struct iwl_mvm *mvm, mvm 1354 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1364 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1365 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_fw_start_dbg_conf(&mvm->fwrt, conf_id); mvm 1366 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1371 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_fw_dbg_collect_write(struct iwl_mvm *mvm, mvm 1378 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_fw_dbg_collect(&mvm->fwrt, FW_DBG_TRIGGER_USER, buf, mvm 1390 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1402 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1403 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_bcast_filter_build_cmd(mvm, &cmd)) { mvm 1405 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1408 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1440 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_bcast_filters_write(struct iwl_mvm *mvm, char *buf, mvm 1453 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (filter_id >= ARRAY_SIZE(mvm->dbgfs_bcast_filtering.cmd.filters) || mvm 1478 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1479 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c memcpy(&mvm->dbgfs_bcast_filtering.cmd.filters[filter_id], mvm 1483 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (iwl_mvm_firmware_running(mvm) && mvm 1484 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->dbgfs_bcast_filtering.override && mvm 1485 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_bcast_filter_build_cmd(mvm, &cmd)) mvm 1486 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c err = iwl_mvm_send_cmd_pdu(mvm, BCAST_FILTER_CMD, 0, mvm 1488 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1497 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1508 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1509 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_bcast_filter_build_cmd(mvm, &cmd)) { mvm 1511 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1514 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1528 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c static ssize_t iwl_dbgfs_bcast_filters_macs_write(struct iwl_mvm *mvm, mvm 1537 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!mvm->bcast_filters) mvm 1551 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1552 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c memcpy(&mvm->dbgfs_bcast_filtering.cmd.macs[mac_id], mvm 1556 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (iwl_mvm_firmware_running(mvm) && mvm 1557 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->dbgfs_bcast_filtering.override && mvm 1558 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_mvm_bcast_filter_build_cmd(mvm, &cmd)) mvm 1559 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c err = iwl_mvm_send_cmd_pdu(mvm, BCAST_FILTER_CMD, 0, mvm 1561 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1572 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_file(alias, mode, parent, mvm, \ mvm 1595 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1600 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!mvm->dbgfs_prph_reg_addr) mvm 1604 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->dbgfs_prph_reg_addr, mvm 1605 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_read_prph(mvm->trans, mvm->dbgfs_prph_reg_addr)); mvm 1611 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_dbgfs_prph_reg_write(struct iwl_mvm *mvm, char *buf, mvm 1617 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c args = sscanf(buf, "%i %i", &mvm->dbgfs_prph_reg_addr, &value); mvm 1626 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_write_prph(mvm->trans, mvm->dbgfs_prph_reg_addr, value); mvm 1633 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_dbgfs_send_echo_cmd_write(struct iwl_mvm *mvm, char *buf, mvm 1638 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1641 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1642 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_send_cmd_pdu(mvm, ECHO_CMD, 0, 0, NULL); mvm 1643 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1649 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm; mvm 1659 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c apply->mvm->cur_aid = cpu_to_le16(apply->aid); mvm 1660 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c memcpy(apply->mvm->cur_bssid, apply->bssid, mvm 1661 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c sizeof(apply->mvm->cur_bssid)); mvm 1667 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_dbgfs_he_sniffer_params_write(struct iwl_mvm *mvm, char *buf, mvm 1673 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c .mvm = mvm, mvm 1681 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1696 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1707 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_init_notification_wait(&mvm->notif_wait, &wait, mvm 1711 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(HE_AIR_SNIFFER_CONFIG_CMD, mvm 1716 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_remove_notification(&mvm->notif_wait, &wait); mvm 1718 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1727 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1733 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c le16_to_cpu(mvm->cur_aid), mvm->cur_bssid[0], mvm 1734 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->cur_bssid[1], mvm->cur_bssid[2], mvm->cur_bssid[3], mvm 1735 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->cur_bssid[4], mvm->cur_bssid[5]); mvm 1744 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1750 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1754 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->uapsd_noagg_bssids[i].addr); mvm 1756 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1762 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_dbgfs_ltr_config_write(struct iwl_mvm *mvm, mvm 1768 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1782 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1783 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_send_cmd_pdu(mvm, LTR_CONFIG, 0, sizeof(ltr_config), mvm 1785 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1788 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c IWL_ERR(mvm, "failed to send ltr configuration cmd\n"); mvm 1846 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1857 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1870 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1871 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_send_cmd(mvm, &hcmd); mvm 1872 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1903 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = file->private_data; mvm 1912 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (!iwl_mvm_firmware_running(mvm)) mvm 1945 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_lock(&mvm->mutex); mvm 1946 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_mvm_send_cmd(mvm, &hcmd); mvm 1947 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mutex_unlock(&mvm->mutex); mvm 1980 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1982 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (iwl_mvm_has_tlc_offload(mvm)) { mvm 1988 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c void iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir) mvm 1993 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c spin_lock_init(&mvm->drv_stats_lock); mvm 1995 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->debugfs_dir = dbgfs_dir; mvm 1997 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(tx_flush, mvm->debugfs_dir, 0200); mvm 1998 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(sta_drain, mvm->debugfs_dir, 0200); mvm 1999 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(sram, mvm->debugfs_dir, 0600); mvm 2000 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(set_nic_temperature, mvm->debugfs_dir, 0600); mvm 2008 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(disable_power_off, mvm->debugfs_dir, 0600); mvm 2009 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(fw_ver, mvm->debugfs_dir, 0400); mvm 2010 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(fw_rx_stats, mvm->debugfs_dir, 0400); mvm 2011 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(drv_rx_stats, mvm->debugfs_dir, 0400); mvm 2012 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(fw_restart, mvm->debugfs_dir, 0200); mvm 2013 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(fw_nmi, mvm->debugfs_dir, 0200); mvm 2014 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(bt_tx_prio, mvm->debugfs_dir, 0200); mvm 2015 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(bt_force_ant, mvm->debugfs_dir, 0200); mvm 2016 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(scan_ant_rxchain, mvm->debugfs_dir, 0600); mvm 2017 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(prph_reg, mvm->debugfs_dir, 0600); mvm 2018 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(fw_dbg_conf, mvm->debugfs_dir, 0600); mvm 2019 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(fw_dbg_collect, mvm->debugfs_dir, 0200); mvm 2020 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(send_echo_cmd, mvm->debugfs_dir, 0200); mvm 2021 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(indirection_tbl, mvm->debugfs_dir, 0200); mvm 2022 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(inject_packet, mvm->debugfs_dir, 0200); mvm 2023 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(inject_beacon_ie, mvm->debugfs_dir, 0200); mvm 2024 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(inject_beacon_ie_restore, mvm->debugfs_dir, 0200); mvm 2028 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(he_sniffer_params, mvm->debugfs_dir, 0600); mvm 2030 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_SET_LTR_GEN2)) mvm 2031 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(ltr_config, mvm->debugfs_dir, 0200); mvm 2034 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->debugfs_dir, &mvm->scan_iter_notif_enabled); mvm 2035 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_bool("drop_bcn_ap_mode", 0600, mvm->debugfs_dir, mvm 2036 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->drop_bcn_ap_mode); mvm 2038 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(uapsd_noagg_bssids, mvm->debugfs_dir, S_IRUSR); mvm 2041 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BCAST_FILTERING) { mvm 2043 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->debugfs_dir); mvm 2046 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->dbgfs_bcast_filtering.override); mvm 2056 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c MVM_DEBUGFS_ADD_FILE(d3_test, mvm->debugfs_dir, 0400); mvm 2057 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_bool("d3_wake_sysassert", 0600, mvm->debugfs_dir, mvm 2058 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->d3_wake_sysassert); mvm 2059 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_u32("last_netdetect_scans", 0400, mvm->debugfs_dir, mvm 2060 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->last_netdetect_scans); mvm 2063 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_u8("ps_disabled", 0400, mvm->debugfs_dir, mvm 2064 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->ps_disabled); mvm 2065 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_blob("nvm_hw", 0400, mvm->debugfs_dir, mvm 2066 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->nvm_hw_blob); mvm 2067 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_blob("nvm_sw", 0400, mvm->debugfs_dir, mvm 2068 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->nvm_sw_blob); mvm 2069 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_blob("nvm_calib", 0400, mvm->debugfs_dir, mvm 2070 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->nvm_calib_blob); mvm 2071 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_blob("nvm_prod", 0400, mvm->debugfs_dir, mvm 2072 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->nvm_prod_blob); mvm 2073 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_blob("nvm_phy_sku", 0400, mvm->debugfs_dir, mvm 2074 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c &mvm->nvm_phy_sku_blob); mvm 2076 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->debugfs_dir, &mvm->nvm_reg_blob); mvm 2078 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_file("mem", 0600, dbgfs_dir, mvm, &iwl_dbgfs_mem_ops); mvm 2085 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c debugfs_create_symlink("iwlwifi", mvm->hw->wiphy->debugfsdir, buf); mvm 79 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static void iwl_mvm_ftm_reset(struct iwl_mvm *mvm) mvm 83 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req = NULL; mvm 84 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req_wdev = NULL; mvm 85 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c memset(mvm->ftm_initiator.responses, 0, mvm 86 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c sizeof(mvm->ftm_initiator.responses)); mvm 87 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c list_for_each_entry_safe(e, t, &mvm->ftm_initiator.loc_list, list) { mvm 93 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c void iwl_mvm_ftm_restart(struct iwl_mvm *mvm) mvm 103 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c lockdep_assert_held(&mvm->mutex); mvm 105 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (!mvm->ftm_initiator.req) mvm 108 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c for (i = 0; i < mvm->ftm_initiator.req->n_peers; i++) { mvm 109 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c memcpy(result.addr, mvm->ftm_initiator.req->peers[i].addr, mvm 111 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c result.ftm.burst_index = mvm->ftm_initiator.responses[i]; mvm 113 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c cfg80211_pmsr_report(mvm->ftm_initiator.req_wdev, mvm 114 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req, mvm 118 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c cfg80211_pmsr_complete(mvm->ftm_initiator.req_wdev, mvm 119 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req, GFP_KERNEL); mvm 120 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_ftm_reset(mvm); mvm 137 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static void iwl_mvm_ftm_cmd_v5(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 167 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static void iwl_mvm_ftm_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 213 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static int iwl_mvm_ftm_target_chandef(struct iwl_mvm *mvm, mvm 236 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_ERR(mvm, "Unsupported BW in FTM request (%d)\n", mvm 248 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_ftm_put_target_v2(struct iwl_mvm *mvm, mvm 254 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c ret = iwl_mvm_ftm_target_chandef(mvm, peer, &target->channel_num, mvm 283 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static int iwl_mvm_ftm_put_target(struct iwl_mvm *mvm, mvm 289 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c ret = iwl_mvm_ftm_target_chandef(mvm, peer, &target->channel_num, mvm 323 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c int iwl_mvm_ftm_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 328 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c bool new_api = fw_has_api(&mvm->fw->ucode_capa, mvm 338 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c lockdep_assert_held(&mvm->mutex); mvm 340 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (mvm->ftm_initiator.req) mvm 344 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_ftm_cmd(mvm, vif, &cmd, req); mvm 349 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_ftm_cmd_v5(mvm, vif, &cmd_v5, req); mvm 359 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c err = iwl_mvm_ftm_put_target(mvm, peer, &cmd.ap[i]); mvm 361 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c err = iwl_mvm_ftm_put_target_v2(mvm, peer, mvm 368 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c err = iwl_mvm_send_cmd_status(mvm, &hcmd, &status); mvm 370 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_ERR(mvm, "FTM range request command failure, status: %u\n", mvm 376 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req = req; mvm 377 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req_wdev = ieee80211_vif_to_wdev(vif); mvm 383 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c void iwl_mvm_ftm_abort(struct iwl_mvm *mvm, struct cfg80211_pmsr_request *req) mvm 389 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c lockdep_assert_held(&mvm->mutex); mvm 391 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (req != mvm->ftm_initiator.req) mvm 394 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_ftm_reset(mvm); mvm 396 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(TOF_RANGE_ABORT_CMD, mvm 399 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_ERR(mvm, "failed to abort FTM process\n"); mvm 417 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static u64 iwl_mvm_ftm_get_host_time(struct iwl_mvm *mvm, __le32 fw_gp2_ts) mvm 423 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_get_sync_time(mvm, &curr_gp2, &now_from_boot_ns); mvm 433 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static void iwl_mvm_ftm_get_lci_civic(struct iwl_mvm *mvm, mvm 438 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c list_for_each_entry(entry, &mvm->ftm_initiator.loc_list, list) { mvm 457 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static int iwl_mvm_ftm_range_resp_valid(struct iwl_mvm *mvm, u8 request_id, mvm 460 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c lockdep_assert_held(&mvm->mutex); mvm 462 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (request_id != (u8)mvm->ftm_initiator.req->cookie) { mvm 463 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_ERR(mvm, "Request ID mismatch, got %u, active %u\n", mvm 464 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c request_id, (u8)mvm->ftm_initiator.req->cookie); mvm 468 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (num_of_aps > mvm->ftm_initiator.req->n_peers) { mvm 469 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_ERR(mvm, "FTM range response invalid\n"); mvm 476 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c static void iwl_mvm_debug_range_resp(struct iwl_mvm *mvm, u8 index, mvm 481 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "entry %d\n", index); mvm 482 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\tstatus: %d\n", res->status); mvm 483 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\tBSSID: %pM\n", res->addr); mvm 484 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\thost time: %llu\n", res->host_time); mvm 485 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\tburst index: %hhu\n", res->ftm.burst_index); mvm 486 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\tsuccess num: %u\n", res->ftm.num_ftmr_successes); mvm 487 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\trssi: %d\n", res->ftm.rssi_avg); mvm 488 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\trssi spread: %hhu\n", res->ftm.rssi_spread); mvm 489 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\trtt: %lld\n", res->ftm.rtt_avg); mvm 490 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\trtt var: %llu\n", res->ftm.rtt_variance); mvm 491 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\trtt spread: %llu\n", res->ftm.rtt_spread); mvm 492 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "\tdistance: %lld\n", rtt_avg); mvm 495 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c void iwl_mvm_ftm_range_resp(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 502 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c bool new_api = fw_has_api(&mvm->fw->ucode_capa, mvm 506 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c lockdep_assert_held(&mvm->mutex); mvm 508 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (!mvm->ftm_initiator.req) { mvm 513 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (iwl_mvm_ftm_range_resp_valid(mvm, fw_resp->request_id, mvm 520 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (iwl_mvm_ftm_range_resp_valid(mvm, fw_resp_v5->request_id, mvm 528 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "Range response received\n"); mvm 529 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "request id: %lld, num of entries: %hhu\n", mvm 530 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req->cookie, num_of_aps); mvm 538 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 558 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c peer_idx = iwl_mvm_ftm_find_peer(mvm->ftm_initiator.req, mvm 561 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_WARN(mvm, mvm 592 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c result.host_time = iwl_mvm_ftm_get_host_time(mvm, mvm 595 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c result.ftm.burst_index = mvm->ftm_initiator.responses[peer_idx]; mvm 596 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.responses[peer_idx]++; mvm 608 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_ftm_get_lci_civic(mvm, &result); mvm 610 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c cfg80211_pmsr_report(mvm->ftm_initiator.req_wdev, mvm 611 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req, mvm 614 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 616 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c IWL_DEBUG_INFO(mvm, "RTT confidence: %hhu\n", mvm 619 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_debug_range_resp(mvm, i, &result); mvm 623 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c cfg80211_pmsr_complete(mvm->ftm_initiator.req_wdev, mvm 624 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c mvm->ftm_initiator.req, mvm 626 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c iwl_mvm_ftm_reset(mvm); mvm 630 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c void iwl_mvm_ftm_lc_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 646 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c lockdep_assert_held(&mvm->mutex); mvm 679 drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c list_add_tail(&entry->list, &mvm->ftm_initiator.loc_list); mvm 66 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c iwl_mvm_ftm_responder_cmd(struct iwl_mvm *mvm, mvm 80 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c lockdep_assert_held(&mvm->mutex); mvm 104 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c return iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(TOF_RESPONDER_CONFIG_CMD, mvm 110 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c iwl_mvm_ftm_responder_dyn_cfg_cmd(struct iwl_mvm *mvm, mvm 133 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c lockdep_assert_held(&mvm->mutex); mvm 136 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c IWL_ERR(mvm, "LCI/civicloc data too big (%zd + %zd)\n", mvm 152 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c return iwl_mvm_send_cmd(mvm, &hcmd); mvm 155 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c int iwl_mvm_ftm_start_responder(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 166 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c lockdep_assert_held(&mvm->mutex); mvm 173 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c IWL_ERR(mvm, "Cannot start responder, not in AP mode\n"); mvm 186 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c phy_ctxt = &mvm->phy_ctxts[*phy_ctxt_id]; mvm 187 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c ret = iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, &ctx.def, mvm 193 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c ret = iwl_mvm_ftm_responder_cmd(mvm, vif, &ctx.def); mvm 198 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c ret = iwl_mvm_ftm_responder_dyn_cfg_cmd(mvm, vif, params); mvm 203 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c void iwl_mvm_ftm_restart_responder(struct iwl_mvm *mvm, mvm 209 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c iwl_mvm_ftm_start_responder(mvm, vif); mvm 212 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c void iwl_mvm_ftm_responder_stats(struct iwl_mvm *mvm, mvm 217 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c struct cfg80211_ftm_responder_stats *stats = &mvm->ftm_resp_stats; mvm 92 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_send_tx_ant_cfg(struct iwl_mvm *mvm, u8 valid_tx_ant) mvm 98 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_FW(mvm, "select valid tx ant: %u\n", valid_tx_ant); mvm 99 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_mvm_send_cmd_pdu(mvm, TX_ANT_CONFIGURATION_CMD, 0, mvm 103 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_send_rss_cfg_cmd(struct iwl_mvm *mvm) mvm 116 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (mvm->trans->num_rx_queues == 1) mvm 122 drivers/net/wireless/intel/iwlwifi/mvm/fw.c 1 + (i % (mvm->trans->num_rx_queues - 1)); mvm 125 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_mvm_send_cmd_pdu(mvm, RSS_CONFIG_CMD, 0, sizeof(cmd), &cmd); mvm 128 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_configure_rxq(struct iwl_mvm *mvm) mvm 138 drivers/net/wireless/intel/iwlwifi/mvm/fw.c num_queues = mvm->trans->num_rx_queues - 1; mvm 152 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_trans_get_rxq_dma_data(mvm->trans, i + 1, &data); mvm 164 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_cmd(mvm, &hcmd); mvm 171 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_send_dqa_cmd(struct iwl_mvm *mvm) mvm 179 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_cmd_pdu(mvm, cmd_id, 0, sizeof(dqa_cmd), &dqa_cmd); mvm 181 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to send DQA enabling command: %d\n", ret); mvm 183 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_FW(mvm, "Working in DQA mode\n"); mvm 188 drivers/net/wireless/intel/iwlwifi/mvm/fw.c void iwl_mvm_mfu_assert_dump_notif(struct iwl_mvm *mvm, mvm 198 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_INFO(mvm, "MFUART assert id 0x%x occurred\n", mvm 202 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_INFO(mvm, mvm 212 drivers/net/wireless/intel/iwlwifi/mvm/fw.c struct iwl_mvm *mvm = mvm 238 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_lmac1_set_alive_err_table(mvm->trans, lmac_error_event_table); mvm 241 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->trans->dbg.lmac_error_event_table[1] = mvm 247 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->support_umac_log = false; mvm 249 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->trans->cfg->min_umac_error_event_table) { mvm 250 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->support_umac_log = true; mvm 252 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, mvm 255 drivers/net/wireless/intel/iwlwifi/mvm/fw.c (mvm->fwrt.cur_fw_img == IWL_UCODE_INIT) ? mvm 257 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->support_umac_log = false; mvm 260 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (mvm->support_umac_log) mvm 261 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_umac_set_alive_err_table(mvm->trans, mvm 267 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_FW(mvm, mvm 272 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_FW(mvm, "Alive ucode CDB\n"); mvm 274 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_FW(mvm, mvm 279 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fwrt_update_fw_versions(&mvm->fwrt, lmac1, umac); mvm 307 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm, mvm 314 drivers/net/wireless/intel/iwlwifi/mvm/fw.c enum iwl_ucode_type old_type = mvm->fwrt.cur_fw_img; mvm 317 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ucode_type == IWL_UCODE_INIT || iwl_mvm_has_unified_ucode(mvm); mvm 320 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_dbg_conf_usniffer(mvm->fw, FW_DBG_START_FROM_ALIVE) && mvm 321 drivers/net/wireless/intel/iwlwifi/mvm/fw.c !(fw_has_capa(&mvm->fw->ucode_capa, mvm 323 drivers/net/wireless/intel/iwlwifi/mvm/fw.c fw = iwl_get_ucode_image(mvm->fw, IWL_UCODE_REGULAR_USNIFFER); mvm 325 drivers/net/wireless/intel/iwlwifi/mvm/fw.c fw = iwl_get_ucode_image(mvm->fw, ucode_type); mvm 328 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_current_image(&mvm->fwrt, ucode_type); mvm 329 drivers/net/wireless/intel/iwlwifi/mvm/fw.c clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status); mvm 331 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_init_notification_wait(&mvm->notif_wait, &alive_wait, mvm 340 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_trans_start_fw(mvm->trans, fw, run_in_rfkill); mvm 342 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_current_image(&mvm->fwrt, old_type); mvm 343 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_remove_notification(&mvm->notif_wait, &alive_wait); mvm 351 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_wait_notification(&mvm->notif_wait, &alive_wait, mvm 354 drivers/net/wireless/intel/iwlwifi/mvm/fw.c struct iwl_trans *trans = mvm->trans; mvm 357 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_dbg_error_collect(&mvm->fwrt, mvm 361 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, mvm 368 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, mvm 372 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_current_image(&mvm->fwrt, old_type); mvm 377 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Loaded ucode is not valid!\n"); mvm 378 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_current_image(&mvm->fwrt, old_type); mvm 382 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_trans_fw_alive(mvm->trans, alive_data.scd_base_addr); mvm 393 drivers/net/wireless/intel/iwlwifi/mvm/fw.c memset(&mvm->queue_info, 0, sizeof(mvm->queue_info)); mvm 400 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->queue_info[IWL_MVM_DQA_CMD_QUEUE].tid_bitmap = mvm 403 drivers/net/wireless/intel/iwlwifi/mvm/fw.c set_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status); mvm 405 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_dbg_rec_on(&mvm->fwrt); mvm 411 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_run_unified_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm) mvm 423 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (mvm->trans->cfg->tx_with_siso_diversity) mvm 426 drivers/net/wireless/intel/iwlwifi/mvm/fw.c lockdep_assert_held(&mvm->mutex); mvm 428 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->rfkill_safe_init_done = false; mvm 430 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_init_notification_wait(&mvm->notif_wait, mvm 437 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_EARLY, NULL); mvm 440 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_load_ucode_wait_alive(mvm, IWL_UCODE_REGULAR); mvm 442 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to start RT ucode: %d\n", ret); mvm 445 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_AFTER_ALIVE, mvm 451 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_cmd_pdu(mvm, WIDE_ID(SYSTEM_GROUP, mvm 456 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to run init config command: %d\n", mvm 462 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (mvm->nvm_file_name) { mvm 463 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_read_external_nvm(mvm->trans, mvm->nvm_file_name, mvm 464 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_sections); mvm 465 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_mvm_load_nvm_to_nic(mvm); mvm 469 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_nvm_init(mvm); mvm 471 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to read NVM: %d\n", ret); mvm 476 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_cmd_pdu(mvm, WIDE_ID(REGULATORY_AND_NVM_GROUP, mvm 481 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to run complete NVM access: %d\n", mvm 487 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_wait_notification(&mvm->notif_wait, &init_wait, mvm 494 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data = iwl_get_nvm(mvm->trans, mvm->fw); mvm 495 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (IS_ERR(mvm->nvm_data)) { mvm 496 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = PTR_ERR(mvm->nvm_data); mvm 497 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data = NULL; mvm 498 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to read NVM: %d\n", ret); mvm 503 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->rfkill_safe_init_done = true; mvm 508 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_remove_notification(&mvm->notif_wait, &init_wait); mvm 512 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_send_phy_cfg_cmd(struct iwl_mvm *mvm) mvm 515 drivers/net/wireless/intel/iwlwifi/mvm/fw.c enum iwl_ucode_type ucode_type = mvm->fwrt.cur_fw_img; mvm 517 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_mvm_has_unified_ucode(mvm) && mvm 518 drivers/net/wireless/intel/iwlwifi/mvm/fw.c !mvm->trans->cfg->tx_with_siso_diversity) { mvm 520 drivers/net/wireless/intel/iwlwifi/mvm/fw.c } else if (mvm->trans->cfg->tx_with_siso_diversity) { mvm 530 drivers/net/wireless/intel/iwlwifi/mvm/fw.c phy_cfg_cmd.phy_cfg = cpu_to_le32(iwl_mvm_get_phy_config(mvm)); mvm 533 drivers/net/wireless/intel/iwlwifi/mvm/fw.c phy_cfg_cmd.phy_cfg |= cpu_to_le32(mvm->cfg->extra_phy_cfg_flags); mvm 536 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->fw->default_calib[ucode_type].event_trigger; mvm 538 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->fw->default_calib[ucode_type].flow_trigger; mvm 540 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_INFO(mvm, "Sending Phy CFG command: 0x%x\n", mvm 543 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_mvm_send_cmd_pdu(mvm, PHY_CONFIGURATION_CMD, 0, mvm 547 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm) mvm 556 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_mvm_has_unified_ucode(mvm)) mvm 557 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_run_unified_mvm_ucode(mvm, true); mvm 559 drivers/net/wireless/intel/iwlwifi/mvm/fw.c lockdep_assert_held(&mvm->mutex); mvm 561 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->rfkill_safe_init_done = false; mvm 563 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_init_notification_wait(&mvm->notif_wait, mvm 568 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->phy_db); mvm 571 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_load_ucode_wait_alive(mvm, IWL_UCODE_INIT); mvm 573 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to start INIT ucode: %d\n", ret); mvm 577 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_8000) { mvm 578 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_bt_init_conf(mvm); mvm 585 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_nvm_init(mvm); mvm 587 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to read NVM: %d\n", ret); mvm 593 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (mvm->nvm_file_name) mvm 594 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_mvm_load_nvm_to_nic(mvm); mvm 596 drivers/net/wireless/intel/iwlwifi/mvm/fw.c WARN_ONCE(mvm->nvm_data->nvm_version < mvm->trans->cfg->nvm_ver, mvm 598 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data->nvm_version, mvm->trans->cfg->nvm_ver); mvm 604 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_mvm_is_radio_hw_killed(mvm)) { mvm 605 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RF_KILL(mvm, mvm 610 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->rfkill_safe_init_done = true; mvm 613 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_tx_ant_cfg(mvm, iwl_mvm_get_valid_tx_ant(mvm)); mvm 617 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_phy_cfg_cmd(mvm); mvm 619 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to run INIT calibrations: %d\n", mvm 628 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_wait_notification(&mvm->notif_wait, &calib_wait, mvm 633 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_mvm_is_radio_hw_killed(mvm)) { mvm 634 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RF_KILL(mvm, "RFKILL while calibrating.\n"); mvm 637 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to run INIT calibrations: %d\n", mvm 644 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_remove_notification(&mvm->notif_wait, &calib_wait); mvm 646 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->rfkill_safe_init_done = false; mvm 647 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwlmvm_mod_params.init_dbg && !mvm->nvm_data) { mvm 649 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data = kzalloc(sizeof(struct iwl_nvm_data) + mvm 653 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!mvm->nvm_data) mvm 655 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data->bands[0].channels = mvm->nvm_data->channels; mvm 656 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data->bands[0].n_channels = 1; mvm 657 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data->bands[0].n_bitrates = 1; mvm 658 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data->bands[0].bitrates = mvm 659 drivers/net/wireless/intel/iwlwifi/mvm/fw.c (void *)mvm->nvm_data->channels + 1; mvm 660 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->nvm_data->bands[0].bitrates->hw_value = 10; mvm 666 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_config_ltr(struct iwl_mvm *mvm) mvm 672 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!mvm->trans->ltr_enabled) mvm 675 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_mvm_send_cmd_pdu(mvm, LTR_CONFIG, 0, mvm 680 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static inline int iwl_mvm_sar_set_profile(struct iwl_mvm *mvm, mvm 700 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_get_wrds_table(struct iwl_mvm *mvm) mvm 706 drivers/net/wireless/intel/iwlwifi/mvm/fw.c data = iwl_acpi_get_object(mvm->dev, ACPI_WRDS_METHOD); mvm 710 drivers/net/wireless/intel/iwlwifi/mvm/fw.c wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data, mvm 731 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sar_set_profile(mvm, table, &mvm->sar_profiles[0], mvm 738 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_get_ewrd_table(struct iwl_mvm *mvm) mvm 744 drivers/net/wireless/intel/iwlwifi/mvm/fw.c data = iwl_acpi_get_object(mvm->dev, ACPI_EWRD_METHOD); mvm 748 drivers/net/wireless/intel/iwlwifi/mvm/fw.c wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data, mvm 783 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sar_set_profile(mvm, mvm 785 drivers/net/wireless/intel/iwlwifi/mvm/fw.c &mvm->sar_profiles[i + 1], mvm 799 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm) mvm 805 drivers/net/wireless/intel/iwlwifi/mvm/fw.c data = iwl_acpi_get_object(mvm->dev, ACPI_WGDS_METHOD); mvm 809 drivers/net/wireless/intel/iwlwifi/mvm/fw.c wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data, mvm 821 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->geo_rev = tbl_rev; mvm 833 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->geo_profiles[i].values[j] = entry->integer.value; mvm 842 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b) mvm 858 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 861 drivers/net/wireless/intel/iwlwifi/mvm/fw.c else if (fw_has_capa(&mvm->fw->ucode_capa, mvm 879 drivers/net/wireless/intel/iwlwifi/mvm/fw.c prof = &mvm->sar_profiles[profs[i] - 1]; mvm 883 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, "SAR profile %d is disabled.\n", mvm 889 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_INFO(mvm, mvm 892 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, " Chain[%d]:\n", i); mvm 897 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, " Band[%d] = %d * .125dBm\n", mvm 902 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, "Sending REDUCE_TX_POWER_CMD per chain\n"); mvm 904 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_mvm_send_cmd_pdu(mvm, REDUCE_TX_POWER_CMD, 0, len, &cmd); mvm 907 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static bool iwl_mvm_sar_geo_support(struct iwl_mvm *mvm) mvm 920 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 38 || mvm 921 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17 || mvm 922 drivers/net/wireless/intel/iwlwifi/mvm/fw.c (IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 && mvm 923 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ((mvm->trans->hw_rev & CSR_HW_REV_TYPE_MSK) == mvm 927 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm) mvm 937 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_SAR_TABLE_VER)) { mvm 956 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!iwl_mvm_sar_geo_support(mvm)) mvm 959 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 961 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to get geographic profile info %d\n", ret); mvm 969 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_WARN(mvm, "Invalid geographic profile idx (%d)\n", ret); mvm 976 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm) mvm 984 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!iwl_mvm_sar_geo_support(mvm)) mvm 987 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sar_get_wgds_table(mvm); mvm 989 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, mvm 996 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, "Sending GEO_TX_POWER_LIMIT\n"); mvm 1010 drivers/net/wireless/intel/iwlwifi/mvm/fw.c value = &mvm->geo_profiles[i].values[j * mvm 1015 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, mvm 1021 drivers/net/wireless/intel/iwlwifi/mvm/fw.c cmd.table_revision = cpu_to_le32(mvm->geo_rev); mvm 1023 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!fw_has_api(&mvm->fw->ucode_capa, mvm 1025 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0, mvm 1030 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_mvm_send_cmd_pdu(mvm, cmd_wide_id, 0, sizeof(cmd), &cmd); mvm 1033 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_get_ppag_table(struct iwl_mvm *mvm) mvm 1039 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->ppag_table.enabled = cpu_to_le32(0); mvm 1040 drivers/net/wireless/intel/iwlwifi/mvm/fw.c data = iwl_acpi_get_object(mvm->dev, ACPI_PPAG_METHOD); mvm 1044 drivers/net/wireless/intel/iwlwifi/mvm/fw.c wifi_pkg = iwl_acpi_get_wifi_pkg(mvm->dev, data, mvm 1064 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->ppag_table.enabled = cpu_to_le32(enabled->integer.value); mvm 1065 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!mvm->ppag_table.enabled) { mvm 1085 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->ppag_table.enabled = cpu_to_le32(0); mvm 1089 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->ppag_table.gain[i][j] = ent->integer.value; mvm 1098 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm) mvm 1102 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_SET_PPAG)) { mvm 1103 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, mvm 1108 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, "Sending PER_PLATFORM_ANT_GAIN_CMD\n"); mvm 1109 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, "PPAG is %s\n", mvm 1110 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->ppag_table.enabled ? "enabled" : "disabled"); mvm 1114 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, mvm 1116 drivers/net/wireless/intel/iwlwifi/mvm/fw.c i, j, mvm->ppag_table.gain[i][j]); mvm 1120 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_cmd_pdu(mvm, WIDE_ID(PHY_OPS_GROUP, mvm 1122 drivers/net/wireless/intel/iwlwifi/mvm/fw.c 0, sizeof(mvm->ppag_table), mvm 1123 drivers/net/wireless/intel/iwlwifi/mvm/fw.c &mvm->ppag_table); mvm 1125 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "failed to send PER_PLATFORM_ANT_GAIN_CMD (%d)\n", mvm 1131 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_ppag_init(struct iwl_mvm *mvm) mvm 1135 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_get_ppag_table(mvm); mvm 1137 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, mvm 1142 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_mvm_ppag_send_cmd(mvm); mvm 1146 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_get_wrds_table(struct iwl_mvm *mvm) mvm 1151 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_get_ewrd_table(struct iwl_mvm *mvm) mvm 1156 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm) mvm 1161 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm) mvm 1166 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, mvm 1172 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm) mvm 1177 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm) mvm 1182 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_ppag_init(struct iwl_mvm *mvm) mvm 1188 drivers/net/wireless/intel/iwlwifi/mvm/fw.c void iwl_mvm_send_recovery_cmd(struct iwl_mvm *mvm, u32 flags) mvm 1190 drivers/net/wireless/intel/iwlwifi/mvm/fw.c u32 error_log_size = mvm->fw->ucode_capa.error_log_size; mvm 1211 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!mvm->error_recovery_buf) mvm 1214 drivers/net/wireless/intel/iwlwifi/mvm/fw.c host_cmd.data[1] = mvm->error_recovery_buf; mvm 1220 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_cmd(mvm, &host_cmd); mvm 1221 drivers/net/wireless/intel/iwlwifi/mvm/fw.c kfree(mvm->error_recovery_buf); mvm 1222 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->error_recovery_buf = NULL; mvm 1225 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to send recovery cmd %d\n", ret); mvm 1233 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, mvm 1239 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_sar_init(struct iwl_mvm *mvm) mvm 1243 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sar_get_wrds_table(mvm); mvm 1245 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, mvm 1255 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sar_get_ewrd_table(mvm); mvm 1258 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RADIO(mvm, mvm 1263 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sar_select_profile(mvm, 1, 1); mvm 1276 drivers/net/wireless/intel/iwlwifi/mvm/fw.c static int iwl_mvm_load_rt_fw(struct iwl_mvm *mvm) mvm 1280 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_mvm_has_unified_ucode(mvm)) mvm 1281 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_run_unified_mvm_ucode(mvm, false); mvm 1283 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_run_init_mvm_ucode(mvm, false); mvm 1286 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to run INIT ucode: %d\n", ret); mvm 1293 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_dbg_stop_sync(&mvm->fwrt); mvm 1294 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_trans_stop_device(mvm->trans); mvm 1295 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_trans_start_hw(mvm->trans); mvm 1299 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_EARLY, NULL); mvm 1301 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->rfkill_safe_init_done = false; mvm 1302 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_load_ucode_wait_alive(mvm, IWL_UCODE_REGULAR); mvm 1306 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->rfkill_safe_init_done = true; mvm 1308 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_AFTER_ALIVE, mvm 1311 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_init_paging(&mvm->fwrt, mvm->fwrt.cur_fw_img); mvm 1314 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_mvm_up(struct iwl_mvm *mvm) mvm 1321 drivers/net/wireless/intel/iwlwifi/mvm/fw.c lockdep_assert_held(&mvm->mutex); mvm 1323 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_trans_start_hw(mvm->trans); mvm 1327 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_load_rt_fw(mvm); mvm 1329 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to start RT ucode: %d\n", ret); mvm 1331 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_dbg_error_collect(&mvm->fwrt, mvm 1336 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_get_shared_mem_conf(&mvm->fwrt); mvm 1338 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sf_update(mvm, NULL, false); mvm 1340 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to initialize Smart Fifo\n"); mvm 1342 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!iwl_trans_dbg_ini_valid(mvm->trans)) { mvm 1343 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->fwrt.dump.conf = FW_DBG_INVALID; mvm 1345 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (mvm->fw->dbg.dest_tlv) mvm 1346 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->fwrt.dump.conf = FW_DBG_START_FROM_ALIVE; mvm 1347 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_start_dbg_conf(&mvm->fwrt, FW_DBG_START_FROM_ALIVE); mvm 1350 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_tx_ant_cfg(mvm, iwl_mvm_get_valid_tx_ant(mvm)); mvm 1354 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!iwl_mvm_has_unified_ucode(mvm)) { mvm 1356 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_phy_db_data(mvm->phy_db); mvm 1361 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_phy_cfg_cmd(mvm); mvm 1365 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_bt_init_conf(mvm); mvm 1370 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) { mvm 1371 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_configure_rxq(mvm); mvm 1373 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to configure RX queues: %d\n", mvm 1379 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_mvm_has_new_rx_api(mvm)) { mvm 1380 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_rss_cfg_cmd(mvm); mvm 1382 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to configure RSS queues: %d\n", mvm 1389 drivers/net/wireless/intel/iwlwifi/mvm/fw.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) mvm 1390 drivers/net/wireless/intel/iwlwifi/mvm/fw.c RCU_INIT_POINTER(mvm->fw_id_to_mac_id[i], NULL); mvm 1392 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->tdls_cs.peer.sta_id = IWL_MVM_INVALID_STA; mvm 1395 drivers/net/wireless/intel/iwlwifi/mvm/fw.c memset(&mvm->last_quota_cmd, 0xff, sizeof(mvm->last_quota_cmd)); mvm 1397 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_DQA_SUPPORT)) { mvm 1398 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_send_dqa_cmd(mvm); mvm 1404 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_add_aux_sta(mvm); mvm 1411 drivers/net/wireless/intel/iwlwifi/mvm/fw.c sband = mvm->hw->wiphy->bands[i++]; mvm 1425 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_phy_ctxt_add(mvm, &mvm->phy_ctxts[i], mvm 1431 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_mvm_is_tt_in_fw(mvm)) { mvm 1436 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_mvm_send_temp_report_ths_cmd(mvm); mvm 1439 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_mvm_tt_tx_backoff(mvm, 0); mvm 1449 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_mvm_is_ctdp_supported(mvm)) { mvm 1450 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_START, mvm 1451 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->cooling_dev.cur_state); mvm 1457 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_SET_LTR_GEN2)) mvm 1458 drivers/net/wireless/intel/iwlwifi/mvm/fw.c WARN_ON(iwl_mvm_config_ltr(mvm)); mvm 1460 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_power_update_device(mvm); mvm 1468 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (!test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status)) { mvm 1469 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_init_mcc(mvm); mvm 1474 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) { mvm 1475 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->scan_type = IWL_SCAN_TYPE_NOT_SET; mvm 1476 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->hb_scan_type = IWL_SCAN_TYPE_NOT_SET; mvm 1477 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_config_scan(mvm); mvm 1482 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) mvm 1483 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_mvm_send_recovery_cmd(mvm, ERROR_RECOVERY_UPDATE_DB); mvm 1485 drivers/net/wireless/intel/iwlwifi/mvm/fw.c if (iwl_acpi_get_eckv(mvm->dev, &mvm->ext_clock_valid)) mvm 1486 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_INFO(mvm, "ECKV table doesn't exist in BIOS\n"); mvm 1488 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_ppag_init(mvm); mvm 1492 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sar_init(mvm); mvm 1494 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_sar_geo_init(mvm); mvm 1495 drivers/net/wireless/intel/iwlwifi/mvm/fw.c } else if (ret > 0 && !iwl_mvm_sar_get_wgds_table(mvm)) { mvm 1502 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "BIOS contains WGDS but no WRDS\n"); mvm 1508 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_mvm_leds_sync(mvm); mvm 1510 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_INFO(mvm, "RT uCode started.\n"); mvm 1514 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_mvm_stop_device(mvm); mvm 1518 drivers/net/wireless/intel/iwlwifi/mvm/fw.c int iwl_mvm_load_d3_fw(struct iwl_mvm *mvm) mvm 1522 drivers/net/wireless/intel/iwlwifi/mvm/fw.c lockdep_assert_held(&mvm->mutex); mvm 1524 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_trans_start_hw(mvm->trans); mvm 1528 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_load_ucode_wait_alive(mvm, IWL_UCODE_WOWLAN); mvm 1530 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_ERR(mvm, "Failed to start WoWLAN firmware: %d\n", ret); mvm 1534 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_tx_ant_cfg(mvm, iwl_mvm_get_valid_tx_ant(mvm)); mvm 1539 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_phy_db_data(mvm->phy_db); mvm 1543 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_send_phy_cfg_cmd(mvm); mvm 1548 drivers/net/wireless/intel/iwlwifi/mvm/fw.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) mvm 1549 drivers/net/wireless/intel/iwlwifi/mvm/fw.c RCU_INIT_POINTER(mvm->fw_id_to_mac_id[i], NULL); mvm 1552 drivers/net/wireless/intel/iwlwifi/mvm/fw.c ret = iwl_mvm_add_aux_sta(mvm); mvm 1558 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_mvm_stop_device(mvm); mvm 1562 drivers/net/wireless/intel/iwlwifi/mvm/fw.c void iwl_mvm_rx_card_state_notif(struct iwl_mvm *mvm, mvm 1569 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_RF_KILL(mvm, "Card state received: HW:%s SW:%s CT:%s\n", mvm 1576 drivers/net/wireless/intel/iwlwifi/mvm/fw.c void iwl_mvm_rx_mfuart_notif(struct iwl_mvm *mvm, mvm 1582 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_INFO(mvm, mvm 1590 drivers/net/wireless/intel/iwlwifi/mvm/fw.c IWL_DEBUG_INFO(mvm, mvm 68 drivers/net/wireless/intel/iwlwifi/mvm/led.c static void iwl_mvm_send_led_fw_cmd(struct iwl_mvm *mvm, bool on) mvm 81 drivers/net/wireless/intel/iwlwifi/mvm/led.c if (!iwl_mvm_firmware_running(mvm)) mvm 84 drivers/net/wireless/intel/iwlwifi/mvm/led.c err = iwl_mvm_send_cmd(mvm, &cmd); mvm 87 drivers/net/wireless/intel/iwlwifi/mvm/led.c IWL_WARN(mvm, "LED command failed: %d\n", err); mvm 90 drivers/net/wireless/intel/iwlwifi/mvm/led.c static void iwl_mvm_led_set(struct iwl_mvm *mvm, bool on) mvm 92 drivers/net/wireless/intel/iwlwifi/mvm/led.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 94 drivers/net/wireless/intel/iwlwifi/mvm/led.c iwl_mvm_send_led_fw_cmd(mvm, on); mvm 98 drivers/net/wireless/intel/iwlwifi/mvm/led.c iwl_write32(mvm->trans, CSR_LED_REG, mvm 105 drivers/net/wireless/intel/iwlwifi/mvm/led.c struct iwl_mvm *mvm = container_of(led_cdev, struct iwl_mvm, led); mvm 107 drivers/net/wireless/intel/iwlwifi/mvm/led.c iwl_mvm_led_set(mvm, brightness > 0); mvm 110 drivers/net/wireless/intel/iwlwifi/mvm/led.c int iwl_mvm_leds_init(struct iwl_mvm *mvm) mvm 117 drivers/net/wireless/intel/iwlwifi/mvm/led.c IWL_ERR(mvm, "Blink led mode not supported, used default\n"); mvm 124 drivers/net/wireless/intel/iwlwifi/mvm/led.c IWL_INFO(mvm, "Led disabled\n"); mvm 130 drivers/net/wireless/intel/iwlwifi/mvm/led.c mvm->led.name = kasprintf(GFP_KERNEL, "%s-led", mvm 131 drivers/net/wireless/intel/iwlwifi/mvm/led.c wiphy_name(mvm->hw->wiphy)); mvm 132 drivers/net/wireless/intel/iwlwifi/mvm/led.c if (!mvm->led.name) mvm 135 drivers/net/wireless/intel/iwlwifi/mvm/led.c mvm->led.brightness_set = iwl_led_brightness_set; mvm 136 drivers/net/wireless/intel/iwlwifi/mvm/led.c mvm->led.max_brightness = 1; mvm 139 drivers/net/wireless/intel/iwlwifi/mvm/led.c mvm->led.default_trigger = mvm 140 drivers/net/wireless/intel/iwlwifi/mvm/led.c ieee80211_get_radio_led_name(mvm->hw); mvm 142 drivers/net/wireless/intel/iwlwifi/mvm/led.c ret = led_classdev_register(mvm->trans->dev, &mvm->led); mvm 144 drivers/net/wireless/intel/iwlwifi/mvm/led.c kfree(mvm->led.name); mvm 145 drivers/net/wireless/intel/iwlwifi/mvm/led.c IWL_INFO(mvm, "Failed to enable led\n"); mvm 149 drivers/net/wireless/intel/iwlwifi/mvm/led.c mvm->init_status |= IWL_MVM_INIT_STATUS_LEDS_INIT_COMPLETE; mvm 153 drivers/net/wireless/intel/iwlwifi/mvm/led.c void iwl_mvm_leds_sync(struct iwl_mvm *mvm) mvm 155 drivers/net/wireless/intel/iwlwifi/mvm/led.c if (!(mvm->init_status & IWL_MVM_INIT_STATUS_LEDS_INIT_COMPLETE)) mvm 162 drivers/net/wireless/intel/iwlwifi/mvm/led.c if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_8000) mvm 165 drivers/net/wireless/intel/iwlwifi/mvm/led.c iwl_mvm_led_set(mvm, mvm->led.brightness > 0); mvm 168 drivers/net/wireless/intel/iwlwifi/mvm/led.c void iwl_mvm_leds_exit(struct iwl_mvm *mvm) mvm 170 drivers/net/wireless/intel/iwlwifi/mvm/led.c if (!(mvm->init_status & IWL_MVM_INIT_STATUS_LEDS_INIT_COMPLETE)) mvm 173 drivers/net/wireless/intel/iwlwifi/mvm/led.c led_classdev_unregister(&mvm->led); mvm 174 drivers/net/wireless/intel/iwlwifi/mvm/led.c kfree(mvm->led.name); mvm 175 drivers/net/wireless/intel/iwlwifi/mvm/led.c mvm->init_status &= ~IWL_MVM_INIT_STATUS_LEDS_INIT_COMPLETE; mvm 92 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c struct iwl_mvm *mvm; mvm 230 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c void iwl_mvm_mac_ctxt_recalc_tsf_id(struct iwl_mvm *mvm, mvm 235 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c .mvm = mvm, mvm 243 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->hw, IEEE80211_IFACE_ITER_RESUME_ALL, mvm 253 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 257 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c .mvm = mvm, mvm 267 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c lockdep_assert_held(&mvm->mutex); mvm 298 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->hw, IEEE80211_IFACE_ITER_RESUME_ALL, mvm 315 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (WARN_ON_ONCE(test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status))) mvm 321 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_ERR(mvm, "Failed to init MAC context - no free ID!\n"); mvm 332 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_ERR(mvm, "Failed to init MAC context - no free TSF!\n"); mvm 370 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static void iwl_mvm_ack_rates(struct iwl_mvm *mvm, mvm 383 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c sband = mvm->hw->wiphy->bands[band]; mvm 456 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static void iwl_mvm_mac_ctxt_set_ht_flags(struct iwl_mvm *mvm, mvm 466 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_RATE(mvm, "protection mode set to %d\n", protection_mode); mvm 484 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_ERR(mvm, "Illegal protection mode %d\n", mvm 490 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static void iwl_mvm_mac_ctxt_cmd_common(struct iwl_mvm *mvm, mvm 542 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_ack_rates(mvm, vif, chanctx ? chanctx->def.chan->band mvm 560 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c u8 txf = iwl_mvm_mac_ac_to_tx_fifo(mvm, i); mvm 579 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_RATE(mvm, "use_cts_prot %d, ht_operation_mode %d\n", mvm 585 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_set_ht_flags(mvm, vif, cmd); mvm 588 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_send_cmd(struct iwl_mvm *mvm, mvm 591 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c int ret = iwl_mvm_send_cmd_pdu(mvm, MAC_CONTEXT_CMD, 0, mvm 594 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_ERR(mvm, "Failed to send MAC context (action:%d): %d\n", mvm 599 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_cmd_sta(struct iwl_mvm *mvm, mvm 610 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, bssid_override, action); mvm 657 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_INFO(mvm, "DTIM TBTT is 0x%llx/0x%x, offset %d\n", mvm 673 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c sta = rcu_dereference(mvm->fw_id_to_mac_id[ap_sta_id]); mvm 699 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c ctxt_sta->listen_interval = cpu_to_le32(mvm->hw->conf.listen_interval); mvm 712 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_cmd(mvm, &cmd); mvm 715 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_cmd_listener(struct iwl_mvm *mvm, mvm 720 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c u32 tfd_queue_msk = BIT(mvm->snif_queue); mvm 725 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); mvm 733 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c ieee80211_hw_set(mvm->hw, RX_INCLUDES_FCS); mvm 736 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c ret = iwl_mvm_allocate_int_sta(mvm, &mvm->snif_sta, tfd_queue_msk, mvm 741 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_cmd(mvm, &cmd); mvm 744 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_cmd_ibss(struct iwl_mvm *mvm, mvm 753 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); mvm 765 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_cmd(mvm, &cmd); mvm 782 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_cmd_p2p_device(struct iwl_mvm *mvm, mvm 791 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); mvm 805 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->hw, IEEE80211_IFACE_ITER_RESUME_ALL, mvm 809 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_cmd(mvm, &cmd); mvm 812 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c void iwl_mvm_mac_ctxt_set_tim(struct iwl_mvm *mvm, mvm 833 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_WARN(mvm, "Unable to find TIM Element in beacon\n"); mvm 867 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static void iwl_mvm_mac_ctxt_set_tx(struct iwl_mvm *mvm, mvm 885 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_bt_coex_tx_prio(mvm, (void *)beacon->data, info, 0) << mvm 889 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 891 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_toggle_tx_ant(mvm, &mvm->mgmt_last_antenna_idx); mvm 894 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c cpu_to_le32(BIT(mvm->mgmt_last_antenna_idx) << mvm 905 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c int iwl_mvm_mac_ctxt_send_beacon_cmd(struct iwl_mvm *mvm, mvm 921 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_send_cmd(mvm, &cmd); mvm 924 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_send_beacon_v6(struct iwl_mvm *mvm, mvm 931 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_set_tx(mvm, vif, beacon, &beacon_cmd.tx); mvm 936 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_set_tim(mvm, &beacon_cmd.tim_idx, mvm 940 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_beacon_cmd(mvm, beacon, &beacon_cmd, mvm 944 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_send_beacon_v7(struct iwl_mvm *mvm, mvm 951 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_set_tx(mvm, vif, beacon, &beacon_cmd.tx); mvm 956 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_set_tim(mvm, &beacon_cmd.tim_idx, mvm 969 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_beacon_cmd(mvm, beacon, &beacon_cmd, mvm 973 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_send_beacon_v9(struct iwl_mvm *mvm, mvm 993 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_set_tim(mvm, &beacon_cmd.tim_idx, mvm 1006 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_beacon_cmd(mvm, beacon, &beacon_cmd, mvm 1010 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c int iwl_mvm_mac_ctxt_send_beacon(struct iwl_mvm *mvm, mvm 1020 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 1022 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_beacon_v6(mvm, vif, beacon); mvm 1024 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 1026 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_beacon_v9(mvm, vif, beacon); mvm 1028 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_beacon_v7(mvm, vif, beacon); mvm 1032 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c int iwl_mvm_mac_ctxt_beacon_changed(struct iwl_mvm *mvm, mvm 1041 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c beacon = ieee80211_beacon_get_template(mvm->hw, vif, NULL); mvm 1046 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (mvm->beacon_inject_active) mvm 1050 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c ret = iwl_mvm_mac_ctxt_send_beacon(mvm, vif, beacon); mvm 1056 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c struct iwl_mvm *mvm; mvm 1082 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static void iwl_mvm_mac_ctxt_cmd_fill_ap(struct iwl_mvm *mvm, mvm 1090 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c .mvm = mvm, mvm 1105 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (mvmvif->ap_assoc_sta_count || !mvm->drop_bcn_ap_mode) { mvm 1107 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_HC(mvm, "Asking FW to pass beacons\n"); mvm 1109 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_HC(mvm, "No need to receive beacons\n"); mvm 1116 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (!fw_has_api(&mvm->fw->ucode_capa, mvm 1132 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->hw, IEEE80211_IFACE_ITER_RESUME_ALL, mvm 1141 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvmvif->ap_beacon_time = iwl_mvm_get_systime(mvm); mvm 1152 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_cmd_ap(struct iwl_mvm *mvm, mvm 1161 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); mvm 1164 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd, &cmd.ap, mvm 1167 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_cmd(mvm, &cmd); mvm 1170 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctxt_cmd_go(struct iwl_mvm *mvm, mvm 1180 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action); mvm 1183 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd, &cmd.go.ap, mvm 1192 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_send_cmd(mvm, &cmd); mvm 1195 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static int iwl_mvm_mac_ctx_send(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1201 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_cmd_sta(mvm, vif, action, mvm 1207 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_cmd_ap(mvm, vif, action); mvm 1209 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_cmd_go(mvm, vif, action); mvm 1212 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_cmd_listener(mvm, vif, action); mvm 1214 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_cmd_p2p_device(mvm, vif, action); mvm 1216 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctxt_cmd_ibss(mvm, vif, action); mvm 1224 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 1233 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c ret = iwl_mvm_mac_ctx_send(mvm, vif, FW_CTXT_ACTION_ADD, mvm 1239 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_set_last_nonqos_seq(mvm, vif); mvm 1245 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1254 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c return iwl_mvm_mac_ctx_send(mvm, vif, FW_CTXT_ACTION_MODIFY, mvm 1258 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 1274 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c ret = iwl_mvm_send_cmd_pdu(mvm, MAC_CONTEXT_CMD, 0, mvm 1277 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_ERR(mvm, "Failed to remove MAC context: %d\n", ret); mvm 1284 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c __clear_bit(IEEE80211_HW_RX_INCLUDES_FCS, mvm->hw->flags); mvm 1285 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_dealloc_snif_sta(mvm); mvm 1291 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c static void iwl_mvm_csa_count_down(struct iwl_mvm *mvm, mvm 1307 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_mac_ctxt_beacon_changed(mvm, csa_vif); mvm 1316 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_schedule_csa_period(mvm, csa_vif, mvm 1324 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c RCU_INIT_POINTER(mvm->csa_vif, NULL); mvm 1328 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c void iwl_mvm_rx_beacon_notif(struct iwl_mvm *mvm, mvm 1339 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c lockdep_assert_held(&mvm->mutex); mvm 1341 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->ap_last_beacon_gp2 = le32_to_cpu(beacon->gp2); mvm 1343 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (!iwl_mvm_is_short_beacon_notif_supported(mvm)) { mvm 1347 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->ibss_manager = beacon_v5->ibss_mgr_status != 0; mvm 1348 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c agg_status = iwl_mvm_get_agg_status(mvm, beacon_notify_hdr); mvm 1350 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_RX(mvm, mvm 1354 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->ap_last_beacon_gp2, mvm 1357 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->ibss_manager = beacon->ibss_mgr_status != 0; mvm 1359 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_RX(mvm, mvm 1362 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->ap_last_beacon_gp2); mvm 1365 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c csa_vif = rcu_dereference_protected(mvm->csa_vif, mvm 1366 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c lockdep_is_held(&mvm->mutex)); mvm 1368 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_csa_count_down(mvm, csa_vif, mvm->ap_last_beacon_gp2, mvm 1371 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c tx_blocked_vif = rcu_dereference_protected(mvm->csa_tx_blocked_vif, mvm 1372 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c lockdep_is_held(&mvm->mutex)); mvm 1382 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (!mvm->csa_tx_block_bcn_timeout) mvm 1383 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->csa_tx_block_bcn_timeout = mvm 1386 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c mvm->csa_tx_block_bcn_timeout--; mvm 1389 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (mvm->csa_tx_block_bcn_timeout == 0) { mvm 1390 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_modify_all_sta_disable_tx(mvm, mvmvif, false); mvm 1391 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c RCU_INIT_POINTER(mvm->csa_tx_blocked_vif, NULL); mvm 1396 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c void iwl_mvm_rx_missed_beacons_notif(struct iwl_mvm *mvm, mvm 1408 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_INFO(mvm, mvm 1418 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, true); mvm 1430 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_connection_loss(mvm, vif, "missed beacons"); mvm 1434 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_dbg_tlv_time_point(&mvm->fwrt, mvm 1437 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c trigger = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), mvm 1451 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trigger, NULL); mvm 1457 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c void iwl_mvm_rx_stored_beacon_notif(struct iwl_mvm *mvm, mvm 1471 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_ERR(mvm, "alloc_skb failed\n"); mvm 1493 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c ieee80211_rx_napi(mvm->hw, NULL, skb, NULL); mvm 1496 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c void iwl_mvm_probe_resp_data_notif(struct iwl_mvm *mvm, mvm 1510 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_INFO(mvm, "Probe response data notif: noa %d, csa %d\n", mvm 1513 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, false); mvm 1538 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c lockdep_is_held(&mvmvif->mvm->mutex)); mvm 1549 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c void iwl_mvm_channel_switch_noa_notif(struct iwl_mvm *mvm, mvm 1569 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c vif = rcu_dereference(mvm->vif_id_to_mac[mac_id]); mvm 1574 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c csa_vif = rcu_dereference(mvm->csa_vif); mvm 1585 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c IWL_DEBUG_INFO(mvm, "Channel Switch Started Notification\n"); mvm 1587 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c schedule_delayed_work(&mvm->cs_tx_unblock_dwork, mvm 1595 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c RCU_INIT_POINTER(mvm->csa_vif, NULL); mvm 1598 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 1600 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_mvm_csa_client_absent(mvm, vif); mvm 214 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_reset_phy_ctxts(struct iwl_mvm *mvm) mvm 218 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memset(mvm->phy_ctxts, 0, sizeof(mvm->phy_ctxts)); mvm 220 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->phy_ctxts[i].id = i; mvm 221 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->phy_ctxts[i].ref = 0; mvm 232 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 235 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_LAR(mvm, "Getting regdomain data for %s from FW\n", alpha2); mvm 237 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 239 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c resp = iwl_mvm_update_mcc(mvm, alpha2, src_id); mvm 241 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_LAR(mvm, "Could not get update from FW %d\n", mvm 253 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c regd = iwl_parse_nvm_mcc_info(mvm->trans->dev, mvm->cfg, mvm 263 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_LAR(mvm, "Could not get parse update from FW %d\n", mvm 268 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_LAR(mvm, "setting alpha2 from FW to %s (0x%x, 0x%x) src=%d\n", mvm 270 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->lar_regdom_set = true; mvm 271 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->mcc_src = src_id; mvm 277 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c void iwl_mvm_update_changed_regdom(struct iwl_mvm *mvm) mvm 282 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!iwl_mvm_is_lar_supported(mvm)) mvm 285 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c regd = iwl_mvm_get_current_regdomain(mvm, &changed); mvm 289 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c regulatory_set_wiphy_regd(mvm->hw->wiphy, regd); mvm 295 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct ieee80211_regdomain *iwl_mvm_get_current_regdomain(struct iwl_mvm *mvm, mvm 298 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_get_regdomain(mvm->hw->wiphy, "ZZ", mvm 299 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_is_wifi_mcc_supported(mvm) ? mvm 304 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c int iwl_mvm_init_fw_regd(struct iwl_mvm *mvm) mvm 311 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c rtnl_dereference(mvm->hw->wiphy->regd); mvm 317 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c used_src = mvm->mcc_src; mvm 318 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_is_wifi_mcc_supported(mvm)) { mvm 320 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c regd = iwl_mvm_get_current_regdomain(mvm, NULL); mvm 326 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c regd = iwl_mvm_get_regdomain(mvm->hw->wiphy, r->alpha2, used_src, mvm 333 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = regulatory_set_wiphy_regd_sync_rtnl(mvm->hw->wiphy, regd); mvm 357 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) mvm 359 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct ieee80211_hw *hw = mvm->hw; mvm 368 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c bool unified = fw_has_capa(&mvm->fw->ucode_capa, mvm 402 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_9000) mvm 406 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_has_tlc_offload(mvm)) { mvm 411 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_has_new_rx_api(mvm)) mvm 414 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 417 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c } else if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) { mvm 426 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->trans->num_rx_queues > 1) mvm 429 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->trans->max_skb_frags) mvm 445 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!iwl_mvm_has_tlc_offload(mvm)) mvm 450 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c hw->max_tx_fragments = mvm->trans->max_skb_frags; mvm 452 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c BUILD_BUG_ON(ARRAY_SIZE(mvm->ciphers) < ARRAY_SIZE(mvm_ciphers) + 6); mvm 453 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memcpy(mvm->ciphers, mvm_ciphers, sizeof(mvm_ciphers)); mvm 455 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c hw->wiphy->cipher_suites = mvm->ciphers; mvm 457 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_has_new_rx_api(mvm)) { mvm 458 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->ciphers[hw->wiphy->n_cipher_suites] = mvm 461 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->ciphers[hw->wiphy->n_cipher_suites] = mvm 472 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->ciphers[hw->wiphy->n_cipher_suites] = mvm 475 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_has_new_rx_api(mvm)) { mvm 476 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->ciphers[hw->wiphy->n_cipher_suites] = mvm 479 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->ciphers[hw->wiphy->n_cipher_suites] = mvm 486 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->fw->cs[0].cipher) { mvm 487 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c const struct iwl_fw_cipher_scheme *fwcs = &mvm->fw->cs[0]; mvm 488 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct ieee80211_cipher_scheme *cs = &mvm->cs[0]; mvm 490 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->hw->n_cipher_schemes = 1; mvm 502 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->hw->cipher_schemes = mvm->cs; mvm 503 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->ciphers[hw->wiphy->n_cipher_suites] = cs->cipher; mvm 507 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 537 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_is_lar_supported(mvm)) mvm 554 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memcpy(mvm->addresses[0].addr, mvm->nvm_data->hw_addr, ETH_ALEN); mvm 555 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c hw->wiphy->addresses = mvm->addresses; mvm 559 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c num_mac = (mvm->nvm_data->n_hw_addrs > 1) ? mvm 560 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c min(IWL_MVM_MAX_ADDRESSES, mvm->nvm_data->n_hw_addrs) : 1; mvm 563 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memcpy(mvm->addresses[i].addr, mvm->addresses[i-1].addr, mvm 565 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->addresses[i].addr[5]++; mvm 569 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_reset_phy_ctxts(mvm); mvm 571 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c hw->wiphy->max_scan_ie_len = iwl_mvm_max_scan_ie_len(mvm); mvm 579 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) mvm 580 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->max_scans = IWL_MVM_MAX_UMAC_SCANS; mvm 582 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->max_scans = IWL_MVM_MAX_LMAC_SCANS; mvm 584 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->nvm_data->bands[NL80211_BAND_2GHZ].n_channels) mvm 586 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->nvm_data->bands[NL80211_BAND_2GHZ]; mvm 587 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->nvm_data->bands[NL80211_BAND_5GHZ].n_channels) { mvm 589 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->nvm_data->bands[NL80211_BAND_5GHZ]; mvm 591 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 593 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c fw_has_api(&mvm->fw->ucode_capa, mvm 599 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c hw->wiphy->hw_version = mvm->trans->hw_id; mvm 629 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 632 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 636 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 641 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 645 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 655 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_is_oce_supported(mvm)) { mvm 666 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->nvm_data->sku_cap_11ax_enable && mvm 676 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->rts_threshold = IEEE80211_MAX_RTS_THRESHOLD; mvm 679 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if ((unified || mvm->fw->img[IWL_UCODE_WOWLAN].num_sec) && mvm 680 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->trans->ops->d3_suspend && mvm 681 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->trans->ops->d3_resume && mvm 682 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c device_can_wakeup(mvm->trans->dev)) { mvm 683 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->wowlan.flags |= WIPHY_WOWLAN_MAGIC_PKT | mvm 689 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->wowlan.flags |= WIPHY_WOWLAN_SUPPORTS_GTK_REKEY | mvm 693 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->wowlan.n_patterns = IWL_WOWLAN_MAX_PATTERNS; mvm 694 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->wowlan.pattern_min_len = IWL_WOWLAN_MIN_PATTERN_LEN; mvm 695 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->wowlan.pattern_max_len = IWL_WOWLAN_MAX_PATTERN_LEN; mvm 696 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->wowlan.max_nd_match_sets = IWL_SCAN_MAX_PROFILES; mvm 697 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c hw->wiphy->wowlan = &mvm->wowlan; mvm 703 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->bcast_filters = iwl_mvm_default_bcast_filters; mvm 706 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_leds_init(mvm); mvm 710 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 712 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_TDLS(mvm, "TDLS supported\n"); mvm 717 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 719 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_TDLS(mvm, "TDLS channel switch supported\n"); mvm 723 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c hw->netdev_features |= mvm->cfg->features; mvm 724 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!iwl_mvm_is_csum_supported(mvm)) { mvm 732 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->cfg->vht_mu_mimo_supported) mvm 736 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = ieee80211_register_hw(mvm->hw); mvm 738 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_leds_exit(mvm); mvm 744 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_tx_skb(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 748 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (likely(iwl_mvm_tx_skb_sta(mvm, skb, sta) == 0)) mvm 751 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (likely(iwl_mvm_tx_skb_non_sta(mvm, skb) == 0)) mvm 755 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ieee80211_free_txskb(mvm->hw, skb); mvm 762 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 769 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_is_radio_killed(mvm)) { mvm 770 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_DROP(mvm, "Dropping - RF/CT KILL\n"); mvm 775 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c !test_bit(IWL_MVM_STATUS_ROC_RUNNING, &mvm->status) && mvm 776 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c !test_bit(IWL_MVM_STATUS_ROC_AUX_RUNNING, &mvm->status)) mvm 795 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c sta = rcu_dereference(mvm->fw_id_to_mac_id[ap_sta_id]); mvm 801 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tx_skb(mvm, skb, sta); mvm 809 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 838 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c (mvm->trans->system_pm_mode == mvm 844 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_TX(mvm, mvm 851 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tx_skb(mvm, skb, txq->sta); mvm 860 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 897 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c list_add_tail(&mvmtxq->list, &mvm->add_stream_txqs); mvm 898 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c schedule_work(&mvm->add_stream_wk); mvm 909 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_ampdu_check_trigger(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 916 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), mvm 928 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c CHECK_BA_TRIGGER(mvm, trig, ba_trig->tx_ba_start, tid, mvm 934 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c CHECK_BA_TRIGGER(mvm, trig, ba_trig->tx_ba_stop, tid, mvm 939 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c CHECK_BA_TRIGGER(mvm, trig, ba_trig->rx_ba_start, tid, mvm 944 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c CHECK_BA_TRIGGER(mvm, trig, ba_trig->rx_ba_stop, tid, mvm 957 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 967 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_HT(mvm, "A-MPDU action on addr %pM tid %d: action %d\n", mvm 970 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!(mvm->nvm_data->sku_cap_11n_enable)) mvm 973 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 981 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm_tcm_mac *mdata = &mvm->tcm.data[macid]; mvm 991 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_sta_rx_agg(mvm, sta, tid, *ssn, true, buf_size, mvm 995 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_sta_rx_agg(mvm, sta, tid, 0, false, buf_size, mvm 1003 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_sta_tx_agg_start(mvm, vif, sta, tid, ssn); mvm 1006 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_sta_tx_agg_stop(mvm, vif, sta, tid); mvm 1010 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_sta_tx_agg_flush(mvm, vif, sta, tid); mvm 1013 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_sta_tx_agg_oper(mvm, vif, sta, tid, mvm 1028 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_ampdu_check_trigger(mvm, vif, sta, tid, mvm 1031 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1039 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = data; mvm 1045 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_lock_bh(&mvm->time_event_lock); mvm 1046 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_te_clear_data(mvm, &mvmvif->time_event_data); mvm 1047 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_unlock_bh(&mvm->time_event_lock); mvm 1054 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_restart_cleanup(struct iwl_mvm *mvm) mvm 1056 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_stop_device(mvm); mvm 1058 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->cur_aid = 0; mvm 1060 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->scan_status = 0; mvm 1061 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->ps_disabled = false; mvm 1062 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->rfkill_safe_init_done = false; mvm 1065 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_cleanup_roc_te(mvm); mvm 1066 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ieee80211_remain_on_channel_expired(mvm->hw); mvm 1068 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_ftm_restart(mvm); mvm 1074 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ieee80211_iterate_interfaces(mvm->hw, 0, iwl_mvm_cleanup_iterator, mvm); mvm 1076 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->p2p_device_vif = NULL; mvm 1078 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_reset_phy_ctxts(mvm); mvm 1079 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memset(mvm->fw_key_table, 0, sizeof(mvm->fw_key_table)); mvm 1080 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memset(&mvm->last_bt_notif, 0, sizeof(mvm->last_bt_notif)); mvm 1081 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memset(&mvm->last_bt_ci_cmd, 0, sizeof(mvm->last_bt_ci_cmd)); mvm 1083 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ieee80211_wake_queues(mvm->hw); mvm 1085 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->vif_count = 0; mvm 1086 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->rx_ba_sessions = 0; mvm 1087 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->fwrt.dump.conf = FW_DBG_INVALID; mvm 1088 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->monitor_on = false; mvm 1091 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_accu_radio_stats(mvm); mvm 1094 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c int __iwl_mvm_mac_start(struct iwl_mvm *mvm) mvm 1098 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 1100 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status)) { mvm 1105 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c set_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status); mvm 1106 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c clear_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status); mvm 1108 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_restart_cleanup(mvm); mvm 1110 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_up(mvm); mvm 1112 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_POST_INIT, mvm 1114 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_PERIODIC, mvm 1117 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (ret && test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { mvm 1122 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c clear_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status); mvm 1130 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1133 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1134 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = __iwl_mvm_mac_start(mvm); mvm 1135 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1140 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_restart_complete(struct iwl_mvm *mvm) mvm 1144 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1146 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c clear_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status); mvm 1148 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_update_quotas(mvm, true, NULL); mvm 1150 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Failed to update quotas after restart (%d)\n", mvm 1153 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_send_recovery_cmd(mvm, ERROR_RECOVERY_END_OF_RECOVERY); mvm 1159 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_teardown_tdls_peers(mvm); mvm 1161 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1168 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1172 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_restart_complete(mvm); mvm 1179 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c void __iwl_mvm_mac_stop(struct iwl_mvm *mvm) mvm 1181 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 1186 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memset(&mvm->accu_radio_stats, 0, sizeof(mvm->accu_radio_stats)); mvm 1194 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c flush_work(&mvm->roc_done_wk); mvm 1196 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_stop_device(mvm); mvm 1198 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_async_handlers_purge(mvm); mvm 1202 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_del_aux_sta(mvm); mvm 1211 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (test_and_clear_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) || mvm 1213 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->status)) mvm 1214 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ieee80211_iterate_interfaces(mvm->hw, 0, mvm 1215 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_cleanup_iterator, mvm); mvm 1220 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) { mvm 1223 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c for (i = 0; i < mvm->max_scans; i++) { mvm 1224 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (WARN_ONCE(mvm->scan_uid_status[i], mvm 1227 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->scan_uid_status[i] = 0; mvm 1234 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1236 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c flush_work(&mvm->async_handlers_wk); mvm 1237 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c flush_work(&mvm->add_stream_wk); mvm 1247 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status); mvm 1249 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c cancel_delayed_work_sync(&mvm->cs_tx_unblock_dwork); mvm 1250 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c cancel_delayed_work_sync(&mvm->scan_timeout_dwork); mvm 1251 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_free_dump_desc(&mvm->fwrt); mvm 1253 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1254 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c __iwl_mvm_mac_stop(mvm); mvm 1255 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1261 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c cancel_work_sync(&mvm->async_handlers_wk); mvm 1264 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static struct iwl_mvm_phy_ctxt *iwl_mvm_get_free_phy_ctxt(struct iwl_mvm *mvm) mvm 1268 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 1271 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!mvm->phy_ctxts[i].ref) mvm 1272 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return &mvm->phy_ctxts[i]; mvm 1274 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "No available PHY context\n"); mvm 1278 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1295 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 1298 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c else if (fw_has_capa(&mvm->fw->ucode_capa, mvm 1304 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_send_cmd_pdu(mvm, REDUCE_TX_POWER_CMD, 0, len, &cmd); mvm 1311 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1314 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1326 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvmsta = iwl_mvm_sta_from_staid_protected(mvm, mvm 1334 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 1336 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_sta_modify_disable_tx(mvm, mvmsta, false); mvm 1338 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 1340 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 1342 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); mvm 1346 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_stop_session_protection(mvm, vif); mvm 1352 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_power_update_ps(mvm); mvm 1355 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1363 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1371 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "Abort CSA on mac %d\n", mvmvif->id); mvm 1373 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1374 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c WARN_ON(iwl_mvm_send_cmd_pdu(mvm, mvm 1378 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1385 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm; mvm 1391 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm = mvmvif->mvm; mvm 1393 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_abort_channel_switch(mvm->hw, vif); mvm 1400 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1404 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvmvif->mvm = mvm; mvm 1413 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1416 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) mvm 1421 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_mac_ctxt_init(mvm, vif); mvm 1425 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c rcu_assign_pointer(mvm->vif_id_to_mac[mvmvif->id], vif); mvm 1429 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->vif_count++; mvm 1444 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_alloc_bcast_sta(mvm, vif); mvm 1446 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Failed to allocate bcast sta\n"); mvm 1454 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_allocate_int_sta(mvm, &mvmvif->mcast_sta, mvm 1460 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_vif_dbgfs_register(mvm, vif); mvm 1466 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_mac_ctxt_add(mvm, vif); mvm 1470 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_power_update_mac(mvm); mvm 1475 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); mvm 1479 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!mvm->bf_allowed_vif && mvm 1481 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->bf_allowed_vif = mvmvif; mvm 1493 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvmvif->phy_ctxt = iwl_mvm_get_free_phy_ctxt(mvm); mvm 1499 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_ref(mvm, mvmvif->phy_ctxt); mvm 1500 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_binding_add_vif(mvm, vif); mvm 1504 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_add_p2p_bcast_sta(mvm, vif); mvm 1510 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->p2p_device_vif = vif; mvm 1513 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tcm_add_vif(mvm, vif); mvm 1518 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->monitor_on = true; mvm 1520 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_vif_dbgfs_register(mvm, vif); mvm 1524 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_binding_remove_vif(mvm, vif); mvm 1526 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_unref(mvm, mvmvif->phy_ctxt); mvm 1528 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->bf_allowed_vif == mvmvif) { mvm 1529 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->bf_allowed_vif = NULL; mvm 1535 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_remove(mvm, vif); mvm 1538 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->vif_count--; mvm 1540 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1545 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_prepare_mac_removal(struct iwl_mvm *mvm, mvm 1554 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c flush_work(&mvm->roc_done_wk); mvm 1561 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1565 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_prepare_mac_removal(mvm, vif); mvm 1569 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tcm_rm_vif(mvm, vif); mvm 1571 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1574 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_is_held(&mvm->mutex)); mvm 1579 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->bf_allowed_vif == mvmvif) { mvm 1580 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->bf_allowed_vif = NULL; mvm 1586 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memset(&mvm->ftm_resp_stats, 0, sizeof(mvm->ftm_resp_stats)); mvm 1588 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_vif_dbgfs_clean(mvm, vif); mvm 1597 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (vif == mvm->noa_vif) { mvm 1598 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->noa_vif = NULL; mvm 1599 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->noa_duration = 0; mvm 1602 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_dealloc_int_sta(mvm, &mvmvif->mcast_sta); mvm 1603 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_dealloc_bcast_sta(mvm, vif); mvm 1608 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->p2p_device_vif = NULL; mvm 1609 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rm_p2p_bcast_sta(mvm, vif); mvm 1610 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_binding_remove_vif(mvm, vif); mvm 1611 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_unref(mvm, mvmvif->phy_ctxt); mvm 1615 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->vif_count && vif->type != NL80211_IFTYPE_P2P_DEVICE) mvm 1616 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->vif_count--; mvm 1618 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_power_update_mac(mvm); mvm 1619 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_remove(mvm, vif); mvm 1621 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c RCU_INIT_POINTER(mvm->vif_id_to_mac[mvmvif->id], NULL); mvm 1624 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->monitor_on = false; mvm 1627 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1636 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm; mvm 1644 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = data->mvm; mvm 1645 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mcast_filter_cmd *cmd = mvm->mcast_filter_cmd; mvm 1668 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_send_cmd(mvm, &hcmd); mvm 1670 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "mcast filter cmd error. ret=%d\n", ret); mvm 1673 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_recalc_multicast(struct iwl_mvm *mvm) mvm 1676 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c .mvm = mvm, mvm 1679 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 1681 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (WARN_ON_ONCE(!mvm->mcast_filter_cmd)) mvm 1685 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 1692 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1716 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "mcast addr (%d): %pM\n", mvm 1731 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1734 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1737 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c kfree(mvm->mcast_filter_cmd); mvm 1738 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->mcast_filter_cmd = cmd; mvm 1749 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_recalc_multicast(mvm); mvm 1751 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1760 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 1771 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 1772 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 1773 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 1778 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm; mvm 1823 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = data->mvm; mvm 1845 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c for (i = 0; mvm->bcast_filters[i].attrs[0].mask; i++) { mvm 1859 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->bcast_filters[i], mvm 1874 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c bool iwl_mvm_bcast_filter_build_cmd(struct iwl_mvm *mvm, mvm 1878 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c .mvm = mvm, mvm 1891 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->dbgfs_bcast_filtering.override) { mvm 1892 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memcpy(cmd->filters, &mvm->dbgfs_bcast_filtering.cmd.filters, mvm 1894 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c memcpy(cmd->macs, &mvm->dbgfs_bcast_filtering.cmd.macs, mvm 1901 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!mvm->bcast_filters) mvm 1906 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 1912 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int iwl_mvm_configure_bcast_filter(struct iwl_mvm *mvm) mvm 1916 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!(mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BCAST_FILTERING)) mvm 1919 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!iwl_mvm_bcast_filter_build_cmd(mvm, &cmd)) mvm 1922 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_send_cmd_pdu(mvm, BCAST_FILTER_CMD, 0, mvm 1926 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static inline int iwl_mvm_configure_bcast_filter(struct iwl_mvm *mvm) mvm 1932 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int iwl_mvm_update_mu_groups(struct iwl_mvm *mvm, mvm 1942 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_send_cmd_pdu(mvm, mvm 1965 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c void iwl_mvm_mu_mimo_grp_notif(struct iwl_mvm *mvm, mvm 1972 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 2003 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_cfg_he_sta(struct iwl_mvm *mvm, mvm 2015 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c int size = fw_has_api(&mvm->fw->ucode_capa, mvm 2025 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_ctxt_cmd.sta_id]); mvm 2097 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_INFO(mvm, "Got NSS = %d - trimming to %d\n", nss, mvm 2221 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(STA_HE_CTXT_CMD, mvm 2224 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Failed to config FW to work HE!\n"); mvm 2227 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm, mvm 2243 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_cfg_he_sta(mvm, vif, mvmvif->ap_sta_id); mvm 2245 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_recalc_tsf_id(mvm, vif); mvm 2252 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_cfg_he_sta(mvm, vif, mvmvif->ap_sta_id); mvm 2263 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, mvmvif->bssid); mvm 2265 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); mvm 2274 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_request_statistics(mvm, true); mvm 2279 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_update_quotas(mvm, true, NULL); mvm 2281 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to update quotas\n"); mvm 2286 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->status)) { mvm 2302 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_protect_session(mvm, vif, dur, dur, mvm 2306 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_sf_update(mvm, vif, false); mvm 2307 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_power_vif_assoc(mvm, vif); mvm 2309 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_update_smps(mvm, vif, mvm 2318 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_sf_update(mvm, vif, false); mvm 2321 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->status), mvm 2333 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->status)) { mvm 2338 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_rm_sta_id(mvm, vif, mvm 2341 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, mvm 2348 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_update_quotas(mvm, false, NULL); mvm 2350 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to update quotas\n"); mvm 2353 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 2355 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, mvm 2364 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) && mvm 2366 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_update_mu_groups(mvm, vif); mvm 2368 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, mvm 2372 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_recalc_multicast(mvm); mvm 2373 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_configure_bcast_filter(mvm); mvm 2378 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_bt_coex_vif_change(mvm); mvm 2379 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_TT, mvm 2381 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 2383 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_config_scan(mvm); mvm 2391 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_stop_session_protection(mvm, vif); mvm 2393 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_sf_update(mvm, vif, false); mvm 2394 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0)); mvm 2403 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_power_update_mac(mvm); mvm 2405 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to update power mode\n"); mvm 2409 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_CALIB(mvm, "Changing TX Power to %d\n", mvm 2411 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_set_tx_power(mvm, vif, bss_conf->txpower); mvm 2415 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "cqm info_changed\n"); mvm 2419 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_enable_beacon_filter(mvm, vif, 0); mvm 2421 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, mvm 2427 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "arp filter changed\n"); mvm 2428 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_configure_bcast_filter(mvm); mvm 2435 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2439 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 2442 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_mac_ctxt_beacon_changed(mvm, vif); mvm 2451 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_recalc_tsf_id(mvm, vif); mvm 2456 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_mac_ctxt_add(mvm, vif); mvm 2461 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_binding_add_vif(mvm, vif); mvm 2472 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_STA_TYPE)) { mvm 2473 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_add_mcast_sta(mvm, vif); mvm 2480 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_send_add_bcast_sta(mvm, vif); mvm 2482 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rm_mcast_sta(mvm, vif); mvm 2490 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_send_add_bcast_sta(mvm, vif); mvm 2493 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_add_mcast_sta(mvm, vif); mvm 2495 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_send_rm_bcast_sta(mvm, vif); mvm 2520 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_send_low_latency_cmd(mvm, true, mvmvif->id); mvm 2524 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_power_update_mac(mvm); mvm 2526 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_update_quotas(mvm, false, NULL); mvm 2531 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (vif->p2p && mvm->p2p_device_vif) mvm 2532 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, mvm->p2p_device_vif, false, NULL); mvm 2534 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_bt_coex_vif_change(mvm); mvm 2537 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_phy_ctx_count(mvm) > 1) mvm 2538 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_teardown_tdls_peers(mvm); mvm 2540 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_ftm_restart_responder(mvm, vif); mvm 2545 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_power_update_mac(mvm); mvm 2547 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_send_rm_bcast_sta(mvm, vif); mvm 2548 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rm_mcast_sta(mvm, vif); mvm 2550 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_binding_remove_vif(mvm, vif); mvm 2552 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_remove(mvm, vif); mvm 2554 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 2561 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2564 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_prepare_mac_removal(mvm, vif); mvm 2566 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 2569 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (rcu_access_pointer(mvm->csa_vif) == vif) { mvm 2570 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_remove_time_event(mvm, mvmvif, mvm 2572 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c RCU_INIT_POINTER(mvm->csa_vif, NULL); mvm 2576 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (rcu_access_pointer(mvm->csa_tx_blocked_vif) == vif) { mvm 2577 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c RCU_INIT_POINTER(mvm->csa_tx_blocked_vif, NULL); mvm 2578 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->csa_tx_block_bcn_timeout = 0; mvm 2582 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->ap_last_beacon_gp2 = 0; mvm 2587 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_send_low_latency_cmd(mvm, false, mvmvif->id); mvm 2590 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_bt_coex_vif_change(mvm); mvm 2593 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (vif->p2p && mvm->p2p_device_vif) mvm 2594 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, mvm->p2p_device_vif, false, NULL); mvm 2596 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_update_quotas(mvm, false, NULL); mvm 2606 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_STA_TYPE)) mvm 2607 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rm_mcast_sta(mvm, vif); mvm 2608 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_send_rm_bcast_sta(mvm, vif); mvm 2609 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_STA_TYPE)) mvm 2610 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rm_mcast_sta(mvm, vif); mvm 2611 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_binding_remove_vif(mvm, vif); mvm 2613 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_power_update_mac(mvm); mvm 2615 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_remove(mvm, vif); mvm 2617 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 2621 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_bss_info_changed_ap_ibss(struct iwl_mvm *mvm, mvm 2634 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL)) mvm 2635 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to update MAC %pM\n", vif->addr); mvm 2639 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_beacon_changed(mvm, vif)) mvm 2640 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_WARN(mvm, "Failed updating beacon data\n"); mvm 2643 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_CALIB(mvm, "Changing TX Power to %d\n", mvm 2645 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_set_tx_power(mvm, vif, bss_conf->txpower); mvm 2649 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c int ret = iwl_mvm_ftm_start_responder(mvm, vif); mvm 2652 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_WARN(mvm, "Failed to enable FTM responder (%d)\n", mvm 2663 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2665 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 2668 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_SCHED, true); mvm 2672 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_bss_info_changed_station(mvm, vif, bss_conf, changes); mvm 2676 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_bss_info_changed_ap_ibss(mvm, vif, bss_conf, changes); mvm 2680 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_update_mu_groups(mvm, vif); mvm 2687 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 2694 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2698 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c hw_req->req.n_channels > mvm->fw->ucode_capa.n_scan_channels) mvm 2701 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 2702 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_reg_scan_start(mvm, vif, &hw_req->req, &hw_req->ies); mvm 2703 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 2711 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2713 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 2722 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (mvm->scan_status & IWL_MVM_SCAN_REGULAR) mvm 2723 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_REGULAR, true); mvm 2725 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 2735 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2739 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_sta_modify_sleep_tx_count(mvm, sta, reason, num_frames, mvm 2750 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2754 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_sta_modify_sleep_tx_count(mvm, sta, reason, num_frames, mvm 2762 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2772 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 2784 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_tid_queued(mvm, tid_data) == 0) mvm 2796 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_trans_freeze_txq_timer(mvm->trans, txqs, true); mvm 2808 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_trans_freeze_txq_timer(mvm->trans, txqs, false); mvm 2809 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_sta_modify_ps_wake(mvm, sta); mvm 2825 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c void iwl_mvm_sta_pm_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 2833 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (WARN_ON(notif->sta_id >= ARRAY_SIZE(mvm->fw_id_to_mac_id))) mvm 2837 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c sta = rcu_dereference(mvm->fw_id_to_mac_id[notif->sta_id]); mvm 2853 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c __iwl_mvm_mac_sta_notify(mvm->hw, mvm 2882 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 2893 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 2894 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (sta == rcu_access_pointer(mvm->fw_id_to_mac_id[mvm_sta->sta_id])) mvm 2895 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c rcu_assign_pointer(mvm->fw_id_to_mac_id[mvm_sta->sta_id], mvm 2898 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 2901 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_check_uapsd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 2906 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { mvm 2909 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mdata = &mvm->tcm.data[iwl_mvm_vif_from_mac80211(vif)->id]; mvm 2914 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!(mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT)) mvm 2917 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (vif->p2p && !iwl_mvm_is_p2p_scm_uapsd_supported(mvm)) { mvm 2929 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (ether_addr_equal(mvm->uapsd_noagg_bssids[i].addr, bssid)) { mvm 2939 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tdls_check_trigger(struct iwl_mvm *mvm, mvm 2946 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), mvm 2960 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 3016 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3021 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "station %pM state change %d->%d\n", mvm 3043 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c flush_work(&mvm->add_stream_wk); mvm 3051 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3066 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, mvm 3075 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tdls_sta_count(mvm, NULL) == mvm 3077 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctx_count(mvm) > 1)) { mvm 3078 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "refusing TDLS sta\n"); mvm 3083 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_add_sta(mvm, vif, sta); mvm 3085 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_recalc_tdls_state(mvm, vif, true); mvm 3086 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, mvm 3097 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->last_ebs_successful = true; mvm 3098 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_check_uapsd(mvm, vif, sta->addr); mvm 3105 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 3108 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_cfg_he_sta(mvm, vif, mvm_sta->sta_id); mvm 3116 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 3119 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rs_rate_init(mvm, sta, mvmvif->phy_ctxt->channel->band, mvm 3121 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_update_sta(mvm, vif, sta); mvm 3127 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_phy_ctx_count(mvm) > 1) mvm 3128 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_teardown_tdls_peers(mvm); mvm 3131 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, mvm 3135 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0)); mvm 3142 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 3144 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rs_rate_init(mvm, sta, mvmvif->phy_ctxt->channel->band, mvm 3149 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 3152 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); mvm 3155 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->status)); mvm 3161 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 3169 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_rm_sta(mvm, vif, sta); mvm 3171 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_recalc_tdls_state(mvm, vif, false); mvm 3172 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr, mvm 3178 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c &mvm->status))) mvm 3184 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3200 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3202 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->rts_threshold = value; mvm 3211 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3217 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rs_rate_init(mvm, sta, mvmvif->phy_ctxt->channel->band, mvm 3222 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_sf_update(mvm, vif, false); mvm 3229 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3241 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3242 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 3243 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3253 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3260 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3262 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_protect_session(mvm, vif, duration, min_duration, 500, false); mvm 3263 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3271 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3275 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3282 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_sched_scan_start(mvm, vif, req, ies, IWL_MVM_SCAN_SCHED); mvm 3285 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3292 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3295 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3305 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!(mvm->scan_status & IWL_MVM_SCAN_SCHED)) { mvm 3306 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3310 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_SCHED, false); mvm 3311 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3312 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_wait_for_async_handlers(mvm); mvm 3324 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3332 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "leave - hwcrypto disabled\n"); mvm 3338 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!mvm->trans->trans_cfg->gen2) { mvm 3344 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "Use SW encryption for TKIP\n"); mvm 3351 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!iwl_mvm_has_new_tx_api(mvm)) mvm 3363 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 3395 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c !iwl_mvm_has_new_tx_api(mvm)) { mvm 3420 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) && mvm 3422 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, mvm 3428 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) && mvm 3429 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c sta && iwl_mvm_has_new_rx_api(mvm) && mvm 3440 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->trans->num_rx_queues), mvm 3449 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c for (q = 0; q < mvm->trans->num_rx_queues; q++) mvm 3459 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) mvm 3464 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "set hwcrypto key\n"); mvm 3465 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, key_offset); mvm 3467 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_WARN(mvm, "set key failed\n"); mvm 3475 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 3500 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (sta && iwl_mvm_has_new_rx_api(mvm) && mvm 3508 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_is_held(&mvm->mutex)); mvm 3514 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "disable hwcrypto key\n"); mvm 3515 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_remove_sta_key(mvm, vif, sta, key); mvm 3530 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3533 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3535 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3546 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3551 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_update_tkip_key(mvm, vif, keyconf, sta, iv32, phase1key); mvm 3558 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = mvm 3568 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Invalid HOT_SPOT_CMD response\n"); mvm 3574 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_TE(mvm, mvm 3579 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_TE(mvm, "TIME_EVENT_CMD response - UID = 0x%x\n", mvm 3582 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_lock_bh(&mvm->time_event_lock); mvm 3583 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c list_add_tail(&te_data->list, &mvm->aux_roc_te_list); mvm 3584 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_unlock_bh(&mvm->time_event_lock); mvm 3594 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int iwl_mvm_send_aux_roc_cmd(struct iwl_mvm *mvm, mvm 3611 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c .sta_id_and_color = cpu_to_le32(mvm->aux_sta.sta_id), mvm 3613 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_hs20_roc_req_tail *tail = iwl_mvm_chan_info_cmd_tail(mvm, mvm 3615 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c u16 len = sizeof(aux_roc_req) - iwl_mvm_chan_info_padding(mvm); mvm 3618 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_set_chan_info(mvm, &aux_roc_req.channel_info, channel->hw_value, mvm 3625 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c tail->apply_time = cpu_to_le32(iwl_mvm_get_systime(mvm)); mvm 3653 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_TE(mvm, mvm 3660 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 3662 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_lock_bh(&mvm->time_event_lock); mvm 3665 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_unlock_bh(&mvm->time_event_lock); mvm 3673 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_unlock_bh(&mvm->time_event_lock); mvm 3684 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_init_notification_wait(&mvm->notif_wait, &wait_time_event, mvm 3689 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c res = iwl_mvm_send_cmd_pdu(mvm, HOT_SPOT_CMD, 0, len, mvm 3693 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Couldn't send HOT_SPOT_CMD: %d\n", res); mvm 3694 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_remove_notification(&mvm->notif_wait, &wait_time_event); mvm 3699 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c res = iwl_wait_notification(&mvm->notif_wait, &wait_time_event, 1); mvm 3705 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_lock_bh(&mvm->time_event_lock); mvm 3706 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_te_clear_data(mvm, te_data); mvm 3707 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c spin_unlock_bh(&mvm->time_event_lock); mvm 3719 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3725 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "enter (%d, %d, %d)\n", channel->hw_value, mvm 3732 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c flush_work(&mvm->roc_done_wk); mvm 3734 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3738 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 3741 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_send_aux_roc_cmd(mvm, channel, mvm 3745 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "hotspot not supported\n"); mvm 3752 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "vif isn't P2P_DEVICE: %d\n", vif->type); mvm 3758 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c phy_ctxt = &mvm->phy_ctxts[i]; mvm 3767 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_binding_remove_vif(mvm, vif); mvm 3771 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_unref(mvm, mvmvif->phy_ctxt); mvm 3776 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_binding_add_vif(mvm, vif); mvm 3780 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_ref(mvm, mvmvif->phy_ctxt); mvm 3796 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_phy_ctxt_changed(mvm, mvmvif->phy_ctxt, mvm 3806 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c phy_ctxt = iwl_mvm_get_free_phy_ctxt(mvm); mvm 3812 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, &chandef, mvm 3815 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Failed to change PHY context\n"); mvm 3820 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_binding_remove_vif(mvm, vif); mvm 3824 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_unref(mvm, mvmvif->phy_ctxt); mvm 3829 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_binding_add_vif(mvm, vif); mvm 3833 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_ref(mvm, mvmvif->phy_ctxt); mvm 3838 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_start_p2p_roc(mvm, vif, duration, type); mvm 3841 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3842 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "leave\n"); mvm 3849 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3851 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "enter\n"); mvm 3853 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3854 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_stop_roc(mvm); mvm 3855 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3857 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "leave\n"); mvm 3876 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static bool iwl_mvm_is_ftm_responder_chanctx(struct iwl_mvm *mvm, mvm 3884 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 3891 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int __iwl_mvm_add_chanctx(struct iwl_mvm *mvm, mvm 3896 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c bool responder = iwl_mvm_is_ftm_responder_chanctx(mvm, ctx); mvm 3900 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 3902 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "Add channel context\n"); mvm 3904 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c phy_ctxt = iwl_mvm_get_free_phy_ctxt(mvm); mvm 3910 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, def, mvm 3914 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Failed to add PHY context\n"); mvm 3918 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_ref(mvm, phy_ctxt); mvm 3927 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3930 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3931 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = __iwl_mvm_add_chanctx(mvm, ctx); mvm 3932 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3937 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void __iwl_mvm_remove_chanctx(struct iwl_mvm *mvm, mvm 3941 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm_phy_ctxt *phy_ctxt = &mvm->phy_ctxts[*phy_ctxt_id]; mvm 3943 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 3945 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_unref(mvm, phy_ctxt); mvm 3951 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3953 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3954 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c __iwl_mvm_remove_chanctx(mvm, ctx); mvm 3955 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3962 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 3964 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm_phy_ctxt *phy_ctxt = &mvm->phy_ctxts[*phy_ctxt_id]; mvm 3965 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c bool responder = iwl_mvm_is_ftm_responder_chanctx(mvm, ctx); mvm 3977 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 3990 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_bt_coex_vif_change(mvm); mvm 3991 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, def, mvm 3996 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 3999 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int __iwl_mvm_assign_vif_chanctx(struct iwl_mvm *mvm, mvm 4005 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm_phy_ctxt *phy_ctxt = &mvm->phy_ctxts[*phy_ctxt_id]; mvm 4009 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 4040 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_binding_add_vif(mvm, vif); mvm 4048 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_power_update_mac(mvm); mvm 4056 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_update_quotas(mvm, false, NULL); mvm 4060 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_add_snif_sta(mvm, vif); mvm 4068 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_update_quotas(mvm, false, NULL); mvm 4069 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL); mvm 4075 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 4082 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_protect_session(mvm, vif, duration, duration, mvm 4087 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_update_quotas(mvm, false, NULL); mvm 4093 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_binding_remove_vif(mvm, vif); mvm 4094 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_power_update_mac(mvm); mvm 4104 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4107 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4108 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = __iwl_mvm_assign_vif_chanctx(mvm, vif, ctx, false); mvm 4109 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4114 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void __iwl_mvm_unassign_vif_chanctx(struct iwl_mvm *mvm, mvm 4122 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 4124 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_remove_time_event(mvm, mvmvif, &mvmvif->time_event_data); mvm 4132 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_rm_snif_sta(mvm, vif); mvm 4142 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_modify_all_sta_disable_tx(mvm, mvmvif, true); mvm 4145 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c rcu_assign_pointer(mvm->csa_tx_blocked_vif, vif); mvm 4155 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 4157 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_mac_ctxt_changed(mvm, vif, true, NULL); mvm 4163 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_update_quotas(mvm, false, disabled_vif); mvm 4164 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_binding_remove_vif(mvm, vif); mvm 4168 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_power_update_mac(mvm); mvm 4175 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4177 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4178 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c __iwl_mvm_unassign_vif_chanctx(mvm, vif, ctx, false); mvm 4179 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4183 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_switch_vif_chanctx_swap(struct iwl_mvm *mvm, mvm 4188 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4189 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c __iwl_mvm_unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, true); mvm 4190 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c __iwl_mvm_remove_chanctx(mvm, vifs[0].old_ctx); mvm 4192 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = __iwl_mvm_add_chanctx(mvm, vifs[0].new_ctx); mvm 4194 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to add new_ctx during channel switch\n"); mvm 4198 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = __iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].new_ctx, mvm 4201 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, mvm 4207 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_phy_ctx_count(mvm) > 1) mvm 4208 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_teardown_tdls_peers(mvm); mvm 4213 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c __iwl_mvm_remove_chanctx(mvm, vifs[0].new_ctx); mvm 4216 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (__iwl_mvm_add_chanctx(mvm, vifs[0].old_ctx)) { mvm 4217 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to add old_ctx back after failure.\n"); mvm 4221 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (__iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, mvm 4223 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to reassign old_ctx after failure.\n"); mvm 4231 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_nic_restart(mvm, false); mvm 4234 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4240 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_switch_vif_chanctx_reassign(struct iwl_mvm *mvm, mvm 4245 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4246 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c __iwl_mvm_unassign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, true); mvm 4248 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = __iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].new_ctx, mvm 4251 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, mvm 4259 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (__iwl_mvm_assign_vif_chanctx(mvm, vifs[0].vif, vifs[0].old_ctx, mvm 4261 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "failed to reassign old_ctx after failure.\n"); mvm 4269 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_nic_restart(mvm, false); mvm 4272 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4282 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4291 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_switch_vif_chanctx_swap(mvm, vifs); mvm 4294 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_switch_vif_chanctx_reassign(mvm, vifs); mvm 4306 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4308 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return mvm->ibss_manager; mvm 4315 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4319 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Station is not associated to a vif\n"); mvm 4323 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_mac_ctxt_beacon_changed(mvm, mvm_sta->vif); mvm 4333 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int __iwl_mvm_mac_testmode_cmd(struct iwl_mvm *mvm, mvm 4360 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->noa_duration = noa_duration; mvm 4361 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->noa_vif = vif; mvm 4363 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_update_quotas(mvm, true, NULL); mvm 4372 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_enable_beacon_filter(mvm, vif, 0); mvm 4373 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_disable_beacon_filter(mvm, vif, 0); mvm 4383 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4386 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4387 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c err = __iwl_mvm_mac_testmode_cmd(mvm, vif, data, len); mvm 4388 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4408 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int iwl_mvm_schedule_client_csa(struct iwl_mvm *mvm, mvm 4422 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 4428 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c return iwl_mvm_send_cmd_pdu(mvm, mvm 4434 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static int iwl_mvm_old_pre_chan_sw_sta(struct iwl_mvm *mvm, mvm 4455 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_csa_client_absent(mvm, vif); mvm 4458 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c int ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0); mvm 4464 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_schedule_csa_period(mvm, vif, vif->bss_conf.beacon_int, mvm 4475 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4480 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4484 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "pre CSA to freq %d\n", mvm 4487 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_trigger_simple_stop(&mvm->fwrt, mvm 4494 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c rcu_dereference_protected(mvm->csa_vif, mvm 4495 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_is_held(&mvm->mutex)); mvm 4503 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (rcu_dereference_protected(mvm->csa_tx_blocked_vif, mvm 4504 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_is_held(&mvm->mutex))) { mvm 4509 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c rcu_assign_pointer(mvm->csa_vif, vif); mvm 4533 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 4535 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_old_pre_chan_sw_sta(mvm, vif, chsw); mvm 4539 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_schedule_client_csa(mvm, vif, chsw); mvm 4551 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_power_update_ps(mvm); mvm 4556 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_teardown_tdls_peers(mvm); mvm 4559 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4568 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4579 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_CS_MODIFY)) mvm 4594 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_DEBUG_MAC80211(mvm, "Modify CSA on mac %d\n", mvmvif->id); mvm 4596 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c WARN_ON(iwl_mvm_send_cmd_pdu(mvm, mvm 4602 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_flush_no_vif(struct iwl_mvm *mvm, u32 queues, bool drop) mvm 4606 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!iwl_mvm_has_new_tx_api(mvm)) { mvm 4608 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4609 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_flush_tx_path(mvm, mvm 4610 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_flushable_queues(mvm) & queues, 0); mvm 4611 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4613 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_trans_wait_tx_queues_empty(mvm->trans, queues); mvm 4618 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4619 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 4622 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i], mvm 4623 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_is_held(&mvm->mutex)); mvm 4628 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_flush_sta_tids(mvm, i, 0xFF, 0); mvm 4630 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_wait_sta_queues_empty(mvm, mvm 4633 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4639 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4647 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_flush_no_vif(mvm, queues, drop); mvm 4655 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c flush_work(&mvm->add_stream_wk); mvm 4657 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4661 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 4662 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i], mvm 4663 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_is_held(&mvm->mutex)); mvm 4675 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_flush_sta(mvm, mvmsta, false, 0)) mvm 4676 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "flush request fail\n"); mvm 4679 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 4680 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_wait_sta_queues_empty(mvm, mvmsta); mvm 4684 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4689 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!drop && !iwl_mvm_has_new_tx_api(mvm)) mvm 4690 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_trans_wait_tx_queues_empty(mvm->trans, msk); mvm 4696 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4705 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 4709 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4711 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_firmware_running(mvm)) { mvm 4712 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_request_statistics(mvm, false); mvm 4721 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c survey->time = mvm->accu_radio_stats.on_time_rf + mvm 4722 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->radio_stats.on_time_rf; mvm 4725 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c survey->time_rx = mvm->accu_radio_stats.rx_time + mvm 4726 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->radio_stats.rx_time; mvm 4729 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c survey->time_tx = mvm->accu_radio_stats.tx_time + mvm 4730 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->radio_stats.tx_time; mvm 4733 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c survey->time_scan = mvm->accu_radio_stats.on_time_scan + mvm 4734 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->radio_stats.on_time_scan; mvm 4739 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4748 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4764 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4769 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (iwl_mvm_request_statistics(mvm, false)) mvm 4781 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4784 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_event_mlme_callback(struct iwl_mvm *mvm, mvm 4792 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_collect_trig(&(mvm)->fwrt, trig, _fmt); \ mvm 4798 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), mvm 4831 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c static void iwl_mvm_event_bar_rx_callback(struct iwl_mvm *mvm, mvm 4838 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), mvm 4848 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 4858 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4862 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_event_mlme_callback(mvm, vif, event); mvm 4865 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_event_bar_rx_callback(mvm, vif, event); mvm 4868 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_event_frame_timeout_callback(mvm, vif, event->u.ba.sta, mvm 4876 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm, mvm 4880 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c u32 qmask = BIT(mvm->trans->num_rx_queues) - 1; mvm 4884 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!iwl_mvm_has_new_rx_api(mvm)) mvm 4888 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c notif->cookie = mvm->queue_sync_cookie; mvm 4889 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c atomic_set(&mvm->queue_sync_counter, mvm 4890 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->trans->num_rx_queues); mvm 4893 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_notify_rx_queue(mvm, qmask, (u8 *)notif, mvm 4896 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c IWL_ERR(mvm, "Failed to trigger RX queues sync (%d)\n", ret); mvm 4901 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c lockdep_assert_held(&mvm->mutex); mvm 4902 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = wait_event_timeout(mvm->rx_sync_waitq, mvm 4903 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c atomic_read(&mvm->queue_sync_counter) == 0 || mvm 4904 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_is_radio_killed(mvm), mvm 4906 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c WARN_ON_ONCE(!ret && !iwl_mvm_is_radio_killed(mvm)); mvm 4910 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c atomic_set(&mvm->queue_sync_counter, 0); mvm 4912 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->queue_sync_cookie++; mvm 4917 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4923 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4924 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_sync_rx_queues_internal(mvm, &data, sizeof(data)); mvm 4925 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4933 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4940 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4941 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c *stats = mvm->ftm_resp_stats; mvm 4942 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4961 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4964 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4965 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ret = iwl_mvm_ftm_start(mvm, vif, request); mvm 4966 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4975 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 4977 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_lock(&mvm->mutex); mvm 4978 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_mvm_ftm_abort(mvm, request); mvm 4979 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mutex_unlock(&mvm->mutex); mvm 4996 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 5002 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c if (!iwl_mvm_is_csum_supported(mvm)) mvm 373 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h struct iwl_mvm *mvm; mvm 682 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h struct iwl_mvm *mvm; mvm 732 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h struct iwl_mvm *mvm; mvm 1188 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_radio_killed(struct iwl_mvm *mvm) mvm 1190 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return test_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status) || mvm 1191 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status); mvm 1194 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_radio_hw_killed(struct iwl_mvm *mvm) mvm 1196 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return test_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status); mvm 1199 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_firmware_running(struct iwl_mvm *mvm) mvm 1201 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return test_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status); mvm 1208 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_sta_from_staid_rcu(struct iwl_mvm *mvm, u8 sta_id) mvm 1212 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h if (sta_id >= ARRAY_SIZE(mvm->fw_id_to_mac_id)) mvm 1215 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 1225 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_sta_from_staid_protected(struct iwl_mvm *mvm, u8 sta_id) mvm 1229 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h if (sta_id >= ARRAY_SIZE(mvm->fw_id_to_mac_id)) mvm 1232 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[sta_id], mvm 1233 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h lockdep_is_held(&mvm->mutex)); mvm 1243 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_rcu_dereference_vif_id(struct iwl_mvm *mvm, u8 vif_id, bool rcu) mvm 1245 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h if (WARN_ON(vif_id >= ARRAY_SIZE(mvm->vif_id_to_mac))) mvm 1249 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return rcu_dereference(mvm->vif_id_to_mac[vif_id]); mvm 1251 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return rcu_dereference_protected(mvm->vif_id_to_mac[vif_id], mvm 1252 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h lockdep_is_held(&mvm->mutex)); mvm 1255 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_adaptive_dwell_supported(struct iwl_mvm *mvm) mvm 1257 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1261 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_adaptive_dwell_v2_supported(struct iwl_mvm *mvm) mvm 1263 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1267 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_adwell_hb_ap_num_supported(struct iwl_mvm *mvm) mvm 1269 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1273 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_oce_supported(struct iwl_mvm *mvm) mvm 1276 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_OCE); mvm 1279 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_frag_ebs_supported(struct iwl_mvm *mvm) mvm 1281 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_FRAG_EBS); mvm 1284 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_short_beacon_notif_supported(struct iwl_mvm *mvm) mvm 1286 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1290 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_dqa_data_queue(struct iwl_mvm *mvm, u8 queue) mvm 1296 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_dqa_mgmt_queue(struct iwl_mvm *mvm, u8 queue) mvm 1302 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_lar_supported(struct iwl_mvm *mvm) mvm 1304 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool nvm_lar = mvm->nvm_data->lar_enabled; mvm 1305 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool tlv_lar = fw_has_capa(&mvm->fw->ucode_capa, mvm 1315 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h if (mvm->cfg->nvm_type == IWL_NVM_EXT) mvm 1321 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_wifi_mcc_supported(struct iwl_mvm *mvm) mvm 1323 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1325 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h fw_has_capa(&mvm->fw->ucode_capa, mvm 1329 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_bt_is_rrc_supported(struct iwl_mvm *mvm) mvm 1331 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1336 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_csum_supported(struct iwl_mvm *mvm) mvm 1338 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1343 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_mplut_supported(struct iwl_mvm *mvm) mvm 1345 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1351 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_is_p2p_scm_uapsd_supported(struct iwl_mvm *mvm) mvm 1353 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1359 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_has_new_rx_api(struct iwl_mvm *mvm) mvm 1361 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1365 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_has_new_tx_api(struct iwl_mvm *mvm) mvm 1368 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return mvm->trans->trans_cfg->use_tfh; mvm 1371 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_has_unified_ucode(struct iwl_mvm *mvm) mvm 1374 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000; mvm 1377 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_cdb_supported(struct iwl_mvm *mvm) mvm 1388 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1392 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_cdb_scan_api(struct iwl_mvm *mvm) mvm 1399 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000; mvm 1402 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_scan_ext_chan_supported(struct iwl_mvm *mvm) mvm 1404 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1408 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_reduced_config_scan_supported(struct iwl_mvm *mvm) mvm 1410 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1414 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_has_new_rx_stats_api(struct iwl_mvm *mvm) mvm 1416 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1420 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_has_quota_low_latency(struct iwl_mvm *mvm) mvm 1422 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_api(&mvm->fw->ucode_capa, mvm 1426 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_has_tlc_offload(const struct iwl_mvm *mvm) mvm 1428 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1433 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_get_agg_status(struct iwl_mvm *mvm, void *tx_resp) mvm 1435 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h if (iwl_mvm_has_new_tx_api(mvm)) mvm 1441 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_tt_in_fw(struct iwl_mvm *mvm) mvm 1447 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1449 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h fw_has_capa(&mvm->fw->ucode_capa, mvm 1453 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_is_ctdp_supported(struct iwl_mvm *mvm) mvm 1455 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 1462 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline u8 iwl_mvm_mac_ac_to_tx_fifo(struct iwl_mvm *mvm, mvm 1465 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return iwl_mvm_has_new_tx_api(mvm) ? mvm 1477 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void __iwl_mvm_mac_stop(struct iwl_mvm *mvm); mvm 1478 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int __iwl_mvm_mac_start(struct iwl_mvm *mvm); mvm 1484 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm); mvm 1494 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm); mvm 1496 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h u8 iwl_mvm_next_antenna(struct iwl_mvm *mvm, u8 valid, u8 last_idx); mvm 1497 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_get_sync_time(struct iwl_mvm *mvm, u32 *gp2, u64 *boottime); mvm 1498 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h u32 iwl_mvm_get_systime(struct iwl_mvm *mvm); mvm 1501 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int __must_check iwl_mvm_send_cmd(struct iwl_mvm *mvm, mvm 1503 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int __must_check iwl_mvm_send_cmd_pdu(struct iwl_mvm *mvm, u32 id, mvm 1505 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int __must_check iwl_mvm_send_cmd_status(struct iwl_mvm *mvm, mvm 1508 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int __must_check iwl_mvm_send_cmd_pdu_status(struct iwl_mvm *mvm, u32 id, mvm 1511 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_tx_skb_sta(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 1513 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb); mvm 1514 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_set_tx_cmd(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 1517 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_set_tx_cmd_rate(struct iwl_mvm *mvm, struct iwl_tx_cmd *tx_cmd, mvm 1521 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h unsigned int iwl_mvm_max_amsdu_size(struct iwl_mvm *mvm, mvm 1530 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_flush_tx_path(struct iwl_mvm *mvm, u32 tfd_msk, u32 flags); mvm 1531 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_flush_sta(struct iwl_mvm *mvm, void *sta, bool internal, u32 flags); mvm 1532 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_flush_sta_tids(struct iwl_mvm *mvm, u32 sta_id, mvm 1535 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_async_handlers_purge(struct iwl_mvm *mvm); mvm 1546 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline void iwl_mvm_wait_for_async_handlers(struct iwl_mvm *mvm) mvm 1548 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h flush_work(&mvm->async_handlers_wk); mvm 1552 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_handle_rx_statistics(struct iwl_mvm *mvm, mvm 1554 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_statistics(struct iwl_mvm *mvm, mvm 1556 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_request_statistics(struct iwl_mvm *mvm, bool clear); mvm 1557 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_accu_radio_stats(struct iwl_mvm *mvm); mvm 1560 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_nvm_init(struct iwl_mvm *mvm); mvm 1561 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_load_nvm_to_nic(struct iwl_mvm *mvm); mvm 1563 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline u8 iwl_mvm_get_valid_tx_ant(struct iwl_mvm *mvm) mvm 1565 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return mvm->nvm_data && mvm->nvm_data->valid_tx_ant ? mvm 1566 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h mvm->fw->valid_tx_ant & mvm->nvm_data->valid_tx_ant : mvm 1567 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h mvm->fw->valid_tx_ant; mvm 1570 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline u8 iwl_mvm_get_valid_rx_ant(struct iwl_mvm *mvm) mvm 1572 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return mvm->nvm_data && mvm->nvm_data->valid_rx_ant ? mvm 1573 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h mvm->fw->valid_rx_ant & mvm->nvm_data->valid_rx_ant : mvm 1574 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h mvm->fw->valid_rx_ant; mvm 1577 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline void iwl_mvm_toggle_tx_ant(struct iwl_mvm *mvm, u8 *ant) mvm 1579 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h *ant = iwl_mvm_next_antenna(mvm, iwl_mvm_get_valid_tx_ant(mvm), *ant); mvm 1582 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline u32 iwl_mvm_get_phy_config(struct iwl_mvm *mvm) mvm 1586 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h u32 valid_rx_ant = iwl_mvm_get_valid_rx_ant(mvm); mvm 1587 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h u32 valid_tx_ant = iwl_mvm_get_valid_tx_ant(mvm); mvm 1592 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return mvm->fw->phy_config & phy_config; mvm 1595 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_up(struct iwl_mvm *mvm); mvm 1596 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_load_d3_fw(struct iwl_mvm *mvm); mvm 1598 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm); mvm 1599 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_bcast_filter_build_cmd(struct iwl_mvm *mvm, mvm 1606 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_rx_phy_cmd(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 1607 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 1609 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 1611 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 1613 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 1615 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_bar_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 1617 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_notify_rx_queue(struct iwl_mvm *mvm, u32 rxq_mask, mvm 1619 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_queue_notif(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 1621 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_tx_cmd(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 1622 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_mfu_assert_dump_notif(struct iwl_mvm *mvm, mvm 1624 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_send_recovery_cmd(struct iwl_mvm *mvm, u32 flags); mvm 1625 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_ba_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 1626 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_ant_coupling_notif(struct iwl_mvm *mvm, mvm 1628 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_fw_error(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 1629 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_card_state_notif(struct iwl_mvm *mvm, mvm 1631 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_mfuart_notif(struct iwl_mvm *mvm, mvm 1633 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_shared_mem_cfg_notif(struct iwl_mvm *mvm, mvm 1637 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_phy_ctxt_add(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt, mvm 1640 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_phy_ctxt_changed(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt, mvm 1643 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_phy_ctxt_ref(struct iwl_mvm *mvm, mvm 1645 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_phy_ctxt_unref(struct iwl_mvm *mvm, mvm 1647 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_phy_ctx_count(struct iwl_mvm *mvm); mvm 1652 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_mac_ctxt_init(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1653 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1654 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1656 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1657 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_mac_ctxt_beacon_changed(struct iwl_mvm *mvm, mvm 1659 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_mac_ctxt_send_beacon(struct iwl_mvm *mvm, mvm 1662 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_mac_ctxt_send_beacon_cmd(struct iwl_mvm *mvm, mvm 1667 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_mac_ctxt_set_tim(struct iwl_mvm *mvm, mvm 1670 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_beacon_notif(struct iwl_mvm *mvm, mvm 1672 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_missed_beacons_notif(struct iwl_mvm *mvm, mvm 1674 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_stored_beacon_notif(struct iwl_mvm *mvm, mvm 1676 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_mu_mimo_grp_notif(struct iwl_mvm *mvm, mvm 1678 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_sta_pm_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 1679 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_window_status_notif(struct iwl_mvm *mvm, mvm 1681 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_mac_ctxt_recalc_tsf_id(struct iwl_mvm *mvm, mvm 1683 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_probe_resp_data_notif(struct iwl_mvm *mvm, mvm 1685 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_channel_switch_noa_notif(struct iwl_mvm *mvm, mvm 1688 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_binding_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1689 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_binding_remove_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1692 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline size_t iwl_mvm_quota_cmd_size(struct iwl_mvm *mvm) mvm 1694 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return iwl_mvm_has_quota_low_latency(mvm) ? mvm 1700 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h *iwl_mvm_quota_cmd_get_quota(struct iwl_mvm *mvm, mvm 1706 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h if (iwl_mvm_has_quota_low_latency(mvm)) mvm 1713 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_update_quotas(struct iwl_mvm *mvm, bool force_upload, mvm 1717 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_reg_scan_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1720 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_scan_size(struct iwl_mvm *mvm); mvm 1721 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_scan_stop(struct iwl_mvm *mvm, int type, bool notify); mvm 1722 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_max_scan_ie_len(struct iwl_mvm *mvm); mvm 1723 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_report_scan_aborted(struct iwl_mvm *mvm); mvm 1727 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_lmac_scan_complete_notif(struct iwl_mvm *mvm, mvm 1729 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_lmac_scan_iter_complete_notif(struct iwl_mvm *mvm, mvm 1731 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, mvm 1736 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_scan_match_found(struct iwl_mvm *mvm, mvm 1740 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_config_scan(struct iwl_mvm *mvm); mvm 1741 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_umac_scan_complete_notif(struct iwl_mvm *mvm, mvm 1743 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_umac_scan_iter_complete_notif(struct iwl_mvm *mvm, mvm 1748 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir); mvm 1749 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_vif_dbgfs_register(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1750 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_vif_dbgfs_clean(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1752 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline void iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, mvm 1757 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_vif_dbgfs_register(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 1761 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_vif_dbgfs_clean(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 1767 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq); mvm 1768 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg); mvm 1770 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void rs_update_last_rssi(struct iwl_mvm *mvm, mvm 1775 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_power_update_device(struct iwl_mvm *mvm); mvm 1776 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_power_update_mac(struct iwl_mvm *mvm); mvm 1777 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_power_update_ps(struct iwl_mvm *mvm); mvm 1778 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_power_mac_dbgfs_read(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1781 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_power_vif_assoc(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1782 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_power_uapsd_misbehaving_ap_notif(struct iwl_mvm *mvm, mvm 1786 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_leds_init(struct iwl_mvm *mvm); mvm 1787 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_leds_exit(struct iwl_mvm *mvm); mvm 1788 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_leds_sync(struct iwl_mvm *mvm); mvm 1790 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline int iwl_mvm_leds_init(struct iwl_mvm *mvm) mvm 1794 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline void iwl_mvm_leds_exit(struct iwl_mvm *mvm) mvm 1797 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline void iwl_mvm_leds_sync(struct iwl_mvm *mvm) mvm 1815 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h struct iwl_wowlan_status *iwl_mvm_send_wowlan_get_status(struct iwl_mvm *mvm); mvm 1817 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_set_last_nonqos_seq(struct iwl_mvm *mvm, mvm 1821 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_set_last_nonqos_seq(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 1827 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_send_proto_offload(struct iwl_mvm *mvm, mvm 1834 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_send_bt_init_conf(struct iwl_mvm *mvm); mvm 1835 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_bt_coex_notif(struct iwl_mvm *mvm, mvm 1837 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_bt_rssi_event(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1839 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_bt_coex_vif_change(struct iwl_mvm *mvm); mvm 1840 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h u16 iwl_mvm_coex_agg_time_limit(struct iwl_mvm *mvm, mvm 1842 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_bt_coex_is_mimo_allowed(struct iwl_mvm *mvm, mvm 1844 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_bt_coex_is_ant_avail(struct iwl_mvm *mvm, u8 ant); mvm 1845 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_bt_coex_is_shared_ant_avail(struct iwl_mvm *mvm); mvm 1846 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_bt_coex_is_tpc_allowed(struct iwl_mvm *mvm, mvm 1848 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h u8 iwl_mvm_bt_coex_get_single_ant_msk(struct iwl_mvm *mvm, u8 enabled_ants); mvm 1849 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h u8 iwl_mvm_bt_coex_tx_prio(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr, mvm 1863 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_enable_beacon_filter(struct iwl_mvm *mvm, mvm 1866 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_disable_beacon_filter(struct iwl_mvm *mvm, mvm 1870 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1873 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm); mvm 1876 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_update_low_latency(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1880 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_low_latency(struct iwl_mvm *mvm); mvm 1881 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_low_latency_band(struct iwl_mvm *mvm, enum nl80211_band band); mvm 1882 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_send_low_latency_cmd(struct iwl_mvm *mvm, bool low_latency, mvm 1940 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline u32 iwl_mvm_flushable_queues(struct iwl_mvm *mvm) mvm 1942 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return ((BIT(mvm->trans->trans_cfg->base_params->num_of_queues) - 1) & mvm 1946 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline void iwl_mvm_stop_device(struct iwl_mvm *mvm) mvm 1948 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h lockdep_assert_held(&mvm->mutex); mvm 1949 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_fw_cancel_timestamp(&mvm->fwrt); mvm 1950 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status); mvm 1951 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_fw_dbg_stop_sync(&mvm->fwrt); mvm 1952 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_trans_stop_device(mvm->trans); mvm 1953 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_free_fw_paging(&mvm->fwrt); mvm 1954 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_fw_dump_conf_clear(&mvm->fwrt); mvm 1958 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_reconfig_scd(struct iwl_mvm *mvm, int queue, int fifo, int sta_id, mvm 1962 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_tt_tx_backoff(struct iwl_mvm *mvm, u32 backoff); mvm 1963 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_tt_temp_changed(struct iwl_mvm *mvm, u32 temp); mvm 1964 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_temp_notif(struct iwl_mvm *mvm, mvm 1966 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_tt_handler(struct iwl_mvm *mvm); mvm 1967 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_thermal_initialize(struct iwl_mvm *mvm, u32 min_backoff); mvm 1968 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_thermal_exit(struct iwl_mvm *mvm); mvm 1969 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_set_hw_ctkill_state(struct iwl_mvm *mvm, bool state); mvm 1970 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_get_temp(struct iwl_mvm *mvm, s32 *temp); mvm 1971 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_ct_kill_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 1972 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_enter_ctkill(struct iwl_mvm *mvm); mvm 1973 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm); mvm 1974 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_ctdp_command(struct iwl_mvm *mvm, u32 op, u32 budget); mvm 1978 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2, mvm 1980 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_init_mcc(struct iwl_mvm *mvm); mvm 1981 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_chub_update_mcc(struct iwl_mvm *mvm, mvm 1987 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h struct ieee80211_regdomain *iwl_mvm_get_current_regdomain(struct iwl_mvm *mvm, mvm 1989 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_init_fw_regd(struct iwl_mvm *mvm); mvm 1990 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_update_changed_regdom(struct iwl_mvm *mvm); mvm 1993 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1997 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_ftm_start_responder(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 1998 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_ftm_restart_responder(struct iwl_mvm *mvm, mvm 2000 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_ftm_responder_stats(struct iwl_mvm *mvm, mvm 2004 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_ftm_restart(struct iwl_mvm *mvm); mvm 2005 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_ftm_range_resp(struct iwl_mvm *mvm, mvm 2007 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_ftm_lc_notif(struct iwl_mvm *mvm, mvm 2009 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_ftm_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 2011 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_ftm_abort(struct iwl_mvm *mvm, struct cfg80211_pmsr_request *req); mvm 2021 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_tdls_sta_count(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 2022 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_teardown_tdls_peers(struct iwl_mvm *mvm); mvm 2023 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_recalc_tdls_state(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 2038 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_rx_tdls_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 2041 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm, mvm 2045 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h struct ieee80211_vif *iwl_mvm_get_bss_vif(struct iwl_mvm *mvm); mvm 2046 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h bool iwl_mvm_is_vif_assoc(struct iwl_mvm *mvm); mvm 2052 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_recalc_tcm(struct iwl_mvm *mvm); mvm 2053 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_pause_tcm(struct iwl_mvm *mvm, bool with_cancel); mvm 2054 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_resume_tcm(struct iwl_mvm *mvm); mvm 2055 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_tcm_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 2056 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_tcm_rm_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 2059 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_nic_restart(struct iwl_mvm *mvm, bool fw_error); mvm 2060 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h unsigned int iwl_mvm_get_wd_timeout(struct iwl_mvm *mvm, mvm 2063 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_connection_loss(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 2065 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h void iwl_mvm_event_frame_timeout_callback(struct iwl_mvm *mvm, mvm 2070 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b); mvm 2071 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm); mvm 2072 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm); mvm 2081 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline bool iwl_mvm_has_ultra_hb_channel(struct iwl_mvm *mvm) mvm 2083 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return fw_has_capa(&mvm->fw->ucode_capa, mvm 2087 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline void *iwl_mvm_chan_info_cmd_tail(struct iwl_mvm *mvm, mvm 2090 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return (u8 *)ci + (iwl_mvm_has_ultra_hb_channel(mvm) ? mvm 2095 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline size_t iwl_mvm_chan_info_padding(struct iwl_mvm *mvm) mvm 2097 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h return iwl_mvm_has_ultra_hb_channel(mvm) ? 0 : mvm 2102 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h static inline void iwl_mvm_set_chan_info(struct iwl_mvm *mvm, mvm 2107 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h if (iwl_mvm_has_ultra_hb_channel(mvm)) { mvm 2124 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_set_chan_info_chandef(struct iwl_mvm *mvm, mvm 2128 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_mvm_set_chan_info(mvm, ci, chandef->chan->hw_value, mvm 91 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c static int iwl_nvm_write_chunk(struct iwl_mvm *mvm, u16 section, mvm 112 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 120 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, mvm 130 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c static int iwl_nvm_read_chunk(struct iwl_mvm *mvm, u16 section, mvm 151 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 174 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_EEPROM(mvm->trans->dev, mvm 179 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_EEPROM(mvm->trans->dev, mvm 181 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret, mvm->cfg->name); mvm 188 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, "NVM ACCESS response with invalid offset %d\n", mvm 203 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c static int iwl_nvm_write_section(struct iwl_mvm *mvm, u16 section, mvm 216 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_nvm_write_chunk(mvm, section, offset, mvm 237 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c static int iwl_nvm_read_section(struct iwl_mvm *mvm, u16 section, mvm 252 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->trans->trans_cfg->base_params->eeprom_size) { mvm 253 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, "EEPROM size is too small for NVM\n"); mvm 257 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_nvm_read_chunk(mvm, section, offset, length, data); mvm 259 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_EEPROM(mvm->trans->dev, mvm 267 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c iwl_nvm_fixups(mvm->trans->hw_id, section, data, offset); mvm 269 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_EEPROM(mvm->trans->dev, mvm 275 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c iwl_parse_nvm_sections(struct iwl_mvm *mvm) mvm 277 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c struct iwl_nvm_section *sections = mvm->nvm_sections; mvm 284 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (mvm->trans->cfg->nvm_type == IWL_NVM) { mvm 285 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (!mvm->nvm_sections[NVM_SECTION_TYPE_SW].data || mvm 286 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c !mvm->nvm_sections[mvm->cfg->nvm_hw_section_num].data) { mvm 287 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, "Can't parse empty OTP/NVM sections\n"); mvm 291 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (mvm->trans->cfg->nvm_type == IWL_NVM_SDP) mvm 297 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (!mvm->nvm_sections[NVM_SECTION_TYPE_SW].data || mvm 298 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c !mvm->nvm_sections[regulatory_type].data) { mvm 299 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, mvm 304 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (!mvm->nvm_sections[mvm->cfg->nvm_hw_section_num].data && mvm 305 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c !mvm->nvm_sections[NVM_SECTION_TYPE_MAC_OVERRIDE].data) { mvm 306 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, mvm 312 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (mvm->trans->cfg->nvm_type == IWL_NVM_EXT && mvm 313 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c !mvm->nvm_sections[NVM_SECTION_TYPE_PHY_SKU].data) { mvm 314 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, mvm 320 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c hw = (const __be16 *)sections[mvm->cfg->nvm_hw_section_num].data; mvm 327 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c regulatory = mvm->trans->cfg->nvm_type == IWL_NVM_SDP ? mvm 332 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c fw_has_capa(&mvm->fw->ucode_capa, mvm 335 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c return iwl_parse_nvm_data(mvm->trans, mvm->cfg, hw, sw, calib, mvm 337 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->fw->valid_tx_ant, mvm->fw->valid_rx_ant, mvm 342 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c int iwl_mvm_load_nvm_to_nic(struct iwl_mvm *mvm) mvm 345 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c struct iwl_nvm_section *sections = mvm->nvm_sections; mvm 347 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_EEPROM(mvm->trans->dev, "'Write to NVM\n"); mvm 349 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c for (i = 0; i < ARRAY_SIZE(mvm->nvm_sections); i++) { mvm 350 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (!mvm->nvm_sections[i].data || !mvm->nvm_sections[i].length) mvm 352 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_nvm_write_section(mvm, i, sections[i].data, mvm 355 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, "iwl_mvm_send_cmd failed: %d\n", ret); mvm 362 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c int iwl_nvm_init(struct iwl_mvm *mvm) mvm 367 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c const char *nvm_file_C = mvm->cfg->default_nvm_file_C_step; mvm 369 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (WARN_ON_ONCE(mvm->cfg->nvm_hw_section_num >= NVM_MAX_NUM_SECTIONS)) mvm 374 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_EEPROM(mvm->trans->dev, "Read from NVM\n"); mvm 376 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c nvm_buffer = kmalloc(mvm->trans->trans_cfg->base_params->eeprom_size, mvm 382 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_nvm_read_section(mvm, section, nvm_buffer, mvm 397 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c iwl_nvm_fixups(mvm->trans->hw_id, section, temp, ret); mvm 399 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_sections[section].data = temp; mvm 400 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_sections[section].length = ret; mvm 405 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_sw_blob.data = temp; mvm 406 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_sw_blob.size = ret; mvm 409 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_calib_blob.data = temp; mvm 410 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_calib_blob.size = ret; mvm 413 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_prod_blob.data = temp; mvm 414 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_prod_blob.size = ret; mvm 417 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_phy_sku_blob.data = temp; mvm 418 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_phy_sku_blob.size = ret; mvm 422 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_reg_blob.data = temp; mvm 423 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_reg_blob.size = ret; mvm 426 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (section == mvm->cfg->nvm_hw_section_num) { mvm 427 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_hw_blob.data = temp; mvm 428 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_hw_blob.size = ret; mvm 435 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_ERR(mvm, "OTP is blank\n"); mvm 439 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (mvm->nvm_file_name) { mvm 441 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_read_external_nvm(mvm->trans, mvm->nvm_file_name, mvm 442 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_sections); mvm 444 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_file_name = nvm_file_C; mvm 447 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_file_name) { mvm 449 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_read_external_nvm(mvm->trans, mvm 450 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_file_name, mvm 451 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_sections); mvm 461 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_data = iwl_parse_nvm_sections(mvm); mvm 462 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (!mvm->nvm_data) mvm 464 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_EEPROM(mvm->trans->dev, "nvm version = %x\n", mvm 465 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->nvm_data->nvm_version); mvm 471 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2, mvm 491 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (WARN_ON_ONCE(!iwl_mvm_is_lar_supported(mvm))) mvm 496 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_LAR(mvm, "send MCC update to FW with '%c%c' src = %d\n", mvm 499 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 506 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 551 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_LAR(mvm, mvm 560 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c int iwl_mvm_init_mcc(struct iwl_mvm *mvm) mvm 568 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (mvm->cfg->nvm_type == IWL_NVM_EXT) { mvm 569 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c tlv_lar = fw_has_capa(&mvm->fw->ucode_capa, mvm 571 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c nvm_lar = mvm->nvm_data->lar_enabled; mvm 573 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_INFO(mvm, mvm 579 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (!iwl_mvm_is_lar_supported(mvm)) mvm 586 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c retval = iwl_mvm_init_fw_regd(mvm); mvm 596 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c mvm->lar_regdom_set = false; mvm 598 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c regd = iwl_mvm_get_current_regdomain(mvm, NULL); mvm 602 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (iwl_mvm_is_wifi_mcc_supported(mvm) && mvm 603 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c !iwl_acpi_get_mcc(mvm->dev, mcc)) { mvm 605 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c regd = iwl_mvm_get_regdomain(mvm->hw->wiphy, mcc, mvm 611 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c retval = regulatory_set_wiphy_regd_sync_rtnl(mvm->hw->wiphy, regd); mvm 616 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c void iwl_mvm_rx_chub_update_mcc(struct iwl_mvm *mvm, mvm 626 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c lockdep_assert_held(&mvm->mutex); mvm 628 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (iwl_mvm_is_vif_assoc(mvm) && notif->source_id == MCC_SOURCE_WIFI) { mvm 629 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_LAR(mvm, "Ignore mcc update while associated\n"); mvm 633 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c if (WARN_ON_ONCE(!iwl_mvm_is_lar_supported(mvm))) mvm 641 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_LAR(mvm, mvm 644 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c regd = iwl_mvm_get_regdomain(mvm->hw->wiphy, mcc, src, NULL); mvm 648 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c wgds_tbl_idx = iwl_mvm_get_sar_geo_profile(mvm); mvm 650 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_INFO(mvm, "SAR WGDS is disabled (%d)\n", mvm 653 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c IWL_DEBUG_INFO(mvm, "SAR WGDS: geo profile %d is configured\n", mvm 656 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c regulatory_set_wiphy_regd(mvm->hw->wiphy, regd); mvm 84 drivers/net/wireless/intel/iwlwifi/mvm/offloading.c int iwl_mvm_send_proto_offload(struct iwl_mvm *mvm, mvm 104 drivers/net/wireless/intel/iwlwifi/mvm/offloading.c u32 capa_flags = mvm->fw->ucode_capa.flags; mvm 249 drivers/net/wireless/intel/iwlwifi/mvm/offloading.c return iwl_mvm_send_cmd(mvm, &hcmd); mvm 142 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 145 drivers/net/wireless/intel/iwlwifi/mvm/ops.c u32 phy_config = iwl_mvm_get_phy_config(mvm); mvm 155 drivers/net/wireless/intel/iwlwifi/mvm/ops.c reg_val |= CSR_HW_REV_STEP(mvm->trans->hw_rev) << mvm 157 drivers/net/wireless/intel/iwlwifi/mvm/ops.c reg_val |= CSR_HW_REV_DASH(mvm->trans->hw_rev) << mvm 176 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_8000) mvm 179 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (iwl_fw_dbg_is_d3_debug_enabled(&mvm->fwrt)) mvm 182 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_trans_set_bits_mask(mvm->trans, CSR_HW_IF_CONFIG_REG, mvm 193 drivers/net/wireless/intel/iwlwifi/mvm/ops.c IWL_DEBUG_INFO(mvm, "Radio type=0x%x-0x%x-0x%x\n", radio_cfg_type, mvm 201 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (!mvm->trans->cfg->apmg_not_supported) mvm 202 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_set_bits_mask_prph(mvm->trans, APMG_PS_CTRL_REG, mvm 232 drivers/net/wireless/intel/iwlwifi/mvm/ops.c void (*fn)(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 522 drivers/net/wireless/intel/iwlwifi/mvm/ops.c static u32 iwl_mvm_min_backoff(struct iwl_mvm *mvm) mvm 524 drivers/net/wireless/intel/iwlwifi/mvm/ops.c const struct iwl_pwr_tx_backoff *backoff = mvm->cfg->pwr_tx_backoffs; mvm 530 drivers/net/wireless/intel/iwlwifi/mvm/ops.c dflt_pwr_limit = iwl_acpi_get_pwr_limit(mvm->dev); mvm 544 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = mvm 549 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_lock(&mvm->mutex); mvm 552 drivers/net/wireless/intel/iwlwifi/mvm/ops.c rcu_dereference_protected(mvm->csa_tx_blocked_vif, mvm 553 drivers/net/wireless/intel/iwlwifi/mvm/ops.c lockdep_is_held(&mvm->mutex)); mvm 559 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_modify_all_sta_disable_tx(mvm, mvmvif, false); mvm 560 drivers/net/wireless/intel/iwlwifi/mvm/ops.c RCU_INIT_POINTER(mvm->csa_tx_blocked_vif, NULL); mvm 562 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_unlock(&mvm->mutex); mvm 567 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = ctx; mvm 569 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_lock(&mvm->mutex); mvm 576 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = ctx; mvm 578 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_unlock(&mvm->mutex); mvm 588 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = (struct iwl_mvm *)ctx; mvm 591 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_lock(&mvm->mutex); mvm 592 drivers/net/wireless/intel/iwlwifi/mvm/ops.c ret = iwl_mvm_send_cmd(mvm, host_cmd); mvm 593 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_unlock(&mvm->mutex); mvm 617 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm; mvm 631 drivers/net/wireless/intel/iwlwifi/mvm/ops.c BUILD_BUG_ON(ARRAY_SIZE(mvm->fw_id_to_mac_id) != IWL_MVM_STATION_COUNT); mvm 654 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 655 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->dev = trans->dev; mvm 656 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->trans = trans; mvm 657 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->cfg = cfg; mvm 658 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->fw = fw; mvm 659 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->hw = hw; mvm 661 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_runtime_init(&mvm->fwrt, trans, fw, &iwl_mvm_fwrt_ops, mvm, mvm 664 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->init_status = 0; mvm 666 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (iwl_mvm_has_new_rx_api(mvm)) { mvm 682 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->fw_restart = iwlwifi_mod_params.fw_restart ? -1 : 0; mvm 684 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->aux_queue = IWL_MVM_DQA_AUX_QUEUE; mvm 685 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->snif_queue = IWL_MVM_DQA_INJECT_MONITOR_QUEUE; mvm 686 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->probe_queue = IWL_MVM_DQA_AP_PROBE_RESP_QUEUE; mvm 687 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->p2p_dev_queue = IWL_MVM_DQA_P2P_DEVICE_QUEUE; mvm 689 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->sf_state = SF_UNINIT; mvm 690 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (iwl_mvm_has_unified_ucode(mvm)) mvm 691 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_set_current_image(&mvm->fwrt, IWL_UCODE_REGULAR); mvm 693 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_set_current_image(&mvm->fwrt, IWL_UCODE_INIT); mvm 694 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->drop_bcn_ap_mode = true; mvm 696 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_init(&mvm->mutex); mvm 697 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_lock_init(&mvm->async_handlers_lock); mvm 698 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_LIST_HEAD(&mvm->time_event_list); mvm 699 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_LIST_HEAD(&mvm->aux_roc_te_list); mvm 700 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_LIST_HEAD(&mvm->async_handlers_list); mvm 701 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_lock_init(&mvm->time_event_lock); mvm 702 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_LIST_HEAD(&mvm->ftm_initiator.loc_list); mvm 704 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_WORK(&mvm->async_handlers_wk, iwl_mvm_async_handlers_wk); mvm 705 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_WORK(&mvm->roc_done_wk, iwl_mvm_roc_done_wk); mvm 706 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_DELAYED_WORK(&mvm->tdls_cs.dwork, iwl_mvm_tdls_ch_switch_work); mvm 707 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_DELAYED_WORK(&mvm->scan_timeout_dwork, iwl_mvm_scan_timeout_wk); mvm 708 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_WORK(&mvm->add_stream_wk, iwl_mvm_add_new_dqa_stream_wk); mvm 709 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_LIST_HEAD(&mvm->add_stream_txqs); mvm 711 drivers/net/wireless/intel/iwlwifi/mvm/ops.c init_waitqueue_head(&mvm->rx_sync_waitq); mvm 713 drivers/net/wireless/intel/iwlwifi/mvm/ops.c atomic_set(&mvm->queue_sync_counter, 0); mvm 715 drivers/net/wireless/intel/iwlwifi/mvm/ops.c SET_IEEE80211_DEV(mvm->hw, mvm->trans->dev); mvm 717 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_lock_init(&mvm->tcm.lock); mvm 718 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_DELAYED_WORK(&mvm->tcm.work, iwl_mvm_tcm_work); mvm 719 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->tcm.ts = jiffies; mvm 720 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->tcm.ll_ts = jiffies; mvm 721 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->tcm.uapsd_nonagg_ts = jiffies; mvm 723 drivers/net/wireless/intel/iwlwifi/mvm/ops.c INIT_DELAYED_WORK(&mvm->cs_tx_unblock_dwork, iwl_mvm_tx_unblock_dwork); mvm 733 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22560) mvm 759 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_22560; mvm 775 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_get_wd_timeout(mvm, NULL, false, true); mvm 777 drivers/net/wireless/intel/iwlwifi/mvm/ops.c snprintf(mvm->hw->wiphy->fw_version, mvm 778 drivers/net/wireless/intel/iwlwifi/mvm/ops.c sizeof(mvm->hw->wiphy->fw_version), mvm 782 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_trans_configure(mvm->trans, &trans_cfg); mvm 785 drivers/net/wireless/intel/iwlwifi/mvm/ops.c trans->dbg.dest_tlv = mvm->fw->dbg.dest_tlv; mvm 786 drivers/net/wireless/intel/iwlwifi/mvm/ops.c trans->dbg.n_dest_reg = mvm->fw->dbg.n_dest_reg; mvm 787 drivers/net/wireless/intel/iwlwifi/mvm/ops.c memcpy(trans->dbg.conf_tlv, mvm->fw->dbg.conf_tlv, mvm 789 drivers/net/wireless/intel/iwlwifi/mvm/ops.c trans->dbg.trigger_tlv = mvm->fw->dbg.trigger_tlv; mvm 791 drivers/net/wireless/intel/iwlwifi/mvm/ops.c trans->iml = mvm->fw->iml; mvm 792 drivers/net/wireless/intel/iwlwifi/mvm/ops.c trans->iml_len = mvm->fw->iml_len; mvm 795 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_notification_wait_init(&mvm->notif_wait); mvm 798 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->phy_db = iwl_phy_db_init(trans); mvm 799 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (!mvm->phy_db) { mvm 800 drivers/net/wireless/intel/iwlwifi/mvm/ops.c IWL_ERR(mvm, "Cannot init phy_db\n"); mvm 804 drivers/net/wireless/intel/iwlwifi/mvm/ops.c IWL_INFO(mvm, "Detected %s, REV=0x%X\n", mvm 805 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->cfg->name, mvm->trans->hw_rev); mvm 808 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->nvm_file_name = iwlwifi_mod_params.nvm_file; mvm 810 drivers/net/wireless/intel/iwlwifi/mvm/ops.c IWL_DEBUG_EEPROM(mvm->trans->dev, mvm 813 drivers/net/wireless/intel/iwlwifi/mvm/ops.c err = iwl_trans_start_hw(mvm->trans); mvm 817 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_lock(&mvm->mutex); mvm 818 drivers/net/wireless/intel/iwlwifi/mvm/ops.c err = iwl_run_init_mvm_ucode(mvm, true); mvm 820 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_dbg_error_collect(&mvm->fwrt, FW_DBG_TRIGGER_DRIVER); mvm 822 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_stop_device(mvm); mvm 823 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_unlock(&mvm->mutex); mvm 825 drivers/net/wireless/intel/iwlwifi/mvm/ops.c IWL_ERR(mvm, "Failed to run INIT ucode: %d\n", err); mvm 829 drivers/net/wireless/intel/iwlwifi/mvm/ops.c scan_size = iwl_mvm_scan_size(mvm); mvm 831 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->scan_cmd = kmalloc(scan_size, GFP_KERNEL); mvm 832 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (!mvm->scan_cmd) mvm 836 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->last_ebs_successful = true; mvm 838 drivers/net/wireless/intel/iwlwifi/mvm/ops.c err = iwl_mvm_mac_setup_register(mvm); mvm 841 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->hw_registered = true; mvm 843 drivers/net/wireless/intel/iwlwifi/mvm/ops.c min_backoff = iwl_mvm_min_backoff(mvm); mvm 844 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_thermal_initialize(mvm, min_backoff); mvm 846 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_dbgfs_register(mvm, dbgfs_dir); mvm 848 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (!iwl_mvm_has_new_rx_stats_api(mvm)) mvm 849 drivers/net/wireless/intel/iwlwifi/mvm/ops.c memset(&mvm->rx_stats_v3, 0, mvm 852 drivers/net/wireless/intel/iwlwifi/mvm/ops.c memset(&mvm->rx_stats, 0, sizeof(struct mvm_statistics_rx)); mvm 854 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_toggle_tx_ant(mvm, &mvm->mgmt_last_antenna_idx); mvm 859 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_flush_dumps(&mvm->fwrt); mvm 860 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_runtime_free(&mvm->fwrt); mvm 864 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_phy_db_free(mvm->phy_db); mvm 865 drivers/net/wireless/intel/iwlwifi/mvm/ops.c kfree(mvm->scan_cmd); mvm 868 drivers/net/wireless/intel/iwlwifi/mvm/ops.c ieee80211_free_hw(mvm->hw); mvm 874 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 877 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_leds_exit(mvm); mvm 879 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_thermal_exit(mvm); mvm 881 drivers/net/wireless/intel/iwlwifi/mvm/ops.c ieee80211_unregister_hw(mvm->hw); mvm 883 drivers/net/wireless/intel/iwlwifi/mvm/ops.c kfree(mvm->scan_cmd); mvm 884 drivers/net/wireless/intel/iwlwifi/mvm/ops.c kfree(mvm->mcast_filter_cmd); mvm 885 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->mcast_filter_cmd = NULL; mvm 887 drivers/net/wireless/intel/iwlwifi/mvm/ops.c kfree(mvm->error_recovery_buf); mvm 888 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->error_recovery_buf = NULL; mvm 890 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_trans_op_mode_leave(mvm->trans); mvm 892 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_phy_db_free(mvm->phy_db); mvm 893 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->phy_db = NULL; mvm 895 drivers/net/wireless/intel/iwlwifi/mvm/ops.c kfree(mvm->nvm_data); mvm 897 drivers/net/wireless/intel/iwlwifi/mvm/ops.c kfree(mvm->nvm_sections[i].data); mvm 899 drivers/net/wireless/intel/iwlwifi/mvm/ops.c cancel_delayed_work_sync(&mvm->tcm.work); mvm 901 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_runtime_free(&mvm->fwrt); mvm 902 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_destroy(&mvm->mutex); mvm 904 drivers/net/wireless/intel/iwlwifi/mvm/ops.c ieee80211_free_hw(mvm->hw); mvm 911 drivers/net/wireless/intel/iwlwifi/mvm/ops.c void (*fn)(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb); mvm 914 drivers/net/wireless/intel/iwlwifi/mvm/ops.c void iwl_mvm_async_handlers_purge(struct iwl_mvm *mvm) mvm 918 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_lock_bh(&mvm->async_handlers_lock); mvm 919 drivers/net/wireless/intel/iwlwifi/mvm/ops.c list_for_each_entry_safe(entry, tmp, &mvm->async_handlers_list, list) { mvm 924 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_unlock_bh(&mvm->async_handlers_lock); mvm 929 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = mvm 940 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_lock_bh(&mvm->async_handlers_lock); mvm 941 drivers/net/wireless/intel/iwlwifi/mvm/ops.c list_splice_init(&mvm->async_handlers_list, &local_list); mvm 942 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_unlock_bh(&mvm->async_handlers_lock); mvm 946 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_lock(&mvm->mutex); mvm 947 drivers/net/wireless/intel/iwlwifi/mvm/ops.c entry->fn(mvm, &entry->rxb); mvm 951 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mutex_unlock(&mvm->mutex); mvm 956 drivers/net/wireless/intel/iwlwifi/mvm/ops.c static inline void iwl_mvm_rx_check_trigger(struct iwl_mvm *mvm, mvm 963 drivers/net/wireless/intel/iwlwifi/mvm/ops.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, mvm 979 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 986 drivers/net/wireless/intel/iwlwifi/mvm/ops.c static void iwl_mvm_rx_common(struct iwl_mvm *mvm, mvm 993 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_dbg_tlv_time_point(&mvm->fwrt, mvm 995 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_check_trigger(mvm, pkt); mvm 1002 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_notification_wait_notify(&mvm->notif_wait, pkt); mvm 1012 drivers/net/wireless/intel/iwlwifi/mvm/ops.c rx_h->fn(mvm, rxb); mvm 1026 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_lock(&mvm->async_handlers_lock); mvm 1027 drivers/net/wireless/intel/iwlwifi/mvm/ops.c list_add_tail(&entry->list, &mvm->async_handlers_list); mvm 1028 drivers/net/wireless/intel/iwlwifi/mvm/ops.c spin_unlock(&mvm->async_handlers_lock); mvm 1029 drivers/net/wireless/intel/iwlwifi/mvm/ops.c schedule_work(&mvm->async_handlers_wk); mvm 1039 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1043 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_rx_mpdu(mvm, napi, rxb); mvm 1045 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_rx_phy_cmd(mvm, rxb); mvm 1047 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_common(mvm, rxb, pkt); mvm 1055 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1059 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_mpdu_mq(mvm, napi, rxb, 0); mvm 1062 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_queue_notif(mvm, napi, rxb, 0); mvm 1064 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_frame_release(mvm, napi, rxb, 0); mvm 1066 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_bar_frame_release(mvm, napi, rxb, 0); mvm 1068 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_monitor_no_data(mvm, napi, rxb, 0); mvm 1070 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_common(mvm, rxb, pkt); mvm 1076 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1082 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_trans_block_txq_ptrs(mvm->trans, false); mvm 1085 drivers/net/wireless/intel/iwlwifi/mvm/ops.c static int iwl_mvm_is_static_queue(struct iwl_mvm *mvm, int queue) mvm 1087 drivers/net/wireless/intel/iwlwifi/mvm/ops.c return queue == mvm->aux_queue || queue == mvm->probe_queue || mvm 1088 drivers/net/wireless/intel/iwlwifi/mvm/ops.c queue == mvm->p2p_dev_queue || queue == mvm->snif_queue; mvm 1094 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1103 drivers/net/wireless/intel/iwlwifi/mvm/ops.c sta_id = iwl_mvm_has_new_tx_api(mvm) ? mvm 1104 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->tvqm_info[hw_queue].sta_id : mvm 1105 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->queue_info[hw_queue].ra_sta_id; mvm 1107 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (WARN_ON_ONCE(sta_id >= ARRAY_SIZE(mvm->fw_id_to_mac_id))) mvm 1112 drivers/net/wireless/intel/iwlwifi/mvm/ops.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 1117 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (iwl_mvm_is_static_queue(mvm, hw_queue)) { mvm 1119 drivers/net/wireless/intel/iwlwifi/mvm/ops.c ieee80211_stop_queues(mvm->hw); mvm 1121 drivers/net/wireless/intel/iwlwifi/mvm/ops.c ieee80211_wake_queues(mvm->hw); mvm 1126 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 1127 drivers/net/wireless/intel/iwlwifi/mvm/ops.c int tid = mvm->tvqm_info[hw_queue].txq_tid; mvm 1131 drivers/net/wireless/intel/iwlwifi/mvm/ops.c tid_bitmap = mvm->queue_info[hw_queue].tid_bitmap; mvm 1145 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_mac_itxq_xmit(mvm->hw, txq); mvm 1162 drivers/net/wireless/intel/iwlwifi/mvm/ops.c static void iwl_mvm_set_rfkill_state(struct iwl_mvm *mvm) mvm 1164 drivers/net/wireless/intel/iwlwifi/mvm/ops.c bool state = iwl_mvm_is_radio_killed(mvm); mvm 1167 drivers/net/wireless/intel/iwlwifi/mvm/ops.c wake_up(&mvm->rx_sync_waitq); mvm 1169 drivers/net/wireless/intel/iwlwifi/mvm/ops.c wiphy_rfkill_set_hw_state(mvm->hw->wiphy, state); mvm 1172 drivers/net/wireless/intel/iwlwifi/mvm/ops.c void iwl_mvm_set_hw_ctkill_state(struct iwl_mvm *mvm, bool state) mvm 1175 drivers/net/wireless/intel/iwlwifi/mvm/ops.c set_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status); mvm 1177 drivers/net/wireless/intel/iwlwifi/mvm/ops.c clear_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status); mvm 1179 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_set_rfkill_state(mvm); mvm 1184 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1185 drivers/net/wireless/intel/iwlwifi/mvm/ops.c bool rfkill_safe_init_done = READ_ONCE(mvm->rfkill_safe_init_done); mvm 1186 drivers/net/wireless/intel/iwlwifi/mvm/ops.c bool unified = iwl_mvm_has_unified_ucode(mvm); mvm 1189 drivers/net/wireless/intel/iwlwifi/mvm/ops.c set_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status); mvm 1191 drivers/net/wireless/intel/iwlwifi/mvm/ops.c clear_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status); mvm 1193 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_set_rfkill_state(mvm); mvm 1197 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_abort_notification_waits(&mvm->notif_wait); mvm 1215 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1219 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_trans_free_tx_cmd(mvm->trans, info->driver_data[1]); mvm 1220 drivers/net/wireless/intel/iwlwifi/mvm/ops.c ieee80211_free_txskb(mvm->hw, skb); mvm 1239 drivers/net/wireless/intel/iwlwifi/mvm/ops.c void iwl_mvm_nic_restart(struct iwl_mvm *mvm, bool fw_error) mvm 1241 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_abort_notification_waits(&mvm->notif_wait); mvm 1242 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_dbg_tlv_del_timers(mvm->trans); mvm 1254 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_report_scan_aborted(mvm); mvm 1262 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (!mvm->fw_restart && fw_error) { mvm 1263 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_error_collect(&mvm->fwrt); mvm 1264 drivers/net/wireless/intel/iwlwifi/mvm/ops.c } else if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { mvm 1267 drivers/net/wireless/intel/iwlwifi/mvm/ops.c IWL_ERR(mvm, mvm 1276 drivers/net/wireless/intel/iwlwifi/mvm/ops.c IWL_ERR(mvm, "Module is being unloaded - abort\n"); mvm 1285 drivers/net/wireless/intel/iwlwifi/mvm/ops.c reprobe->dev = mvm->trans->dev; mvm 1289 drivers/net/wireless/intel/iwlwifi/mvm/ops.c &mvm->status)) { mvm 1290 drivers/net/wireless/intel/iwlwifi/mvm/ops.c IWL_ERR(mvm, "HW restart already requested, but not started\n"); mvm 1291 drivers/net/wireless/intel/iwlwifi/mvm/ops.c } else if (mvm->fwrt.cur_fw_img == IWL_UCODE_REGULAR && mvm 1292 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->hw_registered && mvm 1293 drivers/net/wireless/intel/iwlwifi/mvm/ops.c !test_bit(STATUS_TRANS_DEAD, &mvm->trans->status)) { mvm 1294 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (mvm->fw->ucode_capa.error_log_size) { mvm 1295 drivers/net/wireless/intel/iwlwifi/mvm/ops.c u32 src_size = mvm->fw->ucode_capa.error_log_size; mvm 1296 drivers/net/wireless/intel/iwlwifi/mvm/ops.c u32 src_addr = mvm->fw->ucode_capa.error_log_addr; mvm 1300 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->error_recovery_buf = recover_buf; mvm 1301 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_trans_read_mem_bytes(mvm->trans, mvm 1308 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_error_collect(&mvm->fwrt); mvm 1310 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (fw_error && mvm->fw_restart > 0) mvm 1311 drivers/net/wireless/intel/iwlwifi/mvm/ops.c mvm->fw_restart--; mvm 1312 drivers/net/wireless/intel/iwlwifi/mvm/ops.c set_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status); mvm 1313 drivers/net/wireless/intel/iwlwifi/mvm/ops.c ieee80211_restart_hw(mvm->hw); mvm 1319 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1321 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (!test_bit(STATUS_TRANS_DEAD, &mvm->trans->status)) mvm 1322 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_dump_nic_error_log(mvm); mvm 1324 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_nic_restart(mvm, true); mvm 1329 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1332 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_nic_restart(mvm, true); mvm 1359 drivers/net/wireless/intel/iwlwifi/mvm/ops.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1364 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_frame_release(mvm, napi, rxb, queue); mvm 1367 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_queue_notif(mvm, napi, rxb, queue); mvm 1369 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_mvm_rx_mpdu_mq(mvm, napi, rxb, queue); mvm 141 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c static void iwl_mvm_phy_ctxt_cmd_data(struct iwl_mvm *mvm, mvm 148 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c iwl_mvm_chan_info_cmd_tail(mvm, &cmd->ci); mvm 151 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c iwl_mvm_set_chan_info_chandef(mvm, &cmd->ci, chandef); mvm 164 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c if (active_cnt == 1 && iwl_mvm_rx_diversity_allowed(mvm)) { mvm 169 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c tail->rxchain_info = cpu_to_le32(iwl_mvm_get_valid_rx_ant(mvm) << mvm 175 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c if (unlikely(mvm->dbgfs_rx_phyinfo)) mvm 176 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c tail->rxchain_info = cpu_to_le32(mvm->dbgfs_rx_phyinfo); mvm 179 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c tail->txchain_info = cpu_to_le32(iwl_mvm_get_valid_tx_ant(mvm)); mvm 188 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c static int iwl_mvm_phy_ctxt_apply(struct iwl_mvm *mvm, mvm 196 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c u16 len = sizeof(cmd) - iwl_mvm_chan_info_padding(mvm); mvm 202 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c iwl_mvm_phy_ctxt_cmd_data(mvm, &cmd, chandef, mvm 205 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c ret = iwl_mvm_send_cmd_pdu(mvm, PHY_CONTEXT_CMD, 0, len, &cmd); mvm 207 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c IWL_ERR(mvm, "PHY ctxt cmd error. ret=%d\n", ret); mvm 214 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c int iwl_mvm_phy_ctxt_add(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt, mvm 218 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c WARN_ON(!test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) && mvm 220 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c lockdep_assert_held(&mvm->mutex); mvm 224 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c return iwl_mvm_phy_ctxt_apply(mvm, ctxt, chandef, mvm 233 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c void iwl_mvm_phy_ctxt_ref(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt) mvm 235 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c lockdep_assert_held(&mvm->mutex); mvm 244 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c int iwl_mvm_phy_ctxt_changed(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt, mvm 250 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c lockdep_assert_held(&mvm->mutex); mvm 252 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 258 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c ret = iwl_mvm_phy_ctxt_apply(mvm, ctxt, chandef, mvm 270 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c return iwl_mvm_phy_ctxt_apply(mvm, ctxt, chandef, mvm 275 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c void iwl_mvm_phy_ctxt_unref(struct iwl_mvm *mvm, struct iwl_mvm_phy_ctxt *ctxt) mvm 277 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c lockdep_assert_held(&mvm->mutex); mvm 296 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c sband = mvm->hw->wiphy->bands[band++]; mvm 304 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c iwl_mvm_phy_ctxt_changed(mvm, ctxt, &chandef, 1, 1); mvm 322 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c int iwl_mvm_phy_ctx_count(struct iwl_mvm *mvm) mvm 326 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 80 drivers/net/wireless/intel/iwlwifi/mvm/power.c int iwl_mvm_beacon_filter_send_cmd(struct iwl_mvm *mvm, mvm 86 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "ba_enable_beacon_abort is: %d\n", mvm 88 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "ba_escape_timer is: %d\n", mvm 90 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_debug_flag is: %d\n", mvm 92 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_enable_beacon_filter is: %d\n", mvm 94 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_energy_delta is: %d\n", mvm 96 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_escape_timer is: %d\n", mvm 98 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_roaming_energy_delta is: %d\n", mvm 100 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_roaming_state is: %d\n", mvm 102 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_temp_threshold is: %d\n", mvm 104 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_temp_fast_filter is: %d\n", mvm 106 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_temp_slow_filter is: %d\n", mvm 108 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_threshold_absolute_low is: %d, %d\n", mvm 112 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "bf_threshold_absolute_high is: %d, %d\n", mvm 116 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 123 drivers/net/wireless/intel/iwlwifi/mvm/power.c return iwl_mvm_send_cmd_pdu(mvm, REPLY_BEACON_FILTERING_CMD, flags, mvm 128 drivers/net/wireless/intel/iwlwifi/mvm/power.c void iwl_mvm_beacon_filter_set_cqm_params(struct iwl_mvm *mvm, mvm 144 drivers/net/wireless/intel/iwlwifi/mvm/power.c static void iwl_mvm_power_log(struct iwl_mvm *mvm, mvm 147 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, mvm 151 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "Keep alive = %u sec\n", mvm 155 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "Disable power management\n"); mvm 159 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "Rx timeout = %u usec\n", mvm 161 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "Tx timeout = %u usec\n", mvm 164 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "DTIM periods to skip = %u\n", mvm 167 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "LP RX RSSI threshold = %u\n", mvm 170 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "uAPSD enabled\n"); mvm 171 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "Rx timeout (uAPSD) = %u usec\n", mvm 173 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "Tx timeout (uAPSD) = %u usec\n", mvm 175 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "QNDP TID = %d\n", cmd->qndp_tid); mvm 176 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "ACs flags = 0x%x\n", cmd->uapsd_ac_flags); mvm 177 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, "Max SP = %d\n", cmd->uapsd_max_sp); mvm 181 drivers/net/wireless/intel/iwlwifi/mvm/power.c static void iwl_mvm_power_configure_uapsd(struct iwl_mvm *mvm, mvm 201 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->fwrt.cur_fw_img != IWL_UCODE_WOWLAN) mvm 236 drivers/net/wireless/intel/iwlwifi/mvm/power.c (mvm->fwrt.cur_fw_img == IWL_UCODE_WOWLAN) ? mvm 241 drivers/net/wireless/intel/iwlwifi/mvm/power.c cmd->uapsd_max_sp = mvm->hw->uapsd_max_sp_len; mvm 243 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->fwrt.cur_fw_img == IWL_UCODE_WOWLAN || cmd->flags & mvm 293 drivers/net/wireless/intel/iwlwifi/mvm/power.c static bool iwl_mvm_power_allow_uapsd(struct iwl_mvm *mvm, mvm 315 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (iwl_mvm_phy_ctx_count(mvm) >= 2) mvm 322 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (!iwl_mvm_is_p2p_scm_uapsd_supported(mvm)) mvm 325 drivers/net/wireless/intel/iwlwifi/mvm/power.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 355 drivers/net/wireless/intel/iwlwifi/mvm/power.c static void iwl_mvm_power_config_skip_dtim(struct iwl_mvm *mvm, mvm 393 drivers/net/wireless/intel/iwlwifi/mvm/power.c static void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, mvm 419 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->ps_disabled) mvm 428 drivers/net/wireless/intel/iwlwifi/mvm/power.c (!fw_has_capa(&mvm->fw->ucode_capa, mvm 442 drivers/net/wireless/intel/iwlwifi/mvm/power.c iwl_mvm_power_config_skip_dtim(mvm, vif, cmd, host_awake); mvm 450 drivers/net/wireless/intel/iwlwifi/mvm/power.c fw_has_capa(&mvm->fw->ucode_capa, mvm 463 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (iwl_mvm_power_allow_uapsd(mvm, vif)) mvm 464 drivers/net/wireless/intel/iwlwifi/mvm/power.c iwl_mvm_power_configure_uapsd(mvm, vif, cmd); mvm 512 drivers/net/wireless/intel/iwlwifi/mvm/power.c static int iwl_mvm_power_send_cmd(struct iwl_mvm *mvm, mvm 517 drivers/net/wireless/intel/iwlwifi/mvm/power.c iwl_mvm_power_build_cmd(mvm, vif, &cmd, mvm 518 drivers/net/wireless/intel/iwlwifi/mvm/power.c mvm->fwrt.cur_fw_img != IWL_UCODE_WOWLAN); mvm 519 drivers/net/wireless/intel/iwlwifi/mvm/power.c iwl_mvm_power_log(mvm, &cmd); mvm 524 drivers/net/wireless/intel/iwlwifi/mvm/power.c return iwl_mvm_send_cmd_pdu(mvm, MAC_PM_POWER_TABLE, 0, mvm 528 drivers/net/wireless/intel/iwlwifi/mvm/power.c int iwl_mvm_power_update_device(struct iwl_mvm *mvm) mvm 535 drivers/net/wireless/intel/iwlwifi/mvm/power.c mvm->ps_disabled = true; mvm 537 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (!mvm->ps_disabled) mvm 541 drivers/net/wireless/intel/iwlwifi/mvm/power.c if ((mvm->fwrt.cur_fw_img == IWL_UCODE_WOWLAN) ? mvm 542 drivers/net/wireless/intel/iwlwifi/mvm/power.c mvm->disable_power_off_d3 : mvm->disable_power_off) mvm 546 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->ext_clock_valid) mvm 549 drivers/net/wireless/intel/iwlwifi/mvm/power.c IWL_DEBUG_POWER(mvm, mvm 553 drivers/net/wireless/intel/iwlwifi/mvm/power.c return iwl_mvm_send_cmd_pdu(mvm, POWER_TABLE_CMD, 0, sizeof(cmd), mvm 557 drivers/net/wireless/intel/iwlwifi/mvm/power.c void iwl_mvm_power_vif_assoc(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 580 drivers/net/wireless/intel/iwlwifi/mvm/power.c void iwl_mvm_power_uapsd_misbehaving_ap_notif(struct iwl_mvm *mvm, mvm 588 drivers/net/wireless/intel/iwlwifi/mvm/power.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 593 drivers/net/wireless/intel/iwlwifi/mvm/power.c struct iwl_mvm *mvm; mvm 669 drivers/net/wireless/intel/iwlwifi/mvm/power.c static void iwl_mvm_power_set_pm(struct iwl_mvm *mvm, mvm 678 drivers/net/wireless/intel/iwlwifi/mvm/power.c lockdep_assert_held(&mvm->mutex); mvm 681 drivers/net/wireless/intel/iwlwifi/mvm/power.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 696 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (iwl_mvm_tdls_sta_count(mvm, NULL)) mvm 739 drivers/net/wireless/intel/iwlwifi/mvm/power.c int iwl_mvm_power_mac_dbgfs_read(struct iwl_mvm *mvm, mvm 747 drivers/net/wireless/intel/iwlwifi/mvm/power.c mutex_lock(&mvm->mutex); mvm 749 drivers/net/wireless/intel/iwlwifi/mvm/power.c mutex_unlock(&mvm->mutex); mvm 848 drivers/net/wireless/intel/iwlwifi/mvm/power.c static int _iwl_mvm_enable_beacon_filter(struct iwl_mvm *mvm, mvm 856 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvmvif != mvm->bf_allowed_vif || !vif->bss_conf.dtim_period || mvm 860 drivers/net/wireless/intel/iwlwifi/mvm/power.c iwl_mvm_beacon_filter_set_cqm_params(mvm, vif, cmd); mvm 862 drivers/net/wireless/intel/iwlwifi/mvm/power.c ret = iwl_mvm_beacon_filter_send_cmd(mvm, cmd, cmd_flags); mvm 870 drivers/net/wireless/intel/iwlwifi/mvm/power.c int iwl_mvm_enable_beacon_filter(struct iwl_mvm *mvm, mvm 879 drivers/net/wireless/intel/iwlwifi/mvm/power.c return _iwl_mvm_enable_beacon_filter(mvm, vif, &cmd, flags); mvm 882 drivers/net/wireless/intel/iwlwifi/mvm/power.c static int _iwl_mvm_disable_beacon_filter(struct iwl_mvm *mvm, mvm 893 drivers/net/wireless/intel/iwlwifi/mvm/power.c ret = iwl_mvm_beacon_filter_send_cmd(mvm, &cmd, flags); mvm 901 drivers/net/wireless/intel/iwlwifi/mvm/power.c int iwl_mvm_disable_beacon_filter(struct iwl_mvm *mvm, mvm 905 drivers/net/wireless/intel/iwlwifi/mvm/power.c return _iwl_mvm_disable_beacon_filter(mvm, vif, flags); mvm 908 drivers/net/wireless/intel/iwlwifi/mvm/power.c static int iwl_mvm_power_set_ps(struct iwl_mvm *mvm) mvm 916 drivers/net/wireless/intel/iwlwifi/mvm/power.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 922 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->ps_disabled != disable_ps) { mvm 923 drivers/net/wireless/intel/iwlwifi/mvm/power.c bool old_ps_disabled = mvm->ps_disabled; mvm 925 drivers/net/wireless/intel/iwlwifi/mvm/power.c mvm->ps_disabled = disable_ps; mvm 926 drivers/net/wireless/intel/iwlwifi/mvm/power.c ret = iwl_mvm_power_update_device(mvm); mvm 928 drivers/net/wireless/intel/iwlwifi/mvm/power.c mvm->ps_disabled = old_ps_disabled; mvm 936 drivers/net/wireless/intel/iwlwifi/mvm/power.c static int iwl_mvm_power_set_ba(struct iwl_mvm *mvm, mvm 948 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->fwrt.cur_fw_img == IWL_UCODE_WOWLAN) mvm 952 drivers/net/wireless/intel/iwlwifi/mvm/power.c mvm->ps_disabled || mvm 956 drivers/net/wireless/intel/iwlwifi/mvm/power.c return _iwl_mvm_enable_beacon_filter(mvm, vif, &cmd, 0); mvm 959 drivers/net/wireless/intel/iwlwifi/mvm/power.c int iwl_mvm_power_update_ps(struct iwl_mvm *mvm) mvm 962 drivers/net/wireless/intel/iwlwifi/mvm/power.c .mvm = mvm, mvm 966 drivers/net/wireless/intel/iwlwifi/mvm/power.c lockdep_assert_held(&mvm->mutex); mvm 969 drivers/net/wireless/intel/iwlwifi/mvm/power.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 973 drivers/net/wireless/intel/iwlwifi/mvm/power.c ret = iwl_mvm_power_set_ps(mvm); mvm 978 drivers/net/wireless/intel/iwlwifi/mvm/power.c return iwl_mvm_power_set_ba(mvm, vifs.bss_vif); mvm 983 drivers/net/wireless/intel/iwlwifi/mvm/power.c int iwl_mvm_power_update_mac(struct iwl_mvm *mvm) mvm 986 drivers/net/wireless/intel/iwlwifi/mvm/power.c .mvm = mvm, mvm 990 drivers/net/wireless/intel/iwlwifi/mvm/power.c lockdep_assert_held(&mvm->mutex); mvm 993 drivers/net/wireless/intel/iwlwifi/mvm/power.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 997 drivers/net/wireless/intel/iwlwifi/mvm/power.c iwl_mvm_power_set_pm(mvm, &vifs); mvm 999 drivers/net/wireless/intel/iwlwifi/mvm/power.c ret = iwl_mvm_power_set_ps(mvm); mvm 1004 drivers/net/wireless/intel/iwlwifi/mvm/power.c ret = iwl_mvm_power_send_cmd(mvm, vifs.bss_vif); mvm 1010 drivers/net/wireless/intel/iwlwifi/mvm/power.c ret = iwl_mvm_power_send_cmd(mvm, vifs.p2p_vif); mvm 1016 drivers/net/wireless/intel/iwlwifi/mvm/power.c return iwl_mvm_power_set_ba(mvm, vifs.bss_vif); mvm 144 drivers/net/wireless/intel/iwlwifi/mvm/quota.c static void iwl_mvm_adjust_quota_for_noa(struct iwl_mvm *mvm, mvm 151 drivers/net/wireless/intel/iwlwifi/mvm/quota.c if (!mvm->noa_duration || !mvm->noa_vif) mvm 154 drivers/net/wireless/intel/iwlwifi/mvm/quota.c mvmvif = iwl_mvm_vif_from_mac80211(mvm->noa_vif); mvm 159 drivers/net/wireless/intel/iwlwifi/mvm/quota.c beacon_int = mvm->noa_vif->bss_conf.beacon_int; mvm 163 drivers/net/wireless/intel/iwlwifi/mvm/quota.c iwl_mvm_quota_cmd_get_quota(mvm, cmd, mvm 172 drivers/net/wireless/intel/iwlwifi/mvm/quota.c quota *= (beacon_int - mvm->noa_duration); mvm 175 drivers/net/wireless/intel/iwlwifi/mvm/quota.c IWL_DEBUG_QUOTA(mvm, "quota: adjust for NoA from %d to %d\n", mvm 183 drivers/net/wireless/intel/iwlwifi/mvm/quota.c int iwl_mvm_update_quotas(struct iwl_mvm *mvm, mvm 194 drivers/net/wireless/intel/iwlwifi/mvm/quota.c struct iwl_time_quota_cmd *last = &mvm->last_quota_cmd; mvm 198 drivers/net/wireless/intel/iwlwifi/mvm/quota.c lockdep_assert_held(&mvm->mutex); mvm 200 drivers/net/wireless/intel/iwlwifi/mvm/quota.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 205 drivers/net/wireless/intel/iwlwifi/mvm/quota.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) mvm 212 drivers/net/wireless/intel/iwlwifi/mvm/quota.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 222 drivers/net/wireless/intel/iwlwifi/mvm/quota.c qdata = iwl_mvm_quota_cmd_get_quota(mvm, &cmd, i); mvm 248 drivers/net/wireless/intel/iwlwifi/mvm/quota.c IWL_DEBUG_QUOTA(mvm, mvm 259 drivers/net/wireless/intel/iwlwifi/mvm/quota.c IWL_DEBUG_QUOTA(mvm, mvm 272 drivers/net/wireless/intel/iwlwifi/mvm/quota.c qdata = iwl_mvm_quota_cmd_get_quota(mvm, &cmd, idx); mvm 308 drivers/net/wireless/intel/iwlwifi/mvm/quota.c qdata = iwl_mvm_quota_cmd_get_quota(mvm, &cmd, i); mvm 311 drivers/net/wireless/intel/iwlwifi/mvm/quota.c IWL_DEBUG_QUOTA(mvm, mvm 318 drivers/net/wireless/intel/iwlwifi/mvm/quota.c iwl_mvm_adjust_quota_for_noa(mvm, &cmd); mvm 322 drivers/net/wireless/intel/iwlwifi/mvm/quota.c qdata = iwl_mvm_quota_cmd_get_quota(mvm, &cmd, i); mvm 323 drivers/net/wireless/intel/iwlwifi/mvm/quota.c last_data = iwl_mvm_quota_cmd_get_quota(mvm, last, i); mvm 346 drivers/net/wireless/intel/iwlwifi/mvm/quota.c err = iwl_mvm_send_cmd_pdu(mvm, TIME_QUOTA_CMD, 0, mvm 347 drivers/net/wireless/intel/iwlwifi/mvm/quota.c iwl_mvm_quota_cmd_size(mvm), &cmd); mvm 350 drivers/net/wireless/intel/iwlwifi/mvm/quota.c IWL_ERR(mvm, "Failed to send quota: %d\n", err); mvm 352 drivers/net/wireless/intel/iwlwifi/mvm/quota.c mvm->last_quota_cmd = cmd; mvm 119 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c static u16 rs_fw_get_config_flags(struct iwl_mvm *mvm, mvm 129 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c if (mvm->cfg->ht_params->stbc && mvm 130 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c (num_of_ant(iwl_mvm_get_valid_tx_ant(mvm)) > 1)) { mvm 145 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c if (mvm->cfg->ht_params->ldpc && mvm 328 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm, mvm 341 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c sta = rcu_dereference(mvm->fw_id_to_mac_id[notif->sta_id]); mvm 343 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c IWL_ERR(mvm, "Invalid sta id (%d) in FW TLC notification\n", mvm 351 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c IWL_ERR(mvm, "Invalid sta id (%d) in FW TLC notification\n", mvm 362 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c IWL_DEBUG_RATE(mvm, "new rate_n_flags: 0x%X\n", mvm 386 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c iwl_mvm_max_amsdu_size(mvm, sta, i); mvm 395 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c IWL_DEBUG_RATE(mvm, mvm 435 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c void rs_fw_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 438 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c struct ieee80211_hw *hw = mvm->hw; mvm 448 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c .flags = cpu_to_le16(rs_fw_get_config_flags(mvm, sta, sband)), mvm 449 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c .chains = rs_fw_set_active_chains(iwl_mvm_get_valid_tx_ant(mvm)), mvm 452 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c .amsdu = iwl_mvm_is_csum_supported(mvm), mvm 459 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c iwl_mvm_reset_frame_stats(mvm); mvm 469 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c ret = iwl_mvm_send_cmd_pdu(mvm, cmd_id, CMD_ASYNC, sizeof(cfg_cmd), mvm 472 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c IWL_ERR(mvm, "Failed to send rate scale config (%d)\n", ret); mvm 475 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c int rs_fw_tx_protection(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta, mvm 479 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c IWL_DEBUG_RATE(mvm, "tx protection - not implemented yet.\n"); mvm 483 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c void iwl_mvm_rs_add_sta(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta) mvm 487 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c IWL_DEBUG_RATE(mvm, "create station rate scale window\n"); mvm 489 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->pers.drv = mvm; mvm 120 drivers/net/wireless/intel/iwlwifi/mvm/rs.c typedef bool (*allow_column_func_t) (struct iwl_mvm *mvm, mvm 133 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_ant_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 137 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return iwl_mvm_bt_coex_is_ant_avail(mvm, next_col->ant); mvm 140 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_mimo_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 150 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (num_of_ant(iwl_mvm_get_valid_tx_ant(mvm)) < 2) mvm 153 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) mvm 156 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (mvm->nvm_data->sku_cap_mimo_disabled) mvm 162 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_siso_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 172 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_sgi_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 380 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_rate_scale_perform(struct iwl_mvm *mvm, mvm 384 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_fill_lq_cmd(struct iwl_mvm *mvm, mvm 567 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static inline void rs_dump_rate(struct iwl_mvm *mvm, const struct rs_rate *rate, mvm 570 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 585 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_rate_scale_clear_tbl_windows(struct iwl_mvm *mvm, mvm 590 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Clearing up window stats\n"); mvm 603 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static int rs_tl_turn_on_agg_for_tid(struct iwl_mvm *mvm, mvm 609 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_HT(mvm, "Starting Tx agg: STA: %pM tid: %d\n", mvm 620 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "Fail start Tx agg on tid: %d\n", mvm 627 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_tl_turn_on_agg(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta, mvm 638 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "tid exceeds max TID count: %d/%d\n", mvm 650 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "try to aggregate tid %d\n", tid); mvm 651 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (rs_tl_turn_on_agg_for_tid(mvm, lq_sta, tid, sta) == 0) mvm 681 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static int _rs_collect_tx_data(struct iwl_mvm *mvm, mvm 746 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static int rs_collect_tpc_data(struct iwl_mvm *mvm, mvm 758 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return _rs_collect_tx_data(mvm, tbl, scale_index, attempts, successes, mvm 762 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_update_tid_tpt_stats(struct iwl_mvm *mvm, mvm 792 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static int rs_collect_tlc_data(struct iwl_mvm *mvm, mvm 809 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_update_tid_tpt_stats(mvm, mvmsta, tid, successes); mvm 813 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return _rs_collect_tx_data(mvm, tbl, scale_index, attempts, successes, mvm 818 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static u32 ucode_rate_from_rs_rate(struct iwl_mvm *mvm, mvm 836 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "Invalid HT rate index %d\n", index); mvm 849 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "Invalid VHT rate index %d\n", index); mvm 861 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "Invalid rate->type %d\n", rate->type); mvm 1014 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static u16 rs_get_adjacent_rate(struct iwl_mvm *mvm, u8 index, u16 rate_mask, mvm 1085 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm = lq_sta->pers.drv; mvm 1088 drivers/net/wireless/intel/iwlwifi/mvm/rs.c high_low = rs_get_adjacent_rate(mvm, rate->index, rate_mask, mvm 1104 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm = lq_sta->pers.drv; mvm 1130 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->ant = first_antenna(iwl_mvm_get_valid_tx_ant(mvm)); mvm 1210 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 1221 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_rs_tx_status(mvm, sta, rs_get_tid(hdr), info, mvm 1233 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_set_stay_in_table(struct iwl_mvm *mvm, u8 is_legacy, mvm 1236 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Moving to RS_STATE_STAY_IN_COLUMN\n"); mvm 1367 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static s32 rs_get_best_rate(struct iwl_mvm *mvm, mvm 1383 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1388 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1399 drivers/net/wireless/intel/iwlwifi/mvm/rs.c high_low = rs_get_adjacent_rate(mvm, rate_idx, rate_mask, mvm 1405 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Best rate found %d target_tp %d expected_new %d\n", mvm 1458 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm; mvm 1460 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm = lq_sta->pers.drv; mvm 1487 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1495 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1514 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1516 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_clear_tbl_windows(mvm, tbl); mvm 1524 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_clear_tbl_windows(mvm, tbl); mvm 1529 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_set_amsdu_len(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 1558 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_max_amsdu_size(mvm, sta, i); mvm 1571 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_update_rate_tbl(struct iwl_mvm *mvm, mvm 1576 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_lq_cmd(mvm, sta, lq_sta, &tbl->rate); mvm 1577 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_send_lq_cmd(mvm, &lq_sta->lq); mvm 1580 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_tweak_rate_tbl(struct iwl_mvm *mvm, mvm 1597 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Switch 80Mhz SISO MCS0 -> 20Mhz MCS4\n"); mvm 1613 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Switch 20Mhz SISO MCS5 -> 80Mhz MCS1\n"); mvm 1621 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_clear_tbl_windows(mvm, tbl); mvm 1625 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static enum rs_column rs_get_next_column(struct iwl_mvm *mvm, mvm 1635 drivers/net/wireless/intel/iwlwifi/mvm/rs.c u8 valid_ants = iwl_mvm_get_valid_tx_ant(mvm); mvm 1646 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Skip already visited column %d\n", mvm 1654 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1662 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (allow_func && !allow_func(mvm, sta, &tbl->rate, mvm 1668 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1683 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1691 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1697 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1709 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static int rs_switch_to_column(struct iwl_mvm *mvm, mvm 1761 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate_idx = rs_get_best_rate(mvm, lq_sta, search_tbl, mvm 1766 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1777 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Switched to column %d: Index %d\n", mvm 1787 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static enum rs_action rs_get_rate_action(struct iwl_mvm *mvm, mvm 1797 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1805 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1814 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1821 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1830 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1837 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1845 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1851 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Maintain rate\n"); mvm 1856 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1860 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1864 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Decrease rate\n"); mvm 1871 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_stbc_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 1880 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) mvm 1886 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_get_adjacent_txp(struct iwl_mvm *mvm, int index, mvm 1898 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_tpc_allowed(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1906 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "cam: %d sta_ps_disabled %d\n", mvm 1913 drivers/net/wireless/intel/iwlwifi/mvm/rs.c !iwl_mvm_bt_coex_is_tpc_allowed(mvm, band)) mvm 1916 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "check rate, table type: %d\n", rate->type); mvm 1937 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static enum tpc_action rs_get_tpc_action(struct iwl_mvm *mvm, mvm 1944 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "no current tpt. stay.\n"); mvm 1951 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "increase txp because of weak SR\n"); mvm 1961 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1967 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1979 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1987 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 1993 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "no need to increase or decrease txp - stay\n"); mvm 1997 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_tpc_perform(struct iwl_mvm *mvm, mvm 2017 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "fixed tpc: %d\n", mvm 2032 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!rs_tpc_allowed(mvm, vif, rate, band)) { mvm 2033 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2039 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_adjacent_txp(mvm, cur, &weak, &strong); mvm 2050 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2055 drivers/net/wireless/intel/iwlwifi/mvm/rs.c action = rs_get_tpc_action(mvm, sr, weak, strong, mvm 2060 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "already in lowest txp, stay\n"); mvm 2065 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "already in highest txp, stay\n"); mvm 2089 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_rate_scale_perform(struct iwl_mvm *mvm, mvm 2130 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2134 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_clear_tbl_windows(mvm, tbl); mvm 2144 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "Current Rate is not valid\n"); mvm 2150 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_update_rate_tbl(mvm, sta, lq_sta, tbl); mvm 2157 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "tbl->expected_tpt is NULL\n"); mvm 2174 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2195 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2207 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2238 drivers/net/wireless/intel/iwlwifi/mvm/rs.c high_low = rs_get_adjacent_rate(mvm, index, rate_mask, rate->type); mvm 2253 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2258 drivers/net/wireless/intel/iwlwifi/mvm/rs.c scale_action = rs_get_rate_action(mvm, tbl, sr, low, high, mvm 2263 drivers/net/wireless/intel/iwlwifi/mvm/rs.c !iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) { mvm 2264 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2277 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2288 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2296 drivers/net/wireless/intel/iwlwifi/mvm/rs.c update_lq = rs_tpc_perform(mvm, sta, lq_sta, tbl); mvm 2307 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_tweak_rate_tbl(mvm, sta, lq_sta, tbl, scale_action); mvm 2308 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_amsdu_len(mvm, sta, tbl, scale_action); mvm 2309 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_update_rate_tbl(mvm, sta, lq_sta, tbl); mvm 2328 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2333 drivers/net/wireless/intel/iwlwifi/mvm/rs.c next_column = rs_get_next_column(mvm, lq_sta, sta, tbl); mvm 2335 drivers/net/wireless/intel/iwlwifi/mvm/rs.c int ret = rs_switch_to_column(mvm, lq_sta, sta, mvm 2340 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 2349 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_clear_tbl_windows(mvm, tbl); mvm 2354 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_dump_rate(mvm, &tbl->rate, mvm 2356 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_update_rate_tbl(mvm, sta, lq_sta, tbl); mvm 2363 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_tl_turn_on_agg(mvm, mvmsta, tid, lq_sta, sta); mvm 2367 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_stay_in_table(mvm, is_legacy(&tbl1->rate), lq_sta); mvm 2445 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_init_optimal_rate(struct iwl_mvm *mvm, mvm 2461 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->sgi = rs_sgi_allow(mvm, sta, rate, NULL); mvm 2500 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static struct rs_rate *rs_get_optimal_rate(struct iwl_mvm *mvm, mvm 2525 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_get_initial_rate(struct iwl_mvm *mvm, mvm 2536 drivers/net/wireless/intel/iwlwifi/mvm/rs.c u8 valid_tx_ant = iwl_mvm_get_valid_tx_ant(mvm); mvm 2549 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Best ANT: %s Best RSSI: %d\n", mvm 2608 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "Invalid BW %d\n", sta->bandwidth); mvm 2636 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_dump_rate(mvm, rate, "INITIAL"); mvm 2640 drivers/net/wireless/intel/iwlwifi/mvm/rs.c void rs_update_last_rssi(struct iwl_mvm *mvm, mvm 2676 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_initialize_lq(struct iwl_mvm *mvm, mvm 2696 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_initial_rate(mvm, sta, lq_sta, band, rate); mvm 2697 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_init_optimal_rate(mvm, sta, lq_sta); mvm 2701 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->ant, lq_sta->pers.chains, mvm->fw->valid_tx_ant, mvm 2702 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->nvm_data ? mvm->nvm_data->valid_tx_ant : ANT_INVALID); mvm 2707 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_lq_cmd(mvm, sta, lq_sta, rate); mvm 2709 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_send_lq_cmd(mvm, &lq_sta->lq); mvm 2717 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm __maybe_unused = IWL_OP_MODE_GET_MVM(op_mode); mvm 2744 drivers/net/wireless/intel/iwlwifi/mvm/rs.c optimal_rate = rs_get_optimal_rate(mvm, lq_sta); mvm 2745 drivers/net/wireless/intel/iwlwifi/mvm/rs.c last_ucode_rate = ucode_rate_from_rs_rate(mvm, mvm 2757 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); mvm 2760 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "create station rate scale window\n"); mvm 2762 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.drv = mvm; mvm 2833 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_ht_init(struct iwl_mvm *mvm, mvm 2852 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (mvm->cfg->ht_params->ldpc && mvm 2856 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (mvm->cfg->ht_params->stbc && mvm 2857 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (num_of_ant(iwl_mvm_get_valid_tx_ant(mvm)) > 1) && mvm 2864 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_vht_init(struct iwl_mvm *mvm, mvm 2871 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (mvm->cfg->ht_params->ldpc && mvm 2875 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (mvm->cfg->ht_params->stbc && mvm 2876 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (num_of_ant(iwl_mvm_get_valid_tx_ant(mvm)) > 1) && mvm 2880 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_BEAMFORMER) && mvm 2881 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (num_of_ant(iwl_mvm_get_valid_tx_ant(mvm)) > 1) && mvm 2889 drivers/net/wireless/intel/iwlwifi/mvm/rs.c void iwl_mvm_reset_frame_stats(struct iwl_mvm *mvm) mvm 2891 drivers/net/wireless/intel/iwlwifi/mvm/rs.c spin_lock_bh(&mvm->drv_stats_lock); mvm 2892 drivers/net/wireless/intel/iwlwifi/mvm/rs.c memset(&mvm->drv_rx_stats, 0, sizeof(mvm->drv_rx_stats)); mvm 2893 drivers/net/wireless/intel/iwlwifi/mvm/rs.c spin_unlock_bh(&mvm->drv_stats_lock); mvm 2896 drivers/net/wireless/intel/iwlwifi/mvm/rs.c void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg) mvm 2900 drivers/net/wireless/intel/iwlwifi/mvm/rs.c spin_lock(&mvm->drv_stats_lock); mvm 2903 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.agg_frames++; mvm 2905 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.success_frames++; mvm 2909 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.bw_20_frames++; mvm 2912 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.bw_40_frames++; mvm 2915 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.bw_80_frames++; mvm 2918 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.bw_160_frames++; mvm 2925 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.ht_frames++; mvm 2928 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.vht_frames++; mvm 2932 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.legacy_frames++; mvm 2936 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.siso_frames++; mvm 2938 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.mimo2_frames++; mvm 2941 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.sgi_frames++; mvm 2943 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.ngi_frames++; mvm 2945 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.last_rates[mvm->drv_rx_stats.last_frame_idx] = rate; mvm 2946 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm->drv_rx_stats.last_frame_idx = mvm 2947 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (mvm->drv_rx_stats.last_frame_idx + 1) % mvm 2948 drivers/net/wireless/intel/iwlwifi/mvm/rs.c ARRAY_SIZE(mvm->drv_rx_stats.last_rates); mvm 2950 drivers/net/wireless/intel/iwlwifi/mvm/rs.c spin_unlock(&mvm->drv_stats_lock); mvm 2957 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_drv_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 2961 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct ieee80211_hw *hw = mvm->hw; mvm 2981 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_clear_tbl_windows(mvm, &lq_sta->lq_info[j]); mvm 2986 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 3006 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_ht_init(mvm, sta, lq_sta, ht_cap); mvm 3008 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_vht_init(mvm, sta, lq_sta, vht_cap); mvm 3017 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 3024 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "MAX RATE: LEGACY=%d SISO=%d MIMO2=%d\n", mvm 3031 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_bt_coex_get_single_ant_msk(mvm, iwl_mvm_get_valid_tx_ant(mvm)); mvm 3038 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_reset_frame_stats(mvm); mvm 3040 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_initialize_lq(mvm, sta, lq_sta, band); mvm 3050 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm __maybe_unused = IWL_OP_MODE_GET_MVM(op_mode); mvm 3060 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_rs_rate_init(mvm, sta, sband->band, true); mvm 3063 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void __iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, mvm 3083 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Rate scaling not initialized yet.\n"); mvm 3124 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Fixed rate 0x%x success %d attempts %d\n", mvm 3133 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Tx idle for too long. reinit rs\n"); mvm 3137 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_drv_rate_init(mvm, sta, info->band); mvm 3158 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 3169 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 3172 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_send_lq_cmd(mvm, &lq_sta->lq); mvm 3190 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 3193 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_dump_rate(mvm, &tmp_tbl->rate, "ACTIVE"); mvm 3195 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_dump_rate(mvm, &tmp_tbl->rate, "SEARCH"); mvm 3196 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_dump_rate(mvm, &lq_rate, "ACTUAL"); mvm 3212 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_collect_tpc_data(mvm, lq_sta, curr_tbl, tx_resp_rate.index, mvm 3233 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_collect_tlc_data(mvm, mvmsta, tid, curr_tbl, mvm 3272 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_collect_tpc_data(mvm, lq_sta, tmp_tbl, mvm 3276 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_collect_tlc_data(mvm, mvmsta, tid, tmp_tbl, mvm 3289 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "reduced txpower: %d\n", reduced_txp); mvm 3293 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_perform(mvm, sta, lq_sta, tid, ndp); mvm 3296 drivers/net/wireless/intel/iwlwifi/mvm/rs.c void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 3307 drivers/net/wireless/intel/iwlwifi/mvm/rs.c __iwl_mvm_rs_tx_status(mvm, sta, tid, info, ndp); mvm 3312 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_build_rates_table_from_fixed(struct iwl_mvm *mvm, mvm 3341 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!mvm->trans->trans_cfg->gen2) mvm 3349 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_fill_rates_for_column(struct iwl_mvm *mvm, mvm 3365 drivers/net/wireless/intel/iwlwifi/mvm/rs.c ucode_rate = cpu_to_le32(ucode_rate_from_rs_rate(mvm, mvm 3404 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_build_rates_table(struct iwl_mvm *mvm, mvm 3418 drivers/net/wireless/intel/iwlwifi/mvm/rs.c valid_tx_ant = iwl_mvm_get_valid_tx_ant(mvm); mvm 3421 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_LQ_SS_PARAMS) && mvm 3422 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_stbc_allow(mvm, sta, lq_sta)) mvm 3437 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_rates_for_column(mvm, lq_sta, &rate, lq_cmd->rs_table, &index, mvm 3456 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_rates_for_column(mvm, lq_sta, &rate, lq_cmd->rs_table, &index, mvm 3465 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_rates_for_column(mvm, lq_sta, &rate, lq_cmd->rs_table, &index, mvm 3536 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_set_lq_ss_params(struct iwl_mvm *mvm, mvm 3550 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) mvm 3563 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Forcing single stream Tx decision %d\n", mvm 3575 drivers/net/wireless/intel/iwlwifi/mvm/rs.c ieee80211_iterate_stations_atomic(mvm->hw, mvm 3585 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "No sta with BFER allowed found. Allow\n"); mvm 3591 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "Found existing sta %d with BFER activated\n", mvm 3602 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_send_lq_cmd(mvm, bfersta_lq_cmd); mvm 3605 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, mvm 3613 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_fill_lq_cmd(struct iwl_mvm *mvm, mvm 3628 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_build_rates_table_from_fixed(mvm, lq_cmd, mvm 3637 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_build_rates_table(mvm, sta, lq_sta, initial_rate); mvm 3639 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_LQ_SS_PARAMS)) mvm 3640 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_lq_ss_params(mvm, sta, lq_sta, initial_rate); mvm 3645 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_COEX_SCHEMA_2) && mvm 3663 drivers/net/wireless/intel/iwlwifi/mvm/rs.c cpu_to_le16(iwl_mvm_coex_agg_time_limit(mvm, sta)); mvm 3680 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm __maybe_unused = IWL_OP_MODE_GET_MVM(op_mode); mvm 3682 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "enter\n"); mvm 3683 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "leave\n"); mvm 3756 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_program_fix_rate(struct iwl_mvm *mvm, mvm 3763 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_DEBUG_RATE(mvm, "sta_id %d rate 0x%X\n", mvm 3767 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_lq_cmd(mvm, NULL, lq_sta, NULL); mvm 3776 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm; mvm 3781 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm = lq_sta->pers.drv; mvm 3792 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_program_fix_rate(mvm, lq_sta); mvm 3809 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm; mvm 3814 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm = lq_sta->pers.drv; mvm 3828 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (iwl_mvm_get_valid_tx_ant(mvm) & ANT_A) ? "ANT_A," : "", mvm 3829 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (iwl_mvm_get_valid_tx_ant(mvm) & ANT_B) ? "ANT_B," : "", mvm 3830 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (iwl_mvm_get_valid_tx_ant(mvm) & ANT_C) ? "ANT_C" : ""); mvm 4063 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm = lq_sta->pers.drv; mvm 4074 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, mvm 4082 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, mvm 4087 drivers/net/wireless/intel/iwlwifi/mvm/rs.c IWL_ERR(mvm, "valid values none|siso|stbc|bfer\n"); mvm 4102 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_drv_add_sta_debugfs(void *mvm, void *priv_sta, mvm 4157 drivers/net/wireless/intel/iwlwifi/mvm/rs.c void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 4160 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (iwl_mvm_has_tlc_offload(mvm)) { mvm 4161 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fw_rate_init(mvm, sta, band, update); mvm 4166 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_drv_rate_init(mvm, sta, band); mvm 4181 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static int rs_drv_tx_protection(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta, mvm 4186 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lockdep_assert_held(&mvm->mutex); mvm 4198 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return iwl_mvm_send_lq_cmd(mvm, lq); mvm 4206 drivers/net/wireless/intel/iwlwifi/mvm/rs.c int iwl_mvm_tx_protection(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta, mvm 4209 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (iwl_mvm_has_tlc_offload(mvm)) mvm 4210 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return rs_fw_tx_protection(mvm, mvmsta, enable); mvm 4212 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return rs_drv_tx_protection(mvm, mvmsta, enable); mvm 412 drivers/net/wireless/intel/iwlwifi/mvm/rs.h void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 416 drivers/net/wireless/intel/iwlwifi/mvm/rs.h void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 441 drivers/net/wireless/intel/iwlwifi/mvm/rs.h int iwl_mvm_tx_protection(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta, mvm 445 drivers/net/wireless/intel/iwlwifi/mvm/rs.h void iwl_mvm_reset_frame_stats(struct iwl_mvm *mvm); mvm 449 drivers/net/wireless/intel/iwlwifi/mvm/rs.h void rs_remove_sta_debugfs(void *mvm, void *mvm_sta); mvm 452 drivers/net/wireless/intel/iwlwifi/mvm/rs.h void iwl_mvm_rs_add_sta(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta); mvm 453 drivers/net/wireless/intel/iwlwifi/mvm/rs.h void rs_fw_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 455 drivers/net/wireless/intel/iwlwifi/mvm/rs.h int rs_fw_tx_protection(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta, mvm 457 drivers/net/wireless/intel/iwlwifi/mvm/rs.h void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm, mvm 76 drivers/net/wireless/intel/iwlwifi/mvm/rx.c void iwl_mvm_rx_rx_phy_cmd(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 80 drivers/net/wireless/intel/iwlwifi/mvm/rx.c memcpy(&mvm->last_phy_info, pkt->data, sizeof(mvm->last_phy_info)); mvm 81 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->ampdu_ref++; mvm 84 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (mvm->last_phy_info.phy_flags & cpu_to_le16(RX_RES_PHY_FLAGS_AGG)) { mvm 85 drivers/net/wireless/intel/iwlwifi/mvm/rx.c spin_lock(&mvm->drv_stats_lock); mvm 86 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->drv_rx_stats.ampdu_count++; mvm 87 drivers/net/wireless/intel/iwlwifi/mvm/rx.c spin_unlock(&mvm->drv_stats_lock); mvm 97 drivers/net/wireless/intel/iwlwifi/mvm/rx.c static void iwl_mvm_pass_packet_to_mac80211(struct iwl_mvm *mvm, mvm 145 drivers/net/wireless/intel/iwlwifi/mvm/rx.c ieee80211_rx_napi(mvm->hw, sta, skb, napi); mvm 154 drivers/net/wireless/intel/iwlwifi/mvm/rx.c static void iwl_mvm_get_signal_strength(struct iwl_mvm *mvm, mvm 175 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_STATS(mvm, "energy In A %d B %d C %d , and max %d\n", mvm 196 drivers/net/wireless/intel/iwlwifi/mvm/rx.c static u32 iwl_mvm_set_mac80211_rx_flag(struct iwl_mvm *mvm, mvm 224 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (!fw_has_api(&mvm->fw->ucode_capa, mvm 249 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (!mvm->monitor_on) mvm 250 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_ERR(mvm, "Unhandled alg: 0x%x\n", rx_pkt_status); mvm 256 drivers/net/wireless/intel/iwlwifi/mvm/rx.c static void iwl_mvm_rx_handle_tcm(struct iwl_mvm *mvm, mvm 279 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (time_after(jiffies, mvm->tcm.ts + MVM_TCM_PERIOD)) mvm 280 drivers/net/wireless/intel/iwlwifi/mvm/rx.c schedule_delayed_work(&mvm->tcm.work, 0); mvm 281 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mdata = &mvm->tcm.data[mac]; mvm 285 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (mdata->rx.last_ampdu_ref != mvm->ampdu_ref) { mvm 286 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mdata->rx.last_ampdu_ref = mvm->ampdu_ref; mvm 342 drivers/net/wireless/intel/iwlwifi/mvm/rx.c void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 357 drivers/net/wireless/intel/iwlwifi/mvm/rx.c phy_info = &mvm->last_phy_info; mvm 369 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_ERR(mvm, "alloc_skb failed\n"); mvm 378 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (iwl_mvm_set_mac80211_rx_flag(mvm, hdr, rx_status, rx_pkt_status, mvm 380 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_DROP(mvm, "Bad decryption results 0x%08x\n", mvm 392 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_RX(mvm, "Bad CRC or FIFO: 0x%08X.\n", rx_pkt_status); mvm 412 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_get_signal_strength(mvm, phy_info, rx_status); mvm 414 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_STATS_LIMIT(mvm, "Rssi %d, TSF %llu\n", rx_status->signal, mvm 423 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (!WARN_ON_ONCE(id >= ARRAY_SIZE(mvm->fw_id_to_mac_id))) { mvm 424 drivers/net/wireless/intel/iwlwifi/mvm/rx.c sta = rcu_dereference(mvm->fw_id_to_mac_id[id]); mvm 432 drivers/net/wireless/intel/iwlwifi/mvm/rx.c sta = ieee80211_find_sta_by_ifaddr(mvm->hw, hdr->addr2, NULL); mvm 438 drivers/net/wireless/intel/iwlwifi/mvm/rx.c rcu_dereference(mvm->csa_tx_blocked_vif); mvm 451 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_sta_modify_disable_tx_ap(mvm, sta, mvm 455 drivers/net/wireless/intel/iwlwifi/mvm/rx.c rs_update_last_rssi(mvm, mvmsta, rx_status); mvm 457 drivers/net/wireless/intel/iwlwifi/mvm/rx.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, mvm 469 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 473 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (!mvm->tcm.paused && len >= sizeof(*hdr) && mvm 476 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_rx_handle_tcm(mvm, sta, hdr, len, phy_info, mvm 495 drivers/net/wireless/intel/iwlwifi/mvm/rx.c rx_status->ampdu_reference = mvm->ampdu_ref; mvm 550 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_update_frame_stats(mvm, rate_n_flags, mvm 556 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->sched_scan_pass_all == SCHED_SCAN_PASS_ALL_ENABLED)) mvm 557 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_FOUND; mvm 563 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_pass_packet_to_mac80211(mvm, sta, napi, skb, hdr, len, mvm 568 drivers/net/wireless/intel/iwlwifi/mvm/rx.c struct iwl_mvm *mvm; mvm 579 drivers/net/wireless/intel/iwlwifi/mvm/rx.c struct iwl_mvm *mvm = data->mvm; mvm 592 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (iwl_mvm_has_new_rx_stats_api(mvm)) { mvm 624 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_RX(mvm, "RSSI is 0 - skip signal based decision\n"); mvm 638 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_RX(mvm, "cqm_iterator bt coex high %d\n", mvm 640 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_bt_rssi_event(mvm, vif, RSSI_EVENT_HIGH); mvm 645 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_RX(mvm, "cqm_iterator bt coex low %d\n", mvm 647 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_bt_rssi_event(mvm, vif, RSSI_EVENT_LOW); mvm 659 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_RX(mvm, "cqm_iterator cqm low %d\n", mvm 669 drivers/net/wireless/intel/iwlwifi/mvm/rx.c IWL_DEBUG_RX(mvm, "cqm_iterator cqm high %d\n", mvm 680 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_rx_stats_check_trigger(struct iwl_mvm *mvm, struct iwl_rx_packet *pkt) mvm 686 drivers/net/wireless/intel/iwlwifi/mvm/rx.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, FW_DBG_TRIGGER_STATS); mvm 701 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, NULL); mvm 704 drivers/net/wireless/intel/iwlwifi/mvm/rx.c void iwl_mvm_handle_rx_statistics(struct iwl_mvm *mvm, mvm 708 drivers/net/wireless/intel/iwlwifi/mvm/rx.c .mvm = mvm, mvm 717 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (!iwl_mvm_has_new_rx_stats_api(mvm)) { mvm 718 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (iwl_mvm_has_new_rx_api(mvm)) mvm 731 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (!iwl_mvm_has_new_rx_stats_api(mvm)) { mvm 738 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->rx_stats_v3 = stats->rx; mvm 740 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->radio_stats.rx_time = mvm 742 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->radio_stats.tx_time = mvm 744 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->radio_stats.on_time_rf = mvm 746 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->radio_stats.on_time_scan = mvm 759 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->rx_stats = stats->rx; mvm 761 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->radio_stats.rx_time = mvm 763 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->radio_stats.tx_time = mvm 765 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->radio_stats.on_time_rf = mvm 767 drivers/net/wireless/intel/iwlwifi/mvm/rx.c mvm->radio_stats.on_time_scan = mvm 776 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_rx_stats_check_trigger(mvm, pkt); mvm 778 drivers/net/wireless/intel/iwlwifi/mvm/rx.c ieee80211_iterate_active_interfaces(mvm->hw, mvm 783 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (!iwl_mvm_has_new_rx_api(mvm)) mvm 786 drivers/net/wireless/intel/iwlwifi/mvm/rx.c if (!iwl_mvm_has_new_rx_stats_api(mvm)) { mvm 801 drivers/net/wireless/intel/iwlwifi/mvm/rx.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 807 drivers/net/wireless/intel/iwlwifi/mvm/rx.c sta = iwl_mvm_sta_from_staid_rcu(mvm, i); mvm 822 drivers/net/wireless/intel/iwlwifi/mvm/rx.c spin_lock(&mvm->tcm.lock); mvm 824 drivers/net/wireless/intel/iwlwifi/mvm/rx.c struct iwl_mvm_tcm_mac *mdata = &mvm->tcm.data[i]; mvm 838 drivers/net/wireless/intel/iwlwifi/mvm/rx.c spin_unlock(&mvm->tcm.lock); mvm 841 drivers/net/wireless/intel/iwlwifi/mvm/rx.c void iwl_mvm_rx_statistics(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 843 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_mvm_handle_rx_statistics(mvm, rxb_addr(rxb)); mvm 846 drivers/net/wireless/intel/iwlwifi/mvm/rx.c void iwl_mvm_window_status_notif(struct iwl_mvm *mvm, mvm 881 drivers/net/wireless/intel/iwlwifi/mvm/rx.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 95 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static inline int iwl_mvm_check_pn(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 128 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_ERR(mvm, mvm 172 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static int iwl_mvm_create_skb(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 215 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_DEBUG_RX(mvm, mvm 237 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_add_rtap_sniffer_config(struct iwl_mvm *mvm, mvm 244 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (!mvm->cur_aid) mvm 263 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c memcpy(radiotap->data, &mvm->cur_aid, sizeof(mvm->cur_aid)); mvm 271 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_pass_packet_to_mac80211(struct iwl_mvm *mvm, mvm 277 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (iwl_mvm_check_pn(mvm, skb, queue, sta)) mvm 280 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c ieee80211_rx_napi(mvm->hw, sta, skb, napi); mvm 283 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_get_signal_strength(struct iwl_mvm *mvm, mvm 295 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_DEBUG_STATS(mvm, "energy In A %d B %d, and max %d\n", mvm 306 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr, mvm 322 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_RX_MPDU_STATUS_SEC_UNKNOWN && !mvm->monitor_on) mvm 347 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (!fw_has_api(&mvm->fw->ucode_capa, mvm 352 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (mvm->trans->trans_cfg->gen2 && mvm 369 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (mvm->trans->trans_cfg->gen2) mvm 389 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c !mvm->monitor_on && net_ratelimit()) mvm 390 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_ERR(mvm, "Unhandled alg: 0x%x\n", status); mvm 473 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c int iwl_mvm_notify_rx_queue(struct iwl_mvm *mvm, u32 rxq_mask, mvm 495 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c ret = iwl_mvm_send_cmd_pdu(mvm, mvm 515 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_sync_nssn(struct iwl_mvm *mvm, u8 baid, u16 nssn) mvm 525 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_sync_rx_queues_internal(mvm, (void *)¬if, mvm 537 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_release_frames(struct iwl_mvm *mvm, mvm 575 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_sync_nssn(mvm, baid_data->baid, ssn); mvm 583 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_pass_packet_to_mac80211(mvm, napi, skb, mvm 653 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c sta = rcu_dereference(buf->mvm->fw_id_to_mac_id[sta_id]); mvm 657 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_DEBUG_HT(buf->mvm, mvm 660 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_event_frame_timeout_callback(buf->mvm, mvmsta->vif, mvm 662 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames(buf->mvm, sta, NULL, baid_data, mvm 678 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_del_ba(struct iwl_mvm *mvm, int queue, mvm 691 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c ba_data = rcu_dereference(mvm->baid_map[baid]); mvm 695 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c sta = rcu_dereference(mvm->fw_id_to_mac_id[ba_data->sta_id]); mvm 703 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames(mvm, sta, NULL, ba_data, reorder_buf, mvm 714 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_release_frames_from_notif(struct iwl_mvm *mvm, mvm 723 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_DEBUG_HT(mvm, "Frame release notification for BAID %u, NSSN %d\n", mvm 727 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c baid >= ARRAY_SIZE(mvm->baid_map))) mvm 732 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c ba_data = rcu_dereference(mvm->baid_map[baid]); mvm 736 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c sta = rcu_dereference(mvm->fw_id_to_mac_id[ba_data->sta_id]); mvm 743 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames(mvm, sta, napi, ba_data, mvm 751 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_nssn_sync(struct iwl_mvm *mvm, mvm 755 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames_from_notif(mvm, napi, data->baid, mvm 760 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c void iwl_mvm_rx_queue_notif(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 771 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c mvm->queue_sync_cookie != internal_notif->cookie) { mvm 780 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_del_ba(mvm, queue, (void *)internal_notif->data); mvm 783 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_nssn_sync(mvm, napi, queue, mvm 791 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c !atomic_dec_return(&mvm->queue_sync_counter)) mvm 792 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c wake_up(&mvm->rx_sync_waitq); mvm 795 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_oldsn_workaround(struct iwl_mvm *mvm, mvm 834 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_WARN(mvm, mvm 848 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static bool iwl_mvm_reorder(struct iwl_mvm *mvm, mvm 902 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c baid_data = rcu_dereference(mvm->baid_map[baid]); mvm 904 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_DEBUG_RX(mvm, mvm 934 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames(mvm, sta, napi, baid_data, mvm 954 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames(mvm, sta, napi, baid_data, buffer, mvm 958 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_oldsn_workaround(mvm, sta, tid, buffer, reorder, mvm 983 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_sync_nssn(mvm, baid, sn); mvm 1002 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_sync_nssn(mvm, baid, sn); mvm 1049 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames(mvm, sta, napi, baid_data, mvm 1062 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_agg_rx_received(struct iwl_mvm *mvm, mvm 1071 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c data = rcu_dereference(mvm->baid_map[baid]); mvm 1073 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_DEBUG_RX(mvm, mvm 1113 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_decode_he_mu_ext(struct iwl_mvm *mvm, mvm 1246 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm, mvm 1350 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_decode_he_mu_ext(mvm, phy_data, rate_n_flags, he_mu); mvm 1379 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 1423 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_decode_he_phy_data(mvm, phy_data, he, he_mu, rx_status, mvm 1432 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (toggle_bit != mvm->ampdu_toggle) { mvm 1548 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 1568 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (unlikely(test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status))) mvm 1571 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22560) { mvm 1608 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_ERR(mvm, "alloc_skb failed\n"); mvm 1640 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_rx_he(mvm, skb, &phy_data, rate_n_flags, mvm 1647 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (iwl_mvm_rx_crypto(mvm, hdr, rx_status, phy_info, desc, mvm 1660 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_DEBUG_RX(mvm, "Bad CRC or FIFO: 0x%08X.\n", mvm 1672 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (mvm->trans->trans_cfg->device_family >= mvm 1688 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_get_signal_strength(mvm, rx_status, rate_n_flags, energy_a, mvm 1701 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (toggle_bit != mvm->ampdu_toggle) { mvm 1702 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c mvm->ampdu_ref++; mvm 1703 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (mvm->ampdu_ref == 0) mvm 1704 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c mvm->ampdu_ref++; mvm 1705 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c mvm->ampdu_toggle = toggle_bit; mvm 1707 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c rx_status->ampdu_reference = mvm->ampdu_ref; mvm 1710 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (unlikely(mvm->monitor_on)) mvm 1711 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_add_rtap_sniffer_config(mvm, skb); mvm 1718 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (!WARN_ON_ONCE(id >= ARRAY_SIZE(mvm->fw_id_to_mac_id))) { mvm 1719 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c sta = rcu_dereference(mvm->fw_id_to_mac_id[id]); mvm 1728 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c sta = ieee80211_find_sta_by_ifaddr(mvm->hw, hdr->addr2, NULL); mvm 1734 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c rcu_dereference(mvm->csa_tx_blocked_vif); mvm 1741 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (!mvm->tcm.paused && len >= sizeof(*hdr) && mvm 1744 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c time_after(jiffies, mvm->tcm.ts + MVM_TCM_PERIOD)) mvm 1745 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c schedule_delayed_work(&mvm->tcm.work, 0); mvm 1757 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_sta_modify_disable_tx_ap(mvm, sta, mvm 1761 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c rs_update_last_rssi(mvm, mvmsta, rx_status); mvm 1763 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, mvm 1775 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 1799 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (mvm->trans->trans_cfg->device_family == mvm 1810 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_agg_rx_received(mvm, reorder_data, baid); mvm 1855 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c mvm->sched_scan_pass_all == mvm 1857 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_FOUND; mvm 1864 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (iwl_mvm_create_skb(mvm, skb, hdr, len, crypt_len, rxb)) { mvm 1869 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (!iwl_mvm_reorder(mvm, napi, queue, sta, skb, desc)) mvm 1870 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_pass_packet_to_mac80211(mvm, napi, skb, queue, mvm 1876 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 1895 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c if (unlikely(test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status))) mvm 1911 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_ERR(mvm, "alloc_skb failed\n"); mvm 1952 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_rx_he(mvm, skb, &phy_data, rate_n_flags, mvm 1962 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_get_signal_strength(mvm, rx_status, rate_n_flags, energy_a, mvm 2013 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c ieee80211_rx_napi(mvm->hw, sta, skb, napi); mvm 2018 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c void iwl_mvm_rx_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 2024 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames_from_notif(mvm, napi, release->baid, mvm 2029 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c void iwl_mvm_rx_bar_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi, mvm 2045 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c baid >= ARRAY_SIZE(mvm->baid_map))) mvm 2049 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c baid_data = rcu_dereference(mvm->baid_map[baid]); mvm 2051 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c IWL_DEBUG_RX(mvm, mvm 2063 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_mvm_release_frames_from_notif(mvm, napi, baid, nssn, queue, 0); mvm 146 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static inline void *iwl_mvm_get_scan_req_umac_data(struct iwl_mvm *mvm) mvm 148 drivers/net/wireless/intel/iwlwifi/mvm/scan.c struct iwl_scan_req_umac *cmd = mvm->scan_cmd; mvm 150 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adaptive_dwell_v2_supported(mvm)) mvm 153 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adaptive_dwell_supported(mvm)) mvm 156 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_cdb_scan_api(mvm)) mvm 163 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_get_scan_req_umac_channel(struct iwl_mvm *mvm) mvm 165 drivers/net/wireless/intel/iwlwifi/mvm/scan.c struct iwl_scan_req_umac *cmd = mvm->scan_cmd; mvm 167 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adaptive_dwell_v2_supported(mvm)) mvm 170 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adaptive_dwell_supported(mvm)) mvm 173 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_cdb_scan_api(mvm)) mvm 179 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static u8 iwl_mvm_scan_rx_ant(struct iwl_mvm *mvm) mvm 181 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_rx_ant != ANT_NONE) mvm 182 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return mvm->scan_rx_ant; mvm 183 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return iwl_mvm_get_valid_rx_ant(mvm); mvm 186 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static inline __le16 iwl_mvm_scan_rx_chain(struct iwl_mvm *mvm) mvm 191 drivers/net/wireless/intel/iwlwifi/mvm/scan.c rx_ant = iwl_mvm_scan_rx_ant(mvm); mvm 208 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_scan_rate_n_flags(struct iwl_mvm *mvm, enum nl80211_band band, mvm 213 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_toggle_tx_ant(mvm, &mvm->scan_last_antenna_idx); mvm 214 drivers/net/wireless/intel/iwlwifi/mvm/scan.c tx_ant = BIT(mvm->scan_last_antenna_idx) << RATE_MCS_ANT_POS; mvm 234 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static enum iwl_mvm_traffic_load iwl_mvm_get_traffic_load(struct iwl_mvm *mvm) mvm 236 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return mvm->tcm.result.global_load; mvm 240 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_get_traffic_load_band(struct iwl_mvm *mvm, enum nl80211_band band) mvm 242 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return mvm->tcm.result.band_load[band]; mvm 269 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_scan_type _iwl_mvm_get_scan_type(struct iwl_mvm *mvm, mvm 276 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 283 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (fw_has_api(&mvm->fw->ucode_capa, mvm 299 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 315 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_scan_type iwl_mvm_get_scan_type(struct iwl_mvm *mvm, mvm 321 drivers/net/wireless/intel/iwlwifi/mvm/scan.c load = iwl_mvm_get_traffic_load(mvm); mvm 322 drivers/net/wireless/intel/iwlwifi/mvm/scan.c low_latency = iwl_mvm_low_latency(mvm); mvm 324 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return _iwl_mvm_get_scan_type(mvm, vif, load, low_latency); mvm 328 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_scan_type iwl_mvm_get_scan_type_band(struct iwl_mvm *mvm, mvm 335 drivers/net/wireless/intel/iwlwifi/mvm/scan.c load = iwl_mvm_get_traffic_load_band(mvm, band); mvm 336 drivers/net/wireless/intel/iwlwifi/mvm/scan.c low_latency = iwl_mvm_low_latency_band(mvm, band); mvm 338 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return _iwl_mvm_get_scan_type(mvm, vif, load, low_latency); mvm 342 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_get_measurement_dwell(struct iwl_mvm *mvm, mvm 351 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) { mvm 358 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 368 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static inline bool iwl_mvm_rrm_scan_needed(struct iwl_mvm *mvm) mvm 371 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return fw_has_capa(&mvm->fw->ucode_capa, mvm 375 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_max_scan_ie_fw_cmd_room(struct iwl_mvm *mvm) mvm 385 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_rrm_scan_needed(mvm)) mvm 391 drivers/net/wireless/intel/iwlwifi/mvm/scan.c int iwl_mvm_max_scan_ie_len(struct iwl_mvm *mvm) mvm 393 drivers/net/wireless/intel/iwlwifi/mvm/scan.c int max_ie_len = iwl_mvm_max_scan_ie_fw_cmd_room(mvm); mvm 408 drivers/net/wireless/intel/iwlwifi/mvm/scan.c void iwl_mvm_rx_lmac_scan_iter_complete_notif(struct iwl_mvm *mvm, mvm 414 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 418 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->sched_scan_pass_all == SCHED_SCAN_PASS_ALL_FOUND) { mvm 419 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Pass all scheduled scan results found\n"); mvm 420 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_sched_scan_results(mvm->hw); mvm 421 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_ENABLED; mvm 425 drivers/net/wireless/intel/iwlwifi/mvm/scan.c void iwl_mvm_rx_scan_match_found(struct iwl_mvm *mvm, mvm 428 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Scheduled scan results\n"); mvm 429 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_sched_scan_results(mvm->hw); mvm 446 drivers/net/wireless/intel/iwlwifi/mvm/scan.c void iwl_mvm_rx_lmac_scan_complete_notif(struct iwl_mvm *mvm, mvm 456 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (WARN_ON_ONCE(fw_has_capa(&mvm->fw->ucode_capa, mvm 461 drivers/net/wireless/intel/iwlwifi/mvm/scan.c lockdep_assert_held(&mvm->mutex); mvm 473 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_status & IWL_MVM_SCAN_STOPPING_SCHED) { mvm 474 drivers/net/wireless/intel/iwlwifi/mvm/scan.c WARN_ON_ONCE(mvm->scan_status & IWL_MVM_SCAN_STOPPING_REGULAR); mvm 476 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Scheduled scan %s, EBS status %s\n", mvm 479 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 485 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status &= ~IWL_MVM_SCAN_STOPPING_SCHED; mvm 486 drivers/net/wireless/intel/iwlwifi/mvm/scan.c } else if (mvm->scan_status & IWL_MVM_SCAN_STOPPING_REGULAR) { mvm 487 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Regular scan %s, EBS status %s\n", mvm 491 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status &= ~IWL_MVM_SCAN_STOPPING_REGULAR; mvm 492 drivers/net/wireless/intel/iwlwifi/mvm/scan.c } else if (mvm->scan_status & IWL_MVM_SCAN_SCHED) { mvm 493 drivers/net/wireless/intel/iwlwifi/mvm/scan.c WARN_ON_ONCE(mvm->scan_status & IWL_MVM_SCAN_REGULAR); mvm 495 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Scheduled scan %s, EBS status %s\n", mvm 498 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 504 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status &= ~IWL_MVM_SCAN_SCHED; mvm 505 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_sched_scan_stopped(mvm->hw); mvm 506 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; mvm 507 drivers/net/wireless/intel/iwlwifi/mvm/scan.c } else if (mvm->scan_status & IWL_MVM_SCAN_REGULAR) { mvm 512 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Regular scan %s, EBS status %s (FW)\n", mvm 516 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status &= ~IWL_MVM_SCAN_REGULAR; mvm 517 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_scan_completed(mvm->hw, &info); mvm 518 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cancel_delayed_work(&mvm->scan_timeout_dwork); mvm 519 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_resume_tcm(mvm); mvm 521 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_ERR(mvm, mvm 525 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->last_ebs_successful = mvm 592 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_config_sched_scan_profiles(struct iwl_mvm *mvm, mvm 611 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_SHORT_BL) mvm 650 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Sending scheduled scan profile config\n"); mvm 652 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 660 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static bool iwl_mvm_scan_pass_all(struct iwl_mvm *mvm, mvm 664 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 667 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; mvm 671 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Sending Scheduled scan without filtering\n"); mvm 673 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_ENABLED; mvm 677 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_lmac_scan_abort(struct iwl_mvm *mvm) mvm 685 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_send_cmd_status(mvm, &cmd, &status); mvm 697 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "SCAN OFFLOAD ABORT ret %d.\n", status); mvm 704 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static void iwl_mvm_scan_fill_tx_cmd(struct iwl_mvm *mvm, mvm 710 drivers/net/wireless/intel/iwlwifi/mvm/scan.c tx_cmd[0].rate_n_flags = iwl_mvm_scan_rate_n_flags(mvm, mvm 713 drivers/net/wireless/intel/iwlwifi/mvm/scan.c tx_cmd[0].sta_id = mvm->aux_sta.sta_id; mvm 717 drivers/net/wireless/intel/iwlwifi/mvm/scan.c tx_cmd[1].rate_n_flags = iwl_mvm_scan_rate_n_flags(mvm, mvm 720 drivers/net/wireless/intel/iwlwifi/mvm/scan.c tx_cmd[1].sta_id = mvm->aux_sta.sta_id; mvm 724 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_lmac_scan_cfg_channels(struct iwl_mvm *mvm, mvm 743 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static u8 *iwl_mvm_copy_and_insert_ds_elem(struct iwl_mvm *mvm, const u8 *ies, mvm 755 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (!iwl_mvm_rrm_scan_needed(mvm)) { mvm 796 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_build_scan_probe(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 830 drivers/net/wireless/intel/iwlwifi/mvm/scan.c newpos = iwl_mvm_copy_and_insert_ds_elem(mvm, mvm 848 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_rrm_scan_needed(mvm) && mvm 849 drivers/net/wireless/intel/iwlwifi/mvm/scan.c !fw_has_capa(&mvm->fw->ucode_capa, mvm 859 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static void iwl_mvm_scan_lmac_dwell(struct iwl_mvm *mvm, mvm 872 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static inline bool iwl_mvm_scan_fits(struct iwl_mvm *mvm, int n_ssids, mvm 877 drivers/net/wireless/intel/iwlwifi/mvm/scan.c (n_channels <= mvm->fw->ucode_capa.n_scan_channels) & mvm 881 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_max_scan_ie_fw_cmd_room(mvm))); mvm 884 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static inline bool iwl_mvm_scan_use_ebs(struct iwl_mvm *mvm, mvm 887 drivers/net/wireless/intel/iwlwifi/mvm/scan.c const struct iwl_ucode_capabilities *capa = &mvm->fw->ucode_capa; mvm 890 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) mvm 891 drivers/net/wireless/intel/iwlwifi/mvm/scan.c low_latency = iwl_mvm_low_latency_band(mvm, NL80211_BAND_5GHZ); mvm 893 drivers/net/wireless/intel/iwlwifi/mvm/scan.c low_latency = iwl_mvm_low_latency(mvm); mvm 904 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->last_ebs_successful && IWL_MVM_ENABLE_EBS && mvm 906 drivers/net/wireless/intel/iwlwifi/mvm/scan.c (!low_latency || iwl_mvm_is_frag_ebs_supported(mvm))); mvm 921 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_scan_lmac_flags(struct iwl_mvm *mvm, mvm 936 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_rrm_scan_needed(mvm) && mvm 937 drivers/net/wireless/intel/iwlwifi/mvm/scan.c fw_has_capa(&mvm->fw->ucode_capa, mvm 947 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_iter_notif_enabled) mvm 951 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->sched_scan_pass_all == SCHED_SCAN_PASS_ALL_ENABLED) mvm 975 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_scan_lmac(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 978 drivers/net/wireless/intel/iwlwifi/mvm/scan.c struct iwl_scan_req_lmac *cmd = mvm->scan_cmd; mvm 981 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->fw->ucode_capa.n_scan_channels); mvm 985 drivers/net/wireless/intel/iwlwifi/mvm/scan.c lockdep_assert_held(&mvm->mutex); mvm 992 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_scan_lmac_dwell(mvm, cmd, params); mvm 994 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cmd->rx_chain_select = iwl_mvm_scan_rx_chain(mvm); mvm 1000 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cmd->scan_flags = cpu_to_le32(iwl_mvm_scan_lmac_flags(mvm, params, mvm 1006 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_scan_fill_tx_cmd(mvm, cmd->tx_cmd, params->no_cck); mvm 1031 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_scan_use_ebs(mvm, vif)) { mvm 1046 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_lmac_scan_cfg_channels(mvm, params->channels, mvm 1074 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static __le32 iwl_mvm_scan_config_rates(struct iwl_mvm *mvm) mvm 1080 drivers/net/wireless/intel/iwlwifi/mvm/scan.c band = &mvm->nvm_data->bands[NL80211_BAND_2GHZ]; mvm 1083 drivers/net/wireless/intel/iwlwifi/mvm/scan.c band = &mvm->nvm_data->bands[NL80211_BAND_5GHZ]; mvm 1093 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static void iwl_mvm_fill_scan_dwell(struct iwl_mvm *mvm, mvm 1102 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static void iwl_mvm_fill_channels(struct iwl_mvm *mvm, u8 *channels, mvm 1108 drivers/net/wireless/intel/iwlwifi/mvm/scan.c band = &mvm->nvm_data->bands[NL80211_BAND_2GHZ]; mvm 1111 drivers/net/wireless/intel/iwlwifi/mvm/scan.c band = &mvm->nvm_data->bands[NL80211_BAND_5GHZ]; mvm 1116 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static void iwl_mvm_fill_scan_config_v1(struct iwl_mvm *mvm, void *config, mvm 1120 drivers/net/wireless/intel/iwlwifi/mvm/scan.c enum iwl_mvm_scan_type type = iwl_mvm_get_scan_type(mvm, NULL); mvm 1124 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg->tx_chains = cpu_to_le32(iwl_mvm_get_valid_tx_ant(mvm)); mvm 1125 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg->rx_chains = cpu_to_le32(iwl_mvm_scan_rx_ant(mvm)); mvm 1126 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg->legacy_rates = iwl_mvm_scan_config_rates(mvm); mvm 1130 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_fill_scan_dwell(mvm, &cfg->dwell); mvm 1132 drivers/net/wireless/intel/iwlwifi/mvm/scan.c memcpy(&cfg->mac_addr, &mvm->addresses[0].addr, ETH_ALEN); mvm 1134 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg->bcast_sta_id = mvm->aux_sta.sta_id; mvm 1137 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_fill_channels(mvm, cfg->channel_array, max_channels); mvm 1140 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static void iwl_mvm_fill_scan_config_v2(struct iwl_mvm *mvm, void *config, mvm 1147 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg->tx_chains = cpu_to_le32(iwl_mvm_get_valid_tx_ant(mvm)); mvm 1148 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg->rx_chains = cpu_to_le32(iwl_mvm_scan_rx_ant(mvm)); mvm 1149 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg->legacy_rates = iwl_mvm_scan_config_rates(mvm); mvm 1151 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) { mvm 1154 drivers/net/wireless/intel/iwlwifi/mvm/scan.c lb_type = iwl_mvm_get_scan_type_band(mvm, NULL, mvm 1156 drivers/net/wireless/intel/iwlwifi/mvm/scan.c hb_type = iwl_mvm_get_scan_type_band(mvm, NULL, mvm 1170 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_get_scan_type(mvm, NULL); mvm 1178 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_fill_scan_dwell(mvm, &cfg->dwell); mvm 1180 drivers/net/wireless/intel/iwlwifi/mvm/scan.c memcpy(&cfg->mac_addr, &mvm->addresses[0].addr, ETH_ALEN); mvm 1182 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg->bcast_sta_id = mvm->aux_sta.sta_id; mvm 1185 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_fill_channels(mvm, cfg->channel_array, max_channels); mvm 1188 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_legacy_config_scan(struct iwl_mvm *mvm) mvm 1198 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->nvm_data->bands[NL80211_BAND_2GHZ].n_channels + mvm 1199 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->nvm_data->bands[NL80211_BAND_5GHZ].n_channels; mvm 1203 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (WARN_ON(num_channels > mvm->fw->ucode_capa.n_scan_channels)) mvm 1204 drivers/net/wireless/intel/iwlwifi/mvm/scan.c num_channels = mvm->fw->ucode_capa.n_scan_channels; mvm 1206 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) { mvm 1207 drivers/net/wireless/intel/iwlwifi/mvm/scan.c type = iwl_mvm_get_scan_type_band(mvm, NULL, mvm 1209 drivers/net/wireless/intel/iwlwifi/mvm/scan.c hb_type = iwl_mvm_get_scan_type_band(mvm, NULL, mvm 1211 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (type == mvm->scan_type && hb_type == mvm->hb_scan_type) mvm 1214 drivers/net/wireless/intel/iwlwifi/mvm/scan.c type = iwl_mvm_get_scan_type(mvm, NULL); mvm 1215 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (type == mvm->scan_type) mvm 1219 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_cdb_scan_api(mvm)) mvm 1223 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cmd_size += mvm->fw->ucode_capa.n_scan_channels; mvm 1252 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_cdb_scan_api(mvm)) { mvm 1253 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) mvm 1257 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_fill_scan_config_v2(mvm, cfg, flags, channel_flags, mvm 1260 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_fill_scan_config_v1(mvm, cfg, flags, channel_flags, mvm 1268 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Sending UMAC scan config\n"); mvm 1270 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 1272 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_type = type; mvm 1273 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->hb_scan_type = hb_type; mvm 1280 drivers/net/wireless/intel/iwlwifi/mvm/scan.c int iwl_mvm_config_scan(struct iwl_mvm *mvm) mvm 1290 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (!iwl_mvm_is_reduced_config_scan_supported(mvm)) mvm 1291 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return iwl_mvm_legacy_config_scan(mvm); mvm 1295 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg.bcast_sta_id = mvm->aux_sta.sta_id; mvm 1296 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg.tx_chains = cpu_to_le32(iwl_mvm_get_valid_tx_ant(mvm)); mvm 1297 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cfg.rx_chains = cpu_to_le32(iwl_mvm_scan_rx_ant(mvm)); mvm 1299 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Sending UMAC scan config\n"); mvm 1301 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return iwl_mvm_send_cmd(mvm, &cmd); mvm 1304 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_scan_uid_by_status(struct iwl_mvm *mvm, int status) mvm 1308 drivers/net/wireless/intel/iwlwifi/mvm/scan.c for (i = 0; i < mvm->max_scans; i++) mvm 1309 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_uid_status[i] == status) mvm 1315 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static void iwl_mvm_scan_umac_dwell(struct iwl_mvm *mvm, mvm 1328 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adaptive_dwell_supported(mvm)) { mvm 1334 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adwell_hb_ap_num_supported(mvm)) mvm 1355 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) { mvm 1364 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (!iwl_mvm_is_adaptive_dwell_v2_supported(mvm)) { mvm 1371 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) { mvm 1385 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) { mvm 1394 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_cdb_scan_api(mvm)) { mvm 1418 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_umac_scan_cfg_channels(struct iwl_mvm *mvm, mvm 1428 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_scan_ext_chan_supported(mvm)) { mvm 1441 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static u16 iwl_mvm_scan_umac_flags(struct iwl_mvm *mvm, mvm 1456 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm) && mvm 1460 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_rrm_scan_needed(mvm) && mvm 1461 drivers/net/wireless/intel/iwlwifi/mvm/scan.c fw_has_capa(&mvm->fw->ucode_capa, mvm 1477 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_iter_notif_enabled) mvm 1481 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->sched_scan_pass_all == SCHED_SCAN_PASS_ALL_ENABLED) mvm 1484 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adaptive_dwell_supported(mvm) && IWL_MVM_ADWELL_ENABLE && mvm 1496 drivers/net/wireless/intel/iwlwifi/mvm/scan.c !iwl_mvm_is_adaptive_dwell_supported(mvm) && mvm 1497 drivers/net/wireless/intel/iwlwifi/mvm/scan.c !iwl_mvm_is_oce_supported(mvm)) mvm 1500 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_oce_supported(mvm)) { mvm 1511 drivers/net/wireless/intel/iwlwifi/mvm/scan.c !WARN_ON_ONCE(!iwl_mvm_is_adaptive_dwell_supported(mvm))) mvm 1520 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_scan_umac(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1524 drivers/net/wireless/intel/iwlwifi/mvm/scan.c struct iwl_scan_req_umac *cmd = mvm->scan_cmd; mvm 1526 drivers/net/wireless/intel/iwlwifi/mvm/scan.c void *cmd_data = iwl_mvm_get_scan_req_umac_data(mvm); mvm 1528 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->fw->ucode_capa.n_scan_channels; mvm 1539 drivers/net/wireless/intel/iwlwifi/mvm/scan.c chan_param = iwl_mvm_get_scan_req_umac_channel(mvm); mvm 1541 drivers/net/wireless/intel/iwlwifi/mvm/scan.c lockdep_assert_held(&mvm->mutex); mvm 1546 drivers/net/wireless/intel/iwlwifi/mvm/scan.c uid = iwl_mvm_scan_uid_by_status(mvm, 0); mvm 1552 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_scan_umac_dwell(mvm, cmd, params); mvm 1554 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_uid_status[uid] = type; mvm 1557 drivers/net/wireless/intel/iwlwifi/mvm/scan.c gen_flags = iwl_mvm_scan_umac_flags(mvm, params, vif); mvm 1559 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adaptive_dwell_v2_supported(mvm)) { mvm 1576 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_scan_use_ebs(mvm, vif)) { mvm 1582 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_frag_ebs_supported(mvm)) { mvm 1585 drivers/net/wireless/intel/iwlwifi/mvm/scan.c (!iwl_mvm_is_cdb_supported(mvm) && mvm 1614 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_scan_ext_chan_supported(mvm)) { mvm 1624 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_umac_scan_cfg_channels(mvm, params->channels, mvm 1630 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_num_scans(struct iwl_mvm *mvm) mvm 1632 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return hweight32(mvm->scan_status & IWL_MVM_SCAN_MASK); mvm 1635 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_check_running_scans(struct iwl_mvm *mvm, int type) mvm 1637 drivers/net/wireless/intel/iwlwifi/mvm/scan.c bool unified_image = fw_has_capa(&mvm->fw->ucode_capa, mvm 1652 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status & (IWL_MVM_SCAN_SCHED | IWL_MVM_SCAN_NETDETECT)) mvm 1655 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_num_scans(mvm) < mvm->max_scans) mvm 1663 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_status & IWL_MVM_SCAN_REGULAR_MASK) mvm 1665 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_SCHED, true); mvm 1667 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_status & IWL_MVM_SCAN_SCHED_MASK) mvm 1669 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_REGULAR, true); mvm 1685 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_status & IWL_MVM_SCAN_REGULAR_MASK) mvm 1686 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_REGULAR, mvm 1688 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_status & IWL_MVM_SCAN_SCHED_MASK) mvm 1689 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return iwl_mvm_scan_stop(mvm, IWL_MVM_SCAN_SCHED, mvm 1708 drivers/net/wireless/intel/iwlwifi/mvm/scan.c struct iwl_mvm *mvm = container_of(delayed_work, struct iwl_mvm, mvm 1711 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_ERR(mvm, "regular scan timed out\n"); mvm 1713 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_force_nmi(mvm->trans); mvm 1716 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static void iwl_mvm_fill_scan_type(struct iwl_mvm *mvm, mvm 1720 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_cdb_supported(mvm)) { mvm 1722 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_get_scan_type_band(mvm, vif, mvm 1725 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_get_scan_type_band(mvm, vif, mvm 1728 drivers/net/wireless/intel/iwlwifi/mvm/scan.c params->type = iwl_mvm_get_scan_type(mvm, vif); mvm 1732 drivers/net/wireless/intel/iwlwifi/mvm/scan.c int iwl_mvm_reg_scan_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 1737 drivers/net/wireless/intel/iwlwifi/mvm/scan.c .len = { iwl_mvm_scan_size(mvm), }, mvm 1738 drivers/net/wireless/intel/iwlwifi/mvm/scan.c .data = { mvm->scan_cmd, }, mvm 1745 drivers/net/wireless/intel/iwlwifi/mvm/scan.c lockdep_assert_held(&mvm->mutex); mvm 1747 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_lar_supported(mvm) && !mvm->lar_regdom_set) { mvm 1748 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_ERR(mvm, "scan while LAR regdomain is not set\n"); mvm 1752 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_check_running_scans(mvm, IWL_MVM_SCAN_REGULAR); mvm 1757 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (WARN_ON(!mvm->scan_cmd)) mvm 1760 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (!iwl_mvm_scan_fits(mvm, req->n_ssids, ies, req->n_channels)) mvm 1779 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_fill_scan_type(mvm, ¶ms, vif); mvm 1781 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_get_measurement_dwell(mvm, req, ¶ms); mvm 1787 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_build_scan_probe(mvm, vif, ies, ¶ms); mvm 1789 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) { mvm 1791 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_scan_umac(mvm, vif, ¶ms, mvm 1795 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_scan_lmac(mvm, vif, ¶ms); mvm 1801 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_pause_tcm(mvm, false); mvm 1803 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_send_cmd(mvm, &hcmd); mvm 1809 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_ERR(mvm, "Scan failed! ret %d\n", ret); mvm 1810 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_resume_tcm(mvm); mvm 1814 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Scan request was sent successfully\n"); mvm 1815 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status |= IWL_MVM_SCAN_REGULAR; mvm 1816 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_vif = iwl_mvm_vif_from_mac80211(vif); mvm 1818 drivers/net/wireless/intel/iwlwifi/mvm/scan.c schedule_delayed_work(&mvm->scan_timeout_dwork, mvm 1824 drivers/net/wireless/intel/iwlwifi/mvm/scan.c int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, mvm 1831 drivers/net/wireless/intel/iwlwifi/mvm/scan.c .len = { iwl_mvm_scan_size(mvm), }, mvm 1832 drivers/net/wireless/intel/iwlwifi/mvm/scan.c .data = { mvm->scan_cmd, }, mvm 1838 drivers/net/wireless/intel/iwlwifi/mvm/scan.c lockdep_assert_held(&mvm->mutex); mvm 1840 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_lar_supported(mvm) && !mvm->lar_regdom_set) { mvm 1841 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_ERR(mvm, "sched-scan while LAR regdomain is not set\n"); mvm 1845 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_check_running_scans(mvm, type); mvm 1850 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (WARN_ON(!mvm->scan_cmd)) mvm 1853 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (!iwl_mvm_scan_fits(mvm, req->n_ssids, ies, req->n_channels)) mvm 1864 drivers/net/wireless/intel/iwlwifi/mvm/scan.c params.pass_all = iwl_mvm_scan_pass_all(mvm, req); mvm 1873 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_fill_scan_type(mvm, ¶ms, vif); mvm 1881 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 1888 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_config_sched_scan_profiles(mvm, req); mvm 1892 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_build_scan_probe(mvm, vif, ies, ¶ms); mvm 1894 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) { mvm 1896 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_scan_umac(mvm, vif, ¶ms, type); mvm 1899 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_scan_lmac(mvm, vif, ¶ms); mvm 1905 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_send_cmd(mvm, &hcmd); mvm 1907 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 1909 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status |= type; mvm 1915 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_ERR(mvm, "Sched scan failed! ret %d\n", ret); mvm 1921 drivers/net/wireless/intel/iwlwifi/mvm/scan.c void iwl_mvm_rx_umac_scan_complete_notif(struct iwl_mvm *mvm, mvm 1929 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (WARN_ON(!(mvm->scan_uid_status[uid] & mvm->scan_status))) mvm 1933 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_REGULAR) { mvm 1936 drivers/net/wireless/intel/iwlwifi/mvm/scan.c .scan_start_tsf = mvm->scan_start, mvm 1939 drivers/net/wireless/intel/iwlwifi/mvm/scan.c memcpy(info.tsf_bssid, mvm->scan_vif->bssid, ETH_ALEN); mvm 1940 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_scan_completed(mvm->hw, &info); mvm 1941 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_vif = NULL; mvm 1942 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cancel_delayed_work(&mvm->scan_timeout_dwork); mvm 1943 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_mvm_resume_tcm(mvm); mvm 1944 drivers/net/wireless/intel/iwlwifi/mvm/scan.c } else if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_SCHED) { mvm 1945 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_sched_scan_stopped(mvm->hw); mvm 1946 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; mvm 1949 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status &= ~mvm->scan_uid_status[uid]; mvm 1950 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 1952 drivers/net/wireless/intel/iwlwifi/mvm/scan.c uid, mvm->scan_uid_status[uid], mvm 1956 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 1963 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->last_ebs_successful = false; mvm 1965 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_uid_status[uid] = 0; mvm 1968 drivers/net/wireless/intel/iwlwifi/mvm/scan.c void iwl_mvm_rx_umac_scan_iter_complete_notif(struct iwl_mvm *mvm, mvm 1974 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_start = le64_to_cpu(notif->start_tsf); mvm 1976 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 1980 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->sched_scan_pass_all == SCHED_SCAN_PASS_ALL_FOUND) { mvm 1981 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Pass all scheduled scan results found\n"); mvm 1982 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_sched_scan_results(mvm->hw); mvm 1983 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_ENABLED; mvm 1986 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, mvm 1988 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_start); mvm 1991 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_umac_scan_abort(struct iwl_mvm *mvm, int type) mvm 1996 drivers/net/wireless/intel/iwlwifi/mvm/scan.c lockdep_assert_held(&mvm->mutex); mvm 2002 drivers/net/wireless/intel/iwlwifi/mvm/scan.c uid = iwl_mvm_scan_uid_by_status(mvm, type); mvm 2008 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Sending scan abort, uid %u\n", uid); mvm 2010 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_send_cmd_pdu(mvm, mvm 2015 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_uid_status[uid] = type << IWL_MVM_SCAN_STOPPING_SHIFT; mvm 2020 drivers/net/wireless/intel/iwlwifi/mvm/scan.c static int iwl_mvm_scan_stop_wait(struct iwl_mvm *mvm, int type) mvm 2027 drivers/net/wireless/intel/iwlwifi/mvm/scan.c lockdep_assert_held(&mvm->mutex); mvm 2029 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_init_notification_wait(&mvm->notif_wait, &wait_scan_done, mvm 2034 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "Preparing to stop scan, type %x\n", type); mvm 2036 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) mvm 2037 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_umac_scan_abort(mvm, type); mvm 2039 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_lmac_scan_abort(mvm); mvm 2042 drivers/net/wireless/intel/iwlwifi/mvm/scan.c IWL_DEBUG_SCAN(mvm, "couldn't stop scan type %d\n", type); mvm 2043 drivers/net/wireless/intel/iwlwifi/mvm/scan.c iwl_remove_notification(&mvm->notif_wait, &wait_scan_done); mvm 2047 drivers/net/wireless/intel/iwlwifi/mvm/scan.c return iwl_wait_notification(&mvm->notif_wait, &wait_scan_done, mvm 2051 drivers/net/wireless/intel/iwlwifi/mvm/scan.c int iwl_mvm_scan_size(struct iwl_mvm *mvm) mvm 2056 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_adaptive_dwell_v2_supported(mvm)) mvm 2058 drivers/net/wireless/intel/iwlwifi/mvm/scan.c else if (iwl_mvm_is_adaptive_dwell_supported(mvm)) mvm 2060 drivers/net/wireless/intel/iwlwifi/mvm/scan.c else if (iwl_mvm_cdb_scan_api(mvm)) mvm 2063 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) { mvm 2064 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_scan_ext_chan_supported(mvm)) mvm 2071 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->fw->ucode_capa.n_scan_channels + mvm 2076 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->fw->ucode_capa.n_scan_channels + mvm 2084 drivers/net/wireless/intel/iwlwifi/mvm/scan.c void iwl_mvm_report_scan_aborted(struct iwl_mvm *mvm) mvm 2086 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) { mvm 2089 drivers/net/wireless/intel/iwlwifi/mvm/scan.c uid = iwl_mvm_scan_uid_by_status(mvm, IWL_MVM_SCAN_REGULAR); mvm 2095 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_scan_completed(mvm->hw, &info); mvm 2096 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_uid_status[uid] = 0; mvm 2098 drivers/net/wireless/intel/iwlwifi/mvm/scan.c uid = iwl_mvm_scan_uid_by_status(mvm, IWL_MVM_SCAN_SCHED); mvm 2099 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (uid >= 0 && !mvm->fw_restart) { mvm 2100 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_sched_scan_stopped(mvm->hw); mvm 2101 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; mvm 2102 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_uid_status[uid] = 0; mvm 2109 drivers/net/wireless/intel/iwlwifi/mvm/scan.c for (i = 0; i < mvm->max_scans; i++) { mvm 2110 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (WARN_ONCE(mvm->scan_uid_status[i], mvm 2113 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_uid_status[i] = 0; mvm 2116 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (mvm->scan_status & IWL_MVM_SCAN_REGULAR) { mvm 2121 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_scan_completed(mvm->hw, &info); mvm 2128 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if ((mvm->scan_status & IWL_MVM_SCAN_SCHED) && mvm 2129 drivers/net/wireless/intel/iwlwifi/mvm/scan.c !mvm->fw_restart) { mvm 2130 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_sched_scan_stopped(mvm->hw); mvm 2131 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; mvm 2136 drivers/net/wireless/intel/iwlwifi/mvm/scan.c int iwl_mvm_scan_stop(struct iwl_mvm *mvm, int type, bool notify) mvm 2140 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (!(mvm->scan_status & type)) mvm 2143 drivers/net/wireless/intel/iwlwifi/mvm/scan.c if (iwl_mvm_is_radio_killed(mvm)) { mvm 2148 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ret = iwl_mvm_scan_stop_wait(mvm, type); mvm 2150 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status |= type << IWL_MVM_SCAN_STOPPING_SHIFT; mvm 2157 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->scan_status &= ~type; mvm 2160 drivers/net/wireless/intel/iwlwifi/mvm/scan.c cancel_delayed_work(&mvm->scan_timeout_dwork); mvm 2166 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_scan_completed(mvm->hw, &info); mvm 2169 drivers/net/wireless/intel/iwlwifi/mvm/scan.c ieee80211_sched_scan_stopped(mvm->hw); mvm 2170 drivers/net/wireless/intel/iwlwifi/mvm/scan.c mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; mvm 152 drivers/net/wireless/intel/iwlwifi/mvm/sf.c static void iwl_mvm_fill_sf_command(struct iwl_mvm *mvm, mvm 211 drivers/net/wireless/intel/iwlwifi/mvm/sf.c static int iwl_mvm_sf_config(struct iwl_mvm *mvm, u8 sta_id, mvm 220 drivers/net/wireless/intel/iwlwifi/mvm/sf.c if (mvm->cfg->disable_dummy_notification) mvm 227 drivers/net/wireless/intel/iwlwifi/mvm/sf.c if (new_state != SF_FULL_ON && mvm->sf_state == new_state) mvm 232 drivers/net/wireless/intel/iwlwifi/mvm/sf.c iwl_mvm_fill_sf_command(mvm, &sf_cmd, NULL); mvm 236 drivers/net/wireless/intel/iwlwifi/mvm/sf.c IWL_ERR(mvm, mvm 241 drivers/net/wireless/intel/iwlwifi/mvm/sf.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 243 drivers/net/wireless/intel/iwlwifi/mvm/sf.c IWL_ERR(mvm, "Invalid station id\n"); mvm 247 drivers/net/wireless/intel/iwlwifi/mvm/sf.c iwl_mvm_fill_sf_command(mvm, &sf_cmd, sta); mvm 251 drivers/net/wireless/intel/iwlwifi/mvm/sf.c iwl_mvm_fill_sf_command(mvm, &sf_cmd, NULL); mvm 259 drivers/net/wireless/intel/iwlwifi/mvm/sf.c ret = iwl_mvm_send_cmd_pdu(mvm, REPLY_SF_CFG_CMD, CMD_ASYNC, mvm 262 drivers/net/wireless/intel/iwlwifi/mvm/sf.c mvm->sf_state = new_state; mvm 272 drivers/net/wireless/intel/iwlwifi/mvm/sf.c int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *changed_vif, mvm 288 drivers/net/wireless/intel/iwlwifi/mvm/sf.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) || mvm 292 drivers/net/wireless/intel/iwlwifi/mvm/sf.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 332 drivers/net/wireless/intel/iwlwifi/mvm/sf.c return iwl_mvm_sf_config(mvm, sta_id, new_state); mvm 75 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static inline int iwl_mvm_add_sta_cmd_size(struct iwl_mvm *mvm) mvm 77 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_rx_api(mvm) || mvm 78 drivers/net/wireless/intel/iwlwifi/mvm/sta.c fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_STA_TYPE)) mvm 84 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_find_free_sta_id(struct iwl_mvm *mvm, mvm 91 drivers/net/wireless/intel/iwlwifi/mvm/sta.c WARN_ON_ONCE(test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)); mvm 93 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 100 drivers/net/wireless/intel/iwlwifi/mvm/sta.c for (sta_id = 0; sta_id < ARRAY_SIZE(mvm->fw_id_to_mac_id); sta_id++) { mvm 104 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!rcu_dereference_protected(mvm->fw_id_to_mac_id[sta_id], mvm 105 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_is_held(&mvm->mutex))) mvm 112 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_sta_send_to_fw(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 129 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_STA_TYPE)) mvm 135 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_tx_api(mvm)) { mvm 233 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu_status(mvm, ADD_STA, mvm 234 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), mvm 241 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_ASSOC(mvm, "ADD_STA PASSED\n"); mvm 245 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "ADD_STA failed\n"); mvm 279 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference(ba_data->mvm->fw_id_to_mac_id[ba_data->sta_id]); mvm 300 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_invalidate_sta_queue(struct iwl_mvm *mvm, int queue, mvm 310 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 313 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta_id = mvm->queue_info[queue].ra_sta_id; mvm 317 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 343 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_send_cmd_pdu_status(mvm, ADD_STA, mvm 344 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), mvm 348 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_disable_txq(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 357 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 358 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_txq_free(mvm->trans, queue); mvm 363 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(mvm->queue_info[queue].tid_bitmap == 0)) mvm 366 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].tid_bitmap &= ~BIT(tid); mvm 368 drivers/net/wireless/intel/iwlwifi/mvm/sta.c cmd.action = mvm->queue_info[queue].tid_bitmap ? mvm 371 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].status = IWL_MVM_QUEUE_FREE; mvm 373 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 376 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].tid_bitmap); mvm 382 drivers/net/wireless/intel/iwlwifi/mvm/sta.c cmd.sta_id = mvm->queue_info[queue].ra_sta_id; mvm 383 drivers/net/wireless/intel/iwlwifi/mvm/sta.c cmd.tid = mvm->queue_info[queue].txq_tid; mvm 386 drivers/net/wireless/intel/iwlwifi/mvm/sta.c WARN(mvm->queue_info[queue].tid_bitmap, mvm 388 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue, mvm->queue_info[queue].tid_bitmap); mvm 391 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].tid_bitmap = 0; mvm 401 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].reserved = false; mvm 403 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_txq_disable(mvm->trans, queue, false); mvm 404 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, flags, mvm 408 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to disable queue %d (ret=%d)\n", mvm 413 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_get_queue_agg_tids(struct iwl_mvm *mvm, int queue) mvm 422 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 424 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 427 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta_id = mvm->queue_info[queue].ra_sta_id; mvm 428 drivers/net/wireless/intel/iwlwifi/mvm/sta.c tid_bitmap = mvm->queue_info[queue].tid_bitmap; mvm 430 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[sta_id], mvm 431 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_is_held(&mvm->mutex)); mvm 453 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_remove_sta_queue_marking(struct iwl_mvm *mvm, int queue) mvm 462 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 464 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 467 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta_id = mvm->queue_info[queue].ra_sta_id; mvm 468 drivers/net/wireless/intel/iwlwifi/mvm/sta.c tid_bitmap = mvm->queue_info[queue].tid_bitmap; mvm 472 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 512 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_free_inactive_queue(struct iwl_mvm *mvm, int queue, mvm 522 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 524 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 527 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta_id = mvm->queue_info[queue].ra_sta_id; mvm 528 drivers/net/wireless/intel/iwlwifi/mvm/sta.c tid = mvm->queue_info[queue].txq_tid; mvm 532 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvmsta = iwl_mvm_sta_from_staid_protected(mvm, sta_id); mvm 536 drivers/net/wireless/intel/iwlwifi/mvm/sta.c disable_agg_tids = iwl_mvm_remove_sta_queue_marking(mvm, queue); mvm 539 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_invalidate_sta_queue(mvm, queue, mvm 542 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_disable_txq(mvm, old_sta, queue, tid, 0); mvm 544 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, mvm 553 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_invalidate_sta_queue(mvm, queue, 0, true); mvm 558 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_get_shared_queue(struct iwl_mvm *mvm, mvm 569 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 571 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 583 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ac_to_queue[mvm->queue_info[i].mac80211_ac] = i; mvm 616 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_is_dqa_data_queue(mvm, queue) && mvm 617 drivers/net/wireless/intel/iwlwifi/mvm/sta.c !iwl_mvm_is_dqa_mgmt_queue(mvm, queue) && mvm 619 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "No DATA queues available to share\n"); mvm 632 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_redirect_queue(struct iwl_mvm *mvm, int queue, int tid, mvm 643 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 654 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (ac <= mvm->queue_info[queue].mac80211_ac && !force) { mvm 655 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 661 drivers/net/wireless/intel/iwlwifi/mvm/sta.c cmd.sta_id = mvm->queue_info[queue].ra_sta_id; mvm 662 drivers/net/wireless/intel/iwlwifi/mvm/sta.c cmd.tx_fifo = iwl_mvm_ac_to_tx_fifo[mvm->queue_info[queue].mac80211_ac]; mvm 663 drivers/net/wireless/intel/iwlwifi/mvm/sta.c cmd.tid = mvm->queue_info[queue].txq_tid; mvm 664 drivers/net/wireless/intel/iwlwifi/mvm/sta.c shared_queue = hweight16(mvm->queue_info[queue].tid_bitmap) > 1; mvm 666 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Redirecting TXQ #%d to FIFO #%d\n", mvm 672 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_trans_wait_tx_queues_empty(mvm->trans, BIT(queue)); mvm 674 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Error draining queue %d before reconfig\n", mvm 681 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_txq_disable(mvm->trans, queue, false); mvm 682 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, 0, sizeof(cmd), &cmd); mvm 684 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed SCD disable TXQ %d (ret=%d)\n", queue, mvm 688 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_txq_enable_cfg(mvm->trans, queue, ssn, NULL, wdg_timeout); mvm 691 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].txq_tid = tid; mvm 696 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_reconfig_scd(mvm, queue, iwl_mvm_ac_to_tx_fifo[ac], mvm 700 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].mac80211_ac = ac; mvm 709 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_txq_set_shared_mode(mvm->trans, queue, true); mvm 718 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_find_free_queue(struct iwl_mvm *mvm, u8 sta_id, mvm 723 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 725 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN(maxq >= mvm->trans->trans_cfg->base_params->num_of_queues, mvm 727 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->trans->trans_cfg->base_params->num_of_queues)) mvm 728 drivers/net/wireless/intel/iwlwifi/mvm/sta.c maxq = mvm->trans->trans_cfg->base_params->num_of_queues - 1; mvm 731 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 736 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->queue_info[i].tid_bitmap == 0 && mvm 737 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[i].status == IWL_MVM_QUEUE_FREE) mvm 743 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_tvqm_enable_txq(struct iwl_mvm *mvm, mvm 747 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->trans->cfg->min_256_ba_txq_size); mvm 752 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->trans->cfg->min_txq_size); mvm 754 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_trans_txq_alloc(mvm->trans, mvm 759 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 765 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Enabling TXQ #%d for sta %d tid %d\n", mvm 768 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Enabling TXQ #%d\n", queue); mvm 773 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_sta_alloc_queue_tvqm(struct iwl_mvm *mvm, mvm 781 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_get_wd_timeout(mvm, mvmsta->vif, false, false); mvm 784 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 786 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 789 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_mvm_tvqm_enable_txq(mvm, mvmsta->sta_id, tid, wdg_timeout); mvm 794 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->tvqm_info[queue].txq_tid = tid; mvm 795 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->tvqm_info[queue].sta_id = mvmsta->sta_id; mvm 797 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Allocated queue is %d\n", queue); mvm 806 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static bool iwl_mvm_update_txq_mapping(struct iwl_mvm *mvm, mvm 813 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->queue_info[queue].tid_bitmap & BIT(tid)) { mvm 814 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Trying to enable TXQ %d with existing TID %d\n", mvm 820 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->queue_info[queue].tid_bitmap) mvm 823 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].tid_bitmap |= BIT(tid); mvm 824 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].ra_sta_id = sta_id; mvm 828 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].mac80211_ac = mvm 831 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].mac80211_ac = IEEE80211_AC_VO; mvm 833 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].txq_tid = tid; mvm 843 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 845 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue, mvm->queue_info[queue].tid_bitmap); mvm 850 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static bool iwl_mvm_enable_txq(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 867 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 871 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_update_txq_mapping(mvm, sta, queue, cfg->sta_id, cfg->tid)) mvm 874 drivers/net/wireless/intel/iwlwifi/mvm/sta.c inc_ssn = iwl_trans_txq_enable_cfg(mvm->trans, queue, ssn, mvm 879 drivers/net/wireless/intel/iwlwifi/mvm/sta.c WARN(iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, 0, sizeof(cmd), &cmd), mvm 885 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_change_queue_tid(struct iwl_mvm *mvm, int queue) mvm 895 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 897 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 900 drivers/net/wireless/intel/iwlwifi/mvm/sta.c tid_bitmap = mvm->queue_info[queue].tid_bitmap; mvm 910 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, 0, sizeof(cmd), &cmd); mvm 912 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to update owner of TXQ %d (ret=%d)\n", mvm 917 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].txq_tid = tid; mvm 918 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Changed TXQ %d ownership to tid %d\n", mvm 922 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_unshare_queue(struct iwl_mvm *mvm, int queue) mvm 934 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 937 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 939 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta_id = mvm->queue_info[queue].ra_sta_id; mvm 940 drivers/net/wireless/intel/iwlwifi/mvm/sta.c tid_bitmap = mvm->queue_info[queue].tid_bitmap; mvm 945 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to unshare q %d, active tids=0x%lx\n", mvm 950 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Unsharing TXQ %d, keeping tid %d\n", queue, mvm 953 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[sta_id], mvm 954 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_is_held(&mvm->mutex)); mvm 960 drivers/net/wireless/intel/iwlwifi/mvm/sta.c wdg_timeout = iwl_mvm_get_wd_timeout(mvm, mvmsta->vif, false, false); mvm 964 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_redirect_queue(mvm, queue, tid, mvm 969 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to redirect TXQ %d\n", queue); mvm 986 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, ADD_STA, CMD_ASYNC, mvm 987 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), &cmd); mvm 989 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 994 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_txq_set_shared_mode(mvm->trans, queue, false); mvm 998 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].status = IWL_MVM_QUEUE_READY; mvm 1008 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static bool iwl_mvm_remove_inactive_tids(struct iwl_mvm *mvm, mvm 1017 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1019 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 1025 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_tid_queued(mvm, &mvmsta->tid_data[tid])) mvm 1034 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (tid_bitmap == mvm->queue_info[queue].tid_bitmap) { mvm 1035 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Queue %d is inactive\n", queue); mvm 1047 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].tid_bitmap &= ~BIT(tid); mvm 1049 drivers/net/wireless/intel/iwlwifi/mvm/sta.c tid_bitmap = mvm->queue_info[queue].tid_bitmap; mvm 1062 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!(tid_bitmap & BIT(mvm->queue_info[queue].txq_tid))) mvm 1065 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 1070 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 1072 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].tid_bitmap); mvm 1078 drivers/net/wireless/intel/iwlwifi/mvm/sta.c tid_bitmap = mvm->queue_info[queue].tid_bitmap; mvm 1081 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (hweight16(mvm->queue_info[queue].tid_bitmap) == 1 && mvm 1082 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].status == IWL_MVM_QUEUE_SHARED) { mvm 1083 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Marking Q:%d for reconfig\n", mvm 1100 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_inactivity_check(struct iwl_mvm *mvm, u8 alloc_for_sta) mvm 1108 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1110 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 1126 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue_tid_bitmap = mvm->queue_info[i].tid_bitmap; mvm 1131 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->queue_info[i].status != IWL_MVM_QUEUE_READY && mvm 1132 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[i].status != IWL_MVM_QUEUE_SHARED) mvm 1138 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (time_after(mvm->queue_info[i].last_frame_time[tid] + mvm 1154 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta_id = mvm->queue_info[i].ra_sta_id; mvm 1155 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 1168 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_remove_inactive_tids(mvm, mvmsta, i, mvm 1183 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_unshare_queue(mvm, i); mvm 1185 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_change_queue_tid(mvm, i); mvm 1188 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_free_inactive_queue(mvm, free_queue, queue_owner, mvm 1201 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_sta_alloc_queue(struct iwl_mvm *mvm, mvm 1206 drivers/net/wireless/intel/iwlwifi/mvm/sta.c .fifo = iwl_mvm_mac_ac_to_tx_fifo(mvm, ac), mvm 1212 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_get_wd_timeout(mvm, mvmsta->vif, false, false); mvm 1221 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1223 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 1224 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_sta_alloc_queue_tvqm(mvm, sta, ac, tid); mvm 1232 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id, mvm 1236 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Found free MGMT queue #%d\n", mvm 1243 drivers/net/wireless/intel/iwlwifi/mvm/sta.c (mvm->queue_info[mvmsta->reserved_queue].status == mvm 1246 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].reserved = true; mvm 1247 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Using reserved queue #%d\n", queue); mvm 1251 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id, mvm 1256 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_mvm_inactivity_check(mvm, mvmsta->sta_id); mvm 1261 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_mvm_get_shared_queue(mvm, tfd_queue_mask, ac); mvm 1264 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].status = IWL_MVM_QUEUE_SHARED; mvm 1275 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].status = IWL_MVM_QUEUE_READY; mvm 1279 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "No available queues for tid %d on sta_id %d\n", mvm 1293 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 1300 drivers/net/wireless/intel/iwlwifi/mvm/sta.c disable_agg_tids = iwl_mvm_get_queue_agg_tids(mvm, queue); mvm 1303 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Disabling aggs on queue %d\n", mvm 1305 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_invalidate_sta_queue(mvm, queue, mvm 1310 drivers/net/wireless/intel/iwlwifi/mvm/sta.c inc_ssn = iwl_mvm_enable_txq(mvm, sta, queue, ssn, &cfg, wdg_timeout); mvm 1319 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_txq_set_shared_mode(mvm->trans, queue, true); mvm 1340 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_sta_send_to_fw(mvm, sta, true, STA_MODIFY_QUEUES); mvm 1346 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_sta_tx_agg(mvm, sta, tid, queue, true); mvm 1352 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_redirect_queue(mvm, queue, tid, ac, ssn, mvm 1362 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_disable_txq(mvm, sta, queue, tid, 0); mvm 1377 drivers/net/wireless/intel/iwlwifi/mvm/sta.c struct iwl_mvm *mvm = container_of(wk, struct iwl_mvm, mvm 1380 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mutex_lock(&mvm->mutex); mvm 1382 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_inactivity_check(mvm, IWL_MVM_INVALID_STA); mvm 1384 drivers/net/wireless/intel/iwlwifi/mvm/sta.c while (!list_empty(&mvm->add_stream_txqs)) { mvm 1389 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvmtxq = list_first_entry(&mvm->add_stream_txqs, mvm 1398 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_sta_alloc_queue(mvm, txq->sta, txq->ac, tid); mvm 1401 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_mac_itxq_xmit(mvm->hw, txq); mvm 1405 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mutex_unlock(&mvm->mutex); mvm 1408 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_reserve_sta_stream(struct iwl_mvm *mvm, mvm 1416 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 1420 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_inactivity_check(mvm, IWL_MVM_INVALID_STA); mvm 1424 drivers/net/wireless/intel/iwlwifi/mvm/sta.c !mvm->queue_info[IWL_MVM_DQA_BSS_CLIENT_QUEUE].tid_bitmap && mvm 1425 drivers/net/wireless/intel/iwlwifi/mvm/sta.c (mvm->queue_info[IWL_MVM_DQA_BSS_CLIENT_QUEUE].status == mvm 1429 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id, mvm 1434 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_mvm_inactivity_check(mvm, mvmsta->sta_id); mvm 1436 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "No available queues for new station\n"); mvm 1440 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].status = IWL_MVM_QUEUE_RESERVED; mvm 1444 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Reserving data queue #%d for sta_id %d\n", mvm 1457 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_realloc_queues_after_restart(struct iwl_mvm *mvm, mvm 1462 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_get_wd_timeout(mvm, mvm_sta->vif, false, false); mvm 1471 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[mvm_sta->reserved_queue].status = mvm 1484 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 1485 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 1488 drivers/net/wireless/intel/iwlwifi/mvm/sta.c txq_id = iwl_mvm_tvqm_enable_txq(mvm, mvm_sta->sta_id, mvm 1510 drivers/net/wireless/intel/iwlwifi/mvm/sta.c cfg.fifo = iwl_mvm_mac_ac_to_tx_fifo(mvm, ac); mvm 1515 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 1519 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_enable_txq(mvm, sta, txq_id, seq, &cfg, wdg); mvm 1520 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_READY; mvm 1525 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_add_int_sta_common(struct iwl_mvm *mvm, mvm 1534 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1540 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_STA_TYPE)) mvm 1543 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_tx_api(mvm)) mvm 1550 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu_status(mvm, ADD_STA, mvm 1551 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), mvm 1558 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_INFO(mvm, "Internal station added.\n"); mvm 1562 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Add internal station failed, status=0x%x\n", mvm 1569 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_add_sta(struct iwl_mvm *mvm, mvm 1580 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1582 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) mvm 1583 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta_id = iwl_mvm_find_free_sta_id(mvm, mvm 1594 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { mvm 1604 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_add_int_sta_common(mvm, &tmp_sta, sta->addr, mvm 1609 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_realloc_queues_after_restart(mvm, sta); mvm 1611 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta_flags = iwl_mvm_has_new_tx_api(mvm) ? 0 : STA_MODIFY_QUEUES; mvm 1619 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!mvm->trans->trans_cfg->gen2) mvm 1655 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_rx_api(mvm) && mvm 1656 drivers/net/wireless/intel/iwlwifi/mvm/sta.c !test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { mvm 1659 drivers/net/wireless/intel/iwlwifi/mvm/sta.c dup_data = kcalloc(mvm->trans->num_rx_queues, mvm 1672 drivers/net/wireless/intel/iwlwifi/mvm/sta.c for (q = 0; q < mvm->trans->num_rx_queues; q++) mvm 1678 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_tx_api(mvm)) { mvm 1679 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_reserve_sta_stream(mvm, sta, mvm 1689 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_tlc_offload(mvm)) mvm 1690 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_rs_add_sta(mvm, mvm_sta); mvm 1694 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_toggle_tx_ant(mvm, &mvm_sta->tx_ant); mvm 1697 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_sta_send_to_fw(mvm, sta, sta_update, sta_flags); mvm 1710 drivers/net/wireless/intel/iwlwifi/mvm/sta.c rcu_assign_pointer(mvm->fw_id_to_mac_id[sta_id], sta); mvm 1718 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_drain_sta(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta, mvm 1725 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1734 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu_status(mvm, ADD_STA, mvm 1735 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), mvm 1742 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_INFO(mvm, "Frames for staid %d will drained in fw\n", mvm 1747 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Couldn't drain frames for staid %d\n", mvm 1760 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_rm_sta_common(struct iwl_mvm *mvm, u8 sta_id) mvm 1768 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[sta_id], mvm 1769 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_is_held(&mvm->mutex)); mvm 1773 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Invalid station id\n"); mvm 1777 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, REMOVE_STA, 0, mvm 1780 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to remove station. Id=%d\n", sta_id); mvm 1787 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_disable_sta_queues(struct iwl_mvm *mvm, mvm 1794 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1800 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_disable_txq(mvm, sta, mvm_sta->tid_data[i].txq_id, i, mvm 1813 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_wait_sta_queues_empty(struct iwl_mvm *mvm, mvm 1829 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_trans_wait_txq_empty(mvm->trans, txq_id); mvm 1837 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_rm_sta(struct iwl_mvm *mvm, mvm 1846 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1848 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_rx_api(mvm)) mvm 1851 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_drain_sta(mvm, mvm_sta, true); mvm 1856 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_flush_sta(mvm, mvm_sta, false, 0); mvm 1859 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 1860 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_wait_sta_queues_empty(mvm, mvm_sta); mvm 1864 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_trans_wait_tx_queues_empty(mvm->trans, mvm 1870 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_drain_sta(mvm, mvm_sta, false); mvm 1872 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_disable_sta_queues(mvm, vif, sta); mvm 1884 drivers/net/wireless/intel/iwlwifi/mvm/sta.c status = &mvm->queue_info[reserved_txq].status; mvm 1908 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON_ONCE(mvm->tdls_cs.peer.sta_id == sta_id)) { mvm 1909 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->tdls_cs.peer.sta_id = IWL_MVM_INVALID_STA; mvm 1910 drivers/net/wireless/intel/iwlwifi/mvm/sta.c cancel_delayed_work(&mvm->tdls_cs.dwork); mvm 1920 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_rm_sta_common(mvm, mvm_sta->sta_id); mvm 1921 drivers/net/wireless/intel/iwlwifi/mvm/sta.c RCU_INIT_POINTER(mvm->fw_id_to_mac_id[mvm_sta->sta_id], NULL); mvm 1926 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_rm_sta_id(struct iwl_mvm *mvm, mvm 1930 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int ret = iwl_mvm_rm_sta_common(mvm, sta_id); mvm 1932 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 1934 drivers/net/wireless/intel/iwlwifi/mvm/sta.c RCU_INIT_POINTER(mvm->fw_id_to_mac_id[sta_id], NULL); mvm 1938 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_allocate_int_sta(struct iwl_mvm *mvm, mvm 1943 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) || mvm 1945 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta->sta_id = iwl_mvm_find_free_sta_id(mvm, iftype); mvm 1954 drivers/net/wireless/intel/iwlwifi/mvm/sta.c rcu_assign_pointer(mvm->fw_id_to_mac_id[sta->sta_id], ERR_PTR(-EINVAL)); mvm 1958 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_dealloc_int_sta(struct iwl_mvm *mvm, struct iwl_mvm_int_sta *sta) mvm 1960 drivers/net/wireless/intel/iwlwifi/mvm/sta.c RCU_INIT_POINTER(mvm->fw_id_to_mac_id[sta->sta_id], NULL); mvm 1965 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_enable_aux_snif_queue(struct iwl_mvm *mvm, u16 queue, mvm 1969 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->trans->trans_cfg->base_params->wd_timeout : mvm 1979 drivers/net/wireless/intel/iwlwifi/mvm/sta.c WARN_ON(iwl_mvm_has_new_tx_api(mvm)); mvm 1981 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_enable_txq(mvm, NULL, queue, 0, &cfg, wdg_timeout); mvm 1984 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_enable_aux_snif_queue_tvqm(struct iwl_mvm *mvm, u8 sta_id) mvm 1987 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->trans->trans_cfg->base_params->wd_timeout : mvm 1990 drivers/net/wireless/intel/iwlwifi/mvm/sta.c WARN_ON(!iwl_mvm_has_new_tx_api(mvm)); mvm 1992 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_tvqm_enable_txq(mvm, sta_id, IWL_MAX_TID_COUNT, mvm 1996 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_add_int_sta_with_queue(struct iwl_mvm *mvm, int macidx, mvm 2004 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_tx_api(mvm)) mvm 2005 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_enable_aux_snif_queue(mvm, *queue, sta->sta_id, fifo); mvm 2007 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_add_int_sta_common(mvm, sta, NULL, macidx, maccolor); mvm 2009 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_tx_api(mvm)) mvm 2010 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_disable_txq(mvm, NULL, *queue, mvm 2019 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 2022 drivers/net/wireless/intel/iwlwifi/mvm/sta.c txq = iwl_mvm_enable_aux_snif_queue_tvqm(mvm, sta->sta_id); mvm 2024 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_rm_sta_common(mvm, sta->sta_id); mvm 2034 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_add_aux_sta(struct iwl_mvm *mvm) mvm 2038 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2041 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_allocate_int_sta(mvm, &mvm->aux_sta, BIT(mvm->aux_queue), mvm 2047 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_add_int_sta_with_queue(mvm, MAC_INDEX_AUX, 0, mvm 2048 drivers/net/wireless/intel/iwlwifi/mvm/sta.c &mvm->aux_sta, &mvm->aux_queue, mvm 2051 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_dealloc_int_sta(mvm, &mvm->aux_sta); mvm 2058 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_add_snif_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2062 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2064 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_add_int_sta_with_queue(mvm, mvmvif->id, mvmvif->color, mvm 2065 drivers/net/wireless/intel/iwlwifi/mvm/sta.c &mvm->snif_sta, &mvm->snif_queue, mvm 2069 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_rm_snif_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2073 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2075 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_disable_txq(mvm, NULL, mvm->snif_queue, IWL_MAX_TID_COUNT, 0); mvm 2076 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_rm_sta_common(mvm, mvm->snif_sta.sta_id); mvm 2078 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_WARN(mvm, "Failed sending remove station\n"); mvm 2083 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_dealloc_snif_sta(struct iwl_mvm *mvm) mvm 2085 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_dealloc_int_sta(mvm, &mvm->snif_sta); mvm 2088 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_del_aux_sta(struct iwl_mvm *mvm) mvm 2090 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2092 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_dealloc_int_sta(mvm, &mvm->aux_sta); mvm 2103 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_send_add_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2112 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_get_wd_timeout(mvm, vif, false, false); mvm 2121 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2123 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_tx_api(mvm)) { mvm 2126 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = mvm->probe_queue; mvm 2128 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = mvm->p2p_dev_queue; mvm 2136 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_enable_txq(mvm, NULL, queue, 0, &cfg, wdg_timeout); mvm 2145 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_add_int_sta_common(mvm, bsta, baddr, mvm 2154 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 2155 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = iwl_mvm_tvqm_enable_txq(mvm, bsta->sta_id, mvm 2159 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_rm_sta_common(mvm, bsta->sta_id); mvm 2165 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->probe_queue = queue; mvm 2167 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->p2p_dev_queue = queue; mvm 2173 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_free_bcast_sta_queues(struct iwl_mvm *mvm, mvm 2179 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2181 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_flush_sta(mvm, &mvmvif->bcast_sta, true, 0); mvm 2186 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = mvm->probe_queue; mvm 2189 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue = mvm->p2p_dev_queue; mvm 2197 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_disable_txq(mvm, NULL, queue, IWL_MAX_TID_COUNT, 0); mvm 2198 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 2207 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_send_rm_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2212 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2214 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_free_bcast_sta_queues(mvm, vif); mvm 2216 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_rm_sta_common(mvm, mvmvif->bcast_sta.sta_id); mvm 2218 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_WARN(mvm, "Failed sending remove station\n"); mvm 2222 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_alloc_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2226 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2228 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_allocate_int_sta(mvm, &mvmvif->bcast_sta, 0, mvm 2240 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_add_p2p_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2246 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2248 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_alloc_bcast_sta(mvm, vif); mvm 2252 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_add_bcast_sta(mvm, vif); mvm 2255 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_dealloc_int_sta(mvm, bsta); mvm 2260 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_dealloc_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2264 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_dealloc_int_sta(mvm, &mvmvif->bcast_sta); mvm 2271 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_rm_p2p_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2275 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2277 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_rm_bcast_sta(mvm, vif); mvm 2279 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_dealloc_bcast_sta(mvm, vif); mvm 2292 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_add_mcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2306 drivers/net/wireless/intel/iwlwifi/mvm/sta.c unsigned int timeout = iwl_mvm_get_wd_timeout(mvm, vif, false, false); mvm 2309 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2328 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_tx_api(mvm) && mvm 2329 drivers/net/wireless/intel/iwlwifi/mvm/sta.c fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_STA_TYPE)) { mvm 2330 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_enable_txq(mvm, NULL, mvmvif->cab_queue, 0, &cfg, mvm 2334 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_add_int_sta_common(mvm, msta, maddr, mvm 2346 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 2347 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int queue = iwl_mvm_tvqm_enable_txq(mvm, msta->sta_id, mvm 2355 drivers/net/wireless/intel/iwlwifi/mvm/sta.c } else if (!fw_has_api(&mvm->fw->ucode_capa, mvm 2357 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_enable_txq(mvm, NULL, mvmvif->cab_queue, 0, &cfg, mvm 2362 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_dealloc_int_sta(mvm, msta); mvm 2366 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int __iwl_mvm_remove_sta_key(struct iwl_mvm *mvm, u8 sta_id, mvm 2374 drivers/net/wireless/intel/iwlwifi/mvm/sta.c bool new_api = fw_has_api(&mvm->fw->ucode_capa, mvm 2403 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu_status(mvm, ADD_STA_KEY, size, &u.cmd, mvm 2408 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_WEP(mvm, "MODIFY_STA: remove sta key passed\n"); mvm 2412 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "MODIFY_STA: remove sta key failed\n"); mvm 2423 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_rm_mcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 2428 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2430 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_flush_sta(mvm, &mvmvif->mcast_sta, true, 0); mvm 2432 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_disable_txq(mvm, NULL, mvmvif->cab_queue, 0, 0); mvm 2434 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_rm_sta_common(mvm, mvmvif->mcast_sta.sta_id); mvm 2436 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_WARN(mvm, "Failed sending remove station\n"); mvm 2443 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_sync_rxq_del_ba(struct iwl_mvm *mvm, u8 baid) mvm 2450 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_sync_rx_queues_internal(mvm, (void *)¬if, sizeof(notif)); mvm 2453 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_free_reorder(struct iwl_mvm *mvm, mvm 2458 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_sync_rxq_del_ba(mvm, data->baid); mvm 2460 drivers/net/wireless/intel/iwlwifi/mvm/sta.c for (i = 0; i < mvm->trans->num_rx_queues; i++) { mvm 2496 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_init_reorder_buffer(struct iwl_mvm *mvm, mvm 2502 drivers/net/wireless/intel/iwlwifi/mvm/sta.c for (i = 0; i < mvm->trans->num_rx_queues; i++) { mvm 2516 drivers/net/wireless/intel/iwlwifi/mvm/sta.c reorder_buf->mvm = mvm; mvm 2524 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_sta_rx_agg(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 2533 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2535 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (start && mvm->rx_ba_sessions >= IWL_MAX_RX_BA_SESSIONS) { mvm 2536 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_WARN(mvm, "Not enough RX BA SESSIONS\n"); mvm 2540 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_rx_api(mvm) && start) { mvm 2567 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->trans->num_rx_queues * mvm 2595 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu_status(mvm, ADD_STA, mvm 2596 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), mvm 2603 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_HT(mvm, "RX BA Session %sed in fw\n", mvm 2607 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_WARN(mvm, "RX BA Session refused by fw\n"); mvm 2612 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "RX BA Session failed %sing, status 0x%x\n", mvm 2623 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->rx_ba_sessions++; mvm 2625 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_rx_api(mvm)) mvm 2637 drivers/net/wireless/intel/iwlwifi/mvm/sta.c baid_data->rcu_ptr = &mvm->baid_map[baid]; mvm 2640 drivers/net/wireless/intel/iwlwifi/mvm/sta.c baid_data->mvm = mvm; mvm 2649 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_init_reorder_buffer(mvm, baid_data, ssn, buf_size); mvm 2656 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_HT(mvm, "Sta %d(%d) is assigned to BAID %d\n", mvm 2658 drivers/net/wireless/intel/iwlwifi/mvm/sta.c WARN_ON(rcu_access_pointer(mvm->baid_map[baid])); mvm 2659 drivers/net/wireless/intel/iwlwifi/mvm/sta.c rcu_assign_pointer(mvm->baid_map[baid], baid_data); mvm 2663 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->rx_ba_sessions > 0) mvm 2665 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->rx_ba_sessions--; mvm 2666 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_rx_api(mvm)) mvm 2672 drivers/net/wireless/intel/iwlwifi/mvm/sta.c baid_data = rcu_access_pointer(mvm->baid_map[baid]); mvm 2677 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_free_reorder(mvm, baid_data); mvm 2679 drivers/net/wireless/intel/iwlwifi/mvm/sta.c RCU_INIT_POINTER(mvm->baid_map[baid], NULL); mvm 2681 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_HT(mvm, "BAID %d is free\n", baid); mvm 2690 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_sta_tx_agg(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 2698 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2711 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_tx_api(mvm)) mvm 2718 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu_status(mvm, ADD_STA, mvm 2719 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), mvm 2729 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "TX BA Session failed %sing, status 0x%x\n", mvm 2760 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 2774 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, mvm 2780 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 2783 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_has_new_tx_api(mvm)) { mvm 2786 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_sta_alloc_queue_tvqm(mvm, sta, ac, tid); mvm 2801 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id, mvm 2805 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to allocate agg queue\n"); mvm 2812 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_RESERVED; mvm 2815 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "tid_id %d out of range (0, %d)!\n", mvm 2819 drivers/net/wireless/intel/iwlwifi/mvm/sta.c } else if (unlikely(mvm->queue_info[txq_id].status == mvm 2822 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 2828 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 2837 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 2847 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->trans->trans_cfg->gen2) mvm 2865 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_sta_tx_agg_oper(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 2872 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_get_wd_timeout(mvm, vif, sta->tdls, false); mvm 2889 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON_ONCE(iwl_mvm_has_tlc_offload(mvm))) mvm 2904 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 2919 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_sta_tx_agg(mvm, sta, tid, queue, true); mvm 2927 drivers/net/wireless/intel/iwlwifi/mvm/sta.c queue_status = mvm->queue_info[queue].status; mvm 2930 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->queue_info[queue].status == IWL_MVM_QUEUE_READY) mvm 2942 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_trans_wait_tx_queues_empty(mvm->trans, mvm 2945 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, mvm 2950 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_reconfig_scd(mvm, queue, cfg.fifo, mvm 2954 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, mvm 2961 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_enable_txq(mvm, sta, queue, ssn, mvm 2966 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_sta_tx_agg(mvm, sta, tid, queue, true); mvm 2972 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[queue].status = IWL_MVM_QUEUE_READY; mvm 2986 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_HT(mvm, "Tx aggregation enabled on ra = %pM tid = %d\n", mvm 2989 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_send_lq_cmd(mvm, &mvmsta->lq_sta.rs_drv.lq); mvm 2992 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_unreserve_agg_queue(struct iwl_mvm *mvm, mvm 2998 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 3000 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 3010 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->queue_info[txq_id].status == IWL_MVM_QUEUE_RESERVED) { mvm 3011 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_FREE; mvm 3016 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_sta_tx_agg_stop(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 3028 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { mvm 3037 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Stop AGG: sta %d tid %d q %d state %d\n", mvm 3042 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_unreserve_agg_queue(mvm, mvmsta, tid_data); mvm 3048 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, mvm 3058 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_sta_tx_agg(mvm, sta, tid, txq_id, false); mvm 3068 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 3075 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, mvm 3078 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, mvm 3088 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_sta_tx_agg_flush(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 3102 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_TX_QUEUES(mvm, "Flush AGG: sta %d tid %d q %d state %d\n", mvm 3109 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_unreserve_agg_queue(mvm, mvmsta, tid_data); mvm 3112 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_drain_sta(mvm, mvmsta, true); mvm 3114 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 3115 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_flush_sta_tids(mvm, mvmsta->sta_id, mvm 3117 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Couldn't flush the AGG queue\n"); mvm 3118 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_wait_txq_empty(mvm->trans, txq_id); mvm 3120 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (iwl_mvm_flush_tx_path(mvm, BIT(txq_id), 0)) mvm 3121 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Couldn't flush the AGG queue\n"); mvm 3122 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_wait_tx_queues_empty(mvm->trans, BIT(txq_id)); mvm 3125 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_drain_sta(mvm, mvmsta, false); mvm 3127 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_sta_tx_agg(mvm, sta, tid, txq_id, false); mvm 3133 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_set_fw_key_idx(struct iwl_mvm *mvm) mvm 3137 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 3146 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (test_bit(i, mvm->fw_key_table)) mvm 3148 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->fw_key_deleted[i] > max) { mvm 3149 drivers/net/wireless/intel/iwlwifi/mvm/sta.c max = mvm->fw_key_deleted[i]; mvm 3160 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static struct iwl_mvm_sta *iwl_mvm_get_key_sta(struct iwl_mvm *mvm, mvm 3178 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference_check(mvm->fw_id_to_mac_id[sta_id], mvm 3179 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_is_held(&mvm->mutex)); mvm 3195 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_send_sta_key(struct iwl_mvm *mvm, mvm 3211 drivers/net/wireless/intel/iwlwifi/mvm/sta.c bool new_api = fw_has_api(&mvm->fw->ucode_capa, mvm 3288 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, ADD_STA_KEY, CMD_ASYNC, size, mvm 3291 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu_status(mvm, ADD_STA_KEY, size, mvm 3296 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_WEP(mvm, "MODIFY_STA: set dynamic key passed\n"); mvm 3300 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "MODIFY_STA: set dynamic key failed\n"); mvm 3307 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int iwl_mvm_send_sta_igtk(struct iwl_mvm *mvm, mvm 3321 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (WARN_ON(!iwl_mvm_has_new_rx_api(mvm) && mvm 3364 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_INFO(mvm, "%s igtk for sta %u\n", mvm 3368 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!iwl_mvm_has_new_rx_api(mvm)) { mvm 3378 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_send_cmd_pdu(mvm, MGMT_MCAST_KEY, 0, mvm 3381 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_send_cmd_pdu(mvm, MGMT_MCAST_KEY, 0, mvm 3386 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static inline u8 *iwl_mvm_get_mac_addr(struct iwl_mvm *mvm, mvm 3398 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[sta_id], mvm 3399 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_is_held(&mvm->mutex)); mvm 3407 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static int __iwl_mvm_set_sta_key(struct iwl_mvm *mvm, mvm 3432 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to find station id\n"); mvm 3438 drivers/net/wireless/intel/iwlwifi/mvm/sta.c addr = iwl_mvm_get_mac_addr(mvm, vif, sta); mvm 3442 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_sta_key(mvm, sta_id, keyconf, mcast, mvm 3451 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_sta_key(mvm, sta_id, keyconf, mcast, mvm 3455 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_sta_key(mvm, sta_id, keyconf, mcast, mvm 3462 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_set_sta_key(struct iwl_mvm *mvm, mvm 3474 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 3479 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm_sta = iwl_mvm_get_key_sta(mvm, vif, sta); mvm 3481 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to find station\n"); mvm 3493 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->fw_id_to_mac_id[sta_id], mvm 3494 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_is_held(&mvm->mutex)); mvm 3496 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Invalid station id\n"); mvm 3512 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_sta_igtk(mvm, keyconf, sta_id, false); mvm 3528 drivers/net/wireless/intel/iwlwifi/mvm/sta.c key_offset = iwl_mvm_set_fw_key_idx(mvm); mvm 3534 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = __iwl_mvm_set_sta_key(mvm, vif, sta, keyconf, key_offset, mcast); mvm 3547 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = __iwl_mvm_set_sta_key(mvm, vif, sta, keyconf, mvm 3550 drivers/net/wireless/intel/iwlwifi/mvm/sta.c __iwl_mvm_remove_sta_key(mvm, sta_id, keyconf, mcast); mvm 3555 drivers/net/wireless/intel/iwlwifi/mvm/sta.c __set_bit(key_offset, mvm->fw_key_table); mvm 3558 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_WEP(mvm, "key: cipher=%x len=%d idx=%d sta=%pM ret=%d\n", mvm 3564 drivers/net/wireless/intel/iwlwifi/mvm/sta.c int iwl_mvm_remove_sta_key(struct iwl_mvm *mvm, mvm 3574 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 3577 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm_sta = iwl_mvm_get_key_sta(mvm, vif, sta); mvm 3584 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_WEP(mvm, "mvm remove dynamic key: idx=%d sta=%d\n", mvm 3590 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_send_sta_igtk(mvm, keyconf, sta_id, true); mvm 3592 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!__test_and_clear_bit(keyconf->hw_key_idx, mvm->fw_key_table)) { mvm 3593 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "offset %d not used in fw key table.\n", mvm 3600 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->fw_key_deleted[i] < U8_MAX) mvm 3601 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->fw_key_deleted[i]++; mvm 3603 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm->fw_key_deleted[keyconf->hw_key_idx] = 0; mvm 3606 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_DEBUG_WEP(mvm, "station non-existent, early return.\n"); mvm 3610 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = __iwl_mvm_remove_sta_key(mvm, sta_id, keyconf, mcast); mvm 3617 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = __iwl_mvm_remove_sta_key(mvm, sta_id, keyconf, !mcast); mvm 3622 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_update_tkip_key(struct iwl_mvm *mvm, mvm 3634 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvm_sta = iwl_mvm_get_key_sta(mvm, vif, sta); mvm 3637 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_send_sta_key(mvm, mvm_sta->sta_id, keyconf, mcast, mvm 3645 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_sta_modify_ps_wake(struct iwl_mvm *mvm, mvm 3657 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, ADD_STA, CMD_ASYNC, mvm 3658 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), &cmd); mvm 3660 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to send ADD_STA command (%d)\n", ret); mvm 3663 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_sta_modify_sleep_tx_count(struct iwl_mvm *mvm, mvm 3705 drivers/net/wireless/intel/iwlwifi/mvm/sta.c n_queued = iwl_mvm_tid_queued(mvm, tid_data); mvm 3737 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_trans_block_txq_ptrs(mvm->trans, true); mvm 3739 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, ADD_STA, mvm 3741 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), &cmd); mvm 3743 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to send ADD_STA command (%d)\n", ret); mvm 3746 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_rx_eosp_notif(struct iwl_mvm *mvm, mvm 3758 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 3764 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_sta_modify_disable_tx(struct iwl_mvm *mvm, mvm 3776 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, ADD_STA, CMD_ASYNC, mvm 3777 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), &cmd); mvm 3779 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to send ADD_STA command (%d)\n", ret); mvm 3782 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_sta_modify_disable_tx_ap(struct iwl_mvm *mvm, mvm 3798 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ieee80211_sta_block_awake(mvm->hw, sta, disable); mvm 3800 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_sta_modify_disable_tx(mvm, mvm_sta, disable); mvm 3805 drivers/net/wireless/intel/iwlwifi/mvm/sta.c static void iwl_mvm_int_sta_modify_disable_tx(struct iwl_mvm *mvm, mvm 3820 drivers/net/wireless/intel/iwlwifi/mvm/sta.c ret = iwl_mvm_send_cmd_pdu(mvm, ADD_STA, 0, mvm 3821 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_add_sta_cmd_size(mvm), &cmd); mvm 3823 drivers/net/wireless/intel/iwlwifi/mvm/sta.c IWL_ERR(mvm, "Failed to send ADD_STA command (%d)\n", ret); mvm 3826 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_modify_all_sta_disable_tx(struct iwl_mvm *mvm, mvm 3834 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_assert_held(&mvm->mutex); mvm 3837 drivers/net/wireless/intel/iwlwifi/mvm/sta.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 3838 drivers/net/wireless/intel/iwlwifi/mvm/sta.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i], mvm 3839 drivers/net/wireless/intel/iwlwifi/mvm/sta.c lockdep_is_held(&mvm->mutex)); mvm 3848 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_sta_modify_disable_tx_ap(mvm, sta, disable); mvm 3851 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (!fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_STA_TYPE)) mvm 3856 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_int_sta_modify_disable_tx(mvm, mvmvif, mvm 3864 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_int_sta_modify_disable_tx(mvm, mvmvif, mvm 3868 drivers/net/wireless/intel/iwlwifi/mvm/sta.c void iwl_mvm_csa_client_absent(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 3875 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvmsta = iwl_mvm_sta_from_staid_rcu(mvm, mvmvif->ap_sta_id); mvm 3878 drivers/net/wireless/intel/iwlwifi/mvm/sta.c iwl_mvm_sta_modify_disable_tx(mvm, mvmsta, true); mvm 3883 drivers/net/wireless/intel/iwlwifi/mvm/sta.c u16 iwl_mvm_tid_queued(struct iwl_mvm *mvm, struct iwl_mvm_tid_data *tid_data) mvm 3891 drivers/net/wireless/intel/iwlwifi/mvm/sta.c if (mvm->trans->trans_cfg->gen2) mvm 456 drivers/net/wireless/intel/iwlwifi/mvm/sta.h u16 iwl_mvm_tid_queued(struct iwl_mvm *mvm, struct iwl_mvm_tid_data *tid_data); mvm 487 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_sta_send_to_fw(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 489 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_add_sta(struct iwl_mvm *mvm, mvm 493 drivers/net/wireless/intel/iwlwifi/mvm/sta.h static inline int iwl_mvm_update_sta(struct iwl_mvm *mvm, mvm 497 drivers/net/wireless/intel/iwlwifi/mvm/sta.h return iwl_mvm_sta_send_to_fw(mvm, sta, true, 0); mvm 500 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_wait_sta_queues_empty(struct iwl_mvm *mvm, mvm 502 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_rm_sta(struct iwl_mvm *mvm, mvm 505 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_rm_sta_id(struct iwl_mvm *mvm, mvm 508 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_set_sta_key(struct iwl_mvm *mvm, mvm 513 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_remove_sta_key(struct iwl_mvm *mvm, mvm 518 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_update_tkip_key(struct iwl_mvm *mvm, mvm 524 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_rx_eosp_notif(struct iwl_mvm *mvm, mvm 528 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_sta_rx_agg(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 530 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 532 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_sta_tx_agg_oper(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 535 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_sta_tx_agg_stop(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 537 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_sta_tx_agg_flush(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 540 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_sta_tx_agg(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mvm 543 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_add_aux_sta(struct iwl_mvm *mvm); mvm 544 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_del_aux_sta(struct iwl_mvm *mvm); mvm 546 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_alloc_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 547 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_send_add_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 548 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_add_p2p_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 549 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_send_rm_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 550 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_rm_p2p_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 551 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_add_mcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 552 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_rm_mcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 553 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_allocate_int_sta(struct iwl_mvm *mvm, mvm 557 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_dealloc_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 558 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_dealloc_int_sta(struct iwl_mvm *mvm, struct iwl_mvm_int_sta *sta); mvm 559 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_add_snif_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 560 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_rm_snif_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 561 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_dealloc_snif_sta(struct iwl_mvm *mvm); mvm 563 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_sta_modify_ps_wake(struct iwl_mvm *mvm, mvm 565 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_sta_modify_sleep_tx_count(struct iwl_mvm *mvm, mvm 570 drivers/net/wireless/intel/iwlwifi/mvm/sta.h int iwl_mvm_drain_sta(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta, mvm 572 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_sta_modify_disable_tx(struct iwl_mvm *mvm, mvm 574 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_sta_modify_disable_tx_ap(struct iwl_mvm *mvm, mvm 577 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_modify_all_sta_disable_tx(struct iwl_mvm *mvm, mvm 580 drivers/net/wireless/intel/iwlwifi/mvm/sta.h void iwl_mvm_csa_client_absent(struct iwl_mvm *mvm, struct ieee80211_vif *vif); mvm 72 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c void iwl_mvm_teardown_tdls_peers(struct iwl_mvm *mvm) mvm 78 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_assert_held(&mvm->mutex); mvm 80 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 81 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i], mvm 82 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_is_held(&mvm->mutex)); mvm 94 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c int iwl_mvm_tdls_sta_count(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 101 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_assert_held(&mvm->mutex); mvm 103 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 104 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i], mvm 105 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_is_held(&mvm->mutex)); mvm 121 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c static void iwl_mvm_tdls_config(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 136 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_assert_held(&mvm->mutex); mvm 147 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 148 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i], mvm 149 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_is_held(&mvm->mutex)); mvm 164 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, "send TDLS config to FW for %d peers\n", cnt); mvm 166 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 179 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c void iwl_mvm_recalc_tdls_state(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 182 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c int tdls_sta_cnt = iwl_mvm_tdls_sta_count(mvm, vif); mvm 186 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_power_update_mac(mvm); mvm 193 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 195 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_config(mvm, vif); mvm 199 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_power_update_mac(mvm); mvm 205 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 208 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_lock(&mvm->mutex); mvm 210 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_protect_session(mvm, vif, duration, duration, 100, true); mvm 211 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_unlock(&mvm->mutex); mvm 233 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c static void iwl_mvm_tdls_update_cs_state(struct iwl_mvm *mvm, mvm 236 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (mvm->tdls_cs.state == state) mvm 239 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, "TDLS channel switch state: %s -> %s\n", mvm 240 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_cs_state_str(mvm->tdls_cs.state), mvm 242 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.state = state; mvm 246 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.sent_timestamp = iwl_mvm_get_systime(mvm); mvm 249 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.cur_sta_id = IWL_MVM_INVALID_STA; mvm 252 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c void iwl_mvm_rx_tdls_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 262 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_assert_held(&mvm->mutex); mvm 266 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_update_cs_state(mvm, IWL_MVM_TDLS_SW_IDLE); mvm 273 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[sta_id], mvm 274 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_is_held(&mvm->mutex)); mvm 287 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mod_delayed_work(system_wq, &mvm->tdls_cs.dwork, mvm 290 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_update_cs_state(mvm, IWL_MVM_TDLS_SW_ACTIVE); mvm 294 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_check_action(struct iwl_mvm *mvm, mvm 302 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (mvm->tdls_cs.state != IWL_MVM_TDLS_SW_IDLE && mvm 303 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.cur_sta_id != IWL_MVM_INVALID_STA) { mvm 305 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->fw_id_to_mac_id[mvm->tdls_cs.cur_sta_id], mvm 306 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_is_held(&mvm->mutex)); mvm 311 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c switch (mvm->tdls_cs.state) { mvm 335 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c else if (timestamp <= mvm->tdls_cs.peer.sent_timestamp) mvm 368 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, mvm 370 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c type, mvm->tdls_cs.state, peer, same_peer, mvm 377 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_config_channel_switch(struct iwl_mvm *mvm, mvm 393 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_chan_info_cmd_tail(mvm, &cmd.ci); mvm 394 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c u16 len = sizeof(cmd) - iwl_mvm_chan_info_padding(mvm); mvm 397 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_assert_held(&mvm->mutex); mvm 399 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c ret = iwl_mvm_tdls_check_action(mvm, type, peer, peer_initiator, mvm 425 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (mvm->tdls_cs.state == IWL_MVM_TDLS_SW_REQ_SENT && mvm 426 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.chandef.chan) { mvm 428 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c chandef = &mvm->tdls_cs.peer.chandef; mvm 429 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c } else if (mvm->tdls_cs.state == IWL_MVM_TDLS_SW_ACTIVE && mvm 445 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_set_chan_info_chandef(mvm, &cmd.ci, chandef); mvm 466 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_set_tx_cmd(mvm, skb, &tail->frame.tx_cmd, info, mvm 469 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_set_tx_cmd_rate(mvm, &tail->frame.tx_cmd, info, sta, mvm 475 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c ret = iwl_mvm_send_cmd_pdu(mvm, TDLS_CHANNEL_SWITCH_CMD, 0, len, &cmd); mvm 477 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_ERR(mvm, "Failed to send TDLS_CHANNEL_SWITCH cmd: %d\n", mvm 484 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.cur_sta_id = mvmsta->sta_id; mvm 485 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_update_cs_state(mvm, mvm 490 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_update_cs_state(mvm, IWL_MVM_TDLS_SW_RESP_RCVD); mvm 497 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_update_cs_state(mvm, IWL_MVM_TDLS_SW_IDLE); mvm 504 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c struct iwl_mvm *mvm; mvm 511 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm = container_of(work, struct iwl_mvm, tdls_cs.dwork.work); mvm 512 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_lock(&mvm->mutex); mvm 515 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_update_cs_state(mvm, IWL_MVM_TDLS_SW_IDLE); mvm 518 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (mvm->tdls_cs.peer.sta_id == IWL_MVM_INVALID_STA) mvm 522 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->fw_id_to_mac_id[mvm->tdls_cs.peer.sta_id], mvm 523 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_is_held(&mvm->mutex)); mvm 530 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c ret = iwl_mvm_tdls_config_channel_switch(mvm, vif, mvm 533 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.initiator, mvm 534 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.op_class, mvm 535 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c &mvm->tdls_cs.peer.chandef, mvm 537 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.skb, mvm 538 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.ch_sw_tm_ie); mvm 540 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_ERR(mvm, "Not sending TDLS channel switch: %d\n", ret); mvm 544 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c schedule_delayed_work(&mvm->tdls_cs.dwork, msecs_to_jiffies(delay)); mvm 546 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_unlock(&mvm->mutex); mvm 556 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 561 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_lock(&mvm->mutex); mvm 563 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, "TDLS channel switch with %pM ch %d width %d\n", mvm 567 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (mvm->tdls_cs.peer.sta_id != IWL_MVM_INVALID_STA) { mvm 568 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, mvm 575 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c ret = iwl_mvm_tdls_config_channel_switch(mvm, vif, mvm 587 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.skb = skb_copy(tmpl_skb, GFP_KERNEL); mvm 588 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (!mvm->tdls_cs.peer.skb) { mvm 594 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.sta_id = mvmsta->sta_id; mvm 595 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.chandef = *chandef; mvm 596 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.initiator = sta->tdls_initiator; mvm 597 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.op_class = oper_class; mvm 598 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.ch_sw_tm_ie = ch_sw_tm_ie; mvm 606 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mod_delayed_work(system_wq, &mvm->tdls_cs.dwork, mvm 610 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_unlock(&mvm->mutex); mvm 618 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 622 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_lock(&mvm->mutex); mvm 624 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, "TDLS cancel channel switch with %pM\n", sta->addr); mvm 627 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (mvm->tdls_cs.peer.sta_id == IWL_MVM_INVALID_STA) { mvm 628 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, "No ch switch peer - %pM\n", sta->addr); mvm 633 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->fw_id_to_mac_id[mvm->tdls_cs.peer.sta_id], mvm 634 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_is_held(&mvm->mutex)); mvm 644 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c if (mvm->tdls_cs.cur_sta_id == mvm->tdls_cs.peer.sta_id && mvm 645 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.state != IWL_MVM_TDLS_SW_IDLE) mvm 648 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.sta_id = IWL_MVM_INVALID_STA; mvm 649 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c dev_kfree_skb(mvm->tdls_cs.peer.skb); mvm 650 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.peer.skb = NULL; mvm 653 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_unlock(&mvm->mutex); mvm 661 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c flush_delayed_work(&mvm->tdls_cs.dwork); mvm 663 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, "TDLS ending channel switch with %pM\n", sta->addr); mvm 671 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); mvm 678 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_lock(&mvm->mutex); mvm 680 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c IWL_DEBUG_TDLS(mvm, mvm 690 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.state == IWL_MVM_TDLS_SW_REQ_SENT && mvm 691 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->tdls_cs.cur_sta_id != IWL_MVM_INVALID_STA) { mvm 696 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mvm->fw_id_to_mac_id[mvm->tdls_cs.cur_sta_id], mvm 697 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c lockdep_is_held(&mvm->mutex)); mvm 699 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_update_cs_state(mvm, mvm 708 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c iwl_mvm_tdls_config_channel_switch(mvm, vif, type, params->sta->addr, mvm 720 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mod_delayed_work(system_wq, &mvm->tdls_cs.dwork, mvm 722 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c mutex_unlock(&mvm->mutex); mvm 83 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c void iwl_mvm_te_clear_data(struct iwl_mvm *mvm, mvm 86 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c lockdep_assert_held(&mvm->time_event_lock); mvm 100 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c struct iwl_mvm *mvm = container_of(wk, struct iwl_mvm, roc_done_wk); mvm 109 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c clear_bit(IWL_MVM_STATUS_ROC_RUNNING, &mvm->status); mvm 110 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c clear_bit(IWL_MVM_STATUS_ROC_AUX_RUNNING, &mvm->status); mvm 124 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_flush_sta(mvm, &mvm->aux_sta, true, CMD_ASYNC); mvm 127 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c if (test_and_clear_bit(IWL_MVM_STATUS_NEED_FLUSH_P2P, &mvm->status)) { mvm 137 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c if (!WARN_ON(!mvm->p2p_device_vif)) { mvm 138 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c mvmvif = iwl_mvm_vif_from_mac80211(mvm->p2p_device_vif); mvm 139 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_flush_sta(mvm, &mvmvif->bcast_sta, true, mvm 145 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static void iwl_mvm_roc_finished(struct iwl_mvm *mvm) mvm 154 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c schedule_work(&mvm->roc_done_wk); mvm 157 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static void iwl_mvm_csa_noa_start(struct iwl_mvm *mvm) mvm 163 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c csa_vif = rcu_dereference(mvm->csa_vif); mvm 167 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "CSA NOA started\n"); mvm 176 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_WARN(mvm, "CSA NOA started too early\n"); mvm 184 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c RCU_INIT_POINTER(mvm->csa_vif, NULL); mvm 192 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static bool iwl_mvm_te_check_disconnect(struct iwl_mvm *mvm, mvm 205 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_ERR(mvm, "%s\n", errmsg); mvm 207 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_connection_loss(mvm, vif, errmsg); mvm 212 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_handle_notify_csa(struct iwl_mvm *mvm, mvm 220 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "CSA time event failed to start\n"); mvm 226 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_csa_noa_start(mvm); mvm 230 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_connection_loss(mvm, vif, mvm 234 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_csa_client_absent(mvm, te_data->vif); mvm 245 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_clear_data(mvm, te_data); mvm 248 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static void iwl_mvm_te_check_trigger(struct iwl_mvm *mvm, mvm 256 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, mvm 276 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 292 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static void iwl_mvm_te_handle_notif(struct iwl_mvm *mvm, mvm 296 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c lockdep_assert_held(&mvm->time_event_lock); mvm 298 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "Handle time event notif - UID = 0x%x action %d\n", mvm 302 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_check_trigger(mvm, notif, te_data); mvm 320 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "%s\n", msg); mvm 322 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c if (iwl_mvm_te_check_disconnect(mvm, te_data->vif, msg)) { mvm 323 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_clear_data(mvm, te_data); mvm 329 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, mvm 335 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c ieee80211_remain_on_channel_expired(mvm->hw); mvm 336 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c set_bit(IWL_MVM_STATUS_NEED_FLUSH_P2P, &mvm->status); mvm 337 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_roc_finished(mvm); mvm 344 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_check_disconnect(mvm, te_data->vif, mvm 351 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_clear_data(mvm, te_data); mvm 357 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c set_bit(IWL_MVM_STATUS_ROC_RUNNING, &mvm->status); mvm 358 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c ieee80211_ready_on_channel(mvm->hw); mvm 360 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_handle_notify_csa(mvm, te_data, notif); mvm 363 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_WARN(mvm, "Got TE with unknown action\n"); mvm 370 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static int iwl_mvm_aux_roc_te_handle_notif(struct iwl_mvm *mvm, mvm 376 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c list_for_each_entry_safe(te_data, tmp, &mvm->aux_roc_te_list, list) { mvm 385 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_check_trigger(mvm, notif, te_data); mvm 387 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, mvm 395 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c ieee80211_remain_on_channel_expired(mvm->hw); mvm 396 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_roc_finished(mvm); /* flush aux queue */ mvm 403 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c set_bit(IWL_MVM_STATUS_ROC_AUX_RUNNING, &mvm->status); mvm 405 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c ieee80211_ready_on_channel(mvm->hw); /* Start TE */ mvm 407 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, mvm 419 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c void iwl_mvm_rx_time_event_notif(struct iwl_mvm *mvm, mvm 426 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "Time event notification - UID = 0x%x action %d\n", mvm 430 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_lock_bh(&mvm->time_event_lock); mvm 432 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c if (!iwl_mvm_aux_roc_te_handle_notif(mvm, notif)) mvm 435 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c list_for_each_entry_safe(te_data, tmp, &mvm->time_event_list, list) { mvm 437 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_handle_notif(mvm, te_data, notif); mvm 440 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_unlock_bh(&mvm->time_event_lock); mvm 446 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c struct iwl_mvm *mvm = mvm 456 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_ERR(mvm, "Invalid TIME_EVENT_NOTIFICATION response\n"); mvm 466 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "TIME_EVENT_NOTIFICATION response - UID = 0x%x\n", mvm 469 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_ERR(mvm, mvm 478 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c struct iwl_mvm *mvm = mvm 488 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_ERR(mvm, "Invalid TIME_EVENT_CMD response\n"); mvm 499 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "TIME_EVENT_CMD response - UID = 0x%x\n", mvm 504 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static int iwl_mvm_time_event_send_add(struct iwl_mvm *mvm, mvm 513 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c lockdep_assert_held(&mvm->mutex); mvm 515 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "Add new TE, duration %d TU\n", mvm 518 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_lock_bh(&mvm->time_event_lock); mvm 520 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_unlock_bh(&mvm->time_event_lock); mvm 526 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c list_add_tail(&te_data->list, &mvm->time_event_list); mvm 527 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_unlock_bh(&mvm->time_event_lock); mvm 538 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_init_notification_wait(&mvm->notif_wait, &wait_time_event, mvm 543 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c ret = iwl_mvm_send_cmd_pdu(mvm, TIME_EVENT_CMD, 0, mvm 546 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_ERR(mvm, "Couldn't send TIME_EVENT_CMD: %d\n", ret); mvm 547 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_remove_notification(&mvm->notif_wait, &wait_time_event); mvm 552 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c ret = iwl_wait_notification(&mvm->notif_wait, &wait_time_event, 1); mvm 558 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_lock_bh(&mvm->time_event_lock); mvm 559 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_clear_data(mvm, te_data); mvm 560 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_unlock_bh(&mvm->time_event_lock); mvm 565 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c void iwl_mvm_protect_session(struct iwl_mvm *mvm, mvm 576 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c lockdep_assert_held(&mvm->mutex); mvm 580 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "We have enough time in the current TE: %u\n", mvm 586 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "extend 0x%x: only %u ms left\n", mvm 597 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_stop_session_protection(mvm, vif); mvm 618 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_time_event_send_add(mvm, vif, te_data, &time_cmd); mvm 626 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_init_notification_wait(&mvm->notif_wait, &wait_te_notif, mvm 632 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c if (iwl_mvm_time_event_send_add(mvm, vif, te_data, &time_cmd)) { mvm 633 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_ERR(mvm, "Failed to add TE to protect session\n"); mvm 634 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_remove_notification(&mvm->notif_wait, &wait_te_notif); mvm 635 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c } else if (iwl_wait_notification(&mvm->notif_wait, &wait_te_notif, mvm 637 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_ERR(mvm, "Failed to protect session until TE\n"); mvm 641 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static bool __iwl_mvm_remove_time_event(struct iwl_mvm *mvm, mvm 651 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_lock_bh(&mvm->time_event_lock); mvm 660 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_te_clear_data(mvm, te_data); mvm 661 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_unlock_bh(&mvm->time_event_lock); mvm 669 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "TE 0x%x has already ended\n", *uid); mvm 682 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static void iwl_mvm_remove_aux_roc_te(struct iwl_mvm *mvm, mvm 687 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c u16 len = sizeof(aux_cmd) - iwl_mvm_chan_info_padding(mvm); mvm 692 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c if (!__iwl_mvm_remove_time_event(mvm, te_data, &uid)) mvm 699 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "Removing BSS AUX ROC TE 0x%x\n", mvm 701 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c ret = iwl_mvm_send_cmd_pdu(mvm, HOT_SPOT_CMD, 0, mvm 713 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c void iwl_mvm_remove_time_event(struct iwl_mvm *mvm, mvm 721 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c if (!__iwl_mvm_remove_time_event(mvm, te_data, &uid)) mvm 730 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "Removing TE 0x%x\n", le32_to_cpu(time_cmd.id)); mvm 731 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c ret = iwl_mvm_send_cmd_pdu(mvm, TIME_EVENT_CMD, 0, mvm 737 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c void iwl_mvm_stop_session_protection(struct iwl_mvm *mvm, mvm 744 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c lockdep_assert_held(&mvm->mutex); mvm 746 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_lock_bh(&mvm->time_event_lock); mvm 748 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_unlock_bh(&mvm->time_event_lock); mvm 751 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, mvm 757 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_remove_time_event(mvm, mvmvif, te_data); mvm 760 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c int iwl_mvm_start_p2p_roc(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 767 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c lockdep_assert_held(&mvm->mutex); mvm 769 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_WARN(mvm, "P2P_DEVICE remain on channel already running\n"); mvm 806 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c return iwl_mvm_time_event_send_add(mvm, vif, te_data, &time_cmd); mvm 809 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c static struct iwl_mvm_time_event_data *iwl_mvm_get_roc_te(struct iwl_mvm *mvm) mvm 813 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c lockdep_assert_held(&mvm->mutex); mvm 815 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_lock_bh(&mvm->time_event_lock); mvm 824 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c list_for_each_entry(te_data, &mvm->time_event_list, list) { mvm 832 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c te_data = list_first_entry_or_null(&mvm->aux_roc_te_list, mvm 836 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_unlock_bh(&mvm->time_event_lock); mvm 840 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c void iwl_mvm_cleanup_roc_te(struct iwl_mvm *mvm) mvm 845 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c te_data = iwl_mvm_get_roc_te(mvm); mvm 847 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c __iwl_mvm_remove_time_event(mvm, te_data, &uid); mvm 850 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c void iwl_mvm_stop_roc(struct iwl_mvm *mvm) mvm 855 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c te_data = iwl_mvm_get_roc_te(mvm); mvm 857 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_WARN(mvm, "No remain on channel event\n"); mvm 864 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_remove_time_event(mvm, mvmvif, te_data); mvm 865 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c set_bit(IWL_MVM_STATUS_NEED_FLUSH_P2P, &mvm->status); mvm 867 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_remove_aux_roc_te(mvm, mvmvif, te_data); mvm 870 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_roc_finished(mvm); mvm 873 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c int iwl_mvm_schedule_csa_period(struct iwl_mvm *mvm, mvm 881 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c lockdep_assert_held(&mvm->mutex); mvm 886 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_lock_bh(&mvm->time_event_lock); mvm 888 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c spin_unlock_bh(&mvm->time_event_lock); mvm 891 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c IWL_DEBUG_TE(mvm, "CS period is already scheduled\n"); mvm 900 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_mvm_remove_time_event(mvm, mvmvif, te_data); mvm 917 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c return iwl_mvm_time_event_send_add(mvm, vif, te_data, &time_cmd); mvm 134 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h void iwl_mvm_protect_session(struct iwl_mvm *mvm, mvm 149 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h void iwl_mvm_stop_session_protection(struct iwl_mvm *mvm, mvm 155 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h void iwl_mvm_rx_time_event_notif(struct iwl_mvm *mvm, mvm 175 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h int iwl_mvm_start_p2p_roc(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 186 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h void iwl_mvm_stop_roc(struct iwl_mvm *mvm); mvm 198 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h void iwl_mvm_remove_time_event(struct iwl_mvm *mvm, mvm 210 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h void iwl_mvm_te_clear_data(struct iwl_mvm *mvm, mvm 213 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h void iwl_mvm_cleanup_roc_te(struct iwl_mvm *mvm); mvm 226 drivers/net/wireless/intel/iwlwifi/mvm/time-event.h int iwl_mvm_schedule_csa_period(struct iwl_mvm *mvm, mvm 69 drivers/net/wireless/intel/iwlwifi/mvm/tt.c void iwl_mvm_enter_ctkill(struct iwl_mvm *mvm) mvm 71 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle; mvm 74 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status)) mvm 77 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Enter CT Kill\n"); mvm 78 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_set_hw_ctkill_state(mvm, true); mvm 80 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_is_tt_in_fw(mvm)) { mvm 89 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!mvm->temperature_test) mvm 94 drivers/net/wireless/intel/iwlwifi/mvm/tt.c static void iwl_mvm_exit_ctkill(struct iwl_mvm *mvm) mvm 96 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status)) mvm 99 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Exit CT Kill\n"); mvm 100 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_set_hw_ctkill_state(mvm, false); mvm 103 drivers/net/wireless/intel/iwlwifi/mvm/tt.c void iwl_mvm_tt_temp_changed(struct iwl_mvm *mvm, u32 temp) mvm 106 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (mvm->temperature_test) mvm 109 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (mvm->temperature == temp) mvm 112 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->temperature = temp; mvm 113 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_tt_handler(mvm); mvm 116 drivers/net/wireless/intel/iwlwifi/mvm/tt.c static int iwl_mvm_temp_notif_parse(struct iwl_mvm *mvm, mvm 127 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Invalid DTS_MEASUREMENT_NOTIFICATION\n"); mvm 139 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "DTS_MEASUREMENT_NOTIFICATION - %d\n", temp); mvm 147 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm *mvm = mvm 152 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_mvm_temp_notif_parse(mvm, pkt); mvm 161 drivers/net/wireless/intel/iwlwifi/mvm/tt.c void iwl_mvm_temp_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 170 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status)) mvm 173 drivers/net/wireless/intel/iwlwifi/mvm/tt.c temp = iwl_mvm_temp_notif_parse(mvm, pkt); mvm 175 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_is_tt_in_fw(mvm)) { mvm 177 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_tt_temp_changed(mvm, temp); mvm 182 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Invalid DTS_MEASUREMENT_NOTIFICATION\n"); mvm 195 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "Temp = %d Threshold crossed = %d\n", mvm 202 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (mvm->tz_device.tzone) { mvm 203 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm_thermal_device *tz_dev = &mvm->tz_device; mvm 211 drivers/net/wireless/intel/iwlwifi/mvm/tt.c void iwl_mvm_ct_kill_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 218 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Invalid CT_KILL_NOTIFICATION\n"); mvm 223 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "CT Kill notification temperature = %d\n", mvm 226 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_enter_ctkill(mvm); mvm 229 drivers/net/wireless/intel/iwlwifi/mvm/tt.c static int iwl_mvm_get_temp_cmd(struct iwl_mvm *mvm) mvm 242 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 244 drivers/net/wireless/intel/iwlwifi/mvm/tt.c return iwl_mvm_send_cmd_pdu(mvm, cmdid, 0, sizeof(cmd), &cmd); mvm 246 drivers/net/wireless/intel/iwlwifi/mvm/tt.c return iwl_mvm_send_cmd_pdu(mvm, cmdid, 0, sizeof(extcmd), &extcmd); mvm 249 drivers/net/wireless/intel/iwlwifi/mvm/tt.c int iwl_mvm_get_temp(struct iwl_mvm *mvm, s32 *temp) mvm 256 drivers/net/wireless/intel/iwlwifi/mvm/tt.c lockdep_assert_held(&mvm->mutex); mvm 258 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_init_notification_wait(&mvm->notif_wait, &wait_temp_notif, mvm 262 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_mvm_get_temp_cmd(mvm); mvm 264 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Failed to get the temperature (err=%d)\n", ret); mvm 265 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_remove_notification(&mvm->notif_wait, &wait_temp_notif); mvm 269 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_wait_notification(&mvm->notif_wait, &wait_temp_notif, mvm 272 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Getting the temperature timed out\n"); mvm 280 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm *mvm; mvm 286 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm = container_of(tt, struct iwl_mvm, thermal_throttle); mvm 288 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (iwl_mvm_is_tt_in_fw(mvm)) { mvm 289 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_exit_ctkill(mvm); mvm 296 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_lock(&mvm->mutex); mvm 298 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (__iwl_mvm_mac_start(mvm)) mvm 301 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_mvm_get_temp(mvm, &temp); mvm 303 drivers/net/wireless/intel/iwlwifi/mvm/tt.c __iwl_mvm_mac_stop(mvm); mvm 308 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "NIC temperature: %d\n", temp); mvm 311 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_unlock(&mvm->mutex); mvm 312 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_exit_ctkill(mvm); mvm 317 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_unlock(&mvm->mutex); mvm 318 drivers/net/wireless/intel/iwlwifi/mvm/tt.c schedule_delayed_work(&mvm->thermal_throttle.ct_kill_exit, mvm 325 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm *mvm = _data; mvm 328 drivers/net/wireless/intel/iwlwifi/mvm/tt.c lockdep_assert_held(&mvm->mutex); mvm 330 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (mvm->thermal_throttle.dynamic_smps) mvm 338 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_TT, smps_mode); mvm 341 drivers/net/wireless/intel/iwlwifi/mvm/tt.c static void iwl_mvm_tt_tx_protection(struct iwl_mvm *mvm, bool enable) mvm 346 drivers/net/wireless/intel/iwlwifi/mvm/tt.c for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) { mvm 347 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvmsta = iwl_mvm_sta_from_staid_protected(mvm, i); mvm 353 drivers/net/wireless/intel/iwlwifi/mvm/tt.c err = iwl_mvm_tx_protection(mvm, mvmsta, enable); mvm 355 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Failed to %s Tx protection\n", mvm 358 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "%s Tx protection\n", mvm 365 drivers/net/wireless/intel/iwlwifi/mvm/tt.c void iwl_mvm_tt_tx_backoff(struct iwl_mvm *mvm, u32 backoff) mvm 373 drivers/net/wireless/intel/iwlwifi/mvm/tt.c backoff = max(backoff, mvm->thermal_throttle.min_backoff); mvm 375 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (iwl_mvm_send_cmd(mvm, &cmd) == 0) { mvm 376 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "Set Thermal Tx backoff to: %u\n", mvm 378 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->thermal_throttle.tx_backoff = backoff; mvm 380 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "Failed to change Thermal Tx backoff\n"); mvm 384 drivers/net/wireless/intel/iwlwifi/mvm/tt.c void iwl_mvm_tt_handler(struct iwl_mvm *mvm) mvm 386 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_tt_params *params = &mvm->thermal_throttle.params; mvm 387 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle; mvm 388 drivers/net/wireless/intel/iwlwifi/mvm/tt.c s32 temperature = mvm->temperature; mvm 393 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "NIC temperature: %d\n", mvm->temperature); mvm 396 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_enter_ctkill(mvm); mvm 402 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_exit_ctkill(mvm); mvm 409 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "Enable dynamic SMPS\n"); mvm 412 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 413 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_tt_smps_iterator, mvm); mvm 417 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "Disable dynamic SMPS\n"); mvm 420 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 421 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_tt_smps_iterator, mvm); mvm 427 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_tt_tx_protection(mvm, true); mvm 430 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_tt_tx_protection(mvm, false); mvm 445 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_tt_tx_backoff(mvm, tx_backoff); mvm 449 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_WARN(mvm, mvm 455 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_WARN(mvm, mvm 507 drivers/net/wireless/intel/iwlwifi/mvm/tt.c int iwl_mvm_ctdp_command(struct iwl_mvm *mvm, u32 op, u32 state) mvm 517 drivers/net/wireless/intel/iwlwifi/mvm/tt.c lockdep_assert_held(&mvm->mutex); mvm 520 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_mvm_send_cmd_pdu_status(mvm, WIDE_ID(PHY_OPS_GROUP, mvm 525 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "cTDP command failed (err=%d)\n", ret); mvm 532 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->cooling_dev.cur_state = state; mvm 536 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "cTDP avg energy in mWatt = %d\n", status); mvm 545 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "cTDP stopped successfully\n"); mvm 560 drivers/net/wireless/intel/iwlwifi/mvm/tt.c int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm) mvm 567 drivers/net/wireless/intel/iwlwifi/mvm/tt.c lockdep_assert_held(&mvm->mutex); mvm 569 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!mvm->tz_device.tzone) mvm 578 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (mvm->tz_device.temp_trips[i] != S16_MIN) { mvm 580 drivers/net/wireless/intel/iwlwifi/mvm/tt.c cpu_to_le16(mvm->tz_device.temp_trips[i]); mvm 597 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->tz_device.temp_trips[j]) mvm 598 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->tz_device.fw_trips_index[i] = j; mvm 604 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_mvm_send_cmd_pdu(mvm, WIDE_ID(PHY_OPS_GROUP, mvm 608 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_ERR(mvm, "TEMP_REPORT_THS_CMD command failed (err=%d)\n", mvm 618 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm *mvm = (struct iwl_mvm *)device->devdata; mvm 622 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_lock(&mvm->mutex); mvm 624 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_firmware_running(mvm) || mvm 625 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) { mvm 630 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_mvm_get_temp(mvm, &temp); mvm 637 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_unlock(&mvm->mutex); mvm 644 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm *mvm = (struct iwl_mvm *)device->devdata; mvm 649 drivers/net/wireless/intel/iwlwifi/mvm/tt.c *temp = mvm->tz_device.temp_trips[trip] * 1000; mvm 668 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm *mvm = (struct iwl_mvm *)device->devdata; mvm 673 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_lock(&mvm->mutex); mvm 675 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_firmware_running(mvm) || mvm 676 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) { mvm 692 drivers/net/wireless/intel/iwlwifi/mvm/tt.c tzone = &mvm->tz_device; mvm 715 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_mvm_send_temp_report_ths_cmd(mvm); mvm 717 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_unlock(&mvm->mutex); mvm 731 drivers/net/wireless/intel/iwlwifi/mvm/tt.c static void iwl_mvm_thermal_zone_register(struct iwl_mvm *mvm) mvm 737 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_is_tt_in_fw(mvm)) { mvm 738 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->tz_device.tzone = NULL; mvm 746 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->tz_device.tzone = thermal_zone_device_register(name, mvm 749 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm, &tzone_ops, mvm 751 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (IS_ERR(mvm->tz_device.tzone)) { mvm 752 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, mvm 754 drivers/net/wireless/intel/iwlwifi/mvm/tt.c PTR_ERR(mvm->tz_device.tzone)); mvm 755 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->tz_device.tzone = NULL; mvm 763 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->tz_device.temp_trips[i] = S16_MIN; mvm 777 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm *mvm = (struct iwl_mvm *)(cdev->devdata); mvm 779 drivers/net/wireless/intel/iwlwifi/mvm/tt.c *state = mvm->cooling_dev.cur_state; mvm 787 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm *mvm = (struct iwl_mvm *)(cdev->devdata); mvm 790 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_lock(&mvm->mutex); mvm 792 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_firmware_running(mvm) || mvm 793 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) { mvm 803 drivers/net/wireless/intel/iwlwifi/mvm/tt.c ret = iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_START, mvm 807 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mutex_unlock(&mvm->mutex); mvm 817 drivers/net/wireless/intel/iwlwifi/mvm/tt.c static void iwl_mvm_cooling_device_register(struct iwl_mvm *mvm) mvm 821 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_is_ctdp_supported(mvm)) mvm 826 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->cooling_dev.cdev = mvm 828 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm, mvm 831 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (IS_ERR(mvm->cooling_dev.cdev)) { mvm 832 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, mvm 834 drivers/net/wireless/intel/iwlwifi/mvm/tt.c PTR_ERR(mvm->cooling_dev.cdev)); mvm 835 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->cooling_dev.cdev = NULL; mvm 840 drivers/net/wireless/intel/iwlwifi/mvm/tt.c static void iwl_mvm_thermal_zone_unregister(struct iwl_mvm *mvm) mvm 842 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_is_tt_in_fw(mvm) || !mvm->tz_device.tzone) mvm 845 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "Thermal zone device unregister\n"); mvm 846 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (mvm->tz_device.tzone) { mvm 847 drivers/net/wireless/intel/iwlwifi/mvm/tt.c thermal_zone_device_unregister(mvm->tz_device.tzone); mvm 848 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->tz_device.tzone = NULL; mvm 852 drivers/net/wireless/intel/iwlwifi/mvm/tt.c static void iwl_mvm_cooling_device_unregister(struct iwl_mvm *mvm) mvm 854 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!iwl_mvm_is_ctdp_supported(mvm) || !mvm->cooling_dev.cdev) mvm 857 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "Cooling device unregister\n"); mvm 858 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (mvm->cooling_dev.cdev) { mvm 859 drivers/net/wireless/intel/iwlwifi/mvm/tt.c thermal_cooling_device_unregister(mvm->cooling_dev.cdev); mvm 860 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->cooling_dev.cdev = NULL; mvm 865 drivers/net/wireless/intel/iwlwifi/mvm/tt.c void iwl_mvm_thermal_initialize(struct iwl_mvm *mvm, u32 min_backoff) mvm 867 drivers/net/wireless/intel/iwlwifi/mvm/tt.c struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle; mvm 869 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "Initialize Thermal Throttling\n"); mvm 871 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (mvm->cfg->thermal_params) mvm 872 drivers/net/wireless/intel/iwlwifi/mvm/tt.c tt->params = *mvm->cfg->thermal_params; mvm 882 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_cooling_device_register(mvm); mvm 883 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_thermal_zone_register(mvm); mvm 885 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->init_status |= IWL_MVM_INIT_STATUS_THERMAL_INIT_COMPLETE; mvm 888 drivers/net/wireless/intel/iwlwifi/mvm/tt.c void iwl_mvm_thermal_exit(struct iwl_mvm *mvm) mvm 890 drivers/net/wireless/intel/iwlwifi/mvm/tt.c if (!(mvm->init_status & IWL_MVM_INIT_STATUS_THERMAL_INIT_COMPLETE)) mvm 893 drivers/net/wireless/intel/iwlwifi/mvm/tt.c cancel_delayed_work_sync(&mvm->thermal_throttle.ct_kill_exit); mvm 894 drivers/net/wireless/intel/iwlwifi/mvm/tt.c IWL_DEBUG_TEMP(mvm, "Exit Thermal Throttling\n"); mvm 897 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_cooling_device_unregister(mvm); mvm 898 drivers/net/wireless/intel/iwlwifi/mvm/tt.c iwl_mvm_thermal_zone_unregister(mvm); mvm 900 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->init_status &= ~IWL_MVM_INIT_STATUS_THERMAL_INIT_COMPLETE; mvm 76 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_bar_check_trigger(struct iwl_mvm *mvm, const u8 *addr, mvm 82 drivers/net/wireless/intel/iwlwifi/mvm/tx.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, FW_DBG_TRIGGER_BA); mvm 91 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 99 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static u16 iwl_mvm_tx_csum(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 116 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (WARN_ONCE(!(mvm->hw->netdev_features & IWL_TX_CSUM_NETIF_FLAGS) || mvm 186 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (!iwl_mvm_has_new_tx_api(mvm) && info->control.hw_key && mvm 201 drivers/net/wireless/intel/iwlwifi/mvm/tx.c void iwl_mvm_set_tx_cmd(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 241 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_bar_check_trigger(mvm, bar->ra, tx_cmd->tid_tspec, mvm 261 drivers/net/wireless/intel/iwlwifi/mvm/tx.c tx_flags |= iwl_mvm_bt_coex_tx_prio(mvm, hdr, info, ac) << mvm 282 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (ieee80211_is_data(fc) && len > mvm->rts_threshold && mvm 286 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 303 drivers/net/wireless/intel/iwlwifi/mvm/tx.c cpu_to_le16(iwl_mvm_tx_csum(mvm, skb, hdr, info, mvm 307 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static u32 iwl_mvm_get_tx_ant(struct iwl_mvm *mvm, mvm 312 drivers/net/wireless/intel/iwlwifi/mvm/tx.c !iwl_mvm_bt_coex_is_shared_ant_avail(mvm)) mvm 313 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return mvm->cfg->non_shared_ant << RATE_MCS_ANT_POS; mvm 321 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return BIT(mvm->mgmt_last_antenna_idx) << RATE_MCS_ANT_POS; mvm 324 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static u32 iwl_mvm_get_tx_rate(struct iwl_mvm *mvm, mvm 342 drivers/net/wireless/intel/iwlwifi/mvm/tx.c &mvm->nvm_data->bands[info->band], sta); mvm 361 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static u32 iwl_mvm_get_tx_rate_n_flags(struct iwl_mvm *mvm, mvm 365 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return iwl_mvm_get_tx_rate(mvm, info, sta) | mvm 366 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_get_tx_ant(mvm, info, sta, fc); mvm 372 drivers/net/wireless/intel/iwlwifi/mvm/tx.c void iwl_mvm_set_tx_cmd_rate(struct iwl_mvm *mvm, struct iwl_tx_cmd *tx_cmd, mvm 410 drivers/net/wireless/intel/iwlwifi/mvm/tx.c cpu_to_le32(iwl_mvm_get_tx_rate_n_flags(mvm, info, sta, fc)); mvm 433 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_set_tx_cmd_crypto(struct iwl_mvm *mvm, mvm 491 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_set_tx_params(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 499 drivers/net/wireless/intel/iwlwifi/mvm/tx.c dev_cmd = iwl_trans_alloc_tx_cmd(mvm->trans); mvm 506 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 520 drivers/net/wireless/intel/iwlwifi/mvm/tx.c offload_assist = iwl_mvm_tx_csum(mvm, skb, hdr, info, mvm 540 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_get_tx_rate_n_flags(mvm, info, sta, mvm 544 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (mvm->trans->trans_cfg->device_family >= mvm 578 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_set_tx_cmd_crypto(mvm, info, tx_cmd, skb, hdrlen); mvm 580 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_set_tx_cmd(mvm, skb, tx_cmd, info, sta_id); mvm 582 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_set_tx_cmd_rate(mvm, tx_cmd, info, sta, hdr->frame_control); mvm 602 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static int iwl_mvm_get_ctrl_vif_queue(struct iwl_mvm *mvm, mvm 626 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return mvm->probe_queue; mvm 634 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return mvm->probe_queue; mvm 637 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return mvm->p2p_dev_queue; mvm 640 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return mvm->p2p_dev_queue; mvm 647 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_probe_resp_set_noa(struct iwl_mvm *mvm, mvm 678 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX(mvm, "probe resp doesn't have P2P IE\n"); mvm 684 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_ERR(mvm, mvm 707 drivers/net/wireless/intel/iwlwifi/mvm/tx.c int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb) mvm 742 drivers/net/wireless/intel/iwlwifi/mvm/tx.c queue = iwl_mvm_get_ctrl_vif_queue(mvm, &info, hdr); mvm 744 drivers/net/wireless/intel/iwlwifi/mvm/tx.c queue = mvm->snif_queue; mvm 745 drivers/net/wireless/intel/iwlwifi/mvm/tx.c sta_id = mvm->snif_sta.sta_id; mvm 756 drivers/net/wireless/intel/iwlwifi/mvm/tx.c sta_id = mvm->aux_sta.sta_id; mvm 757 drivers/net/wireless/intel/iwlwifi/mvm/tx.c queue = mvm->aux_queue; mvm 762 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_ERR(mvm, "No queue was found. Dropping TX\n"); mvm 767 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_probe_resp_set_noa(mvm, skb); mvm 769 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX(mvm, "station Id %d, queue=%d\n", sta_id, queue); mvm 771 drivers/net/wireless/intel/iwlwifi/mvm/tx.c dev_cmd = iwl_mvm_set_tx_params(mvm, skb, &info, hdrlen, NULL, sta_id); mvm 778 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (iwl_trans_tx(mvm->trans, skb, dev_cmd, queue)) { mvm 779 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_trans_free_tx_cmd(mvm->trans, dev_cmd); mvm 786 drivers/net/wireless/intel/iwlwifi/mvm/tx.c unsigned int iwl_mvm_max_amsdu_size(struct iwl_mvm *mvm, mvm 795 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (iwl_mvm_is_cdb_supported(mvm) && mvm 800 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (sta->he_cap.has_he && !WARN_ON(!iwl_mvm_has_new_tx_api(mvm))) mvm 803 drivers/net/wireless/intel/iwlwifi/mvm/tx.c txf = iwl_mvm_mac_ac_to_tx_fifo(mvm, ac); mvm 812 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mvm->fwrt.smem_cfg.lmac[lmac].txfifo_size[txf] - 256); mvm 885 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 938 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_max_amsdu_size(mvm, sta, tid)); mvm 973 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mvm->trans->max_skb_frags) mvm 993 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 1006 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static bool iwl_mvm_txq_should_update(struct iwl_mvm *mvm, int txq_id) mvm 1008 drivers/net/wireless/intel/iwlwifi/mvm/tx.c unsigned long queue_tid_bitmap = mvm->queue_info[txq_id].tid_bitmap; mvm 1012 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 1016 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (time_before(mvm->queue_info[txq_id].last_frame_time[tid] + mvm 1024 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_tx_airtime(struct iwl_mvm *mvm, mvm 1034 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mdata = &mvm->tcm.data[mac]; mvm 1036 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (mvm->tcm.paused) mvm 1039 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (time_after(jiffies, mvm->tcm.ts + MVM_TCM_PERIOD)) mvm 1040 drivers/net/wireless/intel/iwlwifi/mvm/tx.c schedule_delayed_work(&mvm->tcm.work, 0); mvm 1045 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static int iwl_mvm_tx_pkt_queued(struct iwl_mvm *mvm, mvm 1055 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mdata = &mvm->tcm.data[mac]; mvm 1067 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 1095 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_probe_resp_set_noa(mvm, skb); mvm 1097 drivers/net/wireless/intel/iwlwifi/mvm/tx.c dev_cmd = iwl_mvm_set_tx_params(mvm, skb, info, hdrlen, mvm 1130 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (!iwl_mvm_has_new_tx_api(mvm)) { mvm 1147 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_trans_free_tx_cmd(mvm->trans, dev_cmd); mvm 1152 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (!iwl_mvm_has_new_tx_api(mvm)) { mvm 1154 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mvm->queue_info[txq_id].last_frame_time[tid] = jiffies; mvm 1166 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (unlikely(mvm->queue_info[txq_id].status == mvm 1168 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_txq_should_update(mvm, txq_id))) mvm 1169 drivers/net/wireless/intel/iwlwifi/mvm/tx.c schedule_work(&mvm->add_stream_wk); mvm 1172 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX(mvm, "TX to [%d|%d] Q:%d - seq: 0x%x len %d\n", mvm 1179 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (iwl_trans_tx(mvm->trans, skb, dev_cmd, txq_id)) mvm 1187 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (iwl_mvm_tx_pkt_queued(mvm, mvmsta, mvm 1194 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_trans_free_tx_cmd(mvm->trans, dev_cmd); mvm 1197 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX(mvm, "TX to [%d|%d] dropped\n", mvmsta->sta_id, tid); mvm 1201 drivers/net/wireless/intel/iwlwifi/mvm/tx.c int iwl_mvm_tx_skb_sta(struct iwl_mvm *mvm, struct sk_buff *skb, mvm 1219 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return iwl_mvm_tx_mpdu(mvm, skb, &info, sta); mvm 1225 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return iwl_mvm_tx_mpdu(mvm, skb, &info, sta); mvm 1229 drivers/net/wireless/intel/iwlwifi/mvm/tx.c ret = iwl_mvm_tx_tso(mvm, skb, &info, sta, &mpdus_skbs); mvm 1239 drivers/net/wireless/intel/iwlwifi/mvm/tx.c ret = iwl_mvm_tx_mpdu(mvm, skb, &info, sta); mvm 1249 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_check_ratid_empty(struct iwl_mvm *mvm, mvm 1261 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_tid_queued(mvm, tid_data) == 0) { mvm 1275 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (mvm->trans->trans_cfg->gen2) mvm 1283 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_QUEUES(mvm, mvm 1291 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_QUEUES(mvm, mvm 1392 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_tx_status_check_trigger(struct iwl_mvm *mvm, mvm 1399 drivers/net/wireless/intel/iwlwifi/mvm/tx.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, mvm 1414 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 1434 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static inline u32 iwl_mvm_get_scd_ssn(struct iwl_mvm *mvm, mvm 1437 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return le32_to_cpup((__le32 *)iwl_mvm_get_agg_status(mvm, tx_resp) + mvm 1441 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm, mvm 1452 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_get_agg_status(mvm, tx_resp); mvm 1454 drivers/net/wireless/intel/iwlwifi/mvm/tx.c u16 ssn = iwl_mvm_get_scd_ssn(mvm, tx_resp); mvm 1463 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 1469 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_trans_reclaim(mvm->trans, txq_id, ssn, &skbs); mvm 1479 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_trans_free_tx_cmd(mvm->trans, info->driver_data[1]); mvm 1506 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_toggle_tx_ant(mvm, &mvm->mgmt_last_antenna_idx); mvm 1516 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_tx_status_check_trigger(mvm, status); mvm 1562 drivers/net/wireless/intel/iwlwifi/mvm/tx.c ieee80211_tx_status(mvm->hw, skb); mvm 1581 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1585 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1593 drivers/net/wireless/intel/iwlwifi/mvm/tx.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 1604 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_tx_airtime(mvm, mvmsta, mvm 1609 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_toggle_tx_ant(mvm, &mvmsta->tx_ant); mvm 1620 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1624 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1628 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_check_ratid_empty(mvm, sta, tid); mvm 1633 drivers/net/wireless/intel/iwlwifi/mvm/tx.c !iwl_mvm_tid_queued(mvm, tid_data)) { mvm 1653 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_sta_modify_sleep_tx_count(mvm, sta, mvm 1693 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_rx_tx_cmd_agg_dbg(struct iwl_mvm *mvm, mvm 1698 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_get_agg_status(mvm, tx_resp); mvm 1704 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1714 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_rx_tx_cmd_agg_dbg(struct iwl_mvm *mvm, mvm 1719 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_rx_tx_cmd_agg(struct iwl_mvm *mvm, mvm 1734 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_rx_tx_cmd_agg_dbg(mvm, pkt); mvm 1738 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mvmsta = iwl_mvm_sta_from_staid_rcu(mvm, sta_id); mvm 1740 drivers/net/wireless/intel/iwlwifi/mvm/tx.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 1753 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_tx_airtime(mvm, mvmsta, mvm 1760 drivers/net/wireless/intel/iwlwifi/mvm/tx.c void iwl_mvm_rx_tx_cmd(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 1766 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_rx_tx_cmd_single(mvm, pkt); mvm 1768 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_rx_tx_cmd_agg(mvm, pkt); mvm 1771 drivers/net/wireless/intel/iwlwifi/mvm/tx.c static void iwl_mvm_tx_reclaim(struct iwl_mvm *mvm, int sta_id, int tid, mvm 1789 drivers/net/wireless/intel/iwlwifi/mvm/tx.c sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); mvm 1801 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_ERR(mvm, mvm 1815 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_trans_reclaim(mvm->trans, txq, index, &reclaimed_skbs); mvm 1821 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_check_ratid_empty(mvm, sta, tid); mvm 1840 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_trans_free_tx_cmd(mvm->trans, info->driver_data[1]); mvm 1878 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (!iwl_mvm_has_tlc_offload(mvm)) { mvm 1879 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1881 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_rs_tx_status(mvm, sta, tid, ba_info, false); mvm 1890 drivers/net/wireless/intel/iwlwifi/mvm/tx.c ieee80211_tx_status(mvm->hw, skb); mvm 1894 drivers/net/wireless/intel/iwlwifi/mvm/tx.c void iwl_mvm_rx_ba_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 1905 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (iwl_mvm_has_new_tx_api(mvm)) { mvm 1924 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mvmsta = iwl_mvm_sta_from_staid_rcu(mvm, sta_id); mvm 1938 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_tx_reclaim(mvm, sta_id, tid, mvm 1945 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_tx_airtime(mvm, mvmsta, mvm 1950 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1968 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mvmsta = iwl_mvm_sta_from_staid_rcu(mvm, sta_id); mvm 1984 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_mvm_tx_reclaim(mvm, sta_id, tid, txq, index, &ba_info, mvm 1987 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1991 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, mvm 1997 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_DEBUG_TX_REPLY(mvm, "reduced txp from ba notif %d\n", mvm 2009 drivers/net/wireless/intel/iwlwifi/mvm/tx.c int iwl_mvm_flush_tx_path(struct iwl_mvm *mvm, u32 tfd_msk, u32 flags) mvm 2017 drivers/net/wireless/intel/iwlwifi/mvm/tx.c WARN_ON(iwl_mvm_has_new_tx_api(mvm)); mvm 2019 drivers/net/wireless/intel/iwlwifi/mvm/tx.c ret = iwl_mvm_send_cmd_pdu(mvm, TXPATH_FLUSH, flags, mvm 2022 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_ERR(mvm, "Failed to send flush command (%d)\n", ret); mvm 2026 drivers/net/wireless/intel/iwlwifi/mvm/tx.c int iwl_mvm_flush_sta_tids(struct iwl_mvm *mvm, u32 sta_id, mvm 2035 drivers/net/wireless/intel/iwlwifi/mvm/tx.c WARN_ON(!iwl_mvm_has_new_tx_api(mvm)); mvm 2037 drivers/net/wireless/intel/iwlwifi/mvm/tx.c ret = iwl_mvm_send_cmd_pdu(mvm, TXPATH_FLUSH, flags, mvm 2040 drivers/net/wireless/intel/iwlwifi/mvm/tx.c IWL_ERR(mvm, "Failed to send flush command (%d)\n", ret); mvm 2044 drivers/net/wireless/intel/iwlwifi/mvm/tx.c int iwl_mvm_flush_sta(struct iwl_mvm *mvm, void *sta, bool internal, u32 flags) mvm 2052 drivers/net/wireless/intel/iwlwifi/mvm/tx.c if (iwl_mvm_has_new_tx_api(mvm)) mvm 2053 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return iwl_mvm_flush_sta_tids(mvm, mvm_sta->sta_id, mvm 2057 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return iwl_mvm_flush_tx_path(mvm, int_sta->tfd_queue_msk, mvm 2060 drivers/net/wireless/intel/iwlwifi/mvm/tx.c return iwl_mvm_flush_tx_path(mvm, mvm_sta->tfd_queue_msk, flags); mvm 77 drivers/net/wireless/intel/iwlwifi/mvm/utils.c int iwl_mvm_send_cmd(struct iwl_mvm *mvm, struct iwl_host_cmd *cmd) mvm 82 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (WARN_ON(mvm->d3_test_active)) mvm 92 drivers/net/wireless/intel/iwlwifi/mvm/utils.c lockdep_assert_held(&mvm->mutex); mvm 94 drivers/net/wireless/intel/iwlwifi/mvm/utils.c ret = iwl_trans_send_cmd(mvm->trans, cmd); mvm 110 drivers/net/wireless/intel/iwlwifi/mvm/utils.c int iwl_mvm_send_cmd_pdu(struct iwl_mvm *mvm, u32 id, mvm 120 drivers/net/wireless/intel/iwlwifi/mvm/utils.c return iwl_mvm_send_cmd(mvm, &cmd); mvm 126 drivers/net/wireless/intel/iwlwifi/mvm/utils.c int iwl_mvm_send_cmd_status(struct iwl_mvm *mvm, struct iwl_host_cmd *cmd, mvm 133 drivers/net/wireless/intel/iwlwifi/mvm/utils.c lockdep_assert_held(&mvm->mutex); mvm 136 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (WARN_ON(mvm->d3_test_active)) mvm 150 drivers/net/wireless/intel/iwlwifi/mvm/utils.c ret = iwl_trans_send_cmd(mvm->trans, cmd); mvm 179 drivers/net/wireless/intel/iwlwifi/mvm/utils.c int iwl_mvm_send_cmd_pdu_status(struct iwl_mvm *mvm, u32 id, u16 len, mvm 188 drivers/net/wireless/intel/iwlwifi/mvm/utils.c return iwl_mvm_send_cmd_status(mvm, &cmd, status); mvm 247 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_rx_fw_error(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) mvm 252 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "FW Error notification: type 0x%08X cmd_id 0x%02X\n", mvm 254 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "FW Error notification: seq 0x%04X service 0x%08X\n", mvm 257 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "FW Error notification: timestamp 0x%016llX\n", mvm 279 drivers/net/wireless/intel/iwlwifi/mvm/utils.c u8 iwl_mvm_next_antenna(struct iwl_mvm *mvm, u8 valid, u8 last_idx) mvm 462 drivers/net/wireless/intel/iwlwifi/mvm/utils.c static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm) mvm 464 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct iwl_trans *trans = mvm->trans; mvm 466 drivers/net/wireless/intel/iwlwifi/mvm/utils.c u32 base = mvm->trans->dbg.umac_error_event_table; mvm 468 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (!mvm->support_umac_log && mvm 469 drivers/net/wireless/intel/iwlwifi/mvm/utils.c !(mvm->trans->dbg.error_event_table_tlv_status & mvm 476 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->fwrt.dump.umac_err_id = table.error_id; mvm 481 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->status, table.valid); mvm 484 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | %s\n", table.error_id, mvm 486 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac branchlink1\n", table.blink1); mvm 487 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac branchlink2\n", table.blink2); mvm 488 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac interruptlink1\n", table.ilink1); mvm 489 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac interruptlink2\n", table.ilink2); mvm 490 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac data1\n", table.data1); mvm 491 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac data2\n", table.data2); mvm 492 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac data3\n", table.data3); mvm 493 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac major\n", table.umac_major); mvm 494 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | umac minor\n", table.umac_minor); mvm 495 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | frame pointer\n", table.frame_pointer); mvm 496 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | stack pointer\n", table.stack_pointer); mvm 497 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | last host cmd\n", table.cmd_header); mvm 498 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | isr status reg\n", table.nic_isr_pref); mvm 501 drivers/net/wireless/intel/iwlwifi/mvm/utils.c static void iwl_mvm_dump_lmac_error_log(struct iwl_mvm *mvm, u8 lmac_num) mvm 503 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct iwl_trans *trans = mvm->trans; mvm 505 drivers/net/wireless/intel/iwlwifi/mvm/utils.c u32 val, base = mvm->trans->dbg.lmac_error_event_table[lmac_num]; mvm 507 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->fwrt.cur_fw_img == IWL_UCODE_INIT) { mvm 509 drivers/net/wireless/intel/iwlwifi/mvm/utils.c base = mvm->fw->init_errlog_ptr; mvm 512 drivers/net/wireless/intel/iwlwifi/mvm/utils.c base = mvm->fw->inst_errlog_ptr; mvm 516 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, mvm 519 drivers/net/wireless/intel/iwlwifi/mvm/utils.c (mvm->fwrt.cur_fw_img == IWL_UCODE_INIT) mvm 542 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->fwrt.dump.lmac_err_id[lmac_num] = table.error_id; mvm 547 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->status, table.valid); mvm 552 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "Loaded firmware version: %s\n", mvm->fw->fw_version); mvm 554 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | %-28s\n", table.error_id, mvm 556 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | trm_hw_status0\n", table.trm_hw_status0); mvm 557 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | trm_hw_status1\n", table.trm_hw_status1); mvm 558 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | branchlink2\n", table.blink2); mvm 559 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | interruptlink1\n", table.ilink1); mvm 560 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | interruptlink2\n", table.ilink2); mvm 561 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | data1\n", table.data1); mvm 562 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | data2\n", table.data2); mvm 563 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | data3\n", table.data3); mvm 564 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | beacon time\n", table.bcon_time); mvm 565 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | tsf low\n", table.tsf_low); mvm 566 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | tsf hi\n", table.tsf_hi); mvm 567 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | time gp1\n", table.gp1); mvm 568 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | time gp2\n", table.gp2); mvm 569 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | uCode revision type\n", table.fw_rev_type); mvm 570 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | uCode version major\n", table.major); mvm 571 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | uCode version minor\n", table.minor); mvm 572 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | hw version\n", table.hw_ver); mvm 573 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | board version\n", table.brd_ver); mvm 574 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | hcmd\n", table.hcmd); mvm 575 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | isr0\n", table.isr0); mvm 576 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | isr1\n", table.isr1); mvm 577 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | isr2\n", table.isr2); mvm 578 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | isr3\n", table.isr3); mvm 579 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | isr4\n", table.isr4); mvm 580 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | last cmd Id\n", table.last_cmd_id); mvm 581 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | wait_event\n", table.wait_event); mvm 582 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | l2p_control\n", table.l2p_control); mvm 583 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | l2p_duration\n", table.l2p_duration); mvm 584 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | l2p_mhvalid\n", table.l2p_mhvalid); mvm 585 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | l2p_addr_match\n", table.l2p_addr_match); mvm 586 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | lmpm_pmg_sel\n", table.lmpm_pmg_sel); mvm 587 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | timestamp\n", table.u_timestamp); mvm 588 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "0x%08X | flow_handler\n", table.flow_handler); mvm 591 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm) mvm 593 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (!test_bit(STATUS_DEVICE_ENABLED, &mvm->trans->status)) { mvm 594 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, mvm 599 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_dump_lmac_error_log(mvm, 0); mvm 601 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->trans->dbg.lmac_error_event_table[1]) mvm 602 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_dump_lmac_error_log(mvm, 1); mvm 604 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_dump_umac_error_log(mvm); mvm 606 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_fw_error_print_fseq_regs(&mvm->fwrt); mvm 609 drivers/net/wireless/intel/iwlwifi/mvm/utils.c int iwl_mvm_reconfig_scd(struct iwl_mvm *mvm, int queue, int fifo, int sta_id, mvm 625 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) mvm 628 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (WARN(mvm->queue_info[queue].tid_bitmap == 0, mvm 632 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_DEBUG_TX_QUEUES(mvm, "Reconfig SCD for TXQ #%d\n", queue); mvm 634 drivers/net/wireless/intel/iwlwifi/mvm/utils.c ret = iwl_mvm_send_cmd_pdu(mvm, SCD_QUEUE_CFG, 0, sizeof(cmd), &cmd); mvm 650 drivers/net/wireless/intel/iwlwifi/mvm/utils.c int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq) mvm 660 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_has_tlc_offload(mvm))) mvm 663 drivers/net/wireless/intel/iwlwifi/mvm/utils.c return iwl_mvm_send_cmd(mvm, &cmd); mvm 674 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 682 drivers/net/wireless/intel/iwlwifi/mvm/utils.c lockdep_assert_held(&mvm->mutex); mvm 685 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (num_of_ant(iwl_mvm_get_valid_rx_ant(mvm)) == 1) mvm 707 drivers/net/wireless/intel/iwlwifi/mvm/utils.c int iwl_mvm_request_statistics(struct iwl_mvm *mvm, bool clear) mvm 720 drivers/net/wireless/intel/iwlwifi/mvm/utils.c ret = iwl_mvm_send_cmd(mvm, &cmd); mvm 724 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_handle_rx_statistics(mvm, cmd.resp_pkt); mvm 728 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_accu_radio_stats(mvm); mvm 733 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_accu_radio_stats(struct iwl_mvm *mvm) mvm 735 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->accu_radio_stats.rx_time += mvm->radio_stats.rx_time; mvm 736 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->accu_radio_stats.tx_time += mvm->radio_stats.tx_time; mvm 737 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->accu_radio_stats.on_time_rf += mvm->radio_stats.on_time_rf; mvm 738 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->accu_radio_stats.on_time_scan += mvm->radio_stats.on_time_scan; mvm 755 drivers/net/wireless/intel/iwlwifi/mvm/utils.c bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm) mvm 759 drivers/net/wireless/intel/iwlwifi/mvm/utils.c lockdep_assert_held(&mvm->mutex); mvm 761 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (num_of_ant(iwl_mvm_get_valid_rx_ant(mvm)) == 1) mvm 764 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->cfg->rx_with_siso_diversity) mvm 768 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 774 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_send_low_latency_cmd(struct iwl_mvm *mvm, mvm 781 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (!fw_has_capa(&mvm->fw->ucode_capa, mvm 791 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(LOW_LATENCY_CMD, mvm 794 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "Failed to send low latency command\n"); mvm 797 drivers/net/wireless/intel/iwlwifi/mvm/utils.c int iwl_mvm_update_low_latency(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 805 drivers/net/wireless/intel/iwlwifi/mvm/utils.c lockdep_assert_held(&mvm->mutex); mvm 815 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_send_low_latency_cmd(mvm, low_latency, mvmvif->id); mvm 817 drivers/net/wireless/intel/iwlwifi/mvm/utils.c res = iwl_mvm_update_quotas(mvm, false, NULL); mvm 821 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_bt_coex_vif_change(mvm); mvm 823 drivers/net/wireless/intel/iwlwifi/mvm/utils.c return iwl_mvm_power_update_mac(mvm); mvm 848 drivers/net/wireless/intel/iwlwifi/mvm/utils.c bool iwl_mvm_low_latency(struct iwl_mvm *mvm) mvm 853 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 859 drivers/net/wireless/intel/iwlwifi/mvm/utils.c bool iwl_mvm_low_latency_band(struct iwl_mvm *mvm, enum nl80211_band band) mvm 864 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 891 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct ieee80211_vif *iwl_mvm_get_bss_vif(struct iwl_mvm *mvm) mvm 896 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 900 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_ERR(mvm, "More than one managed interface active!\n"); mvm 923 drivers/net/wireless/intel/iwlwifi/mvm/utils.c bool iwl_mvm_is_vif_assoc(struct iwl_mvm *mvm) mvm 929 drivers/net/wireless/intel/iwlwifi/mvm/utils.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 936 drivers/net/wireless/intel/iwlwifi/mvm/utils.c unsigned int iwl_mvm_get_wd_timeout(struct iwl_mvm *mvm, mvm 944 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->trans->trans_cfg->base_params->wd_timeout; mvm 946 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (!iwl_fw_dbg_trigger_enabled(mvm->fw, FW_DBG_TRIGGER_TXQ_TIMERS)) { mvm 951 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (fw_has_capa(&mvm->fw->ucode_capa, mvm 959 drivers/net/wireless/intel/iwlwifi/mvm/utils.c trigger = iwl_fw_dbg_get_trigger(mvm->fw, FW_DBG_TRIGGER_TXQ_TIMERS); mvm 988 drivers/net/wireless/intel/iwlwifi/mvm/utils.c return mvm->trans->trans_cfg->base_params->wd_timeout; mvm 992 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_connection_loss(struct iwl_mvm *mvm, struct ieee80211_vif *vif, mvm 998 drivers/net/wireless/intel/iwlwifi/mvm/utils.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), mvm 1009 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, "%s", errmsg); mvm 1015 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_event_frame_timeout_callback(struct iwl_mvm *mvm, mvm 1023 drivers/net/wireless/intel/iwlwifi/mvm/utils.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), mvm 1033 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, mvm 1047 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_tcm_load(struct iwl_mvm *mvm, u32 airtime, unsigned long elapsed) mvm 1060 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct iwl_mvm *mvm; mvm 1067 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct iwl_mvm *mvm = data->mvm; mvm 1074 drivers/net/wireless/intel/iwlwifi/mvm/utils.c low_latency = mvm->tcm.result.low_latency[mvmvif->id]; mvm 1076 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (!mvm->tcm.result.change[mvmvif->id] && mvm 1078 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_update_quotas(mvm, false, NULL); mvm 1084 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_update_low_latency(mvm, vif, low_latency, mvm 1087 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_update_quotas(mvm, false, NULL); mvm 1093 drivers/net/wireless/intel/iwlwifi/mvm/utils.c static void iwl_mvm_tcm_results(struct iwl_mvm *mvm) mvm 1096 drivers/net/wireless/intel/iwlwifi/mvm/utils.c .mvm = mvm, mvm 1100 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mutex_lock(&mvm->mutex); mvm 1103 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm 1106 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) mvm 1107 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_config_scan(mvm); mvm 1109 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mutex_unlock(&mvm->mutex); mvm 1114 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct iwl_mvm *mvm; mvm 1121 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm = mvmvif->mvm; mvm 1123 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->tcm.data[mvmvif->id].opened_rx_ba_sessions) mvm 1127 drivers/net/wireless/intel/iwlwifi/mvm/utils.c memcpy(mvm->uapsd_noagg_bssids[mvm->uapsd_noagg_bssid_write_idx].addr, mvm 1129 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->uapsd_noagg_bssid_write_idx++; mvm 1130 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->uapsd_noagg_bssid_write_idx >= IWL_MVM_UAPSD_NOAGG_LIST_LEN) mvm 1131 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->uapsd_noagg_bssid_write_idx = 0; mvm 1133 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_connection_loss(mvm, vif, mvm 1137 drivers/net/wireless/intel/iwlwifi/mvm/utils.c static void iwl_mvm_uapsd_agg_disconnect(struct iwl_mvm *mvm, mvm 1154 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->tcm.data[mvmvif->id].uapsd_nonagg_detect.detected) mvm 1157 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.data[mvmvif->id].uapsd_nonagg_detect.detected = true; mvm 1158 drivers/net/wireless/intel/iwlwifi/mvm/utils.c IWL_INFO(mvm, mvm 1163 drivers/net/wireless/intel/iwlwifi/mvm/utils.c static void iwl_mvm_check_uapsd_agg_expected_tpt(struct iwl_mvm *mvm, mvm 1167 drivers/net/wireless/intel/iwlwifi/mvm/utils.c u64 bytes = mvm->tcm.data[mac].uapsd_nonagg_detect.rx_bytes; mvm 1172 drivers/net/wireless/intel/iwlwifi/mvm/utils.c rate = ewma_rate_read(&mvm->tcm.data[mac].uapsd_nonagg_detect.rate); mvm 1174 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (!rate || mvm->tcm.data[mac].opened_rx_ba_sessions || mvm 1175 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.data[mac].uapsd_nonagg_detect.detected) mvm 1178 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (iwl_mvm_has_new_rx_api(mvm)) { mvm 1200 drivers/net/wireless/intel/iwlwifi/mvm/utils.c vif = rcu_dereference(mvm->vif_id_to_mac[mac]); mvm 1202 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_uapsd_agg_disconnect(mvm, vif); mvm 1218 drivers/net/wireless/intel/iwlwifi/mvm/utils.c static unsigned long iwl_mvm_calc_tcm_stats(struct iwl_mvm *mvm, mvm 1222 drivers/net/wireless/intel/iwlwifi/mvm/utils.c unsigned int elapsed = jiffies_to_msecs(ts - mvm->tcm.ts); mvm 1224 drivers/net/wireless/intel/iwlwifi/mvm/utils.c jiffies_to_msecs(ts - mvm->tcm.uapsd_nonagg_ts); mvm 1231 drivers/net/wireless/intel/iwlwifi/mvm/utils.c bool handle_ll = time_after(ts, mvm->tcm.ll_ts + MVM_LL_PERIOD); mvm 1234 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.ll_ts = ts; mvm 1236 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.uapsd_nonagg_ts = ts; mvm 1238 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.elapsed = elapsed; mvm 1240 drivers/net/wireless/intel/iwlwifi/mvm/utils.c ieee80211_iterate_active_interfaces_atomic(mvm->hw, mvm 1246 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct iwl_mvm_tcm_mac *mdata = &mvm->tcm.data[mac]; mvm 1253 drivers/net/wireless/intel/iwlwifi/mvm/utils.c load = iwl_mvm_tcm_load(mvm, airtime, elapsed); mvm 1254 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.change[mac] = load != mvm->tcm.result.load[mac]; mvm 1255 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.load[mac] = load; mvm 1256 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.airtime[mac] = airtime; mvm 1264 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.low_latency[mac] = true; mvm 1266 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.low_latency[mac] = false; mvm 1273 drivers/net/wireless/intel/iwlwifi/mvm/utils.c low_latency |= mvm->tcm.result.low_latency[mac]; mvm 1275 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (!mvm->tcm.result.low_latency[mac] && handle_uapsd) mvm 1276 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_check_uapsd_agg_expected_tpt(mvm, uapsd_elapsed, mvm 1285 drivers/net/wireless/intel/iwlwifi/mvm/utils.c load = iwl_mvm_tcm_load(mvm, total_airtime, elapsed); mvm 1286 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.global_change = load != mvm->tcm.result.global_load; mvm 1287 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.global_load = load; mvm 1290 drivers/net/wireless/intel/iwlwifi/mvm/utils.c band_load = iwl_mvm_tcm_load(mvm, band_airtime[i], elapsed); mvm 1291 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.result.band_load[i] = band_load; mvm 1323 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_recalc_tcm(struct iwl_mvm *mvm) mvm 1327 drivers/net/wireless/intel/iwlwifi/mvm/utils.c time_after(ts, mvm->tcm.uapsd_nonagg_ts + mvm 1330 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_lock(&mvm->tcm.lock); mvm 1331 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->tcm.paused || !time_after(ts, mvm->tcm.ts + MVM_TCM_PERIOD)) { mvm 1332 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_unlock(&mvm->tcm.lock); mvm 1335 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_unlock(&mvm->tcm.lock); mvm 1337 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (handle_uapsd && iwl_mvm_has_new_rx_api(mvm)) { mvm 1338 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mutex_lock(&mvm->mutex); mvm 1339 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (iwl_mvm_request_statistics(mvm, true)) mvm 1341 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mutex_unlock(&mvm->mutex); mvm 1344 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_lock(&mvm->tcm.lock); mvm 1346 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (!mvm->tcm.paused && time_after(ts, mvm->tcm.ts + MVM_TCM_PERIOD)) { mvm 1348 drivers/net/wireless/intel/iwlwifi/mvm/utils.c unsigned long work_delay = iwl_mvm_calc_tcm_stats(mvm, ts, mvm 1353 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.ts = ts; mvm 1355 drivers/net/wireless/intel/iwlwifi/mvm/utils.c schedule_delayed_work(&mvm->tcm.work, work_delay); mvm 1357 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_unlock(&mvm->tcm.lock); mvm 1359 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_tcm_results(mvm); mvm 1365 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct iwl_mvm *mvm = container_of(delayed_work, struct iwl_mvm, mvm 1368 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_recalc_tcm(mvm); mvm 1371 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_pause_tcm(struct iwl_mvm *mvm, bool with_cancel) mvm 1373 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_lock_bh(&mvm->tcm.lock); mvm 1374 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.paused = true; mvm 1375 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_unlock_bh(&mvm->tcm.lock); mvm 1377 drivers/net/wireless/intel/iwlwifi/mvm/utils.c cancel_delayed_work_sync(&mvm->tcm.work); mvm 1380 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_resume_tcm(struct iwl_mvm *mvm) mvm 1385 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_lock_bh(&mvm->tcm.lock); mvm 1386 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.ts = jiffies; mvm 1387 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.ll_ts = jiffies; mvm 1389 drivers/net/wireless/intel/iwlwifi/mvm/utils.c struct iwl_mvm_tcm_mac *mdata = &mvm->tcm.data[mac]; mvm 1396 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->tcm.result.low_latency[mac]) mvm 1401 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->tcm.paused = false; mvm 1407 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->tcm.result.global_load > IWL_MVM_TRAFFIC_LOW) mvm 1408 drivers/net/wireless/intel/iwlwifi/mvm/utils.c schedule_delayed_work(&mvm->tcm.work, MVM_TCM_PERIOD); mvm 1410 drivers/net/wireless/intel/iwlwifi/mvm/utils.c schedule_delayed_work(&mvm->tcm.work, MVM_LL_PERIOD); mvm 1412 drivers/net/wireless/intel/iwlwifi/mvm/utils.c spin_unlock_bh(&mvm->tcm.lock); mvm 1415 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_tcm_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 1423 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_tcm_rm_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif) mvm 1430 drivers/net/wireless/intel/iwlwifi/mvm/utils.c u32 iwl_mvm_get_systime(struct iwl_mvm *mvm) mvm 1434 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000 && mvm 1435 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->trans->cfg->gp2_reg_addr) mvm 1436 drivers/net/wireless/intel/iwlwifi/mvm/utils.c reg_addr = mvm->trans->cfg->gp2_reg_addr; mvm 1438 drivers/net/wireless/intel/iwlwifi/mvm/utils.c return iwl_read_prph(mvm->trans, reg_addr); mvm 1441 drivers/net/wireless/intel/iwlwifi/mvm/utils.c void iwl_mvm_get_sync_time(struct iwl_mvm *mvm, u32 *gp2, u64 *boottime) mvm 1445 drivers/net/wireless/intel/iwlwifi/mvm/utils.c lockdep_assert_held(&mvm->mutex); mvm 1448 drivers/net/wireless/intel/iwlwifi/mvm/utils.c ps_disabled = mvm->ps_disabled; mvm 1450 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->ps_disabled = true; mvm 1451 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_power_update_device(mvm); mvm 1454 drivers/net/wireless/intel/iwlwifi/mvm/utils.c *gp2 = iwl_mvm_get_systime(mvm); mvm 1458 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->ps_disabled = ps_disabled; mvm 1459 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_mvm_power_update_device(mvm);