diff options
| author | Varun Reddy Yeturu <vyeturu@qca.qualcomm.com> | 2014-08-23 21:05:06 -0700 |
|---|---|---|
| committer | AnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com> | 2014-08-27 14:45:00 +0530 |
| commit | 35ebd5f3d90b4fdf9b853176f54f9da9f3d267c2 (patch) | |
| tree | ee8d329c26689726fd84c3e5a60e626dbb2d9eb3 | |
| parent | 9232e6e8d364bb2de952721aaaaf7113f410afc9 (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.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 3 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiScan.c | 15 |
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, |
