Lines Matching +full:open +full:- +full:firmware
1 // SPDX-License-Identifier: BSD-3-Clause-Clear
3 * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
58 list_del(&i->list); in ath11k_fw_stats_pdevs_free()
68 list_del(&i->list); in ath11k_fw_stats_vdevs_free()
78 list_del(&i->list); in ath11k_fw_stats_bcn_free()
85 spin_lock_bh(&ar->data_lock); in ath11k_debugfs_fw_stats_reset()
86 ar->debug.fw_stats_done = false; in ath11k_debugfs_fw_stats_reset()
87 ath11k_fw_stats_pdevs_free(&ar->debug.fw_stats.pdevs); in ath11k_debugfs_fw_stats_reset()
88 ath11k_fw_stats_vdevs_free(&ar->debug.fw_stats.vdevs); in ath11k_debugfs_fw_stats_reset()
89 spin_unlock_bh(&ar->data_lock); in ath11k_debugfs_fw_stats_reset()
121 spin_lock_bh(&ar->data_lock); in ath11k_debugfs_fw_stats_process()
124 list_splice_tail_init(&stats.pdevs, &ar->debug.fw_stats.pdevs); in ath11k_debugfs_fw_stats_process()
125 ar->debug.fw_stats_done = true; in ath11k_debugfs_fw_stats_process()
137 for (i = 0; i < ab->num_radios; i++) { in ath11k_debugfs_fw_stats_process()
138 pdev = rcu_dereference(ab->pdevs_active[i]); in ath11k_debugfs_fw_stats_process()
139 if (pdev && pdev->ar) in ath11k_debugfs_fw_stats_process()
140 total_vdevs_started += ar->num_started_vdevs; in ath11k_debugfs_fw_stats_process()
146 &ar->debug.fw_stats.vdevs); in ath11k_debugfs_fw_stats_process()
149 ar->debug.fw_stats_done = true; in ath11k_debugfs_fw_stats_process()
163 is_end = ((++num_bcn) == ar->num_started_vdevs); in ath11k_debugfs_fw_stats_process()
166 &ar->debug.fw_stats.bcn); in ath11k_debugfs_fw_stats_process()
169 ar->debug.fw_stats_done = true; in ath11k_debugfs_fw_stats_process()
174 complete(&ar->debug.fw_stats_complete); in ath11k_debugfs_fw_stats_process()
176 spin_unlock_bh(&ar->data_lock); in ath11k_debugfs_fw_stats_process()
187 struct ath11k_base *ab = ar->ab; in ath11k_debugfs_fw_stats_request()
191 lockdep_assert_held(&ar->conf_mutex); in ath11k_debugfs_fw_stats_request()
194 * In that case, since there is no end marking for the back-to-back in ath11k_debugfs_fw_stats_request()
202 reinit_completion(&ar->debug.fw_stats_complete); in ath11k_debugfs_fw_stats_request()
213 wait_for_completion_timeout(&ar->debug.fw_stats_complete, in ath11k_debugfs_fw_stats_request()
216 return -ETIMEDOUT; in ath11k_debugfs_fw_stats_request()
222 spin_lock_bh(&ar->data_lock); in ath11k_debugfs_fw_stats_request()
223 if (ar->debug.fw_stats_done) { in ath11k_debugfs_fw_stats_request()
224 spin_unlock_bh(&ar->data_lock); in ath11k_debugfs_fw_stats_request()
227 spin_unlock_bh(&ar->data_lock); in ath11k_debugfs_fw_stats_request()
234 struct ath11k *ar = inode->i_private; in ath11k_open_pdev_stats()
235 struct ath11k_base *ab = ar->ab; in ath11k_open_pdev_stats()
240 mutex_lock(&ar->conf_mutex); in ath11k_open_pdev_stats()
242 if (ar->state != ATH11K_STATE_ON) { in ath11k_open_pdev_stats()
243 ret = -ENETDOWN; in ath11k_open_pdev_stats()
249 ret = -ENOMEM; in ath11k_open_pdev_stats()
253 req_param.pdev_id = ar->pdev->pdev_id; in ath11k_open_pdev_stats()
263 ath11k_wmi_fw_stats_fill(ar, &ar->debug.fw_stats, req_param.stats_id, in ath11k_open_pdev_stats()
266 file->private_data = buf; in ath11k_open_pdev_stats()
268 mutex_unlock(&ar->conf_mutex); in ath11k_open_pdev_stats()
275 mutex_unlock(&ar->conf_mutex); in ath11k_open_pdev_stats()
281 vfree(file->private_data); in ath11k_release_pdev_stats()
290 const char *buf = file->private_data; in ath11k_read_pdev_stats()
297 .open = ath11k_open_pdev_stats,
306 struct ath11k *ar = inode->i_private; in ath11k_open_vdev_stats()
311 mutex_lock(&ar->conf_mutex); in ath11k_open_vdev_stats()
313 if (ar->state != ATH11K_STATE_ON) { in ath11k_open_vdev_stats()
314 ret = -ENETDOWN; in ath11k_open_vdev_stats()
320 ret = -ENOMEM; in ath11k_open_vdev_stats()
324 req_param.pdev_id = ar->pdev->pdev_id; in ath11k_open_vdev_stats()
331 ath11k_warn(ar->ab, "failed to request fw vdev stats: %d\n", ret); in ath11k_open_vdev_stats()
335 ath11k_wmi_fw_stats_fill(ar, &ar->debug.fw_stats, req_param.stats_id, in ath11k_open_vdev_stats()
338 file->private_data = buf; in ath11k_open_vdev_stats()
340 mutex_unlock(&ar->conf_mutex); in ath11k_open_vdev_stats()
347 mutex_unlock(&ar->conf_mutex); in ath11k_open_vdev_stats()
353 vfree(file->private_data); in ath11k_release_vdev_stats()
362 const char *buf = file->private_data; in ath11k_read_vdev_stats()
369 .open = ath11k_open_vdev_stats,
378 struct ath11k *ar = inode->i_private; in ath11k_open_bcn_stats()
384 mutex_lock(&ar->conf_mutex); in ath11k_open_bcn_stats()
386 if (ar->state != ATH11K_STATE_ON) { in ath11k_open_bcn_stats()
387 ret = -ENETDOWN; in ath11k_open_bcn_stats()
393 ret = -ENOMEM; in ath11k_open_bcn_stats()
398 req_param.pdev_id = ar->pdev->pdev_id; in ath11k_open_bcn_stats()
401 list_for_each_entry(arvif, &ar->arvifs, list) { in ath11k_open_bcn_stats()
402 if (!arvif->is_up) in ath11k_open_bcn_stats()
405 req_param.vdev_id = arvif->vdev_id; in ath11k_open_bcn_stats()
408 ath11k_warn(ar->ab, "failed to request fw bcn stats: %d\n", ret); in ath11k_open_bcn_stats()
413 ath11k_wmi_fw_stats_fill(ar, &ar->debug.fw_stats, req_param.stats_id, in ath11k_open_bcn_stats()
419 spin_lock_bh(&ar->data_lock); in ath11k_open_bcn_stats()
420 ath11k_fw_stats_bcn_free(&ar->debug.fw_stats.bcn); in ath11k_open_bcn_stats()
421 spin_unlock_bh(&ar->data_lock); in ath11k_open_bcn_stats()
423 file->private_data = buf; in ath11k_open_bcn_stats()
425 mutex_unlock(&ar->conf_mutex); in ath11k_open_bcn_stats()
432 mutex_unlock(&ar->conf_mutex); in ath11k_open_bcn_stats()
438 vfree(file->private_data); in ath11k_release_bcn_stats()
447 const char *buf = file->private_data; in ath11k_read_bcn_stats()
454 .open = ath11k_open_bcn_stats,
466 "To simulate firmware crash write one of the keywords to this file:\n" in ath11k_read_simulate_fw_crash()
467 "`assert` - this will send WMI_FORCE_FW_HANG_CMDID to firmware to cause assert.\n" in ath11k_read_simulate_fw_crash()
468 "`hw-restart` - this will simply queue hw restart without fw/hw actually crashing.\n"; in ath11k_read_simulate_fw_crash()
473 /* Simulate firmware crash:
474 * 'soft': Call wmi command causing firmware hang. This firmware hang is
475 * recoverable by warm firmware reset.
476 * 'hard': Force firmware crash by setting any vdev parameter for not allowed
477 * vdev id. This is hard firmware crash because it is recoverable only by cold
478 * firmware reset.
484 struct ath11k_base *ab = file->private_data; in ath11k_write_simulate_fw_crash()
486 struct ath11k *ar = ab->pdevs[0].ar; in ath11k_write_simulate_fw_crash()
491 for (i = 0; i < ab->num_radios; i++) { in ath11k_write_simulate_fw_crash()
492 pdev = &ab->pdevs[i]; in ath11k_write_simulate_fw_crash()
493 ar = pdev->ar; in ath11k_write_simulate_fw_crash()
494 if (ar && ar->state == ATH11K_STATE_ON) { in ath11k_write_simulate_fw_crash()
501 return -EINVAL; in ath11k_write_simulate_fw_crash()
503 rc = simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, user_buf, count); in ath11k_write_simulate_fw_crash()
508 if (buf[*ppos - 1] == '\n') in ath11k_write_simulate_fw_crash()
509 buf[*ppos - 1] = '\0'; in ath11k_write_simulate_fw_crash()
512 ret = -ENETDOWN; in ath11k_write_simulate_fw_crash()
517 ath11k_info(ab, "simulating firmware assert crash\n"); in ath11k_write_simulate_fw_crash()
522 ret = -EINVAL; in ath11k_write_simulate_fw_crash()
527 ath11k_warn(ab, "failed to simulate firmware crash: %d\n", ret); in ath11k_write_simulate_fw_crash()
540 .open = simple_open,
549 struct ath11k *ar = file->private_data; in ath11k_write_enable_extd_tx_stats()
554 return -EINVAL; in ath11k_write_enable_extd_tx_stats()
556 mutex_lock(&ar->conf_mutex); in ath11k_write_enable_extd_tx_stats()
558 if (ar->state != ATH11K_STATE_ON) { in ath11k_write_enable_extd_tx_stats()
559 ret = -ENETDOWN; in ath11k_write_enable_extd_tx_stats()
563 if (filter == ar->debug.extd_tx_stats) { in ath11k_write_enable_extd_tx_stats()
568 ar->debug.extd_tx_stats = filter; in ath11k_write_enable_extd_tx_stats()
572 mutex_unlock(&ar->conf_mutex); in ath11k_write_enable_extd_tx_stats()
582 struct ath11k *ar = file->private_data; in ath11k_read_enable_extd_tx_stats()
585 mutex_lock(&ar->conf_mutex); in ath11k_read_enable_extd_tx_stats()
586 len = scnprintf(buf, sizeof(buf) - len, "%08x\n", in ath11k_read_enable_extd_tx_stats()
587 ar->debug.extd_tx_stats); in ath11k_read_enable_extd_tx_stats()
588 mutex_unlock(&ar->conf_mutex); in ath11k_read_enable_extd_tx_stats()
596 .open = simple_open
603 struct ath11k *ar = file->private_data; in ath11k_write_extd_rx_stats()
604 struct ath11k_base *ab = ar->ab; in ath11k_write_extd_rx_stats()
611 return -EINVAL; in ath11k_write_extd_rx_stats()
613 mutex_lock(&ar->conf_mutex); in ath11k_write_extd_rx_stats()
615 if (ar->state != ATH11K_STATE_ON) { in ath11k_write_extd_rx_stats()
616 ret = -ENETDOWN; in ath11k_write_extd_rx_stats()
621 ret = -EINVAL; in ath11k_write_extd_rx_stats()
625 if (enable == ar->debug.extd_rx_stats) { in ath11k_write_extd_rx_stats()
648 ar->debug.rx_filter = tlv_filter.rx_filter; in ath11k_write_extd_rx_stats()
650 for (i = 0; i < ab->hw_params.num_rxmda_per_pdev; i++) { in ath11k_write_extd_rx_stats()
651 ring_id = ar->dp.rx_mon_status_refill_ring[i].refill_buf_ring.ring_id; in ath11k_write_extd_rx_stats()
652 ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id, ar->dp.mac_id, in ath11k_write_extd_rx_stats()
657 ath11k_warn(ar->ab, "failed to set rx filter for monitor status ring\n"); in ath11k_write_extd_rx_stats()
662 ar->debug.extd_rx_stats = enable; in ath11k_write_extd_rx_stats()
665 mutex_unlock(&ar->conf_mutex); in ath11k_write_extd_rx_stats()
673 struct ath11k *ar = file->private_data; in ath11k_read_extd_rx_stats()
677 mutex_lock(&ar->conf_mutex); in ath11k_read_extd_rx_stats()
678 len = scnprintf(buf, sizeof(buf) - len, "%d\n", in ath11k_read_extd_rx_stats()
679 ar->debug.extd_rx_stats); in ath11k_read_extd_rx_stats()
680 mutex_unlock(&ar->conf_mutex); in ath11k_read_extd_rx_stats()
688 .open = simple_open,
695 lockdep_assert_held(&ab->base_lock); in ath11k_fill_bp_stats()
697 len += scnprintf(buf + len, size - len, "count: %u\n", in ath11k_fill_bp_stats()
698 bp_stats->count); in ath11k_fill_bp_stats()
699 len += scnprintf(buf + len, size - len, "hp: %u\n", in ath11k_fill_bp_stats()
700 bp_stats->hp); in ath11k_fill_bp_stats()
701 len += scnprintf(buf + len, size - len, "tp: %u\n", in ath11k_fill_bp_stats()
702 bp_stats->tp); in ath11k_fill_bp_stats()
703 len += scnprintf(buf + len, size - len, "seen before: %ums\n\n", in ath11k_fill_bp_stats()
704 jiffies_to_msecs(jiffies - bp_stats->jiffies)); in ath11k_fill_bp_stats()
716 len += scnprintf(buf + len, size - len, "\nBackpressure Stats\n"); in ath11k_debugfs_dump_soc_ring_bp_stats()
717 len += scnprintf(buf + len, size - len, "==================\n"); in ath11k_debugfs_dump_soc_ring_bp_stats()
719 spin_lock_bh(&ab->base_lock); in ath11k_debugfs_dump_soc_ring_bp_stats()
721 bp_stats = &ab->soc_stats.bp_stats.umac_ring_bp_stats[i]; in ath11k_debugfs_dump_soc_ring_bp_stats()
723 if (!bp_stats->count) in ath11k_debugfs_dump_soc_ring_bp_stats()
726 len += scnprintf(buf + len, size - len, "Ring: %s\n", in ath11k_debugfs_dump_soc_ring_bp_stats()
735 &ab->soc_stats.bp_stats.lmac_ring_bp_stats[i][pdev_idx]; in ath11k_debugfs_dump_soc_ring_bp_stats()
737 if (!bp_stats->count) in ath11k_debugfs_dump_soc_ring_bp_stats()
740 len += scnprintf(buf + len, size - len, "Ring: %s\n", in ath11k_debugfs_dump_soc_ring_bp_stats()
742 len += scnprintf(buf + len, size - len, "pdev: %d\n", in ath11k_debugfs_dump_soc_ring_bp_stats()
748 spin_unlock_bh(&ab->base_lock); in ath11k_debugfs_dump_soc_ring_bp_stats()
751 len += scnprintf(buf + len, size - len, in ath11k_debugfs_dump_soc_ring_bp_stats()
761 struct ath11k_base *ab = file->private_data; in ath11k_debugfs_dump_soc_dp_stats()
762 struct ath11k_soc_dp_stats *soc_stats = &ab->soc_stats; in ath11k_debugfs_dump_soc_dp_stats()
781 return -ENOMEM; in ath11k_debugfs_dump_soc_dp_stats()
783 len += scnprintf(buf + len, size - len, "SOC RX STATS:\n\n"); in ath11k_debugfs_dump_soc_dp_stats()
784 len += scnprintf(buf + len, size - len, "err ring pkts: %u\n", in ath11k_debugfs_dump_soc_dp_stats()
785 soc_stats->err_ring_pkts); in ath11k_debugfs_dump_soc_dp_stats()
786 len += scnprintf(buf + len, size - len, "Invalid RBM: %u\n\n", in ath11k_debugfs_dump_soc_dp_stats()
787 soc_stats->invalid_rbm); in ath11k_debugfs_dump_soc_dp_stats()
788 len += scnprintf(buf + len, size - len, "RXDMA errors:\n"); in ath11k_debugfs_dump_soc_dp_stats()
790 len += scnprintf(buf + len, size - len, "%s: %u\n", in ath11k_debugfs_dump_soc_dp_stats()
791 rxdma_err[i], soc_stats->rxdma_error[i]); in ath11k_debugfs_dump_soc_dp_stats()
793 len += scnprintf(buf + len, size - len, "\nREO errors:\n"); in ath11k_debugfs_dump_soc_dp_stats()
795 len += scnprintf(buf + len, size - len, "%s: %u\n", in ath11k_debugfs_dump_soc_dp_stats()
796 reo_err[i], soc_stats->reo_error[i]); in ath11k_debugfs_dump_soc_dp_stats()
798 len += scnprintf(buf + len, size - len, "\nHAL REO errors:\n"); in ath11k_debugfs_dump_soc_dp_stats()
799 len += scnprintf(buf + len, size - len, in ath11k_debugfs_dump_soc_dp_stats()
801 soc_stats->hal_reo_error[0], in ath11k_debugfs_dump_soc_dp_stats()
802 soc_stats->hal_reo_error[1], in ath11k_debugfs_dump_soc_dp_stats()
803 soc_stats->hal_reo_error[2], in ath11k_debugfs_dump_soc_dp_stats()
804 soc_stats->hal_reo_error[3]); in ath11k_debugfs_dump_soc_dp_stats()
806 len += scnprintf(buf + len, size - len, "\nSOC TX STATS:\n"); in ath11k_debugfs_dump_soc_dp_stats()
807 len += scnprintf(buf + len, size - len, "\nTCL Ring Full Failures:\n"); in ath11k_debugfs_dump_soc_dp_stats()
810 len += scnprintf(buf + len, size - len, "ring%d: %u\n", in ath11k_debugfs_dump_soc_dp_stats()
811 i, soc_stats->tx_err.desc_na[i]); in ath11k_debugfs_dump_soc_dp_stats()
813 len += scnprintf(buf + len, size - len, in ath11k_debugfs_dump_soc_dp_stats()
815 atomic_read(&soc_stats->tx_err.misc_fail)); in ath11k_debugfs_dump_soc_dp_stats()
817 len += ath11k_debugfs_dump_soc_ring_bp_stats(ab, buf + len, size - len); in ath11k_debugfs_dump_soc_dp_stats()
829 .open = simple_open,
836 if (test_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags)) in ath11k_debugfs_pdev_create()
839 ab->debugfs_soc = debugfs_create_dir(ab->hw_params.name, ab->debugfs_ath11k); in ath11k_debugfs_pdev_create()
840 if (IS_ERR(ab->debugfs_soc)) in ath11k_debugfs_pdev_create()
841 return PTR_ERR(ab->debugfs_soc); in ath11k_debugfs_pdev_create()
843 debugfs_create_file("simulate_fw_crash", 0600, ab->debugfs_soc, ab, in ath11k_debugfs_pdev_create()
846 debugfs_create_file("soc_dp_stats", 0600, ab->debugfs_soc, ab, in ath11k_debugfs_pdev_create()
854 debugfs_remove_recursive(ab->debugfs_soc); in ath11k_debugfs_pdev_destroy()
855 ab->debugfs_soc = NULL; in ath11k_debugfs_pdev_destroy()
860 ab->debugfs_ath11k = debugfs_create_dir("ath11k", NULL); in ath11k_debugfs_soc_create()
862 return PTR_ERR_OR_ZERO(ab->debugfs_ath11k); in ath11k_debugfs_soc_create()
867 debugfs_remove_recursive(ab->debugfs_ath11k); in ath11k_debugfs_soc_destroy()
868 ab->debugfs_ath11k = NULL; in ath11k_debugfs_soc_destroy()
875 ar->debug.debugfs_pdev); in ath11k_debugfs_fw_stats_init()
877 ar->debug.fw_stats.debugfs_fwstats = fwstats_dir; in ath11k_debugfs_fw_stats_init()
889 INIT_LIST_HEAD(&ar->debug.fw_stats.pdevs); in ath11k_debugfs_fw_stats_init()
890 INIT_LIST_HEAD(&ar->debug.fw_stats.vdevs); in ath11k_debugfs_fw_stats_init()
891 INIT_LIST_HEAD(&ar->debug.fw_stats.bcn); in ath11k_debugfs_fw_stats_init()
893 init_completion(&ar->debug.fw_stats_complete); in ath11k_debugfs_fw_stats_init()
900 struct ath11k *ar = file->private_data; in ath11k_write_pktlog_filter()
901 struct ath11k_base *ab = ar->ab; in ath11k_write_pktlog_filter()
908 mutex_lock(&ar->conf_mutex); in ath11k_write_pktlog_filter()
909 if (ar->state != ATH11K_STATE_ON) { in ath11k_write_pktlog_filter()
910 ret = -ENETDOWN; in ath11k_write_pktlog_filter()
914 rc = simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, ubuf, count); in ath11k_write_pktlog_filter()
923 ret = -EINVAL; in ath11k_write_pktlog_filter()
930 ath11k_warn(ar->ab, in ath11k_write_pktlog_filter()
932 ar->debug.pktlog_filter, ret); in ath11k_write_pktlog_filter()
938 ath11k_warn(ar->ab, "failed to disable pktlog: %d\n", ret); in ath11k_write_pktlog_filter()
962 ath11k_err(ar->ab, "failed to enable pktlog lite: %d\n", ret); in ath11k_write_pktlog_filter()
971 ath11k_err(ar->ab, "failed to send htt ppdu stats req: %d\n", in ath11k_write_pktlog_filter()
986 for (i = 0; i < ab->hw_params.num_rxmda_per_pdev; i++) { in ath11k_write_pktlog_filter()
987 ring_id = ar->dp.rx_mon_status_refill_ring[i].refill_buf_ring.ring_id; in ath11k_write_pktlog_filter()
989 ar->dp.mac_id + i, in ath11k_write_pktlog_filter()
1002 ar->debug.pktlog_filter = filter; in ath11k_write_pktlog_filter()
1003 ar->debug.pktlog_mode = mode; in ath11k_write_pktlog_filter()
1007 mutex_unlock(&ar->conf_mutex); in ath11k_write_pktlog_filter()
1017 struct ath11k *ar = file->private_data; in ath11k_read_pktlog_filter()
1020 mutex_lock(&ar->conf_mutex); in ath11k_read_pktlog_filter()
1021 len = scnprintf(buf, sizeof(buf) - len, "%08x %08x\n", in ath11k_read_pktlog_filter()
1022 ar->debug.pktlog_filter, in ath11k_read_pktlog_filter()
1023 ar->debug.pktlog_mode); in ath11k_read_pktlog_filter()
1024 mutex_unlock(&ar->conf_mutex); in ath11k_read_pktlog_filter()
1032 .open = simple_open
1039 struct ath11k *ar = file->private_data; in ath11k_write_simulate_radar()
1051 .open = simple_open
1056 struct ath11k_base *ab = ar->ab; in ath11k_debugfs_register()
1060 snprintf(pdev_name, sizeof(pdev_name), "%s%d", "mac", ar->pdev_idx); in ath11k_debugfs_register()
1062 ar->debug.debugfs_pdev = debugfs_create_dir(pdev_name, ab->debugfs_soc); in ath11k_debugfs_register()
1063 if (IS_ERR(ar->debug.debugfs_pdev)) in ath11k_debugfs_register()
1064 return PTR_ERR(ar->debug.debugfs_pdev); in ath11k_debugfs_register()
1067 snprintf(buf, 100, "../../ath11k/%pd2", ar->debug.debugfs_pdev); in ath11k_debugfs_register()
1068 debugfs_create_symlink("ath11k", ar->hw->wiphy->debugfsdir, buf); in ath11k_debugfs_register()
1075 ar->debug.debugfs_pdev, ar, in ath11k_debugfs_register()
1078 ar->debug.debugfs_pdev, ar, in ath11k_debugfs_register()
1081 ar->debug.debugfs_pdev, ar, in ath11k_debugfs_register()
1084 if (ar->hw->wiphy->bands[NL80211_BAND_5GHZ]) { in ath11k_debugfs_register()
1086 ar->debug.debugfs_pdev, ar, in ath11k_debugfs_register()
1089 ar->debug.debugfs_pdev, in ath11k_debugfs_register()
1090 &ar->dfs_block_radar_events); in ath11k_debugfs_register()