summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Girigowda <sgirigow@qca.qualcomm.com>2014-07-21 13:12:31 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-07-25 10:36:55 -0700
commitd8ac830feae7b52ff7de720f26a81d2a8b8d34df (patch)
treee7284ab696d7f92a4efd962de7097dd4d2ee680b
parent96757b2e2b6a1da744dcfc88178349a9d83493bb (diff)
qcacld: WMA_TLSHIM: Roaming sessionization
Changes required to address STA+STA roaming requirements Change-Id: I6d3a592c129a63f51d7b6ff7854e42acb37c4bd1 CRs-Fixed: 683121
-rw-r--r--CORE/CLD_TXRX/TLSHIM/tl_shim.c1
-rw-r--r--CORE/SERVICES/WMA/wma.c16
-rw-r--r--CORE/WDA/inc/wlan_qct_wda.h4
-rw-r--r--CORE/WDI/DP/inc/wlan_qct_wdi_ds.h3
4 files changed, 19 insertions, 5 deletions
diff --git a/CORE/CLD_TXRX/TLSHIM/tl_shim.c b/CORE/CLD_TXRX/TLSHIM/tl_shim.c
index 08856ba4c4fb..517c1a6bff3e 100644
--- a/CORE/CLD_TXRX/TLSHIM/tl_shim.c
+++ b/CORE/CLD_TXRX/TLSHIM/tl_shim.c
@@ -622,6 +622,7 @@ static int tlshim_mgmt_rx_process(void *context, u_int8_t *data,
* was found.
*/
rx_pkt->pkt_meta.roamCandidateInd = saved_beacon ? 1 : 0;
+ rx_pkt->pkt_meta.sessionId = vdev_id;
/* Why not just use rx_event->hdr.buf_len? */
wbuf = adf_nbuf_alloc(NULL,
roundup(hdr->buf_len, 4),
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 2ce7f2ebb2e9..f3ea39b0d01c 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -7915,9 +7915,16 @@ VOS_STATUS wma_process_roam_scan_req(tp_wma_handle wma_handle,
wma_roam_scan_offload_end_connect(wma_handle);
if (roam_req->StartScanReason == REASON_OS_REQUESTED_ROAMING_NOW) {
vos_msg_t vosMsg;
+ tSirRoamOffloadScanRsp *scan_offload_rsp;
+ scan_offload_rsp = vos_mem_malloc(sizeof(*scan_offload_rsp));
+ if (!scan_offload_rsp) {
+ WMA_LOGE("%s: Alloc failed for scan_offload_rsp", __func__);
+ return VOS_STATUS_E_NOMEM;
+ }
vosMsg.type = eWNI_SME_ROAM_SCAN_OFFLOAD_RSP;
- vosMsg.bodyptr = NULL;
- vosMsg.bodyval = roam_req->StartScanReason;
+ scan_offload_rsp->sessionId = roam_req->sessionId;
+ scan_offload_rsp->reason = roam_req->StartScanReason;
+ vosMsg.bodyptr = scan_offload_rsp;
/*
* Since REASSOC request is processed in Roam_Scan_Offload_Rsp
* post a dummy rsp msg back to SME with proper reason code.
@@ -15387,7 +15394,7 @@ static void wma_config_plm(tp_wma_handle wma, tpSirPlmReq plm)
* check for PNO completion (by checking NLO match event) and post PNO
* completion back to SME if PNO operation is completed successfully.
*/
-void wma_scan_cache_updated_ind(tp_wma_handle wma)
+void wma_scan_cache_updated_ind(tp_wma_handle wma, u_int8_t sessionId)
{
tSirPrefNetworkFoundInd *nw_found_ind;
VOS_STATUS status;
@@ -15417,6 +15424,7 @@ void wma_scan_cache_updated_ind(tp_wma_handle wma)
nw_found_ind->mesgType = eWNI_SME_PREF_NETWORK_FOUND_IND;
nw_found_ind->mesgLen = len;
+ nw_found_ind->sessionId = sessionId;
vos_msg.type = eWNI_SME_PREF_NETWORK_FOUND_IND;
vos_msg.bodyptr = (void *) nw_found_ind;
@@ -20708,7 +20716,7 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg)
break;
case WDA_SME_SCAN_CACHE_UPDATED:
- wma_scan_cache_updated_ind(wma_handle);
+ wma_scan_cache_updated_ind(wma_handle, msg->bodyval);
break;
#endif
#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
index 93a0791fb770..8961ea322dba 100644
--- a/CORE/WDA/inc/wlan_qct_wda.h
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -678,6 +678,8 @@ tANI_U8 WDA_MapChannel(tANI_U8);
(((t_packetmeta *)pRxMeta)->offloadScanLearn)
#define WDA_GET_ROAMCANDIDATEIND(pRxMeta) \
(((t_packetmeta *)pRxMeta)->roamCandidateInd)
+#define WDA_GET_SESSIONID(pRxMeta) \
+ (((t_packetmeta *)pRxMeta)->sessionId)
#endif
@@ -840,6 +842,8 @@ tANI_U8 WDA_MapChannel(tANI_U8);
# define WDA_GET_OFFLOADSCANLEARN(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->offloadScanLearn)
/* WDA_GET_ROAMCANDIDATEIND **************************************************/
# define WDA_GET_ROAMCANDIDATEIND(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->roamCandidateInd)
+# define WDA_GET_SESSIONID(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->sessionId)
#endif
/* WDA_GET_RX_RSSI_DB ********************************************************/
// Volans RF
diff --git a/CORE/WDI/DP/inc/wlan_qct_wdi_ds.h b/CORE/WDI/DP/inc/wlan_qct_wdi_ds.h
index 141c2dc508a6..fcd868fceaa8 100644
--- a/CORE/WDI/DP/inc/wlan_qct_wdi_ds.h
+++ b/CORE/WDI/DP/inc/wlan_qct_wdi_ds.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2013 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2014 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -154,6 +154,7 @@ typedef struct
wpt_uint32 offloadScanLearn;
wpt_uint32 roamCandidateInd;
#endif
+ wpt_uint32 sessionId;
} WDI_DS_RxMetaInfoType;
typedef struct sPktMetaInfo