Browse Source

qcacmn: Fix average RSSI calculation of scan entries

Average RSSI calculation was incorrect as previous average was
not considered. Consider previous average along with new frames
raw RSSI while calculating average RSSI.

Change-Id: I529802baaf296fc1378a1e89fc0ac00dcc8336da
CRs-Fixed: 2087711
Om Prakash Tripathi 7 years ago
parent
commit
51052df409
1 changed files with 8 additions and 4 deletions
  1. 8 4
      umac/scan/core/src/wlan_scan_cache_db.c

+ 8 - 4
umac/scan/core/src/wlan_scan_cache_db.c

@@ -419,9 +419,13 @@ static void scm_delete_duplicate_entry(struct scan_dbs *scan_db,
 		if (time_gap > WLAN_RSSI_AVERAGING_TIME)
 			scan_params->avg_rssi =
 				WLAN_RSSI_IN(scan_params->rssi_raw);
-		else
+		else {
+			/* Copy previous average rssi to new entry */
+			scan_params->avg_rssi = scan_entry->avg_rssi;
+			/* Average with previous samples */
 			WLAN_RSSI_LPF(scan_params->avg_rssi,
 					scan_params->rssi_raw);
+		}
 
 		scan_params->rssi_timestamp = scan_params->scan_entry_time;
 	}
@@ -568,12 +572,12 @@ QDF_STATUS scm_handle_bcn_probe(struct scheduler_msg *msg)
 		goto free_nbuf;
 	}
 
-
-	scm_info("Received %s from BSSID: %pM tsf_delta = %u Seq Num: %x ssid:%.*s",
+	scm_info("Received %s from BSSID: %pM tsf_delta = %u Seq Num: %x "
+		"ssid:%.*s, rssi: %d",
 		(bcn->frm_type == MGMT_SUBTYPE_PROBE_RESP) ?
 		"Probe Rsp" : "Beacon", scan_entry->bssid.bytes,
 		scan_entry->tsf_delta, scan_entry->seq_num,
-		scan_entry->ssid.length, scan_entry->ssid.ssid);
+		scan_entry->ssid.length, scan_entry->ssid.ssid, scan_entry->rssi_raw);
 
 	if (scan_obj->cb.update_beacon)
 		scan_obj->cb.update_beacon(pdev, scan_entry);