Lines Matching refs:mvm
23 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_ctdp_budget_read() local
27 if (!iwl_mvm_is_ctdp_supported(mvm)) in iwl_dbgfs_ctdp_budget_read()
30 if (!iwl_mvm_firmware_running(mvm) || in iwl_dbgfs_ctdp_budget_read()
31 mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) in iwl_dbgfs_ctdp_budget_read()
34 mutex_lock(&mvm->mutex); in iwl_dbgfs_ctdp_budget_read()
35 budget = iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_REPORT, 0); in iwl_dbgfs_ctdp_budget_read()
36 mutex_unlock(&mvm->mutex); in iwl_dbgfs_ctdp_budget_read()
46 static ssize_t iwl_dbgfs_stop_ctdp_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_stop_ctdp_write() argument
51 if (!iwl_mvm_is_ctdp_supported(mvm)) in iwl_dbgfs_stop_ctdp_write()
54 if (!iwl_mvm_firmware_running(mvm) || in iwl_dbgfs_stop_ctdp_write()
55 mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) in iwl_dbgfs_stop_ctdp_write()
58 mutex_lock(&mvm->mutex); in iwl_dbgfs_stop_ctdp_write()
59 ret = iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_STOP, 0); in iwl_dbgfs_stop_ctdp_write()
60 mutex_unlock(&mvm->mutex); in iwl_dbgfs_stop_ctdp_write()
65 static ssize_t iwl_dbgfs_force_ctkill_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_force_ctkill_write() argument
68 if (!iwl_mvm_firmware_running(mvm) || in iwl_dbgfs_force_ctkill_write()
69 mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) in iwl_dbgfs_force_ctkill_write()
72 iwl_mvm_enter_ctkill(mvm); in iwl_dbgfs_force_ctkill_write()
77 static ssize_t iwl_dbgfs_tx_flush_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_tx_flush_write() argument
83 if (!iwl_mvm_firmware_running(mvm) || in iwl_dbgfs_tx_flush_write()
84 mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) in iwl_dbgfs_tx_flush_write()
90 if (iwl_mvm_has_new_tx_api(mvm)) { in iwl_dbgfs_tx_flush_write()
91 IWL_DEBUG_TX_QUEUES(mvm, in iwl_dbgfs_tx_flush_write()
94 mutex_lock(&mvm->mutex); in iwl_dbgfs_tx_flush_write()
95 ret = iwl_mvm_flush_sta_tids(mvm, flush_arg, 0xFFFF) in iwl_dbgfs_tx_flush_write()
97 mutex_unlock(&mvm->mutex); in iwl_dbgfs_tx_flush_write()
101 IWL_DEBUG_TX_QUEUES(mvm, "FLUSHING queues mask to flush = 0x%x\n", in iwl_dbgfs_tx_flush_write()
104 mutex_lock(&mvm->mutex); in iwl_dbgfs_tx_flush_write()
105 ret = iwl_mvm_flush_tx_path(mvm, flush_arg) ? : count; in iwl_dbgfs_tx_flush_write()
106 mutex_unlock(&mvm->mutex); in iwl_dbgfs_tx_flush_write()
111 static ssize_t iwl_dbgfs_sta_drain_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_sta_drain_write() argument
117 if (!iwl_mvm_firmware_running(mvm) || in iwl_dbgfs_sta_drain_write()
118 mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) in iwl_dbgfs_sta_drain_write()
123 if (sta_id < 0 || sta_id >= mvm->fw->ucode_capa.num_stations) in iwl_dbgfs_sta_drain_write()
128 mutex_lock(&mvm->mutex); in iwl_dbgfs_sta_drain_write()
130 mvmsta = iwl_mvm_sta_from_staid_protected(mvm, sta_id); in iwl_dbgfs_sta_drain_write()
135 ret = iwl_mvm_drain_sta(mvm, mvmsta, drain) ? : count; in iwl_dbgfs_sta_drain_write()
137 mutex_unlock(&mvm->mutex); in iwl_dbgfs_sta_drain_write()
145 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_sram_read() local
151 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_sram_read()
155 img = &mvm->fw->img[mvm->fwrt.cur_fw_img]; in iwl_dbgfs_sram_read()
159 if (mvm->dbgfs_sram_len) { in iwl_dbgfs_sram_read()
160 ofs = mvm->dbgfs_sram_offset; in iwl_dbgfs_sram_read()
161 len = mvm->dbgfs_sram_len; in iwl_dbgfs_sram_read()
168 iwl_trans_read_mem_bytes(mvm->trans, ofs, ptr, len); in iwl_dbgfs_sram_read()
177 static ssize_t iwl_dbgfs_sram_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_sram_write() argument
184 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_sram_write()
187 img = &mvm->fw->img[mvm->fwrt.cur_fw_img]; in iwl_dbgfs_sram_write()
198 mvm->dbgfs_sram_offset = offset; in iwl_dbgfs_sram_write()
199 mvm->dbgfs_sram_len = len; in iwl_dbgfs_sram_write()
201 mvm->dbgfs_sram_offset = 0; in iwl_dbgfs_sram_write()
202 mvm->dbgfs_sram_len = 0; in iwl_dbgfs_sram_write()
212 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_set_nic_temperature_read() local
216 if (!mvm->temperature_test) in iwl_dbgfs_set_nic_temperature_read()
219 pos = scnprintf(buf , sizeof(buf), "%d\n", mvm->temperature); in iwl_dbgfs_set_nic_temperature_read()
231 static ssize_t iwl_dbgfs_set_nic_temperature_write(struct iwl_mvm *mvm, in iwl_dbgfs_set_nic_temperature_write() argument
237 if (!iwl_mvm_firmware_running(mvm) && !mvm->temperature_test) in iwl_dbgfs_set_nic_temperature_write()
248 mutex_lock(&mvm->mutex); in iwl_dbgfs_set_nic_temperature_write()
250 if (!mvm->temperature_test) in iwl_dbgfs_set_nic_temperature_write()
253 mvm->temperature_test = false; in iwl_dbgfs_set_nic_temperature_write()
258 mvm->temperature = 0; in iwl_dbgfs_set_nic_temperature_write()
260 mvm->temperature_test = true; in iwl_dbgfs_set_nic_temperature_write()
261 mvm->temperature = temperature; in iwl_dbgfs_set_nic_temperature_write()
263 IWL_DEBUG_TEMP(mvm, "%sabling debug set temperature (temp = %d)\n", in iwl_dbgfs_set_nic_temperature_write()
264 mvm->temperature_test ? "En" : "Dis" , in iwl_dbgfs_set_nic_temperature_write()
265 mvm->temperature); in iwl_dbgfs_set_nic_temperature_write()
267 iwl_mvm_tt_handler(mvm); in iwl_dbgfs_set_nic_temperature_write()
270 mutex_unlock(&mvm->mutex); in iwl_dbgfs_set_nic_temperature_write()
279 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_nic_temp_read() local
284 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_nic_temp_read()
287 mutex_lock(&mvm->mutex); in iwl_dbgfs_nic_temp_read()
288 ret = iwl_mvm_get_temp(mvm, &temp); in iwl_dbgfs_nic_temp_read()
289 mutex_unlock(&mvm->mutex); in iwl_dbgfs_nic_temp_read()
304 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_sar_geo_profile_read() local
310 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_sar_geo_profile_read()
313 mutex_lock(&mvm->mutex); in iwl_dbgfs_sar_geo_profile_read()
314 tbl_idx = iwl_mvm_get_sar_geo_profile(mvm); in iwl_dbgfs_sar_geo_profile_read()
316 mutex_unlock(&mvm->mutex); in iwl_dbgfs_sar_geo_profile_read()
328 mvm->fwrt.geo_profiles[tbl_idx - 1].bands[0].chains[0], in iwl_dbgfs_sar_geo_profile_read()
329 mvm->fwrt.geo_profiles[tbl_idx - 1].bands[0].chains[1], in iwl_dbgfs_sar_geo_profile_read()
330 mvm->fwrt.geo_profiles[tbl_idx - 1].bands[0].max); in iwl_dbgfs_sar_geo_profile_read()
333 mvm->fwrt.geo_profiles[tbl_idx - 1].bands[1].chains[0], in iwl_dbgfs_sar_geo_profile_read()
334 mvm->fwrt.geo_profiles[tbl_idx - 1].bands[1].chains[1], in iwl_dbgfs_sar_geo_profile_read()
335 mvm->fwrt.geo_profiles[tbl_idx - 1].bands[1].max); in iwl_dbgfs_sar_geo_profile_read()
337 mutex_unlock(&mvm->mutex); in iwl_dbgfs_sar_geo_profile_read()
346 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_stations_read() local
351 mutex_lock(&mvm->mutex); in iwl_dbgfs_stations_read()
353 for (i = 0; i < mvm->fw->ucode_capa.num_stations; i++) { in iwl_dbgfs_stations_read()
355 sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i], in iwl_dbgfs_stations_read()
356 lockdep_is_held(&mvm->mutex)); in iwl_dbgfs_stations_read()
367 mutex_unlock(&mvm->mutex); in iwl_dbgfs_stations_read()
378 struct iwl_mvm *mvm = lq_sta->pers.drv; in iwl_dbgfs_rs_data_read() local
388 mutex_lock(&mvm->mutex); in iwl_dbgfs_rs_data_read()
400 (iwl_mvm_get_valid_tx_ant(mvm) & ANT_A) ? "ANT_A," : "", in iwl_dbgfs_rs_data_read()
401 (iwl_mvm_get_valid_tx_ant(mvm) & ANT_B) ? "ANT_B," : ""); in iwl_dbgfs_rs_data_read()
410 mutex_unlock(&mvm->mutex); in iwl_dbgfs_rs_data_read()
467 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_disable_power_off_read() local
473 mvm->disable_power_off); in iwl_dbgfs_disable_power_off_read()
475 mvm->disable_power_off_d3); in iwl_dbgfs_disable_power_off_read()
480 static ssize_t iwl_dbgfs_disable_power_off_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_disable_power_off_write() argument
485 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_disable_power_off_write()
491 mvm->disable_power_off = val; in iwl_dbgfs_disable_power_off_write()
495 mvm->disable_power_off_d3 = val; in iwl_dbgfs_disable_power_off_write()
500 mutex_lock(&mvm->mutex); in iwl_dbgfs_disable_power_off_write()
501 ret = iwl_mvm_power_update_device(mvm); in iwl_dbgfs_disable_power_off_write()
502 mutex_unlock(&mvm->mutex); in iwl_dbgfs_disable_power_off_write()
570 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_bt_notif_read() local
571 struct iwl_bt_coex_profile_notif *notif = &mvm->last_bt_notif; in iwl_dbgfs_bt_notif_read()
579 mutex_lock(&mvm->mutex); in iwl_dbgfs_bt_notif_read()
602 mutex_unlock(&mvm->mutex); in iwl_dbgfs_bt_notif_read()
614 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_bt_cmd_read() local
615 struct iwl_bt_coex_ci_cmd *cmd = &mvm->last_bt_ci_cmd; in iwl_dbgfs_bt_cmd_read()
620 mutex_lock(&mvm->mutex); in iwl_dbgfs_bt_cmd_read()
630 mutex_unlock(&mvm->mutex); in iwl_dbgfs_bt_cmd_read()
636 iwl_dbgfs_bt_tx_prio_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_bt_tx_prio_write() argument
646 mvm->bt_tx_prio = bt_tx_prio; in iwl_dbgfs_bt_tx_prio_write()
652 iwl_dbgfs_bt_force_ant_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_bt_force_ant_write() argument
669 mutex_lock(&mvm->mutex); in iwl_dbgfs_bt_force_ant_write()
670 if (mvm->bt_force_ant_mode == bt_force_ant_mode) in iwl_dbgfs_bt_force_ant_write()
673 mvm->bt_force_ant_mode = bt_force_ant_mode; in iwl_dbgfs_bt_force_ant_write()
674 IWL_DEBUG_COEX(mvm, "Force mode: %s\n", in iwl_dbgfs_bt_force_ant_write()
675 modes_str[mvm->bt_force_ant_mode]); in iwl_dbgfs_bt_force_ant_write()
677 if (iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_bt_force_ant_write()
678 ret = iwl_mvm_send_bt_init_conf(mvm); in iwl_dbgfs_bt_force_ant_write()
683 mutex_unlock(&mvm->mutex); in iwl_dbgfs_bt_force_ant_write()
690 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_fw_ver_read() local
703 mvm->trans->cfg->fw_name_pre); in iwl_dbgfs_fw_ver_read()
705 mvm->fwrt.fw->human_readable); in iwl_dbgfs_fw_ver_read()
707 mvm->fwrt.trans->name); in iwl_dbgfs_fw_ver_read()
709 mvm->fwrt.dev->bus->name); in iwl_dbgfs_fw_ver_read()
721 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_phy_integration_ver_read() local
727 bufsz = mvm->fw->phy_integration_ver_len + 2; in iwl_dbgfs_phy_integration_ver_read()
732 pos = scnprintf(buf, bufsz, "%.*s\n", mvm->fw->phy_integration_ver_len, in iwl_dbgfs_phy_integration_ver_read()
733 mvm->fw->phy_integration_ver); in iwl_dbgfs_phy_integration_ver_read()
750 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_fw_rx_stats_read() local
758 if (iwl_mvm_has_new_rx_stats_api(mvm)) in iwl_dbgfs_fw_rx_stats_read()
770 mutex_lock(&mvm->mutex); in iwl_dbgfs_fw_rx_stats_read()
772 if (iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_fw_rx_stats_read()
773 iwl_mvm_request_statistics(mvm, false); in iwl_dbgfs_fw_rx_stats_read()
777 if (!iwl_mvm_has_new_rx_stats_api(mvm)) { in iwl_dbgfs_fw_rx_stats_read()
778 struct mvm_statistics_rx_phy_v2 *ofdm = &mvm->rx_stats_v3.ofdm; in iwl_dbgfs_fw_rx_stats_read()
801 struct mvm_statistics_rx_phy *ofdm = &mvm->rx_stats.ofdm; in iwl_dbgfs_fw_rx_stats_read()
812 if (!iwl_mvm_has_new_rx_stats_api(mvm)) { in iwl_dbgfs_fw_rx_stats_read()
813 struct mvm_statistics_rx_phy_v2 *cck = &mvm->rx_stats_v3.cck; in iwl_dbgfs_fw_rx_stats_read()
836 struct mvm_statistics_rx_phy *cck = &mvm->rx_stats.cck; in iwl_dbgfs_fw_rx_stats_read()
847 if (!iwl_mvm_has_new_rx_stats_api(mvm)) { in iwl_dbgfs_fw_rx_stats_read()
849 &mvm->rx_stats_v3.general; in iwl_dbgfs_fw_rx_stats_read()
877 &mvm->rx_stats.general; in iwl_dbgfs_fw_rx_stats_read()
903 if (!iwl_mvm_has_new_rx_stats_api(mvm)) { in iwl_dbgfs_fw_rx_stats_read()
905 &mvm->rx_stats_v3.ofdm_ht; in iwl_dbgfs_fw_rx_stats_read()
919 &mvm->rx_stats.ofdm_ht; in iwl_dbgfs_fw_rx_stats_read()
927 mutex_unlock(&mvm->mutex); in iwl_dbgfs_fw_rx_stats_read()
936 static ssize_t iwl_dbgfs_frame_stats_read(struct iwl_mvm *mvm, in iwl_dbgfs_frame_stats_read() argument
950 spin_lock_bh(&mvm->drv_stats_lock); in iwl_dbgfs_frame_stats_read()
995 spin_unlock_bh(&mvm->drv_stats_lock); in iwl_dbgfs_frame_stats_read()
1007 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_drv_rx_stats_read() local
1009 return iwl_dbgfs_frame_stats_read(mvm, user_buf, count, ppos, in iwl_dbgfs_drv_rx_stats_read()
1010 &mvm->drv_rx_stats); in iwl_dbgfs_drv_rx_stats_read()
1013 static ssize_t iwl_dbgfs_fw_restart_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_fw_restart_write() argument
1018 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_fw_restart_write()
1021 mutex_lock(&mvm->mutex); in iwl_dbgfs_fw_restart_write()
1024 if (mvm->fw_restart >= 0) in iwl_dbgfs_fw_restart_write()
1025 mvm->fw_restart++; in iwl_dbgfs_fw_restart_write()
1028 set_bit(IWL_MVM_STATUS_SUPPRESS_ERROR_LOG_ONCE, &mvm->status); in iwl_dbgfs_fw_restart_write()
1029 set_bit(STATUS_SUPPRESS_CMD_ERROR_ONCE, &mvm->trans->status); in iwl_dbgfs_fw_restart_write()
1033 ret = iwl_mvm_send_cmd_pdu(mvm, in iwl_dbgfs_fw_restart_write()
1037 mutex_unlock(&mvm->mutex); in iwl_dbgfs_fw_restart_write()
1042 static ssize_t iwl_dbgfs_fw_nmi_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_fw_nmi_write() argument
1045 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_fw_nmi_write()
1049 set_bit(IWL_MVM_STATUS_SUPPRESS_ERROR_LOG_ONCE, &mvm->status); in iwl_dbgfs_fw_nmi_write()
1051 iwl_force_nmi(mvm->trans); in iwl_dbgfs_fw_nmi_write()
1061 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_scan_ant_rxchain_read() local
1068 if (mvm->scan_rx_ant & ANT_A) in iwl_dbgfs_scan_ant_rxchain_read()
1070 if (mvm->scan_rx_ant & ANT_B) in iwl_dbgfs_scan_ant_rxchain_read()
1072 pos += scnprintf(buf + pos, bufsz - pos, " (%hhx)\n", mvm->scan_rx_ant); in iwl_dbgfs_scan_ant_rxchain_read()
1078 iwl_dbgfs_scan_ant_rxchain_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_scan_ant_rxchain_write() argument
1083 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_scan_ant_rxchain_write()
1090 if (scan_rx_ant & ~(iwl_mvm_get_valid_rx_ant(mvm))) in iwl_dbgfs_scan_ant_rxchain_write()
1093 if (mvm->scan_rx_ant != scan_rx_ant) { in iwl_dbgfs_scan_ant_rxchain_write()
1094 mvm->scan_rx_ant = scan_rx_ant; in iwl_dbgfs_scan_ant_rxchain_write()
1095 if (fw_has_capa(&mvm->fw->ucode_capa, in iwl_dbgfs_scan_ant_rxchain_write()
1097 iwl_mvm_config_scan(mvm); in iwl_dbgfs_scan_ant_rxchain_write()
1103 static ssize_t iwl_dbgfs_indirection_tbl_write(struct iwl_mvm *mvm, in iwl_dbgfs_indirection_tbl_write() argument
1139 mutex_lock(&mvm->mutex); in iwl_dbgfs_indirection_tbl_write()
1140 if (iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_indirection_tbl_write()
1141 ret = iwl_mvm_send_cmd_pdu(mvm, RSS_CONFIG_CMD, 0, in iwl_dbgfs_indirection_tbl_write()
1145 mutex_unlock(&mvm->mutex); in iwl_dbgfs_indirection_tbl_write()
1150 static ssize_t iwl_dbgfs_inject_packet_write(struct iwl_mvm *mvm, in iwl_dbgfs_inject_packet_write() argument
1154 struct iwl_op_mode *opmode = container_of((void *)mvm, in iwl_dbgfs_inject_packet_write()
1166 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_inject_packet_write()
1170 if (!mvm->trans->trans_cfg->mq_rx_supported) in iwl_dbgfs_inject_packet_write()
1198 static int _iwl_dbgfs_inject_beacon_ie(struct iwl_mvm *mvm, char *bin, int len) in _iwl_dbgfs_inject_beacon_ie() argument
1214 if (!iwl_mvm_firmware_running(mvm)) in _iwl_dbgfs_inject_beacon_ie()
1217 if (!iwl_mvm_has_new_tx_api(mvm) && in _iwl_dbgfs_inject_beacon_ie()
1218 !fw_has_api(&mvm->fw->ucode_capa, in _iwl_dbgfs_inject_beacon_ie()
1222 mutex_lock(&mvm->mutex); in _iwl_dbgfs_inject_beacon_ie()
1225 vif = iwl_mvm_rcu_dereference_vif_id(mvm, i, false); in _iwl_dbgfs_inject_beacon_ie()
1236 mvm->hw->extra_beacon_tailroom = len; in _iwl_dbgfs_inject_beacon_ie()
1238 beacon = ieee80211_beacon_get_template(mvm->hw, vif, NULL, 0); in _iwl_dbgfs_inject_beacon_ie()
1247 mvm->beacon_inject_active = true; in _iwl_dbgfs_inject_beacon_ie()
1254 cpu_to_le16(iwl_mvm_mac_ctxt_get_beacon_flags(mvm->fw, rate)); in _iwl_dbgfs_inject_beacon_ie()
1258 iwl_mvm_mac_ctxt_set_tim(mvm, &beacon_cmd.tim_idx, in _iwl_dbgfs_inject_beacon_ie()
1262 iwl_mvm_mac_ctxt_send_beacon_cmd(mvm, beacon, &beacon_cmd, in _iwl_dbgfs_inject_beacon_ie()
1264 mutex_unlock(&mvm->mutex); in _iwl_dbgfs_inject_beacon_ie()
1271 mutex_unlock(&mvm->mutex); in _iwl_dbgfs_inject_beacon_ie()
1275 static ssize_t iwl_dbgfs_inject_beacon_ie_write(struct iwl_mvm *mvm, in iwl_dbgfs_inject_beacon_ie_write() argument
1279 int ret = _iwl_dbgfs_inject_beacon_ie(mvm, buf, count); in iwl_dbgfs_inject_beacon_ie_write()
1281 mvm->hw->extra_beacon_tailroom = 0; in iwl_dbgfs_inject_beacon_ie_write()
1285 static ssize_t iwl_dbgfs_inject_beacon_ie_restore_write(struct iwl_mvm *mvm, in iwl_dbgfs_inject_beacon_ie_restore_write() argument
1290 int ret = _iwl_dbgfs_inject_beacon_ie(mvm, NULL, 0); in iwl_dbgfs_inject_beacon_ie_restore_write()
1292 mvm->hw->extra_beacon_tailroom = 0; in iwl_dbgfs_inject_beacon_ie_restore_write()
1293 mvm->beacon_inject_active = false; in iwl_dbgfs_inject_beacon_ie_restore_write()
1301 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_fw_dbg_conf_read() local
1307 mutex_lock(&mvm->mutex); in iwl_dbgfs_fw_dbg_conf_read()
1308 conf = mvm->fwrt.dump.conf; in iwl_dbgfs_fw_dbg_conf_read()
1309 mutex_unlock(&mvm->mutex); in iwl_dbgfs_fw_dbg_conf_read()
1316 static ssize_t iwl_dbgfs_fw_dbg_conf_write(struct iwl_mvm *mvm, in iwl_dbgfs_fw_dbg_conf_write() argument
1323 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_fw_dbg_conf_write()
1333 mutex_lock(&mvm->mutex); in iwl_dbgfs_fw_dbg_conf_write()
1334 ret = iwl_fw_start_dbg_conf(&mvm->fwrt, conf_id); in iwl_dbgfs_fw_dbg_conf_write()
1335 mutex_unlock(&mvm->mutex); in iwl_dbgfs_fw_dbg_conf_write()
1340 static ssize_t iwl_dbgfs_fw_dbg_collect_write(struct iwl_mvm *mvm, in iwl_dbgfs_fw_dbg_collect_write() argument
1347 iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_USER_TRIGGER, in iwl_dbgfs_fw_dbg_collect_write()
1350 iwl_fw_dbg_collect(&mvm->fwrt, FW_DBG_TRIGGER_USER, buf, in iwl_dbgfs_fw_dbg_collect_write()
1356 static ssize_t iwl_dbgfs_dbg_time_point_write(struct iwl_mvm *mvm, in iwl_dbgfs_dbg_time_point_write() argument
1369 iwl_dbg_tlv_time_point(&mvm->fwrt, timepoint, NULL); in iwl_dbgfs_dbg_time_point_write()
1379 debugfs_create_file(alias, mode, parent, mvm, \
1402 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_prph_reg_read() local
1407 if (!mvm->dbgfs_prph_reg_addr) in iwl_dbgfs_prph_reg_read()
1411 mvm->dbgfs_prph_reg_addr, in iwl_dbgfs_prph_reg_read()
1412 iwl_read_prph(mvm->trans, mvm->dbgfs_prph_reg_addr)); in iwl_dbgfs_prph_reg_read()
1418 iwl_dbgfs_prph_reg_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_prph_reg_write() argument
1424 args = sscanf(buf, "%i %i", &mvm->dbgfs_prph_reg_addr, &value); in iwl_dbgfs_prph_reg_write()
1433 iwl_write_prph(mvm->trans, mvm->dbgfs_prph_reg_addr, value); in iwl_dbgfs_prph_reg_write()
1440 iwl_dbgfs_send_echo_cmd_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_send_echo_cmd_write() argument
1445 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_send_echo_cmd_write()
1448 mutex_lock(&mvm->mutex); in iwl_dbgfs_send_echo_cmd_write()
1449 ret = iwl_mvm_send_cmd_pdu(mvm, ECHO_CMD, 0, 0, NULL); in iwl_dbgfs_send_echo_cmd_write()
1450 mutex_unlock(&mvm->mutex); in iwl_dbgfs_send_echo_cmd_write()
1456 struct iwl_mvm *mvm; member
1466 apply->mvm->cur_aid = cpu_to_le16(apply->aid); in iwl_mvm_sniffer_apply()
1467 memcpy(apply->mvm->cur_bssid, apply->bssid, in iwl_mvm_sniffer_apply()
1468 sizeof(apply->mvm->cur_bssid)); in iwl_mvm_sniffer_apply()
1474 iwl_dbgfs_he_sniffer_params_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_he_sniffer_params_write() argument
1480 .mvm = mvm, in iwl_dbgfs_he_sniffer_params_write()
1488 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_he_sniffer_params_write()
1503 mutex_lock(&mvm->mutex); in iwl_dbgfs_he_sniffer_params_write()
1514 iwl_init_notification_wait(&mvm->notif_wait, &wait, in iwl_dbgfs_he_sniffer_params_write()
1518 ret = iwl_mvm_send_cmd_pdu(mvm, in iwl_dbgfs_he_sniffer_params_write()
1524 iwl_remove_notification(&mvm->notif_wait, &wait); in iwl_dbgfs_he_sniffer_params_write()
1526 mutex_unlock(&mvm->mutex); in iwl_dbgfs_he_sniffer_params_write()
1535 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_he_sniffer_params_read() local
1541 le16_to_cpu(mvm->cur_aid), mvm->cur_bssid[0], in iwl_dbgfs_he_sniffer_params_read()
1542 mvm->cur_bssid[1], mvm->cur_bssid[2], mvm->cur_bssid[3], in iwl_dbgfs_he_sniffer_params_read()
1543 mvm->cur_bssid[4], mvm->cur_bssid[5]); in iwl_dbgfs_he_sniffer_params_read()
1552 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_uapsd_noagg_bssids_read() local
1558 mutex_lock(&mvm->mutex); in iwl_dbgfs_uapsd_noagg_bssids_read()
1562 mvm->uapsd_noagg_bssids[i].addr); in iwl_dbgfs_uapsd_noagg_bssids_read()
1564 mutex_unlock(&mvm->mutex); in iwl_dbgfs_uapsd_noagg_bssids_read()
1570 iwl_dbgfs_ltr_config_write(struct iwl_mvm *mvm, in iwl_dbgfs_ltr_config_write() argument
1576 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_ltr_config_write()
1590 mutex_lock(&mvm->mutex); in iwl_dbgfs_ltr_config_write()
1591 ret = iwl_mvm_send_cmd_pdu(mvm, LTR_CONFIG, 0, sizeof(ltr_config), in iwl_dbgfs_ltr_config_write()
1593 mutex_unlock(&mvm->mutex); in iwl_dbgfs_ltr_config_write()
1596 IWL_ERR(mvm, "failed to send ltr configuration cmd\n"); in iwl_dbgfs_ltr_config_write()
1601 static ssize_t iwl_dbgfs_rfi_freq_table_write(struct iwl_mvm *mvm, char *buf, in iwl_dbgfs_rfi_freq_table_write() argument
1612 mutex_lock(&mvm->mutex); in iwl_dbgfs_rfi_freq_table_write()
1613 ret = iwl_rfi_send_config_cmd(mvm, NULL); in iwl_dbgfs_rfi_freq_table_write()
1614 mutex_unlock(&mvm->mutex); in iwl_dbgfs_rfi_freq_table_write()
1634 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_rfi_freq_table_read() local
1640 resp = iwl_rfi_get_freq_table(mvm); in iwl_dbgfs_rfi_freq_table_read()
1718 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_mem_read() local
1729 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_mem_read()
1741 mutex_lock(&mvm->mutex); in iwl_dbgfs_mem_read()
1742 ret = iwl_mvm_send_cmd(mvm, &hcmd); in iwl_dbgfs_mem_read()
1743 mutex_unlock(&mvm->mutex); in iwl_dbgfs_mem_read()
1774 struct iwl_mvm *mvm = file->private_data; in iwl_dbgfs_mem_write() local
1783 if (!iwl_mvm_firmware_running(mvm)) in iwl_dbgfs_mem_write()
1815 mutex_lock(&mvm->mutex); in iwl_dbgfs_mem_write()
1816 ret = iwl_mvm_send_cmd(mvm, &hcmd); in iwl_dbgfs_mem_write()
1817 mutex_unlock(&mvm->mutex); in iwl_dbgfs_mem_write()
1850 struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); in iwl_mvm_sta_add_debugfs() local
1852 if (iwl_mvm_has_tlc_offload(mvm)) { in iwl_mvm_sta_add_debugfs()
1858 void iwl_mvm_dbgfs_register(struct iwl_mvm *mvm) in iwl_mvm_dbgfs_register() argument
1862 spin_lock_init(&mvm->drv_stats_lock); in iwl_mvm_dbgfs_register()
1864 MVM_DEBUGFS_ADD_FILE(tx_flush, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1865 MVM_DEBUGFS_ADD_FILE(sta_drain, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1866 MVM_DEBUGFS_ADD_FILE(sram, mvm->debugfs_dir, 0600); in iwl_mvm_dbgfs_register()
1867 MVM_DEBUGFS_ADD_FILE(set_nic_temperature, mvm->debugfs_dir, 0600); in iwl_mvm_dbgfs_register()
1868 MVM_DEBUGFS_ADD_FILE(nic_temp, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1869 MVM_DEBUGFS_ADD_FILE(ctdp_budget, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1870 MVM_DEBUGFS_ADD_FILE(stop_ctdp, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1871 MVM_DEBUGFS_ADD_FILE(force_ctkill, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1872 MVM_DEBUGFS_ADD_FILE(stations, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1873 MVM_DEBUGFS_ADD_FILE(bt_notif, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1874 MVM_DEBUGFS_ADD_FILE(bt_cmd, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1875 MVM_DEBUGFS_ADD_FILE(disable_power_off, mvm->debugfs_dir, 0600); in iwl_mvm_dbgfs_register()
1876 MVM_DEBUGFS_ADD_FILE(fw_ver, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1877 MVM_DEBUGFS_ADD_FILE(fw_rx_stats, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1878 MVM_DEBUGFS_ADD_FILE(drv_rx_stats, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1879 MVM_DEBUGFS_ADD_FILE(fw_restart, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1880 MVM_DEBUGFS_ADD_FILE(fw_nmi, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1881 MVM_DEBUGFS_ADD_FILE(bt_tx_prio, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1882 MVM_DEBUGFS_ADD_FILE(bt_force_ant, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1883 MVM_DEBUGFS_ADD_FILE(scan_ant_rxchain, mvm->debugfs_dir, 0600); in iwl_mvm_dbgfs_register()
1884 MVM_DEBUGFS_ADD_FILE(prph_reg, mvm->debugfs_dir, 0600); in iwl_mvm_dbgfs_register()
1885 MVM_DEBUGFS_ADD_FILE(fw_dbg_conf, mvm->debugfs_dir, 0600); in iwl_mvm_dbgfs_register()
1886 MVM_DEBUGFS_ADD_FILE(fw_dbg_collect, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1887 MVM_DEBUGFS_ADD_FILE(dbg_time_point, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1888 MVM_DEBUGFS_ADD_FILE(send_echo_cmd, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1889 MVM_DEBUGFS_ADD_FILE(indirection_tbl, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1890 MVM_DEBUGFS_ADD_FILE(inject_packet, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1891 MVM_DEBUGFS_ADD_FILE(inject_beacon_ie, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1892 MVM_DEBUGFS_ADD_FILE(inject_beacon_ie_restore, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1893 MVM_DEBUGFS_ADD_FILE(rfi_freq_table, mvm->debugfs_dir, 0600); in iwl_mvm_dbgfs_register()
1895 if (mvm->fw->phy_integration_ver) in iwl_mvm_dbgfs_register()
1896 MVM_DEBUGFS_ADD_FILE(phy_integration_ver, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1898 MVM_DEBUGFS_ADD_FILE(sar_geo_profile, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1900 MVM_DEBUGFS_ADD_FILE(he_sniffer_params, mvm->debugfs_dir, 0600); in iwl_mvm_dbgfs_register()
1902 if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_SET_LTR_GEN2)) in iwl_mvm_dbgfs_register()
1903 MVM_DEBUGFS_ADD_FILE(ltr_config, mvm->debugfs_dir, 0200); in iwl_mvm_dbgfs_register()
1906 mvm->debugfs_dir, &mvm->scan_iter_notif_enabled); in iwl_mvm_dbgfs_register()
1907 debugfs_create_bool("drop_bcn_ap_mode", 0600, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1908 &mvm->drop_bcn_ap_mode); in iwl_mvm_dbgfs_register()
1910 MVM_DEBUGFS_ADD_FILE(uapsd_noagg_bssids, mvm->debugfs_dir, S_IRUSR); in iwl_mvm_dbgfs_register()
1913 MVM_DEBUGFS_ADD_FILE(d3_test, mvm->debugfs_dir, 0400); in iwl_mvm_dbgfs_register()
1914 debugfs_create_bool("d3_wake_sysassert", 0600, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1915 &mvm->d3_wake_sysassert); in iwl_mvm_dbgfs_register()
1916 debugfs_create_u32("last_netdetect_scans", 0400, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1917 &mvm->last_netdetect_scans); in iwl_mvm_dbgfs_register()
1920 debugfs_create_u8("ps_disabled", 0400, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1921 &mvm->ps_disabled); in iwl_mvm_dbgfs_register()
1922 debugfs_create_blob("nvm_hw", 0400, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1923 &mvm->nvm_hw_blob); in iwl_mvm_dbgfs_register()
1924 debugfs_create_blob("nvm_sw", 0400, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1925 &mvm->nvm_sw_blob); in iwl_mvm_dbgfs_register()
1926 debugfs_create_blob("nvm_calib", 0400, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1927 &mvm->nvm_calib_blob); in iwl_mvm_dbgfs_register()
1928 debugfs_create_blob("nvm_prod", 0400, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1929 &mvm->nvm_prod_blob); in iwl_mvm_dbgfs_register()
1930 debugfs_create_blob("nvm_phy_sku", 0400, mvm->debugfs_dir, in iwl_mvm_dbgfs_register()
1931 &mvm->nvm_phy_sku_blob); in iwl_mvm_dbgfs_register()
1933 mvm->debugfs_dir, &mvm->nvm_reg_blob); in iwl_mvm_dbgfs_register()
1935 debugfs_create_file("mem", 0600, mvm->debugfs_dir, mvm, in iwl_mvm_dbgfs_register()
1942 if (!IS_ERR(mvm->debugfs_dir)) { in iwl_mvm_dbgfs_register()
1945 snprintf(buf, 100, "../../%pd2", mvm->debugfs_dir->d_parent); in iwl_mvm_dbgfs_register()
1946 debugfs_create_symlink("iwlwifi", mvm->hw->wiphy->debugfsdir, in iwl_mvm_dbgfs_register()