qcacld-3.0: Update proper RCPI value in beacon report

In beacon report's RCPI, host updates current RSSI which is incorrect
according to "2008 11k spec reference: 18.4.8.5 RCPI Measurement".
Hence fill RCPI value in beacon report as per "2008 11k spec reference:
18.4.8.5 RCPI Measurement".

Change-Id: I2ce88ad9f5d0db252d96f9e25db336b081cdd9bb
CRs-Fixed: 2776844
This commit is contained in:
Abhishek Ambure
2020-09-16 13:24:32 +05:30
committato da snandini
parent 90194f2a71
commit af97342e5a

Vedi File

@@ -202,6 +202,24 @@ QDF_STATUS rrm_set_max_tx_power_rsp(struct mac_context *mac,
return retCode;
}
/**
* rrm_calculate_and_fill_rcpi() - calculates and fills RCPI value
* @rcpi: pointer to hold calculated RCPI value
* @cur_rssi: value of current RSSI
*
* @return None
*/
static void rrm_calculate_and_fill_rcpi(uint8_t *rcpi, int8_t cur_rssi)
{
/* 2008 11k spec reference: 18.4.8.5 RCPI Measurement */
if (cur_rssi <= RCPI_LOW_RSSI_VALUE)
*rcpi = 0;
else if ((cur_rssi > RCPI_LOW_RSSI_VALUE) && (cur_rssi <= 0))
*rcpi = CALCULATE_RCPI(cur_rssi);
else
*rcpi = RCPI_MAX_VALUE;
}
/* -------------------------------------------------------------------- */
/**
* rrm_process_link_measurement_request
@@ -273,14 +291,7 @@ rrm_process_link_measurement_request(struct mac_context *mac,
pe_info("Received Link report frame with %d", currentRSSI);
/* 2008 11k spec reference: 18.4.8.5 RCPI Measurement */
if ((currentRSSI) <= RCPI_LOW_RSSI_VALUE)
LinkReport.rcpi = 0;
else if ((currentRSSI > RCPI_LOW_RSSI_VALUE) && (currentRSSI <= 0))
LinkReport.rcpi = CALCULATE_RCPI(currentRSSI);
else
LinkReport.rcpi = RCPI_MAX_VALUE;
rrm_calculate_and_fill_rcpi(&LinkReport.rcpi, currentRSSI);
LinkReport.rsni = WMA_GET_RX_SNR(pRxPacketInfo);
pe_debug("Sending Link report frame");
@@ -1022,7 +1033,9 @@ rrm_process_beacon_report_xmit(struct mac_context *mac_ctx,
beacon_report->phyType = bss_desc->nwType;
beacon_report->bcnProbeRsp = 1;
beacon_report->rsni = bss_desc->sinr;
beacon_report->rcpi = bss_desc->rssi;
rrm_calculate_and_fill_rcpi(&beacon_report->rcpi,
bss_desc->rssi);
beacon_report->antennaId = 0;
beacon_report->parentTSF = bss_desc->parentTSF;
qdf_mem_copy(beacon_report->bssid,