Lines Matching refs:ar

11 static void send_fft_sample(struct ath10k *ar,
16 if (!ar->spectral.rfs_chan_spec_scan)
21 relay_write(ar->spectral.rfs_chan_spec_scan, fft_sample_tlv, length);
48 static inline size_t ath10k_spectral_fix_bin_size(struct ath10k *ar,
58 bin_len -= ar->hw_params.spectral_bin_discard;
63 int ath10k_spectral_process_fft(struct ath10k *ar,
77 bin_len = ath10k_spectral_fix_bin_size(ar, bin_len);
137 bins += sizeof(*fftr) + ar->hw_params.spectral_bin_offset;
156 send_fft_sample(ar, &fft_sample->tlv);
161 static struct ath10k_vif *ath10k_get_spectral_vdev(struct ath10k *ar)
165 lockdep_assert_held(&ar->conf_mutex);
167 if (list_empty(&ar->arvifs))
171 list_for_each_entry(arvif, &ar->arvifs, list)
176 return list_first_entry(&ar->arvifs, typeof(*arvif), list);
179 static int ath10k_spectral_scan_trigger(struct ath10k *ar)
185 lockdep_assert_held(&ar->conf_mutex);
187 arvif = ath10k_get_spectral_vdev(ar);
192 if (ar->spectral.mode == SPECTRAL_DISABLED)
195 res = ath10k_wmi_vdev_spectral_enable(ar, vdev_id,
201 res = ath10k_wmi_vdev_spectral_enable(ar, vdev_id,
210 static int ath10k_spectral_scan_config(struct ath10k *ar,
217 lockdep_assert_held(&ar->conf_mutex);
219 arvif = ath10k_get_spectral_vdev(ar);
226 ar->spectral.mode = mode;
228 res = ath10k_wmi_vdev_spectral_enable(ar, vdev_id,
232 ath10k_warn(ar, "failed to enable spectral scan: %d\n", res);
242 count = max_t(u8, 1, ar->spectral.config.count);
248 arg.scan_fft_size = ar->spectral.config.fft_size;
264 res = ath10k_wmi_vdev_spectral_conf(ar, &arg);
266 ath10k_warn(ar, "failed to configure spectral scan: %d\n", res);
276 struct ath10k *ar = file->private_data;
281 mutex_lock(&ar->conf_mutex);
282 spectral_mode = ar->spectral.mode;
283 mutex_unlock(&ar->conf_mutex);
305 struct ath10k *ar = file->private_data;
316 mutex_lock(&ar->conf_mutex);
319 if (ar->spectral.mode == SPECTRAL_MANUAL ||
320 ar->spectral.mode == SPECTRAL_BACKGROUND) {
324 res = ath10k_spectral_scan_config(ar,
325 ar->spectral.mode);
327 ath10k_warn(ar, "failed to reconfigure spectral scan: %d\n",
330 res = ath10k_spectral_scan_trigger(ar);
332 ath10k_warn(ar, "failed to trigger spectral scan: %d\n",
339 res = ath10k_spectral_scan_config(ar, SPECTRAL_BACKGROUND);
341 res = ath10k_spectral_scan_config(ar, SPECTRAL_MANUAL);
343 res = ath10k_spectral_scan_config(ar, SPECTRAL_DISABLED);
348 mutex_unlock(&ar->conf_mutex);
368 struct ath10k *ar = file->private_data;
373 mutex_lock(&ar->conf_mutex);
374 spectral_count = ar->spectral.config.count;
375 mutex_unlock(&ar->conf_mutex);
385 struct ath10k *ar = file->private_data;
396 mutex_lock(&ar->conf_mutex);
397 ar->spectral.config.count = val;
398 mutex_unlock(&ar->conf_mutex);
415 struct ath10k *ar = file->private_data;
420 mutex_lock(&ar->conf_mutex);
422 fft_size = ar->spectral.config.fft_size;
426 mutex_unlock(&ar->conf_mutex);
436 struct ath10k *ar = file->private_data;
450 mutex_lock(&ar->conf_mutex);
451 ar->spectral.config.fft_size = ilog2(val);
452 ar->spectral.config.fft_size += WMI_SPECTRAL_BIN_SCALE_DEFAULT;
453 mutex_unlock(&ar->conf_mutex);
495 int ath10k_spectral_start(struct ath10k *ar)
499 lockdep_assert_held(&ar->conf_mutex);
501 list_for_each_entry(arvif, &ar->arvifs, list)
504 ar->spectral.mode = SPECTRAL_DISABLED;
505 ar->spectral.config.count = WMI_SPECTRAL_COUNT_DEFAULT;
506 ar->spectral.config.fft_size = WMI_SPECTRAL_FFT_SIZE_DEFAULT;
516 return ath10k_spectral_scan_config(arvif->ar, SPECTRAL_DISABLED);
519 int ath10k_spectral_create(struct ath10k *ar)
524 ar->spectral.rfs_chan_spec_scan = relay_open("spectral_scan",
525 ar->debug.debugfs_phy,
530 ar->debug.debugfs_phy, ar,
534 ar->debug.debugfs_phy, ar,
538 ar->debug.debugfs_phy, ar,
544 void ath10k_spectral_destroy(struct ath10k *ar)
546 if (ar->spectral.rfs_chan_spec_scan) {
547 relay_close(ar->spectral.rfs_chan_spec_scan);
548 ar->spectral.rfs_chan_spec_scan = NULL;