Lines Matching +full:full +full:- +full:pwr +full:- +full:cycle
8 * Copyright(c) 2012 - 2014, 2018 - 2020 Intel Corporation. All rights reserved.
9 * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
10 * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
21 * The full GNU General Public License is included in this distribution
26 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
30 * Copyright(c) 2012 - 2014, 2018 - 2020 Intel Corporation. All rights reserved.
31 * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
32 * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
66 #include "fw/notif-wait.h"
67 #include "iwl-trans.h"
68 #include "iwl-op-mode.h"
70 #include "iwl-debug.h"
71 #include "iwl-drv.h"
72 #include "iwl-modparams.h"
74 #include "iwl-phy-db.h"
75 #include "iwl-eeprom-parse.h"
76 #include "iwl-csr.h"
77 #include "iwl-io.h"
78 #include "iwl-prph.h"
81 #include "time-event.h"
82 #include "fw-api.h"
103 "power management scheme: 1-active, 2-balanced, 3-low power, default: 2");
136 struct iwl_trans_debug *dbg = &mvm->trans->dbg; in iwl_mvm_nic_config()
149 reg_val |= CSR_HW_REV_STEP(mvm->trans->hw_rev) << in iwl_mvm_nic_config()
151 reg_val |= CSR_HW_REV_DASH(mvm->trans->hw_rev) << in iwl_mvm_nic_config()
163 * TODO: Bits 7-8 of CSR in 8000 HW family and higher set the ADC in iwl_mvm_nic_config()
164 * sampling, and shouldn't be set to any non-zero value. in iwl_mvm_nic_config()
170 if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_8000) in iwl_mvm_nic_config()
173 if (iwl_fw_dbg_is_d3_debug_enabled(&mvm->fwrt) || in iwl_mvm_nic_config()
174 (iwl_trans_dbg_ini_valid(mvm->trans) && in iwl_mvm_nic_config()
175 dbg->fw_mon_cfg[IWL_FW_INI_ALLOCATION_ID_INTERNAL].buf_location) in iwl_mvm_nic_config()
179 iwl_trans_set_bits_mask(mvm->trans, CSR_HW_IF_CONFIG_REG, in iwl_mvm_nic_config()
190 IWL_DEBUG_INFO(mvm, "Radio type=0x%x-0x%x-0x%x\n", radio_cfg_type, in iwl_mvm_nic_config()
198 if (!mvm->trans->cfg->apmg_not_supported) in iwl_mvm_nic_config()
199 iwl_set_bits_mask_prph(mvm->trans, APMG_PS_CTRL_REG, in iwl_mvm_nic_config()
207 * which can't acquire mvm->mutex.
208 * @RX_HANDLER_ASYNC_LOCKED : If the handler needs to hold mvm->mutex
210 * it will be called from a worker with mvm->mutex held.
212 * mutex itself, it will be called from a worker without mvm->mutex held.
517 const struct iwl_pwr_tx_backoff *backoff = mvm->cfg->pwr_tx_backoffs; in iwl_mvm_min_backoff()
523 dflt_pwr_limit = iwl_acpi_get_pwr_limit(mvm->dev); in iwl_mvm_min_backoff()
525 while (backoff->pwr) { in iwl_mvm_min_backoff()
526 if (dflt_pwr_limit >= backoff->pwr) in iwl_mvm_min_backoff()
527 return backoff->backoff; in iwl_mvm_min_backoff()
542 mutex_lock(&mvm->mutex); in iwl_mvm_tx_unblock_dwork()
545 rcu_dereference_protected(mvm->csa_tx_blocked_vif, in iwl_mvm_tx_unblock_dwork()
546 lockdep_is_held(&mvm->mutex)); in iwl_mvm_tx_unblock_dwork()
553 RCU_INIT_POINTER(mvm->csa_tx_blocked_vif, NULL); in iwl_mvm_tx_unblock_dwork()
555 mutex_unlock(&mvm->mutex); in iwl_mvm_tx_unblock_dwork()
562 mutex_lock(&mvm->mutex); in iwl_mvm_fwrt_dump_start()
571 mutex_unlock(&mvm->mutex); in iwl_mvm_fwrt_dump_end()
584 mutex_lock(&mvm->mutex); in iwl_mvm_fwrt_send_hcmd()
586 mutex_unlock(&mvm->mutex); in iwl_mvm_fwrt_send_hcmd()
621 * index all over the driver - check that its value corresponds to the in iwl_op_mode_mvm_start()
624 BUILD_BUG_ON(ARRAY_SIZE(mvm->fw_id_to_mac_id) != in iwl_op_mode_mvm_start()
636 hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF; in iwl_op_mode_mvm_start()
638 if (cfg->max_tx_agg_size) in iwl_op_mode_mvm_start()
639 hw->max_tx_aggregation_subframes = cfg->max_tx_agg_size; in iwl_op_mode_mvm_start()
641 hw->max_tx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF; in iwl_op_mode_mvm_start()
643 op_mode = hw->priv; in iwl_op_mode_mvm_start()
646 mvm->dev = trans->dev; in iwl_op_mode_mvm_start()
647 mvm->trans = trans; in iwl_op_mode_mvm_start()
648 mvm->cfg = cfg; in iwl_op_mode_mvm_start()
649 mvm->fw = fw; in iwl_op_mode_mvm_start()
650 mvm->hw = hw; in iwl_op_mode_mvm_start()
652 iwl_fw_runtime_init(&mvm->fwrt, trans, fw, &iwl_mvm_fwrt_ops, mvm, in iwl_op_mode_mvm_start()
655 mvm->init_status = 0; in iwl_op_mode_mvm_start()
658 op_mode->ops = &iwl_mvm_ops_mq; in iwl_op_mode_mvm_start()
659 trans->rx_mpdu_cmd_hdr_size = in iwl_op_mode_mvm_start()
660 (trans->trans_cfg->device_family >= in iwl_op_mode_mvm_start()
665 op_mode->ops = &iwl_mvm_ops; in iwl_op_mode_mvm_start()
666 trans->rx_mpdu_cmd_hdr_size = in iwl_op_mode_mvm_start()
669 if (WARN_ON(trans->num_rx_queues > 1)) in iwl_op_mode_mvm_start()
673 mvm->fw_restart = iwlwifi_mod_params.fw_restart ? -1 : 0; in iwl_op_mode_mvm_start()
675 mvm->aux_queue = IWL_MVM_DQA_AUX_QUEUE; in iwl_op_mode_mvm_start()
676 mvm->snif_queue = IWL_MVM_DQA_INJECT_MONITOR_QUEUE; in iwl_op_mode_mvm_start()
677 mvm->probe_queue = IWL_MVM_DQA_AP_PROBE_RESP_QUEUE; in iwl_op_mode_mvm_start()
678 mvm->p2p_dev_queue = IWL_MVM_DQA_P2P_DEVICE_QUEUE; in iwl_op_mode_mvm_start()
680 mvm->sf_state = SF_UNINIT; in iwl_op_mode_mvm_start()
682 iwl_fw_set_current_image(&mvm->fwrt, IWL_UCODE_REGULAR); in iwl_op_mode_mvm_start()
684 iwl_fw_set_current_image(&mvm->fwrt, IWL_UCODE_INIT); in iwl_op_mode_mvm_start()
685 mvm->drop_bcn_ap_mode = true; in iwl_op_mode_mvm_start()
687 mutex_init(&mvm->mutex); in iwl_op_mode_mvm_start()
688 spin_lock_init(&mvm->async_handlers_lock); in iwl_op_mode_mvm_start()
689 INIT_LIST_HEAD(&mvm->time_event_list); in iwl_op_mode_mvm_start()
690 INIT_LIST_HEAD(&mvm->aux_roc_te_list); in iwl_op_mode_mvm_start()
691 INIT_LIST_HEAD(&mvm->async_handlers_list); in iwl_op_mode_mvm_start()
692 spin_lock_init(&mvm->time_event_lock); in iwl_op_mode_mvm_start()
693 INIT_LIST_HEAD(&mvm->ftm_initiator.loc_list); in iwl_op_mode_mvm_start()
694 INIT_LIST_HEAD(&mvm->ftm_initiator.pasn_list); in iwl_op_mode_mvm_start()
695 INIT_LIST_HEAD(&mvm->resp_pasn_list); in iwl_op_mode_mvm_start()
697 INIT_WORK(&mvm->async_handlers_wk, iwl_mvm_async_handlers_wk); in iwl_op_mode_mvm_start()
698 INIT_WORK(&mvm->roc_done_wk, iwl_mvm_roc_done_wk); in iwl_op_mode_mvm_start()
699 INIT_DELAYED_WORK(&mvm->tdls_cs.dwork, iwl_mvm_tdls_ch_switch_work); in iwl_op_mode_mvm_start()
700 INIT_DELAYED_WORK(&mvm->scan_timeout_dwork, iwl_mvm_scan_timeout_wk); in iwl_op_mode_mvm_start()
701 INIT_WORK(&mvm->add_stream_wk, iwl_mvm_add_new_dqa_stream_wk); in iwl_op_mode_mvm_start()
702 INIT_LIST_HEAD(&mvm->add_stream_txqs); in iwl_op_mode_mvm_start()
704 init_waitqueue_head(&mvm->rx_sync_waitq); in iwl_op_mode_mvm_start()
706 atomic_set(&mvm->queue_sync_counter, 0); in iwl_op_mode_mvm_start()
708 SET_IEEE80211_DEV(mvm->hw, mvm->trans->dev); in iwl_op_mode_mvm_start()
710 spin_lock_init(&mvm->tcm.lock); in iwl_op_mode_mvm_start()
711 INIT_DELAYED_WORK(&mvm->tcm.work, iwl_mvm_tcm_work); in iwl_op_mode_mvm_start()
712 mvm->tcm.ts = jiffies; in iwl_op_mode_mvm_start()
713 mvm->tcm.ll_ts = jiffies; in iwl_op_mode_mvm_start()
714 mvm->tcm.uapsd_nonagg_ts = jiffies; in iwl_op_mode_mvm_start()
716 INIT_DELAYED_WORK(&mvm->cs_tx_unblock_dwork, iwl_mvm_tx_unblock_dwork); in iwl_op_mode_mvm_start()
718 mvm->cmd_ver.d0i3_resp = in iwl_op_mode_mvm_start()
719 iwl_fw_lookup_notif_ver(mvm->fw, LEGACY_GROUP, D0I3_END_CMD, in iwl_op_mode_mvm_start()
722 if (WARN_ON_ONCE(mvm->cmd_ver.d0i3_resp > 1)) in iwl_op_mode_mvm_start()
725 mvm->cmd_ver.range_resp = in iwl_op_mode_mvm_start()
726 iwl_fw_lookup_notif_ver(mvm->fw, LOCATION_GROUP, in iwl_op_mode_mvm_start()
729 if (WARN_ON_ONCE(mvm->cmd_ver.range_resp > 8)) in iwl_op_mode_mvm_start()
740 if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) in iwl_op_mode_mvm_start()
764 trans->wide_cmd_header = true; in iwl_op_mode_mvm_start()
766 mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_AX210; in iwl_op_mode_mvm_start()
784 snprintf(mvm->hw->wiphy->fw_version, in iwl_op_mode_mvm_start()
785 sizeof(mvm->hw->wiphy->fw_version), in iwl_op_mode_mvm_start()
786 "%s", fw->fw_version); in iwl_op_mode_mvm_start()
789 iwl_trans_configure(mvm->trans, &trans_cfg); in iwl_op_mode_mvm_start()
791 trans->rx_mpdu_cmd = REPLY_RX_MPDU_CMD; in iwl_op_mode_mvm_start()
792 trans->dbg.dest_tlv = mvm->fw->dbg.dest_tlv; in iwl_op_mode_mvm_start()
793 trans->dbg.n_dest_reg = mvm->fw->dbg.n_dest_reg; in iwl_op_mode_mvm_start()
794 memcpy(trans->dbg.conf_tlv, mvm->fw->dbg.conf_tlv, in iwl_op_mode_mvm_start()
795 sizeof(trans->dbg.conf_tlv)); in iwl_op_mode_mvm_start()
796 trans->dbg.trigger_tlv = mvm->fw->dbg.trigger_tlv; in iwl_op_mode_mvm_start()
798 trans->iml = mvm->fw->iml; in iwl_op_mode_mvm_start()
799 trans->iml_len = mvm->fw->iml_len; in iwl_op_mode_mvm_start()
802 iwl_notification_wait_init(&mvm->notif_wait); in iwl_op_mode_mvm_start()
805 mvm->phy_db = iwl_phy_db_init(trans); in iwl_op_mode_mvm_start()
806 if (!mvm->phy_db) { in iwl_op_mode_mvm_start()
812 mvm->trans->name, mvm->trans->hw_rev); in iwl_op_mode_mvm_start()
815 mvm->nvm_file_name = iwlwifi_mod_params.nvm_file; in iwl_op_mode_mvm_start()
817 IWL_DEBUG_EEPROM(mvm->trans->dev, in iwl_op_mode_mvm_start()
820 err = iwl_trans_start_hw(mvm->trans); in iwl_op_mode_mvm_start()
824 mutex_lock(&mvm->mutex); in iwl_op_mode_mvm_start()
826 if (err && err != -ERFKILL) in iwl_op_mode_mvm_start()
827 iwl_fw_dbg_error_collect(&mvm->fwrt, FW_DBG_TRIGGER_DRIVER); in iwl_op_mode_mvm_start()
830 mutex_unlock(&mvm->mutex); in iwl_op_mode_mvm_start()
838 mvm->scan_cmd = kmalloc(scan_size, GFP_KERNEL); in iwl_op_mode_mvm_start()
839 if (!mvm->scan_cmd) in iwl_op_mode_mvm_start()
843 mvm->last_ebs_successful = true; in iwl_op_mode_mvm_start()
848 mvm->hw_registered = true; in iwl_op_mode_mvm_start()
856 memset(&mvm->rx_stats_v3, 0, in iwl_op_mode_mvm_start()
859 memset(&mvm->rx_stats, 0, sizeof(struct mvm_statistics_rx)); in iwl_op_mode_mvm_start()
861 iwl_mvm_toggle_tx_ant(mvm, &mvm->mgmt_last_antenna_idx); in iwl_op_mode_mvm_start()
866 iwl_fw_flush_dumps(&mvm->fwrt); in iwl_op_mode_mvm_start()
867 iwl_fw_runtime_free(&mvm->fwrt); in iwl_op_mode_mvm_start()
871 iwl_phy_db_free(mvm->phy_db); in iwl_op_mode_mvm_start()
872 kfree(mvm->scan_cmd); in iwl_op_mode_mvm_start()
875 ieee80211_free_hw(mvm->hw); in iwl_op_mode_mvm_start()
888 ieee80211_unregister_hw(mvm->hw); in iwl_op_mode_mvm_stop()
890 kfree(mvm->scan_cmd); in iwl_op_mode_mvm_stop()
891 kfree(mvm->mcast_filter_cmd); in iwl_op_mode_mvm_stop()
892 mvm->mcast_filter_cmd = NULL; in iwl_op_mode_mvm_stop()
894 kfree(mvm->error_recovery_buf); in iwl_op_mode_mvm_stop()
895 mvm->error_recovery_buf = NULL; in iwl_op_mode_mvm_stop()
897 iwl_trans_op_mode_leave(mvm->trans); in iwl_op_mode_mvm_stop()
899 iwl_phy_db_free(mvm->phy_db); in iwl_op_mode_mvm_stop()
900 mvm->phy_db = NULL; in iwl_op_mode_mvm_stop()
902 kfree(mvm->nvm_data); in iwl_op_mode_mvm_stop()
904 kfree(mvm->nvm_sections[i].data); in iwl_op_mode_mvm_stop()
906 cancel_delayed_work_sync(&mvm->tcm.work); in iwl_op_mode_mvm_stop()
908 iwl_fw_runtime_free(&mvm->fwrt); in iwl_op_mode_mvm_stop()
909 mutex_destroy(&mvm->mutex); in iwl_op_mode_mvm_stop()
911 ieee80211_free_hw(mvm->hw); in iwl_op_mode_mvm_stop()
925 spin_lock_bh(&mvm->async_handlers_lock); in iwl_mvm_async_handlers_purge()
926 list_for_each_entry_safe(entry, tmp, &mvm->async_handlers_list, list) { in iwl_mvm_async_handlers_purge()
927 iwl_free_rxb(&entry->rxb); in iwl_mvm_async_handlers_purge()
928 list_del(&entry->list); in iwl_mvm_async_handlers_purge()
931 spin_unlock_bh(&mvm->async_handlers_lock); in iwl_mvm_async_handlers_purge()
947 spin_lock_bh(&mvm->async_handlers_lock); in iwl_mvm_async_handlers_wk()
948 list_splice_init(&mvm->async_handlers_list, &local_list); in iwl_mvm_async_handlers_wk()
949 spin_unlock_bh(&mvm->async_handlers_lock); in iwl_mvm_async_handlers_wk()
952 if (entry->context == RX_HANDLER_ASYNC_LOCKED) in iwl_mvm_async_handlers_wk()
953 mutex_lock(&mvm->mutex); in iwl_mvm_async_handlers_wk()
954 entry->fn(mvm, &entry->rxb); in iwl_mvm_async_handlers_wk()
955 iwl_free_rxb(&entry->rxb); in iwl_mvm_async_handlers_wk()
956 list_del(&entry->list); in iwl_mvm_async_handlers_wk()
957 if (entry->context == RX_HANDLER_ASYNC_LOCKED) in iwl_mvm_async_handlers_wk()
958 mutex_unlock(&mvm->mutex); in iwl_mvm_async_handlers_wk()
970 trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, in iwl_mvm_rx_check_trigger()
975 cmds_trig = (void *)trig->data; in iwl_mvm_rx_check_trigger()
977 for (i = 0; i < ARRAY_SIZE(cmds_trig->cmds); i++) { in iwl_mvm_rx_check_trigger()
979 if (!cmds_trig->cmds[i].cmd_id) in iwl_mvm_rx_check_trigger()
982 if (cmds_trig->cmds[i].cmd_id != pkt->hdr.cmd || in iwl_mvm_rx_check_trigger()
983 cmds_trig->cmds[i].group_id != pkt->hdr.group_id) in iwl_mvm_rx_check_trigger()
986 iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, in iwl_mvm_rx_check_trigger()
988 pkt->hdr.group_id, pkt->hdr.cmd); in iwl_mvm_rx_check_trigger()
1000 iwl_dbg_tlv_time_point(&mvm->fwrt, in iwl_mvm_rx_common()
1009 iwl_notification_wait_notify(&mvm->notif_wait, pkt); in iwl_mvm_rx_common()
1015 if (rx_h->cmd_id != WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd)) in iwl_mvm_rx_common()
1018 if (rx_h->context == RX_HANDLER_SYNC) { in iwl_mvm_rx_common()
1019 rx_h->fn(mvm, rxb); in iwl_mvm_rx_common()
1028 entry->rxb._page = rxb_steal_page(rxb); in iwl_mvm_rx_common()
1029 entry->rxb._offset = rxb->_offset; in iwl_mvm_rx_common()
1030 entry->rxb._rx_page_order = rxb->_rx_page_order; in iwl_mvm_rx_common()
1031 entry->fn = rx_h->fn; in iwl_mvm_rx_common()
1032 entry->context = rx_h->context; in iwl_mvm_rx_common()
1033 spin_lock(&mvm->async_handlers_lock); in iwl_mvm_rx_common()
1034 list_add_tail(&entry->list, &mvm->async_handlers_list); in iwl_mvm_rx_common()
1035 spin_unlock(&mvm->async_handlers_lock); in iwl_mvm_rx_common()
1036 schedule_work(&mvm->async_handlers_wk); in iwl_mvm_rx_common()
1047 u16 cmd = WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd); in iwl_mvm_rx()
1063 u16 cmd = WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd); in iwl_mvm_rx_mq()
1089 iwl_trans_block_txq_ptrs(mvm->trans, false); in iwl_mvm_async_cb()
1094 return queue == mvm->aux_queue || queue == mvm->probe_queue || in iwl_mvm_is_static_queue()
1095 queue == mvm->p2p_dev_queue || queue == mvm->snif_queue; in iwl_mvm_is_static_queue()
1111 mvm->tvqm_info[hw_queue].sta_id : in iwl_mvm_queue_state_change()
1112 mvm->queue_info[hw_queue].ra_sta_id; in iwl_mvm_queue_state_change()
1114 if (WARN_ON_ONCE(sta_id >= mvm->fw->ucode_capa.num_stations)) in iwl_mvm_queue_state_change()
1119 sta = rcu_dereference(mvm->fw_id_to_mac_id[sta_id]); in iwl_mvm_queue_state_change()
1126 ieee80211_stop_queues(mvm->hw); in iwl_mvm_queue_state_change()
1127 else if (mvmsta->sta_state != IEEE80211_STA_NOTEXIST) in iwl_mvm_queue_state_change()
1128 ieee80211_wake_queues(mvm->hw); in iwl_mvm_queue_state_change()
1134 int tid = mvm->tvqm_info[hw_queue].txq_tid; in iwl_mvm_queue_state_change()
1138 tid_bitmap = mvm->queue_info[hw_queue].tid_bitmap; in iwl_mvm_queue_state_change()
1147 txq = sta->txq[tid]; in iwl_mvm_queue_state_change()
1149 mvmtxq->stopped = !start; in iwl_mvm_queue_state_change()
1151 if (start && mvmsta->sta_state != IEEE80211_STA_NOTEXIST) in iwl_mvm_queue_state_change()
1152 iwl_mvm_mac_itxq_xmit(mvm->hw, txq); in iwl_mvm_queue_state_change()
1174 wake_up(&mvm->rx_sync_waitq); in iwl_mvm_set_rfkill_state()
1176 wiphy_rfkill_set_hw_state(mvm->hw->wiphy, state); in iwl_mvm_set_rfkill_state()
1182 set_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status); in iwl_mvm_set_hw_ctkill_state()
1184 clear_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status); in iwl_mvm_set_hw_ctkill_state()
1192 bool rfkill_safe_init_done = READ_ONCE(mvm->rfkill_safe_init_done); in iwl_mvm_set_hw_rfkill_state()
1196 set_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status); in iwl_mvm_set_hw_rfkill_state()
1198 clear_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status); in iwl_mvm_set_hw_rfkill_state()
1204 iwl_abort_notification_waits(&mvm->notif_wait); in iwl_mvm_set_hw_rfkill_state()
1226 iwl_trans_free_tx_cmd(mvm->trans, info->driver_data[1]); in iwl_mvm_free_skb()
1227 ieee80211_free_txskb(mvm->hw, skb); in iwl_mvm_free_skb()
1240 if (device_reprobe(reprobe->dev)) in iwl_mvm_reprobe_wk()
1241 dev_err(reprobe->dev, "reprobe failed!\n"); in iwl_mvm_reprobe_wk()
1248 iwl_abort_notification_waits(&mvm->notif_wait); in iwl_mvm_nic_restart()
1249 iwl_dbg_tlv_del_timers(mvm->trans); in iwl_mvm_nic_restart()
1264 * If we're restarting already, don't cycle restarts. in iwl_mvm_nic_restart()
1269 if (!mvm->fw_restart && fw_error) { in iwl_mvm_nic_restart()
1270 iwl_fw_error_collect(&mvm->fwrt); in iwl_mvm_nic_restart()
1271 } else if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { in iwl_mvm_nic_restart()
1275 "Firmware error during reconfiguration - reprobe!\n"); in iwl_mvm_nic_restart()
1283 IWL_ERR(mvm, "Module is being unloaded - abort\n"); in iwl_mvm_nic_restart()
1292 reprobe->dev = mvm->trans->dev; in iwl_mvm_nic_restart()
1293 INIT_WORK(&reprobe->work, iwl_mvm_reprobe_wk); in iwl_mvm_nic_restart()
1294 schedule_work(&reprobe->work); in iwl_mvm_nic_restart()
1296 &mvm->status)) { in iwl_mvm_nic_restart()
1298 } else if (mvm->fwrt.cur_fw_img == IWL_UCODE_REGULAR && in iwl_mvm_nic_restart()
1299 mvm->hw_registered && in iwl_mvm_nic_restart()
1300 !test_bit(STATUS_TRANS_DEAD, &mvm->trans->status)) { in iwl_mvm_nic_restart()
1301 if (mvm->fw->ucode_capa.error_log_size) { in iwl_mvm_nic_restart()
1302 u32 src_size = mvm->fw->ucode_capa.error_log_size; in iwl_mvm_nic_restart()
1303 u32 src_addr = mvm->fw->ucode_capa.error_log_addr; in iwl_mvm_nic_restart()
1307 mvm->error_recovery_buf = recover_buf; in iwl_mvm_nic_restart()
1308 iwl_trans_read_mem_bytes(mvm->trans, in iwl_mvm_nic_restart()
1315 iwl_fw_error_collect(&mvm->fwrt); in iwl_mvm_nic_restart()
1317 if (fw_error && mvm->fw_restart > 0) in iwl_mvm_nic_restart()
1318 mvm->fw_restart--; in iwl_mvm_nic_restart()
1319 set_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status); in iwl_mvm_nic_restart()
1320 ieee80211_restart_hw(mvm->hw); in iwl_mvm_nic_restart()
1328 if (!test_bit(STATUS_TRANS_DEAD, &mvm->trans->status)) in iwl_mvm_nic_error()
1368 u16 cmd = WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd); in iwl_mvm_rx_mq_rss()