Lines Matching defs:ar

109 int ath10k_info(struct ath10k *ar, const char *fmt, ...)
119 ret = dev_info(ar->dev, "%pV", &vaf);
120 trace_ath10k_log_info(ar, &vaf);
127 void ath10k_print_driver_info(struct ath10k *ar)
129 ath10k_info(ar, "%s (0x%08x, 0x%08x) fw %s api %d htt %d.%d\n",
130 ar->hw_params.name,
131 ar->target_version,
132 ar->chip_id,
133 ar->hw->wiphy->fw_version,
134 ar->fw_api,
135 ar->htt.target_version_major,
136 ar->htt.target_version_minor);
137 ath10k_info(ar, "debug %d debugfs %d tracing %d dfs %d testmode %d\n",
146 int ath10k_err(struct ath10k *ar, const char *fmt, ...)
156 ret = dev_err(ar->dev, "%pV", &vaf);
157 trace_ath10k_log_err(ar, &vaf);
164 int ath10k_warn(struct ath10k *ar, const char *fmt, ...)
173 dev_warn_ratelimited(ar->dev, "%pV", &vaf);
174 trace_ath10k_log_warn(ar, &vaf);
184 void ath10k_debug_read_service_map(struct ath10k *ar,
188 memcpy(ar->debug.wmi_service_bitmap, service_map, map_size);
195 struct ath10k *ar = file->private_data;
207 mutex_lock(&ar->conf_mutex);
213 enabled = test_bit(i, ar->debug.wmi_service_bitmap);
232 mutex_unlock(&ar->conf_mutex);
245 void ath10k_debug_read_target_stats(struct ath10k *ar,
254 spin_lock_bh(&ar->data_lock);
256 stats = &ar->debug.target_stats;
319 ar->fw_features)) {
359 ar->fw_features)) {
370 spin_unlock_bh(&ar->data_lock);
371 complete(&ar->debug.event_stats_compl);
377 struct ath10k *ar = file->private_data;
386 fw_stats = &ar->debug.target_stats;
388 mutex_lock(&ar->conf_mutex);
390 if (ar->state != ATH10K_STATE_ON)
397 ret = ath10k_wmi_request_stats(ar, WMI_REQUEST_PEER_STAT);
399 ath10k_warn(ar, "could not request stats (%d)\n", ret);
403 left = wait_for_completion_timeout(&ar->debug.event_stats_compl, 1*HZ);
407 spin_lock_bh(&ar->data_lock);
548 spin_unlock_bh(&ar->data_lock);
556 mutex_unlock(&ar->conf_mutex);
569 static int ath10k_debug_fw_assert(struct ath10k *ar)
574 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd) + 16);
584 return ath10k_wmi_cmd_send(ar, skb,
585 ar->wmi.cmd->vdev_install_key_cmdid);
612 struct ath10k *ar = file->private_data;
616 mutex_lock(&ar->conf_mutex);
623 if (ar->state != ATH10K_STATE_ON &&
624 ar->state != ATH10K_STATE_RESTARTED) {
636 ath10k_info(ar, "simulating soft firmware crash\n");
637 ret = ath10k_wmi_force_fw_hang(ar, WMI_FORCE_FW_HANG_ASSERT, 0);
639 ath10k_info(ar, "simulating hard firmware crash\n");
643 ret = ath10k_wmi_vdev_set_param(ar, 0x7fff,
644 ar->wmi.vdev_param->rts_threshold,
647 ath10k_info(ar, "simulating firmware assert crash\n");
648 ret = ath10k_debug_fw_assert(ar);
655 ath10k_warn(ar, "failed to simulate firmware crash: %d\n", ret);
662 mutex_unlock(&ar->conf_mutex);
677 struct ath10k *ar = file->private_data;
681 len = scnprintf(buf, sizeof(buf), "0x%08x\n", ar->chip_id);
694 ath10k_debug_get_new_fw_crash_data(struct ath10k *ar)
696 struct ath10k_fw_crash_data *crash_data = ar->debug.fw_crash_data;
698 lockdep_assert_held(&ar->data_lock);
708 static struct ath10k_dump_file_data *ath10k_build_dump_file(struct ath10k *ar)
710 struct ath10k_fw_crash_data *crash_data = ar->debug.fw_crash_data;
729 spin_lock_bh(&ar->data_lock);
732 spin_unlock_bh(&ar->data_lock);
745 dump_data->chip_id = cpu_to_le32(ar->chip_id);
747 dump_data->target_version = cpu_to_le32(ar->target_version);
748 dump_data->fw_version_major = cpu_to_le32(ar->fw_version_major);
749 dump_data->fw_version_minor = cpu_to_le32(ar->fw_version_minor);
750 dump_data->fw_version_release = cpu_to_le32(ar->fw_version_release);
751 dump_data->fw_version_build = cpu_to_le32(ar->fw_version_build);
752 dump_data->phy_capability = cpu_to_le32(ar->phy_capability);
753 dump_data->hw_min_tx_power = cpu_to_le32(ar->hw_min_tx_power);
754 dump_data->hw_max_tx_power = cpu_to_le32(ar->hw_max_tx_power);
755 dump_data->ht_cap_info = cpu_to_le32(ar->ht_cap_info);
756 dump_data->vht_cap_info = cpu_to_le32(ar->vht_cap_info);
757 dump_data->num_rf_chains = cpu_to_le32(ar->num_rf_chains);
759 strlcpy(dump_data->fw_ver, ar->hw->wiphy->fw_version,
777 ar->debug.fw_crash_data->crashed_since_read = false;
779 spin_unlock_bh(&ar->data_lock);
786 struct ath10k *ar = inode->i_private;
789 dump = ath10k_build_dump_file(ar);
825 static int ath10k_debug_htt_stats_req(struct ath10k *ar)
830 lockdep_assert_held(&ar->conf_mutex);
832 if (ar->debug.htt_stats_mask == 0)
836 if (ar->state != ATH10K_STATE_ON)
841 ret = ath10k_htt_h2t_stats_req(&ar->htt, ar->debug.htt_stats_mask,
844 ath10k_warn(ar, "failed to send htt stats request: %d\n", ret);
848 queue_delayed_work(ar->workqueue, &ar->debug.htt_stats_dwork,
856 struct ath10k *ar = container_of(work, struct ath10k,
859 mutex_lock(&ar->conf_mutex);
861 ath10k_debug_htt_stats_req(ar);
863 mutex_unlock(&ar->conf_mutex);
870 struct ath10k *ar = file->private_data;
874 len = scnprintf(buf, sizeof(buf), "%lu\n", ar->debug.htt_stats_mask);
883 struct ath10k *ar = file->private_data;
895 mutex_lock(&ar->conf_mutex);
897 ar->debug.htt_stats_mask = mask;
899 ret = ath10k_debug_htt_stats_req(ar);
906 mutex_unlock(&ar->conf_mutex);
923 struct ath10k *ar = file->private_data;
928 mutex_lock(&ar->conf_mutex);
930 if (ar->debug.htt_max_amsdu)
931 amsdu = ar->debug.htt_max_amsdu;
933 if (ar->debug.htt_max_ampdu)
934 ampdu = ar->debug.htt_max_ampdu;
936 mutex_unlock(&ar->conf_mutex);
947 struct ath10k *ar = file->private_data;
962 mutex_lock(&ar->conf_mutex);
964 res = ath10k_htt_h2t_aggr_cfg_msg(&ar->htt, ampdu, amsdu);
969 ar->debug.htt_max_amsdu = amsdu;
970 ar->debug.htt_max_ampdu = ampdu;
973 mutex_unlock(&ar->conf_mutex);
989 struct ath10k *ar = file->private_data;
994 ar->debug.fw_dbglog_mask);
1003 struct ath10k *ar = file->private_data;
1011 mutex_lock(&ar->conf_mutex);
1013 ar->debug.fw_dbglog_mask = mask;
1015 if (ar->state == ATH10K_STATE_ON) {
1016 ret = ath10k_wmi_dbglog_cfg(ar, ar->debug.fw_dbglog_mask);
1018 ath10k_warn(ar, "dbglog cfg failed from debugfs: %d\n",
1027 mutex_unlock(&ar->conf_mutex);
1040 int ath10k_debug_start(struct ath10k *ar)
1044 lockdep_assert_held(&ar->conf_mutex);
1046 ret = ath10k_debug_htt_stats_req(ar);
1049 ath10k_warn(ar, "failed to start htt stats workqueue: %d\n",
1052 if (ar->debug.fw_dbglog_mask) {
1053 ret = ath10k_wmi_dbglog_cfg(ar, ar->debug.fw_dbglog_mask);
1056 ath10k_warn(ar, "failed to enable dbglog during start: %d",
1063 void ath10k_debug_stop(struct ath10k *ar)
1065 lockdep_assert_held(&ar->conf_mutex);
1070 if (ar->debug.htt_stats_mask != 0)
1071 cancel_delayed_work(&ar->debug.htt_stats_dwork);
1073 ar->debug.htt_max_amsdu = 0;
1074 ar->debug.htt_max_ampdu = 0;
1081 struct ath10k *ar = file->private_data;
1083 ieee80211_radar_detected(ar->hw);
1097 ar->debug.dfs_stats.p))
1101 ar->debug.dfs_pool_stats.p))
1108 struct ath10k *ar = file->private_data;
1115 if (!ar->dfs_detector) {
1120 ar->debug.dfs_pool_stats =
1121 ar->dfs_detector->get_stats(ar->dfs_detector);
1157 int ath10k_debug_create(struct ath10k *ar)
1159 ar->debug.fw_crash_data = vzalloc(sizeof(*ar->debug.fw_crash_data));
1160 if (!ar->debug.fw_crash_data)
1166 void ath10k_debug_destroy(struct ath10k *ar)
1168 vfree(ar->debug.fw_crash_data);
1169 ar->debug.fw_crash_data = NULL;
1172 int ath10k_debug_register(struct ath10k *ar)
1174 ar->debug.debugfs_phy = debugfs_create_dir("ath10k",
1175 ar->hw->wiphy->debugfsdir);
1176 if (IS_ERR_OR_NULL(ar->debug.debugfs_phy)) {
1177 if (IS_ERR(ar->debug.debugfs_phy))
1178 return PTR_ERR(ar->debug.debugfs_phy);
1183 INIT_DELAYED_WORK(&ar->debug.htt_stats_dwork,
1186 init_completion(&ar->debug.event_stats_compl);
1188 debugfs_create_file("fw_stats", S_IRUSR, ar->debug.debugfs_phy, ar,
1191 debugfs_create_file("wmi_services", S_IRUSR, ar->debug.debugfs_phy, ar,
1194 debugfs_create_file("simulate_fw_crash", S_IRUSR, ar->debug.debugfs_phy,
1195 ar, &fops_simulate_fw_crash);
1197 debugfs_create_file("fw_crash_dump", S_IRUSR, ar->debug.debugfs_phy,
1198 ar, &fops_fw_crash_dump);
1200 debugfs_create_file("chip_id", S_IRUSR, ar->debug.debugfs_phy,
1201 ar, &fops_chip_id);
1203 debugfs_create_file("htt_stats_mask", S_IRUSR, ar->debug.debugfs_phy,
1204 ar, &fops_htt_stats_mask);
1207 ar->debug.debugfs_phy, ar,
1210 debugfs_create_file("fw_dbglog", S_IRUSR, ar->debug.debugfs_phy,
1211 ar, &fops_fw_dbglog);
1215 ar->debug.debugfs_phy, ar,
1219 ar->debug.debugfs_phy,
1220 &ar->dfs_block_radar_events);
1223 ar->debug.debugfs_phy, ar,
1230 void ath10k_debug_unregister(struct ath10k *ar)
1232 cancel_delayed_work_sync(&ar->debug.htt_stats_dwork);
1238 void ath10k_dbg(struct ath10k *ar, enum ath10k_debug_mask mask,
1250 dev_printk(KERN_DEBUG, ar->dev, "%pV", &vaf);
1252 trace_ath10k_log_dbg(ar, mask, &vaf);
1258 void ath10k_dbg_dump(struct ath10k *ar,
1265 ath10k_dbg(ar, mask, "%s\n", msg);
1271 trace_ath10k_log_dbg_dump(ar, msg ? msg : "", prefix ? prefix : "",