wlan : rrm : Incorrect Tx power values in Measurement report

STA is sending negative Tx power values in the Measurement
report with different configuration of Nth beacon filter.
Changes are made to send correct power value
in measurement report in STA mode.

CRs-fixed: 525811

Change-Id: I84d4ca7ab06a15e7e88b2033869c24c45ed72aab
diff --git a/CORE/MAC/src/pe/rrm/rrmApi.c b/CORE/MAC/src/pe/rrm/rrmApi.c
index c198d65..c1e0f46 100644
--- a/CORE/MAC/src/pe/rrm/rrmApi.c
+++ b/CORE/MAC/src/pe/rrm/rrmApi.c
@@ -280,10 +280,9 @@
    tSirMacLinkReport LinkReport;
    tpSirMacMgmtHdr   pHdr;
    v_S7_t            currentRSSI = 0;
-   tPowerdBm         maxTxPower = 0;
 
 #if defined WLAN_VOWIFI_DEBUG
-   PELOGE(limLog( pMac, LOGE, "Received Link measurement request");)
+   PELOG1(limLog( pMac, LOG1, "Received Link measurement request");)
 #endif
    if( pRxPacketInfo == NULL || pLinkReq == NULL || pSessionEntry == NULL )
    {
@@ -291,43 +290,66 @@
       return eSIR_FAILURE;
    }
    pHdr = WDA_GET_RX_MAC_HEADER( pRxPacketInfo );
-   if( pSessionEntry->maxTxPower != (tPowerdBm) pLinkReq->MaxTxPower.maxTxPower )
+   if( (uint8)(pSessionEntry->maxTxPower) != pLinkReq->MaxTxPower.maxTxPower )
    {
-      PELOG1(limLog( pMac,
-                     LOG1,
+      PELOGW(limLog( pMac,
+                     LOGW,
                      FL(" maxTx power in link request is not same as local... "
                         " Local = %d LinkReq = %d"),
                      pSessionEntry->maxTxPower,
                      pLinkReq->MaxTxPower.maxTxPower );)
-      if( MIN_STA_PWR_CAP_DBM <= (tPowerdBm) pLinkReq->MaxTxPower.maxTxPower &&
-         MAX_STA_PWR_CAP_DBM >= (tPowerdBm) pLinkReq->MaxTxPower.maxTxPower )
-         maxTxPower = (tPowerdBm) pLinkReq->MaxTxPower.maxTxPower;
-      else if( MIN_STA_PWR_CAP_DBM > (tPowerdBm) pLinkReq->MaxTxPower.maxTxPower &&
-               MIN_STA_PWR_CAP_DBM != pSessionEntry->maxTxPower )
-         maxTxPower = MIN_STA_PWR_CAP_DBM;
-      else if(MAX_STA_PWR_CAP_DBM < (tPowerdBm) pLinkReq->MaxTxPower.maxTxPower &&
-              MAX_STA_PWR_CAP_DBM != pSessionEntry->maxTxPower )
-         maxTxPower = MAX_STA_PWR_CAP_DBM;
+      if( (MIN_STA_PWR_CAP_DBM <= pLinkReq->MaxTxPower.maxTxPower) &&
+         (MAX_STA_PWR_CAP_DBM >= pLinkReq->MaxTxPower.maxTxPower) )
+      {
+         LinkReport.txPower = pLinkReq->MaxTxPower.maxTxPower;
+      }
+      else if( MIN_STA_PWR_CAP_DBM > pLinkReq->MaxTxPower.maxTxPower )
+      {
+         LinkReport.txPower = MIN_STA_PWR_CAP_DBM;
+      }
+      else if( MAX_STA_PWR_CAP_DBM < pLinkReq->MaxTxPower.maxTxPower )
+      {
+         LinkReport.txPower = MAX_STA_PWR_CAP_DBM;
+      }
 
-      if( (maxTxPower != pSessionEntry->maxTxPower) &&
+      if( (LinkReport.txPower != (uint8)(pSessionEntry->maxTxPower)) &&
           (eSIR_SUCCESS == rrmSendSetMaxTxPowerReq ( pMac,
-                                                     pSessionEntry->maxTxPower,
+                                                     (tPowerdBm)(LinkReport.txPower),
                                                      pSessionEntry)) )
       {
-         pSessionEntry->maxTxPower = maxTxPower;
+         pSessionEntry->maxTxPower = (tPowerdBm)(LinkReport.txPower);
       }
    }
+   else
+   {
+      if( (MIN_STA_PWR_CAP_DBM <= (uint8)(pSessionEntry->maxTxPower)) &&
+         (MAX_STA_PWR_CAP_DBM >= (uint8)(pSessionEntry->maxTxPower)) )
+      {
+         LinkReport.txPower = (uint8)(pSessionEntry->maxTxPower);
+      }
+      else if( MIN_STA_PWR_CAP_DBM > (uint8)(pSessionEntry->maxTxPower) )
+      {
+         LinkReport.txPower = MIN_STA_PWR_CAP_DBM;
+      }
+      else if( MAX_STA_PWR_CAP_DBM < (uint8)(pSessionEntry->maxTxPower) )
+      {
+         LinkReport.txPower = MAX_STA_PWR_CAP_DBM;
+      }
+   }
+   PELOGW(limLog( pMac,
+                  LOGW,
+                  FL(" maxTx power in link request is not same as local... "
+                     " Local = %d Link Report TxPower = %d"),
+                  pSessionEntry->maxTxPower,
+                  LinkReport.txPower );)
 
    LinkReport.dialogToken = pLinkReq->DialogToken.token;
-   if( (MIN_STA_PWR_CAP_DBM <= pSessionEntry->maxTxPower) &&
-       (MAX_STA_PWR_CAP_DBM >= pSessionEntry->maxTxPower) )
-      LinkReport.txPower = pSessionEntry->maxTxPower;
    LinkReport.rxAntenna = 0;
    LinkReport.txAntenna = 0;
    currentRSSI = WDA_GET_RX_RSSI_DB(pRxPacketInfo);
 
 #if defined WLAN_VOWIFI_DEBUG
-   PELOGE(limLog( pMac, LOGE, "Received Link report frame with %d", currentRSSI);)
+   PELOG1(limLog( pMac, LOG1, "Received Link report frame with %d", currentRSSI);)
 #endif
 
    // 2008 11k spec reference: 18.4.8.5 RCPI Measurement
@@ -341,7 +363,7 @@
    LinkReport.rsni = WDA_GET_RX_SNR(pRxPacketInfo); 
    
 #if defined WLAN_VOWIFI_DEBUG
-   PELOGE(limLog( pMac, LOGE, "Sending Link report frame");)
+   PELOG1(limLog( pMac, LOG1, "Sending Link report frame");)
 #endif
    return limSendLinkReportActionFrame( pMac, &LinkReport, pHdr->sa, pSessionEntry );