summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArif Hussain <arifhussain@codeaurora.org>2016-07-20 17:21:09 -0700
committerVishwajith Upendra <vishwaji@codeaurora.org>2016-07-28 19:27:33 -0700
commit8bdf4bcc0504ee71e55f0d7de51a314dd98d18e3 (patch)
tree362eae60426d6ea3f730dbc3d76749505cc8dab5
parent03bc0495f671dfa87b2a5f029222aa079aadcf11 (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.c13
-rw-r--r--core/sap/dfs/src/dfs_process_phyerr.c21
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;
}
/*