summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGanesh Kondabattini <ganeshk@qti.qualcomm.com>2013-10-02 11:12:53 +0530
committerMadan Mohan Koyyalamudi <mkoyyala@qca.qualcomm.com>2013-10-23 20:05:00 -0700
commitd395614d38d1145980a97c35fe96461fbca6e9bb (patch)
treeeefa51d2f8530a8f70f90fe2fe4a93f3118f7646
parent261ea7a9839eef6fde4d01b8c6e8ce3aadbd1943 (diff)
SCAN-OFFLOAD: Update the list of scanned channels.
Update the list of scanned channels in the lim when it receives foriegn channel event on that particular channel. This information is given to SME and SME uses this information to ageout the scan results. Change-Id: I2b629531213773d16237126c0f91ab280c9e6b93 CRs-Fixed: 550165
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c5
-rw-r--r--CORE/SERVICES/WMA/wma.c1
-rw-r--r--CORE/VOSS/inc/vos_utils.h1
-rw-r--r--CORE/VOSS/src/vos_utils.c16
4 files changed, 23 insertions, 0 deletions
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
index 9231fa161741..95fa6b395637 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
@@ -60,6 +60,7 @@
#include <limFT.h>
#endif
#include "wlan_qct_wda.h"
+#include "vos_utils.h"
static void limHandleSmeJoinResult(tpAniSirGlobal, tSirResultCodes, tANI_U16,tpPESession);
static void limHandleSmeReaasocResult(tpAniSirGlobal, tSirResultCodes, tANI_U16, tpPESession);
@@ -4912,6 +4913,10 @@ void limProcessRxScanEvent(tpAniSirGlobal pMac, void *buf)
FL(" NULL pointer of gpLimRemainOnChanReq"));
}
}
+ else
+ {
+ limAddScanChannelInfo(pMac, vos_freq_to_chan(pScanEvent->chanFreq));
+ }
break;
case SCAN_EVENT_BSS_CHANNEL:
case SCAN_EVENT_DEQUEUED:
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 1e59e18791a4..a6bc51d5d1a1 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -2000,6 +2000,7 @@ VOS_STATUS wma_get_buf_start_scan_cmd(tp_wma_handle wma_handle,
/* TODO: handle all the other flags also */
cmd->notify_scan_events = WMI_SCAN_EVENT_STARTED |
WMI_SCAN_EVENT_START_FAILED |
+ WMI_SCAN_EVENT_FOREIGN_CHANNEL |
WMI_SCAN_EVENT_COMPLETED;
cmd->dwell_time_active = scan_req->maxChannelTime;
diff --git a/CORE/VOSS/inc/vos_utils.h b/CORE/VOSS/inc/vos_utils.h
index 48414751237a..123f5d7fe742 100644
--- a/CORE/VOSS/inc/vos_utils.h
+++ b/CORE/VOSS/inc/vos_utils.h
@@ -170,4 +170,5 @@ VOS_STATUS vos_decrypt_AES(v_U32_t cryptHandle, /* Handle */
v_U8_t *pKey); /* pointer to authentication key */
v_U32_t vos_chan_to_freq(v_U8_t chan);
+v_U8_t vos_freq_to_chan(v_U32_t freq);
#endif // #if !defined __VOSS_UTILS_H
diff --git a/CORE/VOSS/src/vos_utils.c b/CORE/VOSS/src/vos_utils.c
index b78aab21d6a9..8a43a429935b 100644
--- a/CORE/VOSS/src/vos_utils.c
+++ b/CORE/VOSS/src/vos_utils.c
@@ -714,3 +714,19 @@ v_U32_t vos_chan_to_freq(v_U8_t chan)
else
return VOS_5_GHZ_BASE_FREQ + chan * VOS_CHAN_SPACING_5MHZ;
}
+
+v_U8_t vos_freq_to_chan(v_U32_t freq)
+{
+ v_U8_t chan;
+
+ if (freq > VOS_24_GHZ_BASE_FREQ && freq < VOS_CHAN_14_FREQ)
+ chan = ((freq - VOS_24_GHZ_BASE_FREQ)/VOS_CHAN_SPACING_5MHZ);
+ else if (freq == VOS_CHAN_14_FREQ)
+ chan = VOS_24_GHZ_CHANNEL_14;
+ else if ((freq > VOS_24_GHZ_BASE_FREQ) && (freq < VOS_5_GHZ_BASE_FREQ))
+ chan = (((freq - VOS_CHAN_15_FREQ)/VOS_CHAN_SPACING_20MHZ) +
+ VOS_24_GHZ_CHANNEL_15);
+ else
+ chan = (freq - VOS_5_GHZ_BASE_FREQ)/VOS_CHAN_SPACING_5MHZ;
+ return chan;
+}