wlan: (2)Send RSSI value along with threshold Notification
Right now, we only send indications from Riva to host to inform about
threshold getting crossed but we don't send the actual RSSI value.
As a enhancement to LFR feature and debugging, we are required to
introduce this change to send actual RSSI value along with the
notification
Change-Id: Ib19b1b2f01de6ab2d2816adcda2f20f211ccf1f3
CR-Fixed: 429934
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 4d05d7a..f8bf4e8 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -2783,9 +2783,11 @@
tANI_U32 bRssiThres2NegCross : 1;
tANI_U32 bRssiThres3PosCross : 1;
tANI_U32 bRssiThres3NegCross : 1;
- tANI_U32 bReserved : 26;
+ v_S7_t avgRssi : 8;
+ tANI_U32 bReserved : 18;
#else
- tANI_U32 bReserved : 26;
+ tANI_U32 bReserved : 18;
+ v_S7_t avgRssi : 8;
tANI_U32 bRssiThres3NegCross : 1;
tANI_U32 bRssiThres3PosCross : 1;
tANI_U32 bRssiThres2NegCross : 1;
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index fa2ecb0..0fff1d8 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -8097,7 +8097,7 @@
if(NULL != pTlRssiInd->tlCallback)
{
((WLANTL_RSSICrossThresholdCBType)(pTlRssiInd->tlCallback))
- (pTlRssiInd->pAdapter, pTlRssiInd->rssiNotification, pTlRssiInd->pUserCtxt);
+ (pTlRssiInd->pAdapter, pTlRssiInd->rssiNotification, pTlRssiInd->pUserCtxt, pTlRssiInd->avgRssi);
}
else
{
diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c
index 4094fd4..1449f86 100644
--- a/CORE/SME/src/csr/csrNeighborRoam.c
+++ b/CORE/SME/src/csr/csrNeighborRoam.c
@@ -81,9 +81,11 @@
static void csrNeighborRoamDeregAllRssiIndication(tpAniSirGlobal pMac);
VOS_STATUS csrNeighborRoamNeighborLookupUPCallback (v_PVOID_t pAdapter, v_U8_t rssiNotification,
- v_PVOID_t pUserCtxt);
+ v_PVOID_t pUserCtxt,
+ v_S7_t avgRssi);
VOS_STATUS csrNeighborRoamNeighborLookupDOWNCallback (v_PVOID_t pAdapter, v_U8_t rssiNotification,
- v_PVOID_t pUserCtxt);
+ v_PVOID_t pUserCtxt,
+ v_S7_t avgRssi);
void csrNeighborRoamRRMNeighborReportResult(void *context, VOS_STATUS vosStatus);
eHalStatus csrRoamCopyConnectedProfile(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pDstProfile );
@@ -299,14 +301,16 @@
---------------------------------------------------------------------------*/
VOS_STATUS csrNeighborRoamReassocIndCallback(v_PVOID_t pAdapter,
v_U8_t trafficStatus,
- v_PVOID_t pUserCtxt)
+ v_PVOID_t pUserCtxt,
+ v_S7_t avgRssi)
{
tpAniSirGlobal pMac = PMAC_STRUCT( pUserCtxt );
tpCsrNeighborRoamControlInfo pNeighborRoamInfo = &pMac->roam.neighborRoamInfo;
VOS_STATUS vosStatus = VOS_STATUS_SUCCESS;
- NEIGHBOR_ROAM_DEBUG(pMac, LOG2, FL("Deregistering DOWN event reassoc callback with TL. RSSI = %d"), pNeighborRoamInfo->cfgParams.neighborReassocThreshold * (-1));
-
+ NEIGHBOR_ROAM_DEBUG(pMac, LOG2, FL("Deregistering DOWN event reassoc callback with TL. Threshold RSSI = %d Reported RSSI = %d"),
+ pNeighborRoamInfo->cfgParams.neighborReassocThreshold * (-1),
+ avgRssi);
vosStatus = WLANTL_DeregRSSIIndicationCB(pMac->roam.gVosContext, (v_S7_t)pNeighborRoamInfo->cfgParams.neighborReassocThreshold * (-1),
WLANTL_HO_THRESHOLD_DOWN,
@@ -319,8 +323,8 @@
smsLog(pMac, LOGW, FL(" Couldn't deregister csrNeighborRoamReassocIndCallback with TL: Status = %d\n"), vosStatus);
}
- NEIGHBOR_ROAM_DEBUG(pMac, LOG2, FL("Rcvd reassoc notification-deregister UP indication. RSSI = %d"),
- NEIGHBOR_ROAM_LOOKUP_UP_THRESHOLD * (-1));
+ NEIGHBOR_ROAM_DEBUG(pMac, LOG2, FL("Rcvd reassoc notification-deregister UP indication. Threshold RSSI = %d Reported RSSI = %d"),
+ NEIGHBOR_ROAM_LOOKUP_UP_THRESHOLD * (-1), avgRssi);
vosStatus = WLANTL_DeregRSSIIndicationCB(pMac->roam.gVosContext,
(v_S7_t)NEIGHBOR_ROAM_LOOKUP_UP_THRESHOLD * (-1),
WLANTL_HO_THRESHOLD_UP,
@@ -2784,13 +2788,16 @@
---------------------------------------------------------------------------*/
VOS_STATUS csrNeighborRoamNeighborLookupUPCallback (v_PVOID_t pAdapter, v_U8_t rssiNotification,
- v_PVOID_t pUserCtxt)
+ v_PVOID_t pUserCtxt,
+ v_S7_t avgRssi)
{
tpAniSirGlobal pMac = PMAC_STRUCT( pUserCtxt );
tpCsrNeighborRoamControlInfo pNeighborRoamInfo = &pMac->roam.neighborRoamInfo;
VOS_STATUS vosStatus = eHAL_STATUS_SUCCESS;
- NEIGHBOR_ROAM_DEBUG(pMac, LOGW, FL("Neighbor Lookup UP indication callback called with notification %d"), rssiNotification);
+ NEIGHBOR_ROAM_DEBUG(pMac, LOGW, FL("Neighbor Lookup UP indication callback called with notification %d Reported RSSI = %d"),
+ rssiNotification,
+ avgRssi);
if(!csrIsConnStateConnectedInfra(pMac, pNeighborRoamInfo->csrSessionId))
{
@@ -2818,13 +2825,16 @@
---------------------------------------------------------------------------*/
VOS_STATUS csrNeighborRoamNeighborLookupDOWNCallback (v_PVOID_t pAdapter, v_U8_t rssiNotification,
- v_PVOID_t pUserCtxt)
+ v_PVOID_t pUserCtxt,
+ v_S7_t avgRssi)
{
tpAniSirGlobal pMac = PMAC_STRUCT( pUserCtxt );
tpCsrNeighborRoamControlInfo pNeighborRoamInfo = &pMac->roam.neighborRoamInfo;
VOS_STATUS vosStatus = eHAL_STATUS_SUCCESS;
- NEIGHBOR_ROAM_DEBUG(pMac, LOGW, FL("Neighbor Lookup DOWN indication callback called with notification %d"), rssiNotification);
+ NEIGHBOR_ROAM_DEBUG(pMac, LOGW, FL("Neighbor Lookup DOWN indication callback called with notification %d Reported RSSI = %d"),
+ rssiNotification,
+ avgRssi);
if(!csrIsConnStateConnectedInfra(pMac, pNeighborRoamInfo->csrSessionId))
{
diff --git a/CORE/TL/inc/wlan_qct_tl.h b/CORE/TL/inc/wlan_qct_tl.h
index d6073bf..1e1efbd 100644
--- a/CORE/TL/inc/wlan_qct_tl.h
+++ b/CORE/TL/inc/wlan_qct_tl.h
@@ -784,7 +784,8 @@
(
v_PVOID_t pAdapter,
v_U8_t rssiNotification,
- v_PVOID_t pUserCtxt
+ v_PVOID_t pUserCtxt,
+ v_S7_t avgRssi
);
typedef struct
@@ -794,6 +795,7 @@
v_U16_t msgLen; // length of the entire request
v_U8_t sessionId; //sme Session Id
v_U8_t rssiNotification;
+ v_U8_t avgRssi;
v_PVOID_t tlCallback;
v_PVOID_t pAdapter;
v_PVOID_t pUserCtxt;
diff --git a/CORE/TL/src/wlan_qct_tl_hosupport.c b/CORE/TL/src/wlan_qct_tl_hosupport.c
index 1cc9c5a..79c7ef1 100644
--- a/CORE/TL/src/wlan_qct_tl_hosupport.c
+++ b/CORE/TL/src/wlan_qct_tl_hosupport.c
@@ -797,6 +797,7 @@
v_U32_t isSet;
v_U8_t idx, sIdx;
+
if(NULL == tlCtxt)
{
TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,"Invalid TL handle"));
@@ -894,10 +895,11 @@
{
cbFunction = hoSupport->registeredInd[idx].crossCBFunction[sIdx];
usrCtxt = hoSupport->registeredInd[idx].usrCtxt[sIdx];
+
evtType = WLANTL_HO_THRESHOLD_DOWN;
TLLOG1(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,"Trigger Event %d, region index %d", hoSupport->registeredInd[idx].triggerEvent[sIdx], idx));
currentHO->regionNumber = newRegionNumber;
- status = cbFunction(pAdapter, evtType, usrCtxt);
+ status = cbFunction(pAdapter, evtType, usrCtxt, pRSSINotification->avgRssi);
}
}
}
@@ -918,10 +920,11 @@
{
cbFunction = hoSupport->registeredInd[idx].crossCBFunction[sIdx];
usrCtxt = hoSupport->registeredInd[idx].usrCtxt[sIdx];
+
evtType = WLANTL_HO_THRESHOLD_UP;
TLLOG1(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,"Trigger Event %d, region index %d", hoSupport->registeredInd[idx].triggerEvent[sIdx], idx));
currentHO->regionNumber = newRegionNumber;
- status = cbFunction(pAdapter, evtType, usrCtxt);
+ status = cbFunction(pAdapter, evtType, usrCtxt, pRSSINotification->avgRssi);
}
}
}
@@ -1017,9 +1020,10 @@
{
cbFunction = hoSupport->registeredInd[idx].crossCBFunction[sIdx];
usrCtxt = hoSupport->registeredInd[idx].usrCtxt[sIdx];
+
evtType = WLANTL_HO_THRESHOLD_DOWN;
TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,"Trigger Event %d, region index %d", hoSupport->registeredInd[idx].triggerEvent[sIdx], idx));
- status = WLANTL_HSSerializeTlIndication(pAdapter, evtType, usrCtxt, cbFunction);
+ status = WLANTL_HSSerializeTlIndication(pAdapter, evtType, usrCtxt, cbFunction, currentRSSI);
}
}
}
@@ -1039,9 +1043,10 @@
{
cbFunction = hoSupport->registeredInd[idx - 1].crossCBFunction[sIdx];
usrCtxt = hoSupport->registeredInd[idx - 1].usrCtxt[sIdx];
+
evtType = WLANTL_HO_THRESHOLD_UP;
TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,"Trigger Event %d, region index %d", hoSupport->registeredInd[idx - 1].triggerEvent[sIdx], idx - 1));
- status = WLANTL_HSSerializeTlIndication(pAdapter, evtType, usrCtxt, cbFunction);
+ status = WLANTL_HSSerializeTlIndication(pAdapter, evtType, usrCtxt, cbFunction, currentRSSI);
}
}
}
@@ -1385,7 +1390,8 @@
if((WLANTL_HO_THRESHOLD_DOWN == triggerEvent) || (WLANTL_HO_THRESHOLD_CROSS == triggerEvent))
{
TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,"Registered RSSI value larger than Current RSSI, and DOWN event, Send Notification"));
- WLANTL_HSSerializeTlIndication(pAdapter, WLANTL_HO_THRESHOLD_DOWN, usrCtxt, crossCBFunction);
+ WLANTL_HSSerializeTlIndication(pAdapter, WLANTL_HO_THRESHOLD_DOWN, usrCtxt, crossCBFunction,
+ hoSupport->registeredInd[currentHO->regionNumber].rssiValue);
}
}
else if((currentHO->regionNumber < (currentHO->numThreshold - 1)) &&
@@ -1414,14 +1420,14 @@
((WLANTL_HO_THRESHOLD_DOWN == triggerEvent) || (WLANTL_HO_THRESHOLD_CROSS == triggerEvent)))
{
TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,"Registered RSSI value larger than Current RSSI, and DOWN event, Send Notification"));
- WLANTL_HSSerializeTlIndication(pAdapter, WLANTL_HO_THRESHOLD_DOWN, usrCtxt, crossCBFunction);
+ WLANTL_HSSerializeTlIndication(pAdapter, WLANTL_HO_THRESHOLD_DOWN, usrCtxt, crossCBFunction, currentHO->historyRSSI);
}
else if((VOS_FALSE == tlCtxt->isBMPS) &&
(rssiValue < currentHO->historyRSSI) && (0 != currentHO->historyRSSI) &&
((WLANTL_HO_THRESHOLD_UP == triggerEvent) || (WLANTL_HO_THRESHOLD_CROSS == triggerEvent)))
{
TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,"Registered RSSI value smaller than Current RSSI, and UP event, Send Notification"));
- WLANTL_HSSerializeTlIndication(pAdapter, WLANTL_HO_THRESHOLD_UP, usrCtxt, crossCBFunction);
+ WLANTL_HSSerializeTlIndication(pAdapter, WLANTL_HO_THRESHOLD_UP, usrCtxt, crossCBFunction, currentHO->historyRSSI);
}
if((VOS_TRUE == tlCtxt->isBMPS) || (IS_ACTIVEMODE_OFFLOAD_FEATURE_ENABLE))
@@ -1861,7 +1867,8 @@
v_PVOID_t pAdapter,
v_U8_t rssiNotification,
v_PVOID_t pUserCtxt,
- WLANTL_RSSICrossThresholdCBType cbFunction
+ WLANTL_RSSICrossThresholdCBType cbFunction,
+ v_U8_t avgRssi
)
{
VOS_STATUS status = VOS_STATUS_SUCCESS;
@@ -1881,6 +1888,7 @@
pMsg->pAdapter = pAdapter;
pMsg->pUserCtxt = pUserCtxt;
pMsg->rssiNotification = rssiNotification;
+ pMsg->avgRssi = avgRssi;
pMsg->tlCallback = cbFunction;
diff --git a/CORE/TL/src/wlan_qct_tl_hosupport.h b/CORE/TL/src/wlan_qct_tl_hosupport.h
index f8fa116..4a4aa43 100644
--- a/CORE/TL/src/wlan_qct_tl_hosupport.h
+++ b/CORE/TL/src/wlan_qct_tl_hosupport.h
@@ -274,7 +274,8 @@
v_PVOID_t pAdapter,
v_U8_t rssiNotification,
v_PVOID_t pUserCtxt,
- WLANTL_RSSICrossThresholdCBType cbFunction
+ WLANTL_RSSICrossThresholdCBType cbFunction,
+ v_U8_t avgRssi
);
/*==========================================================================
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index a454a40..dbfc8b0 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -1403,7 +1403,6 @@
tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ sizeof(tHalCfg) + tlvStruct->length) ;
-
wdiStartParams->usConfigBufferLen = (tANI_U8 *)tlvStruct - tlvStructStart ;
#ifdef WLAN_DEBUG
{
@@ -10066,6 +10065,8 @@
wdiLowLevelInd->wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross;
rssiNotification.bRssiThres3PosCross =
wdiLowLevelInd->wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross;
+ rssiNotification.avgRssi = (v_S7_t)
+ ((-1)*wdiLowLevelInd->wdiIndicationData.wdiLowRSSIInfo.avgRssi);
WLANTL_BMPSRSSIRegionChangedNotification(
pWDA->pVosContext,
&rssiNotification);
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h
index cc47e02..71f256c 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h
@@ -394,7 +394,8 @@
/*Negative crossing of Rssi Thresh3*/
wpt_uint32 bRssiThres3NegCross : 1;
- wpt_uint32 bReserved : 26;
+ wpt_uint32 avgRssi : 8;
+ wpt_uint32 bReserved : 18;
}WDI_LowRSSIThIndType;
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 73efcf5..bf3fc84 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -6670,7 +6670,6 @@
wpalMutexRelease(&pWDICtx->wptMutex);
#endif
-
if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
{
/*This is temporary fix.
@@ -18184,6 +18183,8 @@
halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
+ wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
+ halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
/*Notify UMAC*/
pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );