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
diff --git a/core/sap/dfs/src/dfs_phyerr_tlv.c b/core/sap/dfs/src/dfs_phyerr_tlv.c
index 5a479ed..82c890f 100644
--- a/core/sap/dfs/src/dfs_phyerr_tlv.c
+++ b/core/sap/dfs/src/dfs_phyerr_tlv.c
@@ -889,6 +889,19 @@
 				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 3e45c5a..9189d58 100644
--- a/core/sap/dfs/src/dfs_process_phyerr.c
+++ b/core/sap/dfs/src/dfs_process_phyerr.c
@@ -812,13 +812,20 @@
 						    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;
 			}
 
 			/*