mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-22 19:43:07 +07:00
991adf71a6
Existing phyerr event handlers directly uses phyerr header format (ie, struct wmi_phyerr and struct wmi_phyerr_event) in the code exactly on how firmware packs it. This is the problem in 10.4 fw specific phyerr event handling where it uses different phyerror header format. Before adding 10.4 specific handler, little bit of refactor is done in existing phyerr handlers. Two new abstracted structures (struct wmi_phyerr_ev_hdr_arg and struct wmi_phyerr_ev_arg) are introduced to remove dependency of using firmware specific header format in the code. So that firmware specific phyerror handlers can populate values to abstracted structures and the following code can use abstracted struct for further operation. .pull_phyerr_hdr is added newly to pull common phyerr header info like tsf, buf_len, number of phyerr packed. Existing .pull_phyerr handler is changed and called to parse every sub phyerrs in the event. Validated these refactoring on qca988x hw2.0 using fw 10.2.4 version. Signed-off-by: Raja Mani <rmani@qti.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
91 lines
2.4 KiB
C
91 lines
2.4 KiB
C
/*
|
|
* Copyright (c) 2013 Qualcomm Atheros, Inc.
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#ifndef SPECTRAL_H
|
|
#define SPECTRAL_H
|
|
|
|
#include "../spectral_common.h"
|
|
|
|
/**
|
|
* struct ath10k_spec_scan - parameters for Atheros spectral scan
|
|
*
|
|
* @count: number of scan results requested for manual mode
|
|
* @fft_size: number of bins to be requested = 2^(fft_size - bin_scale)
|
|
*/
|
|
struct ath10k_spec_scan {
|
|
u8 count;
|
|
u8 fft_size;
|
|
};
|
|
|
|
/* enum ath10k_spectral_mode:
|
|
*
|
|
* @SPECTRAL_DISABLED: spectral mode is disabled
|
|
* @SPECTRAL_BACKGROUND: hardware sends samples when it is not busy with
|
|
* something else.
|
|
* @SPECTRAL_MANUAL: spectral scan is enabled, triggering for samples
|
|
* is performed manually.
|
|
*/
|
|
enum ath10k_spectral_mode {
|
|
SPECTRAL_DISABLED = 0,
|
|
SPECTRAL_BACKGROUND,
|
|
SPECTRAL_MANUAL,
|
|
};
|
|
|
|
#ifdef CONFIG_ATH10K_DEBUGFS
|
|
|
|
int ath10k_spectral_process_fft(struct ath10k *ar,
|
|
struct wmi_phyerr_ev_arg *phyerr,
|
|
const struct phyerr_fft_report *fftr,
|
|
size_t bin_len, u64 tsf);
|
|
int ath10k_spectral_start(struct ath10k *ar);
|
|
int ath10k_spectral_vif_stop(struct ath10k_vif *arvif);
|
|
int ath10k_spectral_create(struct ath10k *ar);
|
|
void ath10k_spectral_destroy(struct ath10k *ar);
|
|
|
|
#else
|
|
|
|
static inline int
|
|
ath10k_spectral_process_fft(struct ath10k *ar,
|
|
struct wmi_phyerr_ev_arg *phyerr,
|
|
const struct phyerr_fft_report *fftr,
|
|
size_t bin_len, u64 tsf)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int ath10k_spectral_start(struct ath10k *ar)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int ath10k_spectral_vif_stop(struct ath10k_vif *arvif)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int ath10k_spectral_create(struct ath10k *ar)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void ath10k_spectral_destroy(struct ath10k *ar)
|
|
{
|
|
}
|
|
|
|
#endif /* CONFIG_ATH10K_DEBUGFS */
|
|
|
|
#endif /* SPECTRAL_H */
|