|
@@ -381,6 +381,10 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
|
|
|
rfilt = ATH9K_RX_FILTER_UCAST | ATH9K_RX_FILTER_BCAST
|
|
rfilt = ATH9K_RX_FILTER_UCAST | ATH9K_RX_FILTER_BCAST
|
|
|
| ATH9K_RX_FILTER_MCAST;
|
|
| ATH9K_RX_FILTER_MCAST;
|
|
|
|
|
|
|
|
|
|
+ /* if operating on a DFS channel, enable radar pulse detection */
|
|
|
|
|
+ if (sc->hw->conf.radar_enabled)
|
|
|
|
|
+ rfilt |= ATH9K_RX_FILTER_PHYRADAR | ATH9K_RX_FILTER_PHYERR;
|
|
|
|
|
+
|
|
|
if (sc->rx.rxfilter & FIF_PROBE_REQ)
|
|
if (sc->rx.rxfilter & FIF_PROBE_REQ)
|
|
|
rfilt |= ATH9K_RX_FILTER_PROBEREQ;
|
|
rfilt |= ATH9K_RX_FILTER_PROBEREQ;
|
|
|
|
|
|
|
@@ -1228,6 +1232,9 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
|
|
|
unlikely(tsf_lower - rs.rs_tstamp > 0x10000000))
|
|
unlikely(tsf_lower - rs.rs_tstamp > 0x10000000))
|
|
|
rxs->mactime += 0x100000000ULL;
|
|
rxs->mactime += 0x100000000ULL;
|
|
|
|
|
|
|
|
|
|
+ if (rs.rs_phyerr == ATH9K_PHYERR_RADAR)
|
|
|
|
|
+ ath9k_dfs_process_phyerr(sc, hdr, &rs, rxs->mactime);
|
|
|
|
|
+
|
|
|
if (rs.rs_status & ATH9K_RXERR_PHY) {
|
|
if (rs.rs_status & ATH9K_RXERR_PHY) {
|
|
|
if (ath_process_fft(sc, hdr, &rs, rxs->mactime)) {
|
|
if (ath_process_fft(sc, hdr, &rs, rxs->mactime)) {
|
|
|
RX_STAT_INC(rx_spectral);
|
|
RX_STAT_INC(rx_spectral);
|