mirror of https://gitee.com/openkylin/linux.git
ath9k: feed only active spectral / dfs-detector
Radar pulse and spectral scan reports are provided by the HW with the ATH9K_RXERR_PHY flag set. Those are forwarded to the dfs-detector and spectral module for further processing. For some older chips, the pre-conditions checked in those modules are ambiguous, since ATH9K_PHYERR_RADAR is used to tag both types. As a result, spectral frames are fed into the dfs-detector and vice versa. This could lead to a false radar detection on a non-DFS channel (which is uncritical), but more relevant it causes useless CPU load for processing invalid frames. This commit ensures that the dfs-detector and spectral collector are only fed when they are active. Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
705d7aa062
commit
87fedb974e
|
@ -867,10 +867,21 @@ static int ath9k_rx_skb_preprocess(struct ath_softc *sc,
|
|||
* can be dropped.
|
||||
*/
|
||||
if (rx_stats->rs_status & ATH9K_RXERR_PHY) {
|
||||
ath9k_dfs_process_phyerr(sc, hdr, rx_stats, rx_status->mactime);
|
||||
if (ath_cmn_process_fft(&sc->spec_priv, hdr, rx_stats, rx_status->mactime))
|
||||
/*
|
||||
* DFS and spectral are mutually exclusive
|
||||
*
|
||||
* Since some chips use PHYERR_RADAR as indication for both, we
|
||||
* need to double check which feature is enabled to prevent
|
||||
* feeding spectral or dfs-detector with wrong frames.
|
||||
*/
|
||||
if (hw->conf.radar_enabled) {
|
||||
ath9k_dfs_process_phyerr(sc, hdr, rx_stats,
|
||||
rx_status->mactime);
|
||||
} else if (sc->spec_priv.spectral_mode != SPECTRAL_DISABLED &&
|
||||
ath_cmn_process_fft(&sc->spec_priv, hdr, rx_stats,
|
||||
rx_status->mactime)) {
|
||||
RX_STAT_INC(rx_spectral);
|
||||
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue