Lines Matching refs:ar
22 static void send_fft_sample(struct ath10k *ar, in send_fft_sample() argument
27 if (!ar->spectral.rfs_chan_spec_scan) in send_fft_sample()
32 relay_write(ar->spectral.rfs_chan_spec_scan, fft_sample_tlv, length); in send_fft_sample()
59 int ath10k_spectral_process_fft(struct ath10k *ar, in ath10k_spectral_process_fft() argument
159 send_fft_sample(ar, &fft_sample->tlv); in ath10k_spectral_process_fft()
164 static struct ath10k_vif *ath10k_get_spectral_vdev(struct ath10k *ar) in ath10k_get_spectral_vdev() argument
168 lockdep_assert_held(&ar->conf_mutex); in ath10k_get_spectral_vdev()
170 if (list_empty(&ar->arvifs)) in ath10k_get_spectral_vdev()
174 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_get_spectral_vdev()
179 return list_first_entry(&ar->arvifs, typeof(*arvif), list); in ath10k_get_spectral_vdev()
182 static int ath10k_spectral_scan_trigger(struct ath10k *ar) in ath10k_spectral_scan_trigger() argument
188 lockdep_assert_held(&ar->conf_mutex); in ath10k_spectral_scan_trigger()
190 arvif = ath10k_get_spectral_vdev(ar); in ath10k_spectral_scan_trigger()
195 if (ar->spectral.mode == SPECTRAL_DISABLED) in ath10k_spectral_scan_trigger()
198 res = ath10k_wmi_vdev_spectral_enable(ar, vdev_id, in ath10k_spectral_scan_trigger()
204 res = ath10k_wmi_vdev_spectral_enable(ar, vdev_id, in ath10k_spectral_scan_trigger()
213 static int ath10k_spectral_scan_config(struct ath10k *ar, in ath10k_spectral_scan_config() argument
220 lockdep_assert_held(&ar->conf_mutex); in ath10k_spectral_scan_config()
222 arvif = ath10k_get_spectral_vdev(ar); in ath10k_spectral_scan_config()
229 ar->spectral.mode = mode; in ath10k_spectral_scan_config()
231 res = ath10k_wmi_vdev_spectral_enable(ar, vdev_id, in ath10k_spectral_scan_config()
235 ath10k_warn(ar, "failed to enable spectral scan: %d\n", res); in ath10k_spectral_scan_config()
245 count = max_t(u8, 1, ar->spectral.config.count); in ath10k_spectral_scan_config()
251 arg.scan_fft_size = ar->spectral.config.fft_size; in ath10k_spectral_scan_config()
267 res = ath10k_wmi_vdev_spectral_conf(ar, &arg); in ath10k_spectral_scan_config()
269 ath10k_warn(ar, "failed to configure spectral scan: %d\n", res); in ath10k_spectral_scan_config()
279 struct ath10k *ar = file->private_data; in read_file_spec_scan_ctl() local
284 mutex_lock(&ar->conf_mutex); in read_file_spec_scan_ctl()
285 spectral_mode = ar->spectral.mode; in read_file_spec_scan_ctl()
286 mutex_unlock(&ar->conf_mutex); in read_file_spec_scan_ctl()
308 struct ath10k *ar = file->private_data; in write_file_spec_scan_ctl() local
319 mutex_lock(&ar->conf_mutex); in write_file_spec_scan_ctl()
322 if (ar->spectral.mode == SPECTRAL_MANUAL || in write_file_spec_scan_ctl()
323 ar->spectral.mode == SPECTRAL_BACKGROUND) { in write_file_spec_scan_ctl()
327 res = ath10k_spectral_scan_config(ar, in write_file_spec_scan_ctl()
328 ar->spectral.mode); in write_file_spec_scan_ctl()
330 ath10k_warn(ar, "failed to reconfigure spectral scan: %d\n", in write_file_spec_scan_ctl()
333 res = ath10k_spectral_scan_trigger(ar); in write_file_spec_scan_ctl()
335 ath10k_warn(ar, "failed to trigger spectral scan: %d\n", in write_file_spec_scan_ctl()
342 res = ath10k_spectral_scan_config(ar, SPECTRAL_BACKGROUND); in write_file_spec_scan_ctl()
344 res = ath10k_spectral_scan_config(ar, SPECTRAL_MANUAL); in write_file_spec_scan_ctl()
346 res = ath10k_spectral_scan_config(ar, SPECTRAL_DISABLED); in write_file_spec_scan_ctl()
351 mutex_unlock(&ar->conf_mutex); in write_file_spec_scan_ctl()
371 struct ath10k *ar = file->private_data; in read_file_spectral_count() local
376 mutex_lock(&ar->conf_mutex); in read_file_spectral_count()
377 spectral_count = ar->spectral.config.count; in read_file_spectral_count()
378 mutex_unlock(&ar->conf_mutex); in read_file_spectral_count()
388 struct ath10k *ar = file->private_data; in write_file_spectral_count() local
404 mutex_lock(&ar->conf_mutex); in write_file_spectral_count()
405 ar->spectral.config.count = val; in write_file_spectral_count()
406 mutex_unlock(&ar->conf_mutex); in write_file_spectral_count()
423 struct ath10k *ar = file->private_data; in read_file_spectral_bins() local
427 mutex_lock(&ar->conf_mutex); in read_file_spectral_bins()
429 fft_size = ar->spectral.config.fft_size; in read_file_spectral_bins()
433 mutex_unlock(&ar->conf_mutex); in read_file_spectral_bins()
443 struct ath10k *ar = file->private_data; in write_file_spectral_bins() local
462 mutex_lock(&ar->conf_mutex); in write_file_spectral_bins()
463 ar->spectral.config.fft_size = ilog2(val); in write_file_spectral_bins()
464 ar->spectral.config.fft_size += WMI_SPECTRAL_BIN_SCALE_DEFAULT; in write_file_spectral_bins()
465 mutex_unlock(&ar->conf_mutex); in write_file_spectral_bins()
504 int ath10k_spectral_start(struct ath10k *ar) in ath10k_spectral_start() argument
508 lockdep_assert_held(&ar->conf_mutex); in ath10k_spectral_start()
510 list_for_each_entry(arvif, &ar->arvifs, list) in ath10k_spectral_start()
513 ar->spectral.mode = SPECTRAL_DISABLED; in ath10k_spectral_start()
514 ar->spectral.config.count = WMI_SPECTRAL_COUNT_DEFAULT; in ath10k_spectral_start()
515 ar->spectral.config.fft_size = WMI_SPECTRAL_FFT_SIZE_DEFAULT; in ath10k_spectral_start()
525 return ath10k_spectral_scan_config(arvif->ar, SPECTRAL_DISABLED); in ath10k_spectral_vif_stop()
528 int ath10k_spectral_create(struct ath10k *ar) in ath10k_spectral_create() argument
533 ar->spectral.rfs_chan_spec_scan = relay_open("spectral_scan", in ath10k_spectral_create()
534 ar->debug.debugfs_phy, in ath10k_spectral_create()
539 ar->debug.debugfs_phy, ar, in ath10k_spectral_create()
543 ar->debug.debugfs_phy, ar, in ath10k_spectral_create()
547 ar->debug.debugfs_phy, ar, in ath10k_spectral_create()
553 void ath10k_spectral_destroy(struct ath10k *ar) in ath10k_spectral_destroy() argument
555 if (ar->spectral.rfs_chan_spec_scan) { in ath10k_spectral_destroy()
556 relay_close(ar->spectral.rfs_chan_spec_scan); in ath10k_spectral_destroy()
557 ar->spectral.rfs_chan_spec_scan = NULL; in ath10k_spectral_destroy()