summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVarun Reddy Yeturu <vyeturu@qca.qualcomm.com>2014-08-23 21:05:06 -0700
committerAnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com>2014-08-27 14:45:00 +0530
commit35ebd5f3d90b4fdf9b853176f54f9da9f3d267c2 (patch)
treeee8d329c26689726fd84c3e5a60e626dbb2d9eb3
parent9232e6e8d364bb2de952721aaaaf7113f410afc9 (diff)
wlan: qcacld: Channel Info in Roam Synch Indication
If DS Params and HT IE Info are not present in the probe response, then the channel info would need to be explicitly passed by the firmware to the host as part of Roam Synch Indication. The information thus retrieved from the firmware should be used to fill the information in the BSS Descriptor. Change-Id: I7f0caab1a52bf92d4c95290aa46bd33a977e7266 CRs-Fixed: 714313
-rw-r--r--CORE/MAC/inc/sirApi.h1
-rw-r--r--CORE/SERVICES/WMA/wma.c3
-rw-r--r--CORE/SME/src/csr/csrApiScan.c15
3 files changed, 14 insertions, 5 deletions
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 518b14431a80..c69e7bebaa22 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -4811,6 +4811,7 @@ typedef struct sSirSmeRoamOffloadSynchInd
tANI_U32 authStatus;
tANI_U8 rssi;
tANI_U8 roamReason;
+ tANI_U32 chan_freq;
} tSirSmeRoamOffloadSynchInd, *tpSirSmeRoamOffloadSynchInd;
typedef struct sSirSmeRoamOffloadSynchCnf
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 9d3ac4b13e02..fe104e6a1819 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -4681,6 +4681,7 @@ static int wma_roam_synch_event_handler(void *handle, u_int8_t *event, u_int32_t
tp_wma_handle wma = (tp_wma_handle)handle;
VOS_STATUS status;
vos_msg_t vos_msg;
+ wmi_channel *chan = NULL;
int size=0;
tSirSmeRoamOffloadSynchInd *pRoamOffloadSynchInd;
@@ -4733,6 +4734,8 @@ static int wma_roam_synch_event_handler(void *handle, u_int8_t *event, u_int32_t
vos_mem_copy(reassoc_rsp_ptr,
param_buf->reassoc_rsp_frame,
pRoamOffloadSynchInd->reassocRespLength);
+ chan = (wmi_channel *) param_buf->chan;
+ pRoamOffloadSynchInd->chan_freq = chan->mhz;
vos_msg.type = eWNI_SME_ROAM_OFFLOAD_SYNCH_IND;
vos_msg.bodyptr = (void *) pRoamOffloadSynchInd;
vos_msg.bodyval = 0;
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index 2bee76670762..23eac328d3df 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -8735,8 +8735,12 @@ eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac,
}
else
{
- pBssDescr->channelId = pParsedFrame->channelNumber;
+ /*If DS Params or HTIE is not present in the probe resp or beacon,
+ * then use the channel frequency provided by firmware to fill the
+ * channel in the BSS descriptor.*/
+ pBssDescr->channelId = vos_freq_to_chan(pRoamOffloadSynchInd->chan_freq);
}
+ pBssDescr->channelIdSelf = pBssDescr->channelId;
if ((pBssDescr->channelId > 0) && (pBssDescr->channelId < 15))
{
@@ -8780,12 +8784,13 @@ eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac,
vos_mem_copy((tANI_U8 *)pBssDescr->mdie, (tANI_U8 *)pParsedFrame->mdie, SIR_MDIE_SIZE);
}
- VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
"LFR3:%s:BssDescr Info:", __func__);
- VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
+ VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
pBssDescr->bssId, sizeof(tSirMacAddr));
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
- "chan= %d, rssi = %d",pBssDescr->channelId,pBssDescr->rssi);
+ "LFR3:chan = %d, rssi = %d",
+ pBssDescr->channelId, pBssDescr->rssi);
if (uLen)
{
@@ -8808,7 +8813,7 @@ eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac,
fDupBss = csrRemoveDupBssDescription(pMac,
&pScanResult->Result.BssDescriptor,
- pIesLocal, &tmpSsid, &timer, FALSE);
+ pIesLocal, &tmpSsid, &timer, TRUE);
if ( CSR_SCAN_IS_OVER_BSS_LIMIT(pMac) )
{
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,