[ath9k-devel] [PATCH] ath9k: Prevent radar detection and spectral scan to be used concurrently
Zefir Kurtisi <[email protected]> Mon, 21 Nov 2016 17:16:42 +0100
| Newsgroups | org.ath9k.lists.ath9k-devel,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
On 11/21/2016 04:10 PM, Michal Kazior wrote: > On 21 November 2016 at 15:41, Zefir Kurtisi <[email protected]> wrote: >> On 11/21/2016 03:04 PM, Benjamin Berg wrote: >>> In the case that a spectral scan is enabled the PHY errors sent by the >>> hardware as part of the scanning might trigger the radar detection and >>> channels might be marked as 'unusable' incorrectly. This patch fixes >>> the issue by preventing the spectral scan to be enabled if DFS is used >>> and only analysing the PHY errors for DFS if radar detection is enabled. >>> >>> [...] >> >> From the relevant source code portion in channel.c:ath_set_channel() >> >> 80 /* Enable radar pulse detection if on a DFS channel. Spectral >> 81 * scanning and radar detection can not be used concurrently. >> 82 */ >> 83 if (hw->conf.radar_enabled) { >> 84 u32 rxfilter; >> 85 >> 86 rxfilter = ath9k_hw_getrxfilter(ah); >> 87 rxfilter |= ATH9K_RX_FILTER_PHYRADAR | >> 88 ATH9K_RX_FILTER_PHYERR; >> 89 ath9k_hw_setrxfilter(ah, rxfilter); >> 90 ath_dbg(common, DFS, "DFS enabled at freq %d\n", >> 91 chan->center_freq); >> 92 } else { >> 93 /* perform spectral scan if requested. */ >> 94 if (test_bit(ATH_OP_SCANNING, &common->op_flags) && >> 95 sc->spec_priv.spectral_mode == SPECTRAL_CHANSCAN) >> 96 ath9k_cmn_spectral_scan_trigger(common, &sc->spec_priv); >> 97 } >> >> it seems that spectral can't ever be activated while operating on a DFS channel. >> >> If you need to catch the opposite case, i.e. prevent feeding pseudo-radar pulses >> into the pattern detector, you just need to ensure that they depend on >> hw->conf.radar_enabled. A patch like the attached one should be enough. > > Good point. I guess set_channel could be oversimplified as well. I > mean, it makes sense to consider radar and spectral mutually exclusive > if they use the same phyerr code. However some chips actually seem (as > per the comment I mentioned) to distinguish the two so I don't know if > the "mutually exclusive" is true for all chips per se. Just thinking > out loud. > You're right, blindly feeding PHYERR frames to spectral when spectral is not enabled is as wrong as feeding them to the dfs-detector when not on a radar channel. Therefore, the patch I proposed should be extended to make calling ath_cmn_process_fft() depending on a) not operating on radar channel, and b) spectral scan is enabled Updated patch attached as proposal. > I also wonder if calling ieee80211_radar_detect() should have any > effect if there are no radar operated interfaces in the first place? > True, calling ieee80211_radar_detect() for a non-DFS channel is (or should be) ignored by mac. But feeding the dfs-detector with invalid pulses causes quite some computational overhead - dropping them if no radar detection is required is a good thing to do. Cheers, Zefir -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-ath9k-feed-DFS-detector-only-if-operating-on-radar-c.patch Type: text/x-patch Size: 0 bytes Desc: not available Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20161121/ab36ab4e/attachment-0001.bin