diff options
| author | Arif Hussain <arifhussain@codeaurora.org> | 2016-07-20 17:21:09 -0700 |
|---|---|---|
| committer | Vishwajith Upendra <vishwaji@codeaurora.org> | 2016-07-28 19:27:33 -0700 |
| commit | 8bdf4bcc0504ee71e55f0d7de51a314dd98d18e3 (patch) | |
| tree | 362eae60426d6ea3f730dbc3d76749505cc8dab5 | |
| parent | 03bc0495f671dfa87b2a5f029222aa079aadcf11 (diff) | |
qcacld-3.0: SAP DFS: Fix RSSI issue in extension80 segment
RSSI_COMB is not reliable indicator of RSSI for extension80
when operating in 80p80 non-contiguous mode due to existing
hardware bug.
Add workaround in software to use pulse_rssi instead of RSSI_COMB.
Change-Id: I89c829ecefca2dcc75bb494943c98bdb77470de6
CRs-Fixed: 1043760
| -rw-r--r-- | core/sap/dfs/src/dfs_phyerr_tlv.c | 13 | ||||
| -rw-r--r-- | core/sap/dfs/src/dfs_process_phyerr.c | 21 |
2 files changed, 27 insertions, 7 deletions
diff --git a/core/sap/dfs/src/dfs_phyerr_tlv.c b/core/sap/dfs/src/dfs_phyerr_tlv.c index 5a479edb3864..82c890f55d16 100644 --- a/core/sap/dfs/src/dfs_phyerr_tlv.c +++ b/core/sap/dfs/src/dfs_phyerr_tlv.c @@ -889,6 +889,19 @@ dfs_process_phyerr_bb_tlv(struct ath_dfs *dfs, void *buf, uint16_t datalen, rs.radar_fft_ext80_inband_power; e->rsu_version = rs.rsu_version; e->peak_mag = rsfr.peak_mag; + + /* + * RSSI_COMB is not reliable indicator of RSSI + * for extension80 when operating in 80p80 + * non-contiguous mode due to existing hardware + * bug. Added workaround in software to use + * pulse_rssi instead of RSSI_COMB. + */ + + if ((dfs->ic->ic_curchan->ic_flags & + IEEE80211_CHAN_VHT80P80) && + (rs.radar_80p80_segid == DFS_80P80_SEG1)) + e->rssi = rs.pulse_rssi; } /* * XXX TODO: add a "chirp detection enabled" capability or config diff --git a/core/sap/dfs/src/dfs_process_phyerr.c b/core/sap/dfs/src/dfs_process_phyerr.c index 3e45c5a64d35..9189d58f8372 100644 --- a/core/sap/dfs/src/dfs_process_phyerr.c +++ b/core/sap/dfs/src/dfs_process_phyerr.c @@ -812,13 +812,20 @@ dfs_process_phyerr(struct ieee80211com *ic, void *buf, uint16_t datalen, rn_minrssithresh); return; } - } else { - if (e.rssi < dfs->dfs_rinfo.rn_minrssithresh || - e.dur > dfs->dfs_rinfo.rn_maxpulsedur) { - /* XXX TODO add a debug statement? */ - dfs->ath_dfs_stats.rssi_discards++; - return; - } + } else if (e.rssi < dfs->dfs_rinfo.rn_minrssithresh || + e.dur > dfs->dfs_rinfo.rn_maxpulsedur) { + + QDF_TRACE(QDF_MODULE_ID_SAP, + QDF_TRACE_LEVEL_INFO, + "%s [%d] : Rejecting: dur = %d \ + maxpulsedur = %d, rssi = %d \ + minrssithresh = %d", __func__, __LINE__, + e.dur, dfs->dfs_rinfo.rn_maxpulsedur, + e.rssi, + dfs->dfs_rinfo.rn_minrssithresh); + + dfs->ath_dfs_stats.rssi_discards++; + return; } /* |
