blob: addb2c18f069eeb228d55a0b9b1159d8860ca311 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lamaa8e15a2014-02-11 23:30:06 -08002* Copyright (c) 2012-2014 Qualcomm Atheros, Inc.
3* All Rights Reserved.
4* Qualcomm Atheros Confidential and Proprietary.
5*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006
7/*===========================================================================
8
9 W L A N _ Q C T _ W D I. C
10
11 OVERVIEW:
12
Jeff Johnsone7245742012-09-05 17:12:55 -070013 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070014 Layer Interface.
15
Jeff Johnsone7245742012-09-05 17:12:55 -070016 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070017 MAC implementation that wishes to use the WLAN Device.
18
19 DEPENDENCIES:
20
21 Are listed for each API below.
22
23
Kiet Lamaa8e15a2014-02-11 23:30:06 -080024 Copyright (c) 2008 QUALCOMM Incorporated.
25 All Rights Reserved.
26 Qualcomm Confidential and Proprietary
Jeff Johnson295189b2012-06-20 16:38:30 -070027===========================================================================*/
28
29/*===========================================================================
30
31 EDIT HISTORY FOR FILE
32
33
34 This section contains comments describing changes made to the module.
35 Notice that changes are listed in reverse chronological order.
36
37
38 $Header$$DateTime$$Author$
39
40
41 when who what, where, why
42---------- --- --------------------------------------------------------
4310/05/11 hap Adding support for Keep Alive
442010-08-09 lti Created module
45
46===========================================================================*/
47
48/*----------------------------------------------------------------------------
49 * Include Files
50 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070051#include "wlan_qct_wdi.h"
52#include "wlan_qct_wdi_i.h"
53#include "wlan_qct_wdi_sta.h"
54#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070055
Jeff Johnsone7245742012-09-05 17:12:55 -070056#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070057
58#include "wlan_qct_pal_api.h"
59#include "wlan_qct_pal_type.h"
60#include "wlan_qct_pal_status.h"
61#include "wlan_qct_pal_sync.h"
62#include "wlan_qct_pal_msg.h"
63#include "wlan_qct_pal_trace.h"
64#include "wlan_qct_pal_packet.h"
65
Jeff Johnsone7245742012-09-05 17:12:55 -070066#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070067
68#include "wlan_hal_msg.h"
69
Jeff Johnson295189b2012-06-20 16:38:30 -070070#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070071#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070072
73/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070074 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070075 ===========================================================================*/
76#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
77
Jeff Johnsone7245742012-09-05 17:12:55 -070078#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
79#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
80
Yue Mad8cac142013-03-28 11:33:46 -070081#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -070082
83#ifdef FEATURE_WLAN_SCAN_PNO
84#define WDI_PNO_VERSION_MASK 0x8000
85#endif
86
87/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -070088static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -070089/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -070090static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -070091/* array of features supported. Need to add a new feature
92 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
93 */
94static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -080095 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -080096#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -070097 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -080098#else
99 ,FEATURE_NOT_SUPPORTED
100#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800101#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700102 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800103#else
104 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800105#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700106 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800107#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700108 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800109#else
110 ,FEATURE_NOT_SUPPORTED
111#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700112 ,FEATURE_NOT_SUPPORTED //9
113 ,FEATURE_NOT_SUPPORTED //10
114 ,FEATURE_NOT_SUPPORTED //11
115 ,FEATURE_NOT_SUPPORTED //12
116 ,FEATURE_NOT_SUPPORTED //13
117 ,FEATURE_NOT_SUPPORTED //14
118 ,FEATURE_NOT_SUPPORTED //15
119 ,FEATURE_NOT_SUPPORTED //16
120 ,FEATURE_NOT_SUPPORTED //17
121 ,FEATURE_NOT_SUPPORTED //18
122 ,FEATURE_NOT_SUPPORTED //19
123 ,FEATURE_NOT_SUPPORTED //20
124 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700125 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700126#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700127 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700128#else
129 ,FEATURE_NOT_SUPPORTED
130#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,FEATURE_NOT_SUPPORTED //24
132 ,FEATURE_NOT_SUPPORTED //25
133 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700134 ,FEATURE_NOT_SUPPORTED //27
135 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530136#ifdef FEATURE_WLAN_TDLS
137 ,ADVANCE_TDLS //29
138#else
139 ,FEATURE_NOT_SUPPORTED //29
140#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530141 ,FEATURE_NOT_SUPPORTED //30
142 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530143 ,EXTENDED_NSOFFLOAD_SLOT //32
144 ,CH_SWITCH_V1 //33
145 ,HT40_OBSS_SCAN //34
146 ,UPDATE_CHANNEL_LIST //35
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530147};
Jeff Johnson295189b2012-06-20 16:38:30 -0700148
149/*--------------------------------------------------------------------------
150 WLAN DAL State Machine
151 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700152WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700153{
154 /*WDI_INIT_ST*/
155 {{
156 WDI_MainStart, /*WDI_START_EVENT*/
157 NULL, /*WDI_STOP_EVENT*/
158 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
159 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
160 WDI_MainClose, /*WDI_CLOSE_EVENT*/
161 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
162 }},
163
164 /*WDI_STARTED_ST*/
165 {{
166 WDI_MainStartStarted, /*WDI_START_EVENT*/
167 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
168 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
169 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
170 NULL, /*WDI_CLOSE_EVENT*/
171 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
172 }},
173
174 /*WDI_STOPPED_ST*/
175 {{
176 WDI_MainStart, /*WDI_START_EVENT*/
177 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
178 NULL, /*WDI_REQUEST_EVENT*/
179 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
180 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700181 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700182 }},
183
184 /*WDI_BUSY_ST*/
185 {{
186 WDI_MainStartBusy, /*WDI_START_EVENT*/
187 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
188 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
189 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
190 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
191 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
192 }}
193};
194
Jeff Johnsone7245742012-09-05 17:12:55 -0700195/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700196 DAL Request Processing Array - the functions in this table will only be
197 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700198 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700199 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700200WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700201{
202 /*INIT*/
203 WDI_ProcessStartReq, /* WDI_START_REQ */
204 WDI_ProcessStopReq, /* WDI_STOP_REQ */
205 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
206
207 /*SCAN*/
208 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
209 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
210 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
211 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
212
213 /*ASSOCIATION*/
214 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
215 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
216 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
217 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
218 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
219
220 /* Security */
221 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
222 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
223 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
224 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
225
226 /* QoS and BA APIs */
227 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
228 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
229 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
230 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
231 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
232
233 /* Miscellaneous Control APIs */
234 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
235 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
236 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
237 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
238 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
239
240 /*BA APIs*/
241 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
242 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
243
244 /*Beacon processing APIs*/
245 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
246 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
247
248 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
249 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
250 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
251 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700252 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700253 /* PowerSave APIs */
254 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
255 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
256 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
257 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
258 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
259 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
260 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
261 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
262 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
263 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
264 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
265 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
266 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
267 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
268 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
269 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
270 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
271 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
272 /*NV Download APIs*/
273 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
274 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
275 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
276#ifdef WLAN_FEATURE_VOWIFI_11R
277 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
278#else
279 NULL,
280#endif /* WLAN_FEATURE_VOWIFI_11R */
281 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
282 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700283 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700284
285#ifdef FEATURE_OEM_DATA_SUPPORT
286 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
287#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700288 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700289#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700290 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700291
292 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700293
294#ifdef FEATURE_WLAN_SCAN_PNO
295 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
296 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
297 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
298#else
299 NULL,
300 NULL,
301 NULL,
302#endif /* FEATURE_WLAN_SCAN_PNO */
303
304 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700305
Jeff Johnson295189b2012-06-20 16:38:30 -0700306#ifdef WLAN_FEATURE_PACKET_FILTERING
307 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700308 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700309 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700310 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700312 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700315#else
316 NULL,
317 NULL,
318 NULL,
319 NULL,
320#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700321 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700322 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
323 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
324
325 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
326#ifdef FEATURE_WLAN_CCX
327 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
328#else
329 NULL,
330#endif
331
332#ifdef WLAN_FEATURE_GTK_OFFLOAD
333 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
334 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
335#else
336 NULL,
337 NULL,
338#endif // WLAN_FEATURE_GTK_OFFLOAD
339
340 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
341 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700342#ifdef WLAN_FEATURE_11AC
343 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800344#else
345 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700346#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800347#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
348 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
349#else
schang86c22c42013-03-13 18:41:24 -0700350 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800351#endif
schang86c22c42013-03-13 18:41:24 -0700352 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700353#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700354 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700355#else
356 NULL,
357#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530358#ifdef FEATURE_WLAN_TDLS
359 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
360#else
361 NULL,
362#endif
Leo Chang9056f462013-08-01 19:21:11 -0700363#ifdef FEATURE_WLAN_LPHB
364 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
365#else
366 NULL,
367#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530368
369#ifdef FEATURE_WLAN_BATCH_SCAN
370 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
371#else
372 NULL,
373#endif /* FEATURE_WLAN_BATCH_SCAN */
374
Arif Hussaina5ebce02013-08-09 15:09:58 -0700375 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
schang86c22c42013-03-13 18:41:24 -0700376 /*-------------------------------------------------------------------------
377 Indications
378 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700379 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800380 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530381 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
382 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700383#ifdef WLAN_FEATURE_11W
384 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
385#else
386 NULL,
387#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700388 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
389 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530390#ifdef FEATURE_WLAN_BATCH_SCAN
391 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
392 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
393#else
394 NULL,
395 NULL,
396#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700397 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530398 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
399 WDI_ProcessHT40OBSSStopScanInd /*WDI_STOP_HT40_OBSS_SCAN_IND */
400
Jeff Johnson295189b2012-06-20 16:38:30 -0700401};
402
403
Jeff Johnsone7245742012-09-05 17:12:55 -0700404/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700405 DAL Request Processing Array - the functions in this table will only be
406 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700407 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700408 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700409WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700410{
411 /*INIT*/
412 WDI_ProcessStartRsp, /* WDI_START_RESP */
413 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
414 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
415
416 /*SCAN*/
417 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
418 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
419 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
420 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
421
422 /* ASSOCIATION*/
423 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
424 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
425 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
426 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
427 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
428
429 /* Security */
430 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
431 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
432 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
433 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
434
435 /* QoS and BA APIs */
436 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
437 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
438 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
439 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
440 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
441
442 /* Miscellaneous Control APIs */
443 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
444 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
445 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
446 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
447 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
448
449 /* BA APIs*/
450 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
451 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700452
Jeff Johnson295189b2012-06-20 16:38:30 -0700453 /* IBSS APIs*/
454 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
455 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
456
457 /*Soft AP APIs*/
458 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
459 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
460 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
461 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
462
463 /* PowerSave APIs */
464 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
465 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
466 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
467 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
468 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
469 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
470 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
471 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
472 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
473 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
474 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
475 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
476 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
477 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
478 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
479 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
480 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
481 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700482
Jeff Johnson295189b2012-06-20 16:38:30 -0700483
484 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
485
486 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
487 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
488#ifdef WLAN_FEATURE_VOWIFI_11R
489 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
490#else
491 NULL,
492#endif /* WLAN_FEATURE_VOWIFI_11R */
493 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
494 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700495#ifdef FEATURE_OEM_DATA_SUPPORT
496 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
497#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700498 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700499#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700500 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
501
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700503
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700505
Jeff Johnsone7245742012-09-05 17:12:55 -0700506 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#ifdef FEATURE_WLAN_SCAN_PNO
509 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
510 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
511 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
512#else
513 NULL,
514 NULL,
515 NULL,
516#endif // FEATURE_WLAN_SCAN_PNO
517
518 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
519
520 /*---------------------------------------------------------------------
521 Indications
522 ---------------------------------------------------------------------*/
523#ifdef WLAN_FEATURE_PACKET_FILTERING
524 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700525 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700526 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700527 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700528 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700529 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700530 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700532#else
533 NULL,
534 NULL,
535 NULL,
536 NULL,
537#endif // WLAN_FEATURE_PACKET_FILTERING
538
539 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
540 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
541
542 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
543#ifdef FEATURE_WLAN_CCX
544 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
545#else
546 NULL,
547#endif
548
549#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
551 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700552#else
553 NULL,
554 NULL,
555#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
557 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700558#ifdef WLAN_FEATURE_11AC
559 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700560#else
561 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700562#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800563#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
564 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
565#else
566 NULL,
567#endif
schang86c22c42013-03-13 18:41:24 -0700568 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700569#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700570 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700571#else
572 NULL,
573#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530574#ifdef FEATURE_WLAN_TDLS
575 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
576#else
577 NULL,
578#endif
Leo Chang9056f462013-08-01 19:21:11 -0700579#ifdef FEATURE_WLAN_LPHB
580 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
581#else
582 NULL,
583#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530584
585#ifdef FEATURE_WLAN_BATCH_SCAN
586 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
587#else
588 NULL,
589#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800590 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530591
Jeff Johnson295189b2012-06-20 16:38:30 -0700592 /*---------------------------------------------------------------------
593 Indications
594 ---------------------------------------------------------------------*/
595 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
596 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
597 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
598 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
599 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
600 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
601
602 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
603
604 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
605
Jeff Johnson295189b2012-06-20 16:38:30 -0700606 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700607
608#ifdef FEATURE_WLAN_SCAN_PNO
609 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
610#else
611 NULL,
612#endif // FEATURE_WLAN_SCAN_PNO
613
614#ifdef WLAN_WAKEUP_EVENTS
615 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
616#else // WLAN_WAKEUP_EVENTS
617 NULL,
618#endif // WLAN_WAKEUP_EVENTS
619
620 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800621
Viral Modid86bde22012-12-10 13:09:21 -0800622 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530623#ifdef FEATURE_WLAN_TDLS
624 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
625#else
626 NULL,
627#endif
Leo Chang9056f462013-08-01 19:21:11 -0700628
629#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700630 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700631#else
632 NULL,
633#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700634
635 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700636
637 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530638
639#ifdef FEATURE_WLAN_BATCH_SCAN
640 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
641#else
642 NULL,
643#endif
644
Leo Chang0b0e45a2013-12-15 15:18:55 -0800645#ifdef FEATURE_WLAN_CH_AVOID
646 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
647#else
648 NULL,
649#endif /* FEATURE_WLAN_CH_AVOID */
650
Jeff Johnson295189b2012-06-20 16:38:30 -0700651};
652
653
Jeff Johnsone7245742012-09-05 17:12:55 -0700654/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700655 WLAN DAL Global Control Block
656 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700657WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700658static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
659
Jeff Johnsone7245742012-09-05 17:12:55 -0700660const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700661
662/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700663WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700664void* WDI_GET_PAL_CTX( void )
665{
Jeff Johnsone7245742012-09-05 17:12:55 -0700666 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700667}/*WDI_GET_PAL_CTX*/
668
Jeff Johnsone7245742012-09-05 17:12:55 -0700669/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700670 Helper inline converters
671 ============================================================================*/
672/*Convert WDI driver type into HAL driver type*/
673WPT_STATIC WPT_INLINE WDI_Status
674WDI_HAL_2_WDI_STATUS
675(
676 eHalStatus halStatus
677);
678
679/*Convert WDI request type into HAL request type*/
680WPT_STATIC WPT_INLINE tHalHostMsgType
681WDI_2_HAL_REQ_TYPE
682(
683 WDI_RequestEnumType wdiReqType
684);
685
686/*Convert WDI response type into HAL response type*/
687WPT_STATIC WPT_INLINE WDI_ResponseEnumType
688HAL_2_WDI_RSP_TYPE
689(
690 tHalHostMsgType halMsg
691);
692
693/*Convert WDI driver type into HAL driver type*/
694WPT_STATIC WPT_INLINE tDriverType
695WDI_2_HAL_DRV_TYPE
696(
697 WDI_DriverType wdiDriverType
698);
699
700/*Convert WDI stop reason into HAL stop reason*/
701WPT_STATIC WPT_INLINE tHalStopType
702WDI_2_HAL_STOP_REASON
703(
704 WDI_StopType wdiStopType
705);
706
707/*Convert WDI scan mode type into HAL scan mode type*/
708WPT_STATIC WPT_INLINE eHalSysMode
709WDI_2_HAL_SCAN_MODE
710(
711 WDI_ScanMode wdiScanMode
712);
713
714/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700715WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700716WDI_2_HAL_SEC_CH_OFFSET
717(
718 WDI_HTSecondaryChannelOffset wdiSecChOffset
719);
720
721/*Convert WDI BSS type into HAL BSS type*/
722WPT_STATIC WPT_INLINE tSirBssType
723WDI_2_HAL_BSS_TYPE
724(
725 WDI_BssType wdiBSSType
726);
727
728/*Convert WDI NW type into HAL NW type*/
729WPT_STATIC WPT_INLINE tSirNwType
730WDI_2_HAL_NW_TYPE
731(
732 WDI_NwType wdiNWType
733);
734
735/*Convert WDI chanel bonding type into HAL cb type*/
736WPT_STATIC WPT_INLINE ePhyChanBondState
737WDI_2_HAL_CB_STATE
738(
739 WDI_PhyChanBondState wdiCbState
740);
741
742/*Convert WDI chanel bonding type into HAL cb type*/
743WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
744WDI_2_HAL_HT_OPER_MODE
745(
746 WDI_HTOperatingMode wdiHTOperMode
747);
748
749/*Convert WDI mimo PS type into HAL mimo PS type*/
750WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
751WDI_2_HAL_MIMO_PS
752(
753 WDI_HTMIMOPowerSaveState wdiHTOperMode
754);
755
756/*Convert WDI ENC type into HAL ENC type*/
757WPT_STATIC WPT_INLINE tAniEdType
758WDI_2_HAL_ENC_TYPE
759(
760 WDI_EncryptType wdiEncType
761);
762
763/*Convert WDI WEP type into HAL WEP type*/
764WPT_STATIC WPT_INLINE tAniWepType
765WDI_2_HAL_WEP_TYPE
766(
767 WDI_WepType wdiWEPType
768);
769
770/*Convert WDI Link State into HAL Link State*/
771WPT_STATIC WPT_INLINE tSirLinkState
772WDI_2_HAL_LINK_STATE
773(
774 WDI_LinkStateType wdiLinkState
775);
776
Jeff Johnsone7245742012-09-05 17:12:55 -0700777/*Translate a STA Context from WDI into HAL*/
778WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700779void
780WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700781(
Jeff Johnson295189b2012-06-20 16:38:30 -0700782 tConfigStaParams* phalConfigSta,
783 WDI_ConfigStaReqInfoType* pwdiConfigSta
784);
Jeff Johnsone7245742012-09-05 17:12:55 -0700785
786/*Translate a Rate set info from WDI into HAL*/
787WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700788WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700789(
Jeff Johnson295189b2012-06-20 16:38:30 -0700790 tSirMacRateSet* pHalRateSet,
791 WDI_RateSet* pwdiRateSet
792);
793
794/*Translate an EDCA Parameter Record from WDI into HAL*/
795WPT_STATIC WPT_INLINE void
796WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700797(
Jeff Johnson295189b2012-06-20 16:38:30 -0700798 tSirMacEdcaParamRecord* phalEdcaParam,
799 WDI_EdcaParamRecord* pWDIEdcaParam
800);
801
802/*Copy a management frame header from WDI fmt into HAL fmt*/
803WPT_STATIC WPT_INLINE void
804WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
805(
806 tSirMacMgmtHdr* pmacMgmtHdr,
807 WDI_MacMgmtHdr* pwdiMacMgmtHdr
808);
809
810/*Copy config bss parameters from WDI fmt into HAL fmt*/
811WPT_STATIC WPT_INLINE void
812WDI_CopyWDIConfigBSSToHALConfigBSS
813(
814 tConfigBssParams* phalConfigBSS,
815 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
816);
817
Jeff Johnsone7245742012-09-05 17:12:55 -0700818/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700819 pointed to by user data */
820WPT_STATIC WPT_INLINE void
821WDI_ExtractRequestCBFromEvent
822(
823 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700824 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700825 void** ppUserData
826);
827
828wpt_uint8
829WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700830(
Jeff Johnson295189b2012-06-20 16:38:30 -0700831 WDI_ControlBlockType* pWDICtx,
832 WDI_BSSSessionType** ppSession
833);
834
835void
836WDI_AddBcastSTAtoSTATable
837(
838 WDI_ControlBlockType* pWDICtx,
839 WDI_AddStaParams * staParams,
840 wpt_uint16 usBcastStaIdx
841);
842
843WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700844(
Jeff Johnson295189b2012-06-20 16:38:30 -0700845 WDI_ControlBlockType* pWDICtx,
846 WDI_EventInfoType* pEventData
847);
848
849void
850WDI_SetPowerStateCb
851(
852 wpt_status status,
853 unsigned int dxePhyAddr,
854 void *pContext
855);
856
857#define CASE_RETURN_STRING( str ) \
858 case ( ( str ) ): return( #str ); break \
859
860/**
861 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700862
863 @param wdiReqMsgId: WDI Message request Id
864
865 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700866 @return Result of the function call
867*/
868static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
869{
870 switch (wdiReqMsgId)
871 {
872 CASE_RETURN_STRING( WDI_START_REQ );
873 CASE_RETURN_STRING( WDI_STOP_REQ );
874 CASE_RETURN_STRING( WDI_CLOSE_REQ );
875 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
876 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
877 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
878 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
879 CASE_RETURN_STRING( WDI_JOIN_REQ );
880 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
881 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
882 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
883 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
884 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
885 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
886 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
887 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
888 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
889 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
890 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
891 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
892 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
893 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
894 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
895 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
896 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
897 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
898 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
899 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
900 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
901 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
902 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
903 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
904 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
905 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -0700906 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700907 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530908#ifdef FEATURE_WLAN_TDLS
909 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
910#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700911 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
912 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
913 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
914 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
915 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
916 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
917 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
918 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
919 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
920 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
921 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
922 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
923 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
924 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
925 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
926 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
927 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
928 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
929 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
930 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
931 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
932 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
933 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
934 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
935 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700936 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700937 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
938 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
939 #ifdef FEATURE_WLAN_SCAN_PNO
940 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
941 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
942 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
943 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700944#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700945 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700946#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700947 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
948 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
949 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
950 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
951 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
952 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
953 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
954 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
955 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800956 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800957 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -0700958#ifdef WLAN_FEATURE_11W
959 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
960#endif
Rajeev79dbe4c2013-10-05 11:03:42 +0530961#ifdef FEATURE_WLAN_BATCH_SCAN
962 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
963 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
964 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
965#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530966 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
967 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Jeff Johnson295189b2012-06-20 16:38:30 -0700968 default:
969 return "Unknown WDI MessageId";
970 }
971}
972
973
974
975/**
976 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700977
978 @param wdiRespMsgId: WDI Message response Id
979
980 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700981 @return Result of the function call
982*/
983static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
984{
985 switch (wdiRespMsgId)
986 {
987 CASE_RETURN_STRING( WDI_START_RESP );
988 CASE_RETURN_STRING( WDI_STOP_RESP );
989 CASE_RETURN_STRING( WDI_CLOSE_RESP );
990 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
991 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
992 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
993 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
994 CASE_RETURN_STRING( WDI_JOIN_RESP );
995 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
996 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
997 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
998 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
999 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1000 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1001 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1002 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1003 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1004 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1005 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1006 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1007 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1008 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1009 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1010 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1011 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1012 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1013 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1014 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1015 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1016 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1017 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1018 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1019 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1020 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1021 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301022#ifdef FEATURE_WLAN_TDLS
1023 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1024 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1025#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001026 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1027 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1028 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1029 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1030 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1031 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1032 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1033 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1034 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1035 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1036 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1037 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1038 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1039 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1040 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1041 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1042 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1043 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1044 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1045 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1046 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1047 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1048 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1049 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1050 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001051 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001052 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1053 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1054 #ifdef FEATURE_WLAN_SCAN_PNO
1055 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1056 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1057 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1058 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001059#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001060 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001061#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001062 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1063 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1064 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1065 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1066 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1067 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1068 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1069 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001070 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301071#ifdef FEATURE_WLAN_BATCH_SCAN
1072 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1073#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001074 default:
1075 return "Unknown WDI MessageId";
1076 }
1077}
1078
1079/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301080 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1081 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301082 @param capabilityBitmap - Base address of a 4 element Bitmap array
1083 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301084 @see
1085 @returns None
1086 */
1087void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1088{
Abhishek Singh08b60122014-02-04 18:05:23 +05301089 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301090 char capStr[512];
1091 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301092 for (j = 0; j < 4; j++) {
1093 for (i = 0; i < 32; i++) {
1094 if ((*(capabilityBitmap + j) & (1 << i))) {
1095 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301096 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1097 pCapStr += strlen("MCC");
1098 break;
1099 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1100 pCapStr += strlen("P2P");
1101 break;
1102 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1103 pCapStr += strlen("DOT11AC");
1104 break;
1105 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1106 pCapStr += strlen("SLM_SESSIONIZATION");
1107 break;
1108 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1109 pCapStr += strlen("DOT11AC_OPMODE");
1110 break;
1111 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1112 pCapStr += strlen("SAP32STA");
1113 break;
1114 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1115 pCapStr += strlen("TDLS");
1116 break;
1117 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1118 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1119 break;
1120 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1121 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1122 break;
1123 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1124 pCapStr += strlen("BEACON_OFFLOAD");
1125 break;
1126 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1127 pCapStr += strlen("SCAN_OFFLOAD");
1128 break;
1129 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1130 pCapStr += strlen("ROAM_OFFLOAD");
1131 break;
1132 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1133 pCapStr += strlen("BCN_MISS_OFFLOAD");
1134 break;
1135 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1136 pCapStr += strlen("STA_POWERSAVE");
1137 break;
1138 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1139 pCapStr += strlen("AP_UAPSD");
1140 break;
1141 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1142 pCapStr += strlen("AP_DFS");
1143 break;
1144 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1145 pCapStr += strlen("BLOCKACK");
1146 break;
1147 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1148 pCapStr += strlen("PHY_ERR");
1149 break;
1150 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1151 pCapStr += strlen("BCN_FILTER");
1152 break;
1153 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1154 pCapStr += strlen("RTT");
1155 break;
1156 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1157 pCapStr += strlen("RATECTRL");
1158 break;
1159 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1160 pCapStr += strlen("WOW");
1161 break;
1162 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1163 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1164 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301165 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1166 pCapStr += strlen("FW_IN_TX_PATH");
1167 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301168 case HT40_OBSS_SCAN:
1169 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1170 "%s", "HT40_OBSS_SCAN");
1171 pCapStr += strlen("HT40_OBSS_SCAN");
1172 break;
Abhishek Singh08b60122014-02-04 18:05:23 +05301173 }
1174 *pCapStr++ = ',';
1175 *pCapStr++ = ' ';
1176 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301177 }
1178 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301179 pCapStr -= 2;
1180 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301181 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301183}
1184
1185/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001186 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001187
1188 @param halStatusId: HAL status Id
1189
1190 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001191 @return Result of the function call
1192*/
1193static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1194{
1195 switch (halStatusId)
1196 {
1197 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1198 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1199 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1200 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1201 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1202 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1203 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1204 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1205 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1206 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1207 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1208 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1209 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1210 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1211 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1212 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1213 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1214 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1215 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1216 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1217 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1218 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1219 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1220 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1221 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1222 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1223 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1224 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1225 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1226 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1227 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1228 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1229 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1230 default:
1231 return "Unknown HAL status";
1232 }
1233}
1234
Jeff Johnsone7245742012-09-05 17:12:55 -07001235/*========================================================================
1236
Jeff Johnson295189b2012-06-20 16:38:30 -07001237 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001238
Jeff Johnson295189b2012-06-20 16:38:30 -07001239==========================================================================*/
1240
1241/**
1242 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001243
Jeff Johnson295189b2012-06-20 16:38:30 -07001244 DAL will allocate all the resources it needs. It will open PAL, it will also
1245 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001246 DXE/SMD or any other drivers that they need.
1247
Jeff Johnson295189b2012-06-20 16:38:30 -07001248 @param pOSContext: pointer to the OS context provided by the UMAC
1249 will be passed on to PAL on Open
1250 ppWDIGlobalCtx: output pointer of Global Context
1251 pWdiDevCapability: output pointer of device capability
1252
1253 @return Result of the function call
1254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001256WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001257(
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 void* pOSContext,
1259 void** ppWDIGlobalCtx,
1260 WDI_DeviceCapabilityType* pWdiDevCapability,
1261 unsigned int driverType
1262)
1263{
1264 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001265 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001266 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001267 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1269
1270 /*---------------------------------------------------------------------
1271 Sanity check
1272 ---------------------------------------------------------------------*/
1273 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1274 {
1275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1276 "Invalid input parameters in WDI_Init");
1277
Jeff Johnsone7245742012-09-05 17:12:55 -07001278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001279 }
1280
1281 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001282 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 ---------------------------------------------------------------------*/
1284 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1285 {
1286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1287 "WDI module already initialized - return");
1288
Jeff Johnsone7245742012-09-05 17:12:55 -07001289 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001290 }
1291
1292 /*Module is now initialized - this flag is to ensure the fact that multiple
1293 init will not happen on WDI
1294 !! - potential race does exist because read and set are not atomic,
1295 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001296 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001297
1298 /*Setup the control block */
1299 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001300 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001301
1302 /*Setup the STA Table*/
1303 wdiStatus = WDI_STATableInit(&gWDICb);
1304 if ( WDI_STATUS_SUCCESS != wdiStatus )
1305 {
1306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1307 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001308 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001309 goto fail_STATableInit;
1310 }
1311
1312 /*------------------------------------------------------------------------
1313 Open the PAL
1314 ------------------------------------------------------------------------*/
1315 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1316 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1317 {
1318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1319 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001320 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001321 goto fail_wpalOpen;
1322 }
1323
1324 /*Initialize main synchro mutex - it will be used to ensure integrity of
1325 the main WDI Control Block*/
1326 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1327 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1328 {
1329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1330 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001331 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001332 goto fail_mutex;
1333 }
1334
1335 /*Initialize the response timer - it will be used to time all messages
1336 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001337 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1338 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001339 &gWDICb);
1340 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1341 {
1342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1343 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001344 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 goto fail_timer;
1346 }
1347
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001348 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1349 WDI_SsrTimerCB,
1350 &gWDICb);
1351 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1352 {
1353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1354 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001355 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001356 goto fail_timer2;
1357 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001358 /* Initialize the WDI Pending Request Queue*/
1359 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1360 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1361 {
1362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1363 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001364 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001365 goto fail_pend_queue;
1366 }
1367
1368 /*Init WDI Pending Assoc Id Queue */
1369 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1370 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1371 {
1372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1373 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001374 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001375 goto fail_assoc_queue;
1376 }
1377
1378 /*Initialize the BSS sessions pending Queue */
1379 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1380 {
1381 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1382 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1383 {
1384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1385 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001386 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001387 goto fail_bss_queue;
1388 }
1389 }
1390
1391 /*Indicate the control block is sufficiently initialized for callbacks*/
1392 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1393
1394 /*------------------------------------------------------------------------
1395 Initialize the Data Path Utility Module
1396 ------------------------------------------------------------------------*/
1397 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1398 if ( WDI_STATUS_SUCCESS != wdiStatus )
1399 {
1400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1401 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001402 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001403 goto fail_dp_util_init;
1404 }
1405
1406 /* Init Set power state event */
1407 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001408 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001409 {
1410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1411 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001412 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 goto fail_power_event;
1414 }
1415
1416 /* Init WCTS action event */
1417 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001418 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001419 {
1420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1421 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001422 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001423 goto fail_wcts_event;
1424 }
1425
1426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001427 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001428 ------------------------------------------------------------------------*/
1429 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1430 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001431 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001432 wctsCBs.wctsRxMsgCBData = &gWDICb;
1433
Jeff Johnsone7245742012-09-05 17:12:55 -07001434 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001435 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001436 WDI_CT_CHANNEL_SIZE,
1437 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001438
1439 if ( NULL == gWDICb.wctsHandle )
1440 {
1441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001442 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001443 goto fail_wcts_open;
1444 }
1445
1446 gWDICb.driverMode = (tDriverType)driverType;
1447 /* FTM mode not need to open Transport Driver */
1448 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001449 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001450 /*------------------------------------------------------------------------
1451 Open the Data Transport
1452 ------------------------------------------------------------------------*/
1453 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1454 {
1455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001456 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 goto fail_wdts_open;
1458 }
1459 }
1460
1461 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001462 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001463
1464 /*Send the context as a ptr to the global WDI Control Block*/
1465 *ppWDIGlobalCtx = &gWDICb;
1466
1467 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001468 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001469 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1470 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1471 return WDI_STATUS_SUCCESS;
1472
1473 /* ERROR handlers
1474 Undo everything that completed successfully */
1475
1476 fail_wdts_open:
1477 {
1478 wpt_status eventStatus;
1479
1480 /* Closing WCTS in this scenario is tricky since it has to close
1481 the SMD channel and then we get notified asynchronously when
1482 the channel has been closed. So we take some of the logic from
1483 the "normal" close procedure in WDI_Close()
1484 */
1485
1486 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001487 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001488 {
1489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001490 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001491 }
1492
1493 WCTS_CloseTransport(gWDICb.wctsHandle);
1494
1495 /* Wait for WCTS to close the control transport. If we were able
1496 to reset the event flag, then we'll wait for the event,
1497 otherwise we'll wait for a maximum amount of time required for
1498 the channel to be closed */
1499 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1500 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001501 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 WDI_WCTS_ACTION_TIMEOUT);
1503 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1504 {
1505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001506 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001507 }
1508 }
1509 else
1510 {
1511 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1512 }
1513 }
1514 fail_wcts_open:
1515 wpalEventDelete(&gWDICb.wctsActionEvent);
1516 fail_wcts_event:
1517 wpalEventDelete(&gWDICb.setPowerStateEvent);
1518 fail_power_event:
1519 WDI_DP_UtilsExit(&gWDICb);
1520 fail_dp_util_init:
1521 gWDICb.magic = 0;
1522 fail_bss_queue:
1523 /* entries 0 thru i-1 were successfully initialized */
1524 while (0 < i)
1525 {
1526 i--;
1527 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1528 }
1529 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1530 fail_assoc_queue:
1531 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1532 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001533 wpalTimerDelete(&gWDICb.ssrTimer);
1534 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001535 wpalTimerDelete(&gWDICb.wptResponseTimer);
1536 fail_timer:
1537 wpalMutexDelete(&gWDICb.wptMutex);
1538 fail_mutex:
1539 wpalClose(gWDICb.pPALContext);
1540 fail_wpalOpen:
1541 WDI_STATableClose(&gWDICb);
1542 fail_STATableInit:
1543 gWDIInitialized = eWLAN_PAL_FALSE;
1544
1545 return WDI_STATUS_E_FAILURE;
1546
1547}/*WDI_Init*/;
1548
1549/**
1550 @brief WDI_Start will be called when the upper MAC is ready to
1551 commence operation with the WLAN Device. Upon the call
1552 of this API the WLAN DAL will pack and send a HAL Start
1553 message to the lower RIVA sub-system if the SMD channel
1554 has been fully opened and the RIVA subsystem is up.
1555
1556 If the RIVA sub-system is not yet up and running DAL
1557 will queue the request for Open and will wait for the
1558 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001559 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001560
1561 WDI_Init must have been called.
1562
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001564 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001565
Jeff Johnson295189b2012-06-20 16:38:30 -07001566 wdiStartRspCb: callback for passing back the response of
1567 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001568
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001570 callback
1571
Jeff Johnson295189b2012-06-20 16:38:30 -07001572 @see WDI_Start
1573 @return Result of the function call
1574*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001575WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001576WDI_Start
1577(
1578 WDI_StartReqParamsType* pwdiStartParams,
1579 WDI_StartRspCb wdiStartRspCb,
1580 void* pUserData
1581)
1582{
1583 WDI_EventInfoType wdiEventData;
1584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1585
1586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001588 ------------------------------------------------------------------------*/
1589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1590 {
1591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1592 "WDI API call before module is initialized - Fail request");
1593
Jeff Johnsone7245742012-09-05 17:12:55 -07001594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 }
1596
1597 /*------------------------------------------------------------------------
1598 Fill in Event data and post to the Main FSM
1599 ------------------------------------------------------------------------*/
1600 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 wdiEventData.pEventData = pwdiStartParams;
1602 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1603 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001604 wdiEventData.pUserData = pUserData;
1605
1606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1607
1608}/*WDI_Start*/
1609
1610/**
1611 @brief WDI_Stop will be called when the upper MAC is ready to
1612 stop any operation with the WLAN Device. Upon the call
1613 of this API the WLAN DAL will pack and send a HAL Stop
1614 message to the lower RIVA sub-system if the DAL Core is
1615 in started state.
1616
1617 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001618
1619 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001620
1621 WDI_Start must have been called.
1622
Jeff Johnsone7245742012-09-05 17:12:55 -07001623 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001624 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001625
Jeff Johnson295189b2012-06-20 16:38:30 -07001626 wdiStopRspCb: callback for passing back the response of
1627 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001628
Jeff Johnson295189b2012-06-20 16:38:30 -07001629 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001630 callback
1631
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 @see WDI_Start
1633 @return Result of the function call
1634*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001635WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001636WDI_Stop
1637(
1638 WDI_StopReqParamsType* pwdiStopParams,
1639 WDI_StopRspCb wdiStopRspCb,
1640 void* pUserData
1641)
1642{
1643 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001644 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1646
1647 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001648 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 ------------------------------------------------------------------------*/
1650 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1651 {
1652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1653 "WDI API call before module is initialized - Fail request");
1654
Jeff Johnsone7245742012-09-05 17:12:55 -07001655 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001656 }
1657
Jeff Johnson43971f52012-07-17 12:26:56 -07001658 /*Access to the global state must be locked before cleaning */
1659 wpalMutexAcquire(&pWDICtx->wptMutex);
1660
1661 /*Clear all pending request*/
1662 WDI_ClearPendingRequests(pWDICtx);
1663
1664 /*We have completed cleaning unlock now*/
1665 wpalMutexRelease(&pWDICtx->wptMutex);
1666
Jeff Johnson295189b2012-06-20 16:38:30 -07001667 /* Free the global variables */
1668 wpalMemoryFree(gpHostWlanFeatCaps);
1669 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001670 gpHostWlanFeatCaps = NULL;
1671 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001672
1673 /*------------------------------------------------------------------------
1674 Fill in Event data and post to the Main FSM
1675 ------------------------------------------------------------------------*/
1676 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001677 wdiEventData.pEventData = pwdiStopParams;
1678 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1679 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001680 wdiEventData.pUserData = pUserData;
1681
1682 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1683
1684}/*WDI_Stop*/
1685
1686
1687
1688/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001689 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001690 needs to interact with DAL. DAL will free its control
1691 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001692
1693 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001694
1695 WDI_Stop must have been called.
1696
1697 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001698
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 @see WDI_Stop
1700 @return Result of the function call
1701*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001702WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001703WDI_Close
1704(
1705 void
1706)
1707{
1708 wpt_uint8 i;
1709 WDI_EventInfoType wdiEventData;
1710 wpt_status wptStatus;
1711 wpt_status eventStatus;
1712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1713
1714 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001715 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001716 ------------------------------------------------------------------------*/
1717 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1718 {
1719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1720 "WDI API call before module is initialized - Fail request");
1721
Jeff Johnsone7245742012-09-05 17:12:55 -07001722 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001723 }
1724
1725 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1726 (the control transport will be closed by the FSM and we'll want
1727 to wait until that completes)*/
1728 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001729 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 {
1731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001732 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001733 /* fall through and try to finish closing via the FSM */
1734 }
1735
1736 /*------------------------------------------------------------------------
1737 Fill in Event data and post to the Main FSM
1738 ------------------------------------------------------------------------*/
1739 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001740 wdiEventData.pEventData = NULL;
1741 wdiEventData.uEventDataSize = 0;
1742 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001743 wdiEventData.pUserData = NULL;
1744
1745 gWDIInitialized = eWLAN_PAL_FALSE;
1746
1747 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1748
1749 /*Wait for WCTS to close the control transport
1750 (but only if we were able to reset the event flag*/
1751 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1752 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 WDI_WCTS_ACTION_TIMEOUT);
1755 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1756 {
1757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001758 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001759 }
1760 }
1761
1762 /* Destroy the WCTS action event */
1763 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1764 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1765 {
1766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1767 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001768 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 }
1770
1771 /* Destroy the Set Power State event */
1772 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1773 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1774 {
1775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1776 "WDI Close failed to destroy an event");
1777
Jeff Johnsone7245742012-09-05 17:12:55 -07001778 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001779 }
1780
1781 /*------------------------------------------------------------------------
1782 Closes the Data Path Utility Module
1783 ------------------------------------------------------------------------*/
1784 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1785 {
1786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1787 "WDI Init failed to close the DP Util Module");
1788
Jeff Johnsone7245742012-09-05 17:12:55 -07001789 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001790 }
1791
1792 /*destroy the BSS sessions pending Queue */
1793 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1794 {
1795 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1796 }
1797
1798 /* destroy the WDI Pending Assoc Id Request Queue*/
1799 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1800
1801 /* destroy the WDI Pending Request Queue*/
1802 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001803
Jeff Johnson295189b2012-06-20 16:38:30 -07001804 /*destroy the response timer */
1805 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1806
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001807 /*destroy the SSR timer */
1808 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1809
Jeff Johnson295189b2012-06-20 16:38:30 -07001810 /*invalidate the main synchro mutex */
1811 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1812 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1813 {
1814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1815 "Failed to delete mutex %d", wptStatus);
1816 WDI_ASSERT(0);
1817 }
1818
1819 /*Clear control block. note that this will clear the "magic"
1820 which will inhibit all asynchronous callbacks*/
1821 WDI_CleanCB(&gWDICb);
1822
1823 return wptStatus;
1824
1825}/*WDI_Close*/
1826
1827/**
1828 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1829 This will do most of the WDI stop & close
1830 operations without doing any handshake with Riva
1831
1832 This will also make sure that the control transport
1833 will NOT be closed.
1834
1835 This request will not be queued.
1836
1837
1838 WDI_Start must have been called.
1839
1840 @param closeTransport: Close control channel if this is set
1841
1842 @return Result of the function call
1843*/
1844WDI_Status
1845WDI_Shutdown
1846(
1847 wpt_boolean closeTransport
1848)
1849{
1850 WDI_EventInfoType wdiEventData;
1851 wpt_status wptStatus;
1852 int i = 0;
1853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1854
1855 /*------------------------------------------------------------------------
1856 Sanity Check
1857 ------------------------------------------------------------------------*/
1858 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1859 {
1860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1861 "WDI API call before module is initialized - Fail request");
1862
1863 return WDI_STATUS_E_NOT_ALLOWED;
1864 }
1865
1866 /*------------------------------------------------------------------------
1867 Fill in Event data and post to the Main FSM
1868 ------------------------------------------------------------------------*/
1869 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1870 wdiEventData.pEventData = NULL;
1871 wdiEventData.uEventDataSize = 0;
1872
1873 /* Shutdown will not be queued, if the state is busy timer will be
1874 * stopped & this message will be processed.*/
1875 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1876 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1877 {
1878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001879 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 }
1881 /* Destroy the Set Power State event */
1882 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1883 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1884 {
1885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1886 "WDI Close failed to destroy an event");
1887
1888 WDI_ASSERT(0);
1889 }
1890 /*------------------------------------------------------------------------
1891 Closes the Data Path Utility Module
1892 ------------------------------------------------------------------------*/
1893 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1894 {
1895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1896 "WDI Init failed to close the DP Util Module");
1897
1898 WDI_ASSERT(0);
1899 }
1900 if ( closeTransport )
1901 {
1902 /* Close control transport, called from module unload */
1903 WCTS_CloseTransport(gWDICb.wctsHandle);
1904 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001905 else
1906 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001907 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001908 the pending messages in the transport queue */
1909 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1910 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001911 /*destroy the BSS sessions pending Queue */
1912 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1913 {
1914 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1915 }
1916
1917 /* destroy the WDI Pending Assoc Id Request Queue*/
1918 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1919 /* destroy the WDI Pending Request Queue*/
1920 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1921 /*destroy the response timer */
1922 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001923 /*destroy the SSR timer */
1924 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001925
1926 /*invalidate the main synchro mutex */
1927 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1928 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1929 {
1930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001931 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001932 WDI_ASSERT(0);
1933 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001934 /* Free the global variables */
1935 wpalMemoryFree(gpHostWlanFeatCaps);
1936 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001937 gpHostWlanFeatCaps = NULL;
1938 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001939 /*Clear control block. note that this will clear the "magic"
1940 which will inhibit all asynchronous callbacks*/
1941 WDI_CleanCB(&gWDICb);
1942 return wptStatus;
1943
1944}/*WDI_Shutdown*/
1945
1946
Jeff Johnsone7245742012-09-05 17:12:55 -07001947/*========================================================================
1948
Jeff Johnson295189b2012-06-20 16:38:30 -07001949 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001950
Jeff Johnson295189b2012-06-20 16:38:30 -07001951==========================================================================*/
1952
1953/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001954 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001955 the WLAN Device to get ready for a scan procedure. Upon
1956 the call of this API the WLAN DAL will pack and send a
1957 HAL Init Scan request message to the lower RIVA
1958 sub-system if DAL is in state STARTED.
1959
1960 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001961 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001962
1963 WDI_Start must have been called.
1964
1965 @param wdiInitScanParams: the init scan parameters as specified
1966 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001967
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 wdiInitScanRspCb: callback for passing back the response
1969 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001970
Jeff Johnson295189b2012-06-20 16:38:30 -07001971 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001972 callback
1973
Jeff Johnson295189b2012-06-20 16:38:30 -07001974 @see WDI_Start
1975 @return Result of the function call
1976*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001977WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001978WDI_InitScanReq
1979(
1980 WDI_InitScanReqParamsType* pwdiInitScanParams,
1981 WDI_InitScanRspCb wdiInitScanRspCb,
1982 void* pUserData
1983)
1984{
1985 WDI_EventInfoType wdiEventData;
1986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1987
1988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001990 ------------------------------------------------------------------------*/
1991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1992 {
1993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1994 "WDI API call before module is initialized - Fail request");
1995
Jeff Johnsone7245742012-09-05 17:12:55 -07001996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 }
1998
1999 /*------------------------------------------------------------------------
2000 Fill in Event data and post to the Main FSM
2001 ------------------------------------------------------------------------*/
2002 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002003 wdiEventData.pEventData = pwdiInitScanParams;
2004 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2005 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 wdiEventData.pUserData = pUserData;
2007
2008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2009
2010}/*WDI_InitScanReq*/
2011
2012/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002013 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002014 wishes to change the Scan channel on the WLAN Device.
2015 Upon the call of this API the WLAN DAL will pack and
2016 send a HAL Start Scan request message to the lower RIVA
2017 sub-system if DAL is in state STARTED.
2018
2019 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002020 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002021
2022 WDI_InitScanReq must have been called.
2023
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002026
Jeff Johnson295189b2012-06-20 16:38:30 -07002027 wdiStartScanRspCb: callback for passing back the
2028 response of the start scan operation received from the
2029 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002030
Jeff Johnson295189b2012-06-20 16:38:30 -07002031 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002032 callback
2033
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 @see WDI_InitScanReq
2035 @return Result of the function call
2036*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002037WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002038WDI_StartScanReq
2039(
2040 WDI_StartScanReqParamsType* pwdiStartScanParams,
2041 WDI_StartScanRspCb wdiStartScanRspCb,
2042 void* pUserData
2043)
2044{
2045 WDI_EventInfoType wdiEventData;
2046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2047
2048 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 ------------------------------------------------------------------------*/
2051 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2052 {
2053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2054 "WDI API call before module is initialized - Fail request");
2055
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 }
2058
2059 /*------------------------------------------------------------------------
2060 Fill in Event data and post to the Main FSM
2061 ------------------------------------------------------------------------*/
2062 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 wdiEventData.pEventData = pwdiStartScanParams;
2064 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2065 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 wdiEventData.pUserData = pUserData;
2067
2068 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2069
2070}/*WDI_StartScanReq*/
2071
2072
2073/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002074 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002075 wants to end scanning for a particular channel that it
2076 had set before by calling Scan Start on the WLAN Device.
2077 Upon the call of this API the WLAN DAL will pack and
2078 send a HAL End Scan request message to the lower RIVA
2079 sub-system if DAL is in state STARTED.
2080
2081 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002082 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002083
2084 WDI_StartScanReq must have been called.
2085
Jeff Johnsone7245742012-09-05 17:12:55 -07002086 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002087 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002088
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 wdiEndScanRspCb: callback for passing back the response
2090 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002091
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002093 callback
2094
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 @see WDI_StartScanReq
2096 @return Result of the function call
2097*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002098WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002099WDI_EndScanReq
2100(
2101 WDI_EndScanReqParamsType* pwdiEndScanParams,
2102 WDI_EndScanRspCb wdiEndScanRspCb,
2103 void* pUserData
2104)
2105{
2106 WDI_EventInfoType wdiEventData;
2107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2108
2109 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002110 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002111 ------------------------------------------------------------------------*/
2112 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2113 {
2114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2115 "WDI API call before module is initialized - Fail request");
2116
Jeff Johnsone7245742012-09-05 17:12:55 -07002117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002118 }
2119
2120 /*------------------------------------------------------------------------
2121 Fill in Event data and post to the Main FSM
2122 ------------------------------------------------------------------------*/
2123 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002124 wdiEventData.pEventData = pwdiEndScanParams;
2125 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2126 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002127 wdiEventData.pUserData = pUserData;
2128
2129 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2130
2131}/*WDI_EndScanReq*/
2132
2133
2134/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002135 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 completed the scan process on the WLAN Device. Upon the
2137 call of this API the WLAN DAL will pack and send a HAL
2138 Finish Scan Request request message to the lower RIVA
2139 sub-system if DAL is in state STARTED.
2140
2141 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002142 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002143
2144 WDI_InitScanReq must have been called.
2145
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002147 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002148
Jeff Johnson295189b2012-06-20 16:38:30 -07002149 wdiFinishScanRspCb: callback for passing back the
2150 response of the finish scan operation received from the
2151 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002152
Jeff Johnson295189b2012-06-20 16:38:30 -07002153 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002154 callback
2155
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 @see WDI_InitScanReq
2157 @return Result of the function call
2158*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002159WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002160WDI_FinishScanReq
2161(
2162 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2163 WDI_FinishScanRspCb wdiFinishScanRspCb,
2164 void* pUserData
2165)
2166{
2167 WDI_EventInfoType wdiEventData;
2168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2169
2170 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002171 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002172 ------------------------------------------------------------------------*/
2173 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2174 {
2175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2176 "WDI API call before module is initialized - Fail request");
2177
Jeff Johnsone7245742012-09-05 17:12:55 -07002178 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 }
2180
2181 /*------------------------------------------------------------------------
2182 Fill in Event data and post to the Main FSM
2183 ------------------------------------------------------------------------*/
2184 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002185 wdiEventData.pEventData = pwdiFinishScanParams;
2186 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2187 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002188 wdiEventData.pUserData = pUserData;
2189
2190 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2191
2192}/*WDI_FinishScanReq*/
2193
Jeff Johnsone7245742012-09-05 17:12:55 -07002194/*========================================================================
2195
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002197
Jeff Johnson295189b2012-06-20 16:38:30 -07002198==========================================================================*/
2199
2200/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002201 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 to start an association procedure to a BSS. Upon the
2203 call of this API the WLAN DAL will pack and send a HAL
2204 Join request message to the lower RIVA sub-system if
2205 DAL is in state STARTED.
2206
2207 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002208 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002209
2210 WDI_Start must have been called.
2211
Jeff Johnsone7245742012-09-05 17:12:55 -07002212 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002213 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002214
Jeff Johnson295189b2012-06-20 16:38:30 -07002215 wdiJoinRspCb: callback for passing back the response of
2216 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002217
Jeff Johnson295189b2012-06-20 16:38:30 -07002218 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002219 callback
2220
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 @see WDI_Start
2222 @return Result of the function call
2223*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002224WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002225WDI_JoinReq
2226(
2227 WDI_JoinReqParamsType* pwdiJoinParams,
2228 WDI_JoinRspCb wdiJoinRspCb,
2229 void* pUserData
2230)
2231{
2232 WDI_EventInfoType wdiEventData;
2233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2234
2235 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002236 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002237 ------------------------------------------------------------------------*/
2238 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2239 {
2240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2241 "WDI API call before module is initialized - Fail request");
2242
Jeff Johnsone7245742012-09-05 17:12:55 -07002243 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 }
2245
2246 /*------------------------------------------------------------------------
2247 Fill in Event data and post to the Main FSM
2248 ------------------------------------------------------------------------*/
2249 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002250 wdiEventData.pEventData = pwdiJoinParams;
2251 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2252 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 wdiEventData.pUserData = pUserData;
2254
2255 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2256
2257}/*WDI_JoinReq*/
2258
2259/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002260 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002261 wishes to configure the newly acquired or in process of
2262 being acquired BSS to the HW . Upon the call of this API
2263 the WLAN DAL will pack and send a HAL Config BSS request
2264 message to the lower RIVA sub-system if DAL is in state
2265 STARTED.
2266
2267 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002268 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002269
2270 WDI_JoinReq must have been called.
2271
Jeff Johnsone7245742012-09-05 17:12:55 -07002272 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002273 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002274
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 wdiConfigBSSRspCb: callback for passing back the
2276 response of the config BSS operation received from the
2277 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002278
Jeff Johnson295189b2012-06-20 16:38:30 -07002279 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002280 callback
2281
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 @see WDI_JoinReq
2283 @return Result of the function call
2284*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002285WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002286WDI_ConfigBSSReq
2287(
2288 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2289 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2290 void* pUserData
2291)
2292{
2293 WDI_EventInfoType wdiEventData;
2294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2295
2296 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002297 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002298 ------------------------------------------------------------------------*/
2299 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2300 {
2301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2302 "WDI API call before module is initialized - Fail request");
2303
Jeff Johnsone7245742012-09-05 17:12:55 -07002304 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 }
2306
2307 /*------------------------------------------------------------------------
2308 Fill in Event data and post to the Main FSM
2309 ------------------------------------------------------------------------*/
2310 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002311 wdiEventData.pEventData = pwdiConfigBSSParams;
2312 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2313 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002314 wdiEventData.pUserData = pUserData;
2315
2316 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2317
2318}/*WDI_ConfigBSSReq*/
2319
2320/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002321 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002322 disassociating from the BSS and wishes to notify HW.
2323 Upon the call of this API the WLAN DAL will pack and
2324 send a HAL Del BSS request message to the lower RIVA
2325 sub-system if DAL is in state STARTED.
2326
2327 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002328 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002329
2330 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2331
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002333 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002334
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 wdiDelBSSRspCb: callback for passing back the response
2336 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002337
Jeff Johnson295189b2012-06-20 16:38:30 -07002338 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002339 callback
2340
2341 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 @return Result of the function call
2343*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002344WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002345WDI_DelBSSReq
2346(
2347 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2348 WDI_DelBSSRspCb wdiDelBSSRspCb,
2349 void* pUserData
2350)
2351{
2352 WDI_EventInfoType wdiEventData;
2353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2354
2355 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002356 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002357 ------------------------------------------------------------------------*/
2358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2359 {
2360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2361 "WDI API call before module is initialized - Fail request");
2362
Jeff Johnsone7245742012-09-05 17:12:55 -07002363 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002364 }
2365
2366 /*------------------------------------------------------------------------
2367 Fill in Event data and post to the Main FSM
2368 ------------------------------------------------------------------------*/
2369 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002370 wdiEventData.pEventData = pwdiDelBSSParams;
2371 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2372 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 wdiEventData.pUserData = pUserData;
2374
2375 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2376
2377}/*WDI_DelBSSReq*/
2378
2379/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002380 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002381 associated to a BSS and wishes to configure HW for
2382 associated state. Upon the call of this API the WLAN DAL
2383 will pack and send a HAL Post Assoc request message to
2384 the lower RIVA sub-system if DAL is in state STARTED.
2385
2386 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002387 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002388
2389 WDI_JoinReq must have been called.
2390
2391 @param wdiPostAssocReqParams: the assoc parameters as specified
2392 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002393
Jeff Johnson295189b2012-06-20 16:38:30 -07002394 wdiPostAssocRspCb: callback for passing back the
2395 response of the post assoc operation received from the
2396 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002397
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002399 callback
2400
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 @see WDI_JoinReq
2402 @return Result of the function call
2403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002405WDI_PostAssocReq
2406(
2407 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2408 WDI_PostAssocRspCb wdiPostAssocRspCb,
2409 void* pUserData
2410)
2411{
2412 WDI_EventInfoType wdiEventData;
2413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2414
2415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002416 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002417 ------------------------------------------------------------------------*/
2418 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2419 {
2420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2421 "WDI API call before module is initialized - Fail request");
2422
Jeff Johnsone7245742012-09-05 17:12:55 -07002423 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002424 }
2425
2426 /*------------------------------------------------------------------------
2427 Fill in Event data and post to the Main FSM
2428 ------------------------------------------------------------------------*/
2429 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002430 wdiEventData.pEventData = pwdiPostAssocReqParams;
2431 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2432 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 wdiEventData.pUserData = pUserData;
2434
2435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2436
2437}/*WDI_PostAssocReq*/
2438
2439/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002440 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002441 association with another STA has ended and the station
2442 must be deleted from HW. Upon the call of this API the
2443 WLAN DAL will pack and send a HAL Del STA request
2444 message to the lower RIVA sub-system if DAL is in state
2445 STARTED.
2446
2447 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002448 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002449
2450 WDI_PostAssocReq must have been called.
2451
Jeff Johnsone7245742012-09-05 17:12:55 -07002452 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002453 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002454
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 wdiDelSTARspCb: callback for passing back the response
2456 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002457
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002459 callback
2460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 @see WDI_PostAssocReq
2462 @return Result of the function call
2463*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002464WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002465WDI_DelSTAReq
2466(
2467 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2468 WDI_DelSTARspCb wdiDelSTARspCb,
2469 void* pUserData
2470)
2471{
2472 WDI_EventInfoType wdiEventData;
2473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2474
2475 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 ------------------------------------------------------------------------*/
2478 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2479 {
2480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2481 "WDI API call before module is initialized - Fail request");
2482
Jeff Johnsone7245742012-09-05 17:12:55 -07002483 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 }
2485
2486 /*------------------------------------------------------------------------
2487 Fill in Event data and post to the Main FSM
2488 ------------------------------------------------------------------------*/
2489 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 wdiEventData.pEventData = pwdiDelSTAParams;
2491 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2492 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 wdiEventData.pUserData = pUserData;
2494
2495 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2496
2497}/*WDI_DelSTAReq*/
2498
Jeff Johnsone7245742012-09-05 17:12:55 -07002499/*========================================================================
2500
Jeff Johnson295189b2012-06-20 16:38:30 -07002501 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002502
Jeff Johnson295189b2012-06-20 16:38:30 -07002503==========================================================================*/
2504
2505/**
2506 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2507 install a BSS encryption key on the HW. Upon the call of this
2508 API the WLAN DAL will pack and send a Set BSS Key request
2509 message to the lower RIVA sub-system if DAL is in state
2510 STARTED.
2511
2512 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002513 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002514
2515 WDI_PostAssocReq must have been called.
2516
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002519
Jeff Johnson295189b2012-06-20 16:38:30 -07002520 wdiSetBSSKeyRspCb: callback for passing back the
2521 response of the set BSS Key operation received from the
2522 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002523
Jeff Johnson295189b2012-06-20 16:38:30 -07002524 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 callback
2526
Jeff Johnson295189b2012-06-20 16:38:30 -07002527 @see WDI_PostAssocReq
2528 @return Result of the function call
2529*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002531WDI_SetBSSKeyReq
2532(
2533 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2534 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2535 void* pUserData
2536)
2537{
2538 WDI_EventInfoType wdiEventData;
2539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2540
2541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002543 ------------------------------------------------------------------------*/
2544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2545 {
2546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2547 "WDI API call before module is initialized - Fail request");
2548
Jeff Johnsone7245742012-09-05 17:12:55 -07002549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 }
2551
2552 /*------------------------------------------------------------------------
2553 Fill in Event data and post to the Main FSM
2554 ------------------------------------------------------------------------*/
2555 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2557 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2558 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002559 wdiEventData.pUserData = pUserData;
2560
2561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2562
2563}/*WDI_SetBSSKeyReq*/
2564
2565/**
2566 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2567 uninstall a BSS key from HW. Upon the call of this API the
2568 WLAN DAL will pack and send a HAL Remove BSS Key request
2569 message to the lower RIVA sub-system if DAL is in state
2570 STARTED.
2571
2572 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002573 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002574
2575 WDI_SetBSSKeyReq must have been called.
2576
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002578 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002579
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 wdiRemoveBSSKeyRspCb: callback for passing back the
2581 response of the remove BSS key operation received from
2582 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002583
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002585 callback
2586
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 @see WDI_SetBSSKeyReq
2588 @return Result of the function call
2589*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002591WDI_RemoveBSSKeyReq
2592(
2593 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2594 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2595 void* pUserData
2596)
2597{
2598 WDI_EventInfoType wdiEventData;
2599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2600
2601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 ------------------------------------------------------------------------*/
2604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2605 {
2606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2607 "WDI API call before module is initialized - Fail request");
2608
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 }
2611
2612 /*------------------------------------------------------------------------
2613 Fill in Event data and post to the Main FSM
2614 ------------------------------------------------------------------------*/
2615 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2617 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2618 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002619 wdiEventData.pUserData = pUserData;
2620
2621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2622
2623}/*WDI_RemoveBSSKeyReq*/
2624
2625
2626/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002628 ready to install a STA(ast) encryption key in HW. Upon
2629 the call of this API the WLAN DAL will pack and send a
2630 HAL Set STA Key request message to the lower RIVA
2631 sub-system if DAL is in state STARTED.
2632
2633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002635
2636 WDI_PostAssocReq must have been called.
2637
Jeff Johnsone7245742012-09-05 17:12:55 -07002638 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002640
Jeff Johnson295189b2012-06-20 16:38:30 -07002641 wdiSetSTAKeyRspCb: callback for passing back the
2642 response of the set STA key operation received from the
2643 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002644
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002646 callback
2647
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 @see WDI_PostAssocReq
2649 @return Result of the function call
2650*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002651WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002652WDI_SetSTAKeyReq
2653(
2654 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2655 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2656 void* pUserData
2657)
2658{
2659 WDI_EventInfoType wdiEventData;
2660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2661
2662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 ------------------------------------------------------------------------*/
2665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2666 {
2667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2668 "WDI API call before module is initialized - Fail request");
2669
Jeff Johnsone7245742012-09-05 17:12:55 -07002670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 }
2672
2673 /*------------------------------------------------------------------------
2674 Fill in Event data and post to the Main FSM
2675 ------------------------------------------------------------------------*/
2676 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002677 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2678 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2679 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 wdiEventData.pUserData = pUserData;
2681
2682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2683
2684}/*WDI_SetSTAKeyReq*/
2685
2686
2687/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002688 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 wants to uninstall a previously set STA key in HW. Upon
2690 the call of this API the WLAN DAL will pack and send a
2691 HAL Remove STA Key request message to the lower RIVA
2692 sub-system if DAL is in state STARTED.
2693
2694 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002695 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002696
2697 WDI_SetSTAKeyReq must have been called.
2698
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002701
Jeff Johnson295189b2012-06-20 16:38:30 -07002702 wdiRemoveSTAKeyRspCb: callback for passing back the
2703 response of the remove STA key operation received from
2704 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002707 callback
2708
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 @see WDI_SetSTAKeyReq
2710 @return Result of the function call
2711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002713WDI_RemoveSTAKeyReq
2714(
2715 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2716 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2717 void* pUserData
2718)
2719{
2720 WDI_EventInfoType wdiEventData;
2721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2722
2723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002725 ------------------------------------------------------------------------*/
2726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2727 {
2728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2729 "WDI API call before module is initialized - Fail request");
2730
Jeff Johnsone7245742012-09-05 17:12:55 -07002731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 }
2733
2734 /*------------------------------------------------------------------------
2735 Fill in Event data and post to the Main FSM
2736 ------------------------------------------------------------------------*/
2737 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002738 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2739 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2740 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002741 wdiEventData.pUserData = pUserData;
2742
2743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2744
2745}/*WDI_RemoveSTAKeyReq*/
2746
2747
2748/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 wants to install a STA Bcast encryption key on the HW.
2751 Upon the call of this API the WLAN DAL will pack and
2752 send a HAL Start request message to the lower RIVA
2753 sub-system if DAL is in state STARTED.
2754
2755 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002757
2758 WDI_PostAssocReq must have been called.
2759
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002761 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002762
Jeff Johnson295189b2012-06-20 16:38:30 -07002763 wdiSetSTABcastKeyRspCb: callback for passing back the
2764 response of the set BSS Key operation received from the
2765 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002766
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002768 callback
2769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 @see WDI_PostAssocReq
2771 @return Result of the function call
2772*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002773WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002774WDI_SetSTABcastKeyReq
2775(
2776 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2777 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2778 void* pUserData
2779)
2780
2781{
2782 WDI_EventInfoType wdiEventData;
2783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2784
2785 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002786 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002787 ------------------------------------------------------------------------*/
2788 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2789 {
2790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2791 "WDI API call before module is initialized - Fail request");
2792
Jeff Johnsone7245742012-09-05 17:12:55 -07002793 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002794 }
2795
2796 /*------------------------------------------------------------------------
2797 Fill in Event data and post to the Main FSM
2798 ------------------------------------------------------------------------*/
2799 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002800 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2801 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2802 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002803 wdiEventData.pUserData = pUserData;
2804
2805 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2806
2807}/*WDI_SetSTABcastKeyReq*/
2808
2809/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002810 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002811 MAC wants to uninstall a STA Bcast key from HW. Upon the
2812 call of this API the WLAN DAL will pack and send a HAL
2813 Remove STA Bcast Key request message to the lower RIVA
2814 sub-system if DAL is in state STARTED.
2815
2816 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002817 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002818
2819 WDI_SetSTABcastKeyReq must have been called.
2820
Jeff Johnsone7245742012-09-05 17:12:55 -07002821 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002822 parameters as specified by the Device
2823 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002824
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2826 response of the remove STA Bcast key operation received
2827 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002828
Jeff Johnson295189b2012-06-20 16:38:30 -07002829 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002830 callback
2831
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 @see WDI_SetSTABcastKeyReq
2833 @return Result of the function call
2834*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002835WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002836WDI_RemoveSTABcastKeyReq
2837(
2838 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2839 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2840 void* pUserData
2841)
2842{
2843 WDI_EventInfoType wdiEventData;
2844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2845
2846 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002847 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 ------------------------------------------------------------------------*/
2849 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2850 {
2851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2852 "WDI API call before module is initialized - Fail request");
2853
Jeff Johnsone7245742012-09-05 17:12:55 -07002854 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002855 }
2856
2857 /*------------------------------------------------------------------------
2858 Fill in Event data and post to the Main FSM
2859 ------------------------------------------------------------------------*/
2860 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2862 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2863 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002864 wdiEventData.pUserData = pUserData;
2865
2866 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2867
2868}/*WDI_RemoveSTABcastKeyReq*/
2869
2870/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002871 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002872 MAC wants to set Max Tx Power to HW. Upon the
2873 call of this API the WLAN DAL will pack and send a HAL
2874 Remove STA Bcast Key request message to the lower RIVA
2875 sub-system if DAL is in state STARTED.
2876
2877 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002878 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002879
2880 WDI_SetSTABcastKeyReq must have been called.
2881
Jeff Johnsone7245742012-09-05 17:12:55 -07002882 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002883 parameters as specified by the Device
2884 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002885
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2887 response of the remove STA Bcast key operation received
2888 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002889
Jeff Johnson295189b2012-06-20 16:38:30 -07002890 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002891 callback
2892
Jeff Johnson295189b2012-06-20 16:38:30 -07002893 @see WDI_SetMaxTxPowerReq
2894 @return Result of the function call
2895*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002896WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002897WDI_SetMaxTxPowerReq
2898(
2899 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2900 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2901 void* pUserData
2902)
2903{
2904 WDI_EventInfoType wdiEventData;
2905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2906
2907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002909 ------------------------------------------------------------------------*/
2910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2911 {
2912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2913 "WDI API call before module is initialized - Fail request");
2914
Jeff Johnsone7245742012-09-05 17:12:55 -07002915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002916 }
2917
2918 /*------------------------------------------------------------------------
2919 Fill in Event data and post to the Main FSM
2920 ------------------------------------------------------------------------*/
2921 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002922 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2923 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2924 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 wdiEventData.pUserData = pUserData;
2926
2927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2928}
2929
schang86c22c42013-03-13 18:41:24 -07002930/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07002931 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2932 MAC wants to set Max Tx Power to HW for specific band.
2933
2934 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2935
2936 wdiReqStatusCb: callback for passing back the
2937 response msg from the device
2938
2939 pUserData: user data will be passed back with the
2940 callback
2941
2942 @see WDI_SetMaxTxPowerPerBandReq
2943 @return Result of the function call
2944*/
2945WDI_Status
2946WDI_SetMaxTxPowerPerBandReq
2947(
2948 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2949 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2950 void* pUserData
2951)
2952{
2953 WDI_EventInfoType wdiEventData;
2954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2955
2956 /*------------------------------------------------------------------------
2957 Sanity Check
2958 ------------------------------------------------------------------------*/
2959 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2960 {
2961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2962 "WDI API call before module is initialized - Fail request");
2963
2964 return WDI_STATUS_E_NOT_ALLOWED;
2965 }
2966
2967 /*------------------------------------------------------------------------
2968 Fill in Event data and post to the Main FSM
2969 ------------------------------------------------------------------------*/
2970 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
2971 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
2972 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
2973 wdiEventData.pCBfnc = wdiReqStatusCb;
2974 wdiEventData.pUserData = pUserData;
2975
2976 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2977}
2978
2979/**
schang86c22c42013-03-13 18:41:24 -07002980 @brief WDI_SetTxPowerReq will be called when the upper
2981 MAC wants to set Tx Power to HW.
2982 In state BUSY this request will be queued. Request won't
2983 be allowed in any other state.
2984
2985
2986 @param pwdiSetTxPowerParams: set TS Power parameters
2987 BSSID and target TX Power with dbm included
2988
2989 wdiReqStatusCb: callback for passing back the response
2990
2991 pUserData: user data will be passed back with the
2992 callback
2993
2994 @return Result of the function call
2995*/
2996WDI_Status
2997WDI_SetTxPowerReq
2998(
2999 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3000 WDA_SetTxPowerRspCb wdiReqStatusCb,
3001 void* pUserData
3002)
3003{
3004 WDI_EventInfoType wdiEventData;
3005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3006
3007 /*------------------------------------------------------------------------
3008 Sanity Check
3009 ------------------------------------------------------------------------*/
3010 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3011 {
3012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3013 "WDI API call before module is initialized - Fail request");
3014
3015 return WDI_STATUS_E_NOT_ALLOWED;
3016 }
3017
3018 /*------------------------------------------------------------------------
3019 Fill in Event data and post to the Main FSM
3020 ------------------------------------------------------------------------*/
3021 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3022 wdiEventData.pEventData = pwdiSetTxPowerParams;
3023 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3024 wdiEventData.pCBfnc = wdiReqStatusCb;
3025 wdiEventData.pUserData = pUserData;
3026
3027 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3028}
3029
Jeff Johnson295189b2012-06-20 16:38:30 -07003030#ifdef FEATURE_WLAN_CCX
3031WDI_Status
3032WDI_TSMStatsReq
3033(
3034 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3035 WDI_TsmRspCb wdiReqStatusCb,
3036 void* pUserData
3037)
3038{
3039 WDI_EventInfoType wdiEventData;
3040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003041 /*------------------------------------------------------------------------
3042 Sanity Check
3043 ------------------------------------------------------------------------*/
3044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3045 {
3046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3047 "WDI API call before module is initialized - Fail request");
3048
3049 return WDI_STATUS_E_NOT_ALLOWED;
3050 }
3051
3052 /*------------------------------------------------------------------------
3053 Fill in Event data and post to the Main FSM
3054 ------------------------------------------------------------------------*/
3055 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3056 wdiEventData.pEventData = pwdiTsmReqParams;
3057 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3058 wdiEventData.pCBfnc = wdiReqStatusCb;
3059 wdiEventData.pUserData = pUserData;
3060
3061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3062
3063}
3064#endif
3065
3066/*========================================================================
3067
3068 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003069
Jeff Johnson295189b2012-06-20 16:38:30 -07003070==========================================================================*/
3071
3072/**
3073 @brief WDI_AddTSReq will be called when the upper MAC to inform
3074 the device of a successful add TSpec negotiation. HW
3075 needs to receive the TSpec Info from the UMAC in order
3076 to configure properly the QoS data traffic. Upon the
3077 call of this API the WLAN DAL will pack and send a HAL
3078 Add TS request message to the lower RIVA sub-system if
3079 DAL is in state STARTED.
3080
3081 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003082 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003083
3084 WDI_PostAssocReq must have been called.
3085
3086 @param wdiAddTsReqParams: the add TS parameters as specified by
3087 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003088
Jeff Johnson295189b2012-06-20 16:38:30 -07003089 wdiAddTsRspCb: callback for passing back the response of
3090 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003091
Jeff Johnson295189b2012-06-20 16:38:30 -07003092 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003093 callback
3094
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 @see WDI_PostAssocReq
3096 @return Result of the function call
3097*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003098WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003099WDI_AddTSReq
3100(
3101 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3102 WDI_AddTsRspCb wdiAddTsRspCb,
3103 void* pUserData
3104)
3105{
3106 WDI_EventInfoType wdiEventData;
3107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3108
3109 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003111 ------------------------------------------------------------------------*/
3112 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3113 {
3114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3115 "WDI API call before module is initialized - Fail request");
3116
Jeff Johnsone7245742012-09-05 17:12:55 -07003117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003118 }
3119
3120 /*------------------------------------------------------------------------
3121 Fill in Event data and post to the Main FSM
3122 ------------------------------------------------------------------------*/
3123 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003124 wdiEventData.pEventData = pwdiAddTsReqParams;
3125 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3126 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 wdiEventData.pUserData = pUserData;
3128
3129 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3130
3131}/*WDI_AddTSReq*/
3132
3133
3134
3135/**
3136 @brief WDI_DelTSReq will be called when the upper MAC has ended
3137 admission on a specific AC. This is to inform HW that
3138 QoS traffic parameters must be rest. Upon the call of
3139 this API the WLAN DAL will pack and send a HAL Del TS
3140 request message to the lower RIVA sub-system if DAL is
3141 in state STARTED.
3142
3143 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003144 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003145
3146 WDI_AddTSReq must have been called.
3147
3148 @param wdiDelTsReqParams: the del TS parameters as specified by
3149 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003150
Jeff Johnson295189b2012-06-20 16:38:30 -07003151 wdiDelTsRspCb: callback for passing back the response of
3152 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003153
Jeff Johnson295189b2012-06-20 16:38:30 -07003154 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 callback
3156
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 @see WDI_AddTSReq
3158 @return Result of the function call
3159*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003160WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003161WDI_DelTSReq
3162(
3163 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3164 WDI_DelTsRspCb wdiDelTsRspCb,
3165 void* pUserData
3166)
3167{
3168 WDI_EventInfoType wdiEventData;
3169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3170
3171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 ------------------------------------------------------------------------*/
3174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3175 {
3176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3177 "WDI API call before module is initialized - Fail request");
3178
Jeff Johnsone7245742012-09-05 17:12:55 -07003179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 }
3181
3182 /*------------------------------------------------------------------------
3183 Fill in Event data and post to the Main FSM
3184 ------------------------------------------------------------------------*/
3185 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 wdiEventData.pEventData = pwdiDelTsReqParams;
3187 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3188 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 wdiEventData.pUserData = pUserData;
3190
3191 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3192
3193}/*WDI_DelTSReq*/
3194
3195
3196
3197/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003198 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003199 wishes to update the EDCA parameters used by HW for QoS
3200 data traffic. Upon the call of this API the WLAN DAL
3201 will pack and send a HAL Update EDCA Params request
3202 message to the lower RIVA sub-system if DAL is in state
3203 STARTED.
3204
3205 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003206 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003207
3208 WDI_PostAssocReq must have been called.
3209
Jeff Johnsone7245742012-09-05 17:12:55 -07003210 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003211 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003212
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 wdiUpdateEDCAParamsRspCb: callback for passing back the
3214 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003215
Jeff Johnson295189b2012-06-20 16:38:30 -07003216 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003217 callback
3218
Jeff Johnson295189b2012-06-20 16:38:30 -07003219 @see WDI_PostAssocReq
3220 @return Result of the function call
3221*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003222WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003223WDI_UpdateEDCAParams
3224(
3225 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3226 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3227 void* pUserData
3228)
3229{
3230 WDI_EventInfoType wdiEventData;
3231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3232
3233 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 ------------------------------------------------------------------------*/
3236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3237 {
3238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3239 "WDI API call before module is initialized - Fail request");
3240
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003242 }
3243
3244 /*------------------------------------------------------------------------
3245 Fill in Event data and post to the Main FSM
3246 ------------------------------------------------------------------------*/
3247 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003248 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3249 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3250 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 wdiEventData.pUserData = pUserData;
3252
3253 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3254
3255}/*WDI_UpdateEDCAParams*/
3256
3257
3258/**
3259 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3260 successfully a BA session and needs to notify the HW for
3261 the appropriate settings to take place. Upon the call of
3262 this API the WLAN DAL will pack and send a HAL Add BA
3263 request message to the lower RIVA sub-system if DAL is
3264 in state STARTED.
3265
3266 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003267 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003268
3269 WDI_PostAssocReq must have been called.
3270
3271 @param wdiAddBAReqParams: the add BA parameters as specified by
3272 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003273
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 wdiAddBARspCb: callback for passing back the response of
3275 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003276
Jeff Johnson295189b2012-06-20 16:38:30 -07003277 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 callback
3279
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 @see WDI_PostAssocReq
3281 @return Result of the function call
3282*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003283WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003284WDI_AddBASessionReq
3285(
3286 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3287 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3288 void* pUserData
3289)
3290{
3291 WDI_EventInfoType wdiEventData;
3292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3293
3294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 ------------------------------------------------------------------------*/
3297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3298 {
3299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3300 "WDI API call before module is initialized - Fail request");
3301
Jeff Johnsone7245742012-09-05 17:12:55 -07003302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003303 }
3304
3305 /*------------------------------------------------------------------------
3306 Fill in Event data and post to the Main FSM
3307 ------------------------------------------------------------------------*/
3308 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003309 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3310 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3311 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 wdiEventData.pUserData = pUserData;
3313
3314 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3315
3316}/*WDI_AddBASessionReq*/
3317
3318/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003319 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003320 inform HW that it has deleted a previously created BA
3321 session. Upon the call of this API the WLAN DAL will
3322 pack and send a HAL Del BA request message to the lower
3323 RIVA sub-system if DAL is in state STARTED.
3324
3325 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003326 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003327
3328 WDI_AddBAReq must have been called.
3329
3330 @param wdiDelBAReqParams: the del BA parameters as specified by
3331 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003332
Jeff Johnson295189b2012-06-20 16:38:30 -07003333 wdiDelBARspCb: callback for passing back the response of
3334 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003335
Jeff Johnson295189b2012-06-20 16:38:30 -07003336 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003337 callback
3338
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 @see WDI_AddBAReq
3340 @return Result of the function call
3341*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003342WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003343WDI_DelBAReq
3344(
3345 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3346 WDI_DelBARspCb wdiDelBARspCb,
3347 void* pUserData
3348)
3349{
3350 WDI_EventInfoType wdiEventData;
3351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3352
3353 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003354 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 ------------------------------------------------------------------------*/
3356 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3357 {
3358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3359 "WDI API call before module is initialized - Fail request");
3360
Jeff Johnsone7245742012-09-05 17:12:55 -07003361 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003362 }
3363
3364 /*------------------------------------------------------------------------
3365 Fill in Event data and post to the Main FSM
3366 ------------------------------------------------------------------------*/
3367 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003368 wdiEventData.pEventData = pwdiDelBAReqParams;
3369 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3370 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 wdiEventData.pUserData = pUserData;
3372
3373 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3374
3375}/*WDI_DelBAReq*/
3376
Jeff Johnsone7245742012-09-05 17:12:55 -07003377/*========================================================================
3378
Jeff Johnson295189b2012-06-20 16:38:30 -07003379 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003380
Jeff Johnson295189b2012-06-20 16:38:30 -07003381==========================================================================*/
3382
3383/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003384 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 wants to set the power save related configurations of
3386 the WLAN Device. Upon the call of this API the WLAN DAL
3387 will pack and send a HAL Update CFG request message to
3388 the lower RIVA sub-system if DAL is in state STARTED.
3389
3390 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003391 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003392
3393 WDI_Start must have been called.
3394
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003397
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 wdiSetPwrSaveCfgCb: callback for passing back the
3399 response of the set power save cfg operation received
3400 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003401
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003403 callback
3404
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 @return Result of the function call
3407*/
3408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003409WDI_SetPwrSaveCfgReq
3410(
3411 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3412 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3413 void* pUserData
3414)
3415{
3416 WDI_EventInfoType wdiEventData;
3417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3418
3419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003421 ------------------------------------------------------------------------*/
3422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3423 {
3424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3425 "WDI API call before module is initialized - Fail request");
3426
Jeff Johnsone7245742012-09-05 17:12:55 -07003427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 }
3429
3430 /*------------------------------------------------------------------------
3431 Fill in Event data and post to the Main FSM
3432 ------------------------------------------------------------------------*/
3433 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 wdiEventData.pEventData = pwdiPowerSaveCfg;
3435 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3436 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 wdiEventData.pUserData = pUserData;
3438
3439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3440
3441}/*WDI_SetPwrSaveCfgReq*/
3442
3443/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003444 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003445 request the device to get into IMPS power state. Upon
3446 the call of this API the WLAN DAL will send a HAL Enter
3447 IMPS request message to the lower RIVA sub-system if DAL
3448 is in state STARTED.
3449
3450 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003451 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003452
Jeff Johnsone7245742012-09-05 17:12:55 -07003453
3454 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 response of the Enter IMPS operation received from the
3456 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003457
Jeff Johnson295189b2012-06-20 16:38:30 -07003458 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003459 callback
3460
Jeff Johnson295189b2012-06-20 16:38:30 -07003461 @see WDI_Start
3462 @return Result of the function call
3463*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003464WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003465WDI_EnterImpsReq
3466(
3467 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3468 void* pUserData
3469)
3470{
3471 WDI_EventInfoType wdiEventData;
3472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3473
3474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003475 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 ------------------------------------------------------------------------*/
3477 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3478 {
3479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3480 "WDI API call before module is initialized - Fail request");
3481
Jeff Johnsone7245742012-09-05 17:12:55 -07003482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003483 }
3484
3485 /*------------------------------------------------------------------------
3486 Fill in Event data and post to the Main FSM
3487 ------------------------------------------------------------------------*/
3488 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003489 wdiEventData.pEventData = NULL;
3490 wdiEventData.uEventDataSize = 0;
3491 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 wdiEventData.pUserData = pUserData;
3493
3494 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3495
3496}/*WDI_EnterImpsReq*/
3497
3498/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003499 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003500 request the device to get out of IMPS power state. Upon
3501 the call of this API the WLAN DAL will send a HAL Exit
3502 IMPS request message to the lower RIVA sub-system if DAL
3503 is in state STARTED.
3504
3505 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003506 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003507
Jeff Johnson295189b2012-06-20 16:38:30 -07003508
Jeff Johnsone7245742012-09-05 17:12:55 -07003509
3510 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003512
Jeff Johnson295189b2012-06-20 16:38:30 -07003513 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 callback
3515
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 @see WDI_Start
3517 @return Result of the function call
3518*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003519WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003520WDI_ExitImpsReq
3521(
3522 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3523 void* pUserData
3524)
3525{
3526 WDI_EventInfoType wdiEventData;
3527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3528
3529 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003530 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003531 ------------------------------------------------------------------------*/
3532 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3533 {
3534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3535 "WDI API call before module is initialized - Fail request");
3536
Jeff Johnsone7245742012-09-05 17:12:55 -07003537 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003538 }
3539
3540 /*------------------------------------------------------------------------
3541 Fill in Event data and post to the Main FSM
3542 ------------------------------------------------------------------------*/
3543 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003544 wdiEventData.pEventData = NULL;
3545 wdiEventData.uEventDataSize = 0;
3546 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003547 wdiEventData.pUserData = pUserData;
3548
3549 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3550
3551}/*WDI_ExitImpsReq*/
3552
3553/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003554 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 request the device to get into BMPS power state. Upon
3556 the call of this API the WLAN DAL will pack and send a
3557 HAL Enter BMPS request message to the lower RIVA
3558 sub-system if DAL is in state STARTED.
3559
3560 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003561 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003562
3563 WDI_PostAssocReq must have been called.
3564
Jeff Johnsone7245742012-09-05 17:12:55 -07003565 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003566 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003567
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 wdiEnterBmpsRspCb: callback for passing back the
3569 response of the Enter BMPS operation received from the
3570 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003571
Jeff Johnson295189b2012-06-20 16:38:30 -07003572 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003573 callback
3574
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 @see WDI_PostAssocReq
3576 @return Result of the function call
3577*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003578WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003579WDI_EnterBmpsReq
3580(
3581 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3582 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3583 void* pUserData
3584)
3585{
3586 WDI_EventInfoType wdiEventData;
3587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3588
3589 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003591 ------------------------------------------------------------------------*/
3592 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3593 {
3594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3595 "WDI API call before module is initialized - Fail request");
3596
Jeff Johnsone7245742012-09-05 17:12:55 -07003597 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 }
3599
3600 /*------------------------------------------------------------------------
3601 Fill in Event data and post to the Main FSM
3602 ------------------------------------------------------------------------*/
3603 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3605 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3606 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003607 wdiEventData.pUserData = pUserData;
3608
3609 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3610
3611}/*WDI_EnterBmpsReq*/
3612
3613/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 request the device to get out of BMPS power state. Upon
3616 the call of this API the WLAN DAL will pack and send a
3617 HAL Exit BMPS request message to the lower RIVA
3618 sub-system if DAL is in state STARTED.
3619
3620 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003622
3623 WDI_PostAssocReq must have been called.
3624
Jeff Johnsone7245742012-09-05 17:12:55 -07003625 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003626 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003627
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 wdiExitBmpsRspCb: callback for passing back the response
3629 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003630
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003632 callback
3633
Jeff Johnson295189b2012-06-20 16:38:30 -07003634 @see WDI_PostAssocReq
3635 @return Result of the function call
3636*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003637WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003638WDI_ExitBmpsReq
3639(
3640 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3641 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3642 void* pUserData
3643)
3644{
3645 WDI_EventInfoType wdiEventData;
3646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3647
3648 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 ------------------------------------------------------------------------*/
3651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3652 {
3653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3654 "WDI API call before module is initialized - Fail request");
3655
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003657 }
3658
3659 /*------------------------------------------------------------------------
3660 Fill in Event data and post to the Main FSM
3661 ------------------------------------------------------------------------*/
3662 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3664 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3665 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 wdiEventData.pUserData = pUserData;
3667
3668 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3669
3670}/*WDI_ExitBmpsReq*/
3671
3672/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 request the device to get into UAPSD power state. Upon
3675 the call of this API the WLAN DAL will pack and send a
3676 HAL Enter UAPSD request message to the lower RIVA
3677 sub-system if DAL is in state STARTED.
3678
3679 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003681
3682 WDI_PostAssocReq must have been called.
3683 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003684
3685 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003687
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 wdiEnterUapsdRspCb: callback for passing back the
3689 response of the Enter UAPSD operation received from the
3690 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003691
Jeff Johnson295189b2012-06-20 16:38:30 -07003692 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 callback
3694
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3696 @return Result of the function call
3697*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003698WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003699WDI_EnterUapsdReq
3700(
3701 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3702 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3703 void* pUserData
3704)
3705{
3706 WDI_EventInfoType wdiEventData;
3707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3708
3709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 ------------------------------------------------------------------------*/
3712 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3713 {
3714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3715 "WDI API call before module is initialized - Fail request");
3716
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 }
3719
3720 /*------------------------------------------------------------------------
3721 Fill in Event data and post to the Main FSM
3722 ------------------------------------------------------------------------*/
3723 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3725 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3726 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 wdiEventData.pUserData = pUserData;
3728
3729 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3730
3731}/*WDI_EnterUapsdReq*/
3732
3733/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003734 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003735 request the device to get out of UAPSD power state. Upon
3736 the call of this API the WLAN DAL will send a HAL Exit
3737 UAPSD request message to the lower RIVA sub-system if
3738 DAL is in state STARTED.
3739
3740 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003742
3743 WDI_PostAssocReq must have been called.
3744
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 response of the Exit UAPSD operation received from the
3747 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003748
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003750 callback
3751
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 @see WDI_PostAssocReq
3753 @return Result of the function call
3754*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003755WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003756WDI_ExitUapsdReq
3757(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003758 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3760 void* pUserData
3761)
3762{
3763 WDI_EventInfoType wdiEventData;
3764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3765
3766 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003767 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003768 ------------------------------------------------------------------------*/
3769 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3770 {
3771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3772 "WDI API call before module is initialized - Fail request");
3773
Jeff Johnsone7245742012-09-05 17:12:55 -07003774 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 }
3776
3777 /*------------------------------------------------------------------------
3778 Fill in Event data and post to the Main FSM
3779 ------------------------------------------------------------------------*/
3780 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003781 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3782 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003783 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 wdiEventData.pUserData = pUserData;
3785
3786 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3787
3788}/*WDI_ExitUapsdReq*/
3789
3790/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003791 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003792 MAC wants to set the UAPSD related configurations
3793 of an associated STA (while acting as an AP) to the WLAN
3794 Device. Upon the call of this API the WLAN DAL will pack
3795 and send a HAL Update UAPSD params request message to
3796 the lower RIVA sub-system if DAL is in state STARTED.
3797
3798 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003800
3801 WDI_ConfigBSSReq must have been called.
3802
Jeff Johnsone7245742012-09-05 17:12:55 -07003803 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003804 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003805
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 wdiUpdateUapsdParamsCb: callback for passing back the
3807 response of the update UAPSD params operation received
3808 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003809
Jeff Johnson295189b2012-06-20 16:38:30 -07003810 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 callback
3812
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 @see WDI_ConfigBSSReq
3814 @return Result of the function call
3815*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003816WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003817WDI_UpdateUapsdParamsReq
3818(
3819 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3820 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3821 void* pUserData
3822)
3823{
3824 WDI_EventInfoType wdiEventData;
3825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3826
3827 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003828 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 ------------------------------------------------------------------------*/
3830 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3831 {
3832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3833 "WDI API call before module is initialized - Fail request");
3834
Jeff Johnsone7245742012-09-05 17:12:55 -07003835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 }
3837
3838 /*------------------------------------------------------------------------
3839 Fill in Event data and post to the Main FSM
3840 ------------------------------------------------------------------------*/
3841 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003842 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003843 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 wdiEventData.pUserData = pUserData;
3846
3847 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3848
3849}/*WDI_UpdateUapsdParamsReq*/
3850
3851/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003852 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003853 MAC wants to set the UAPSD related configurations before
3854 requesting for enter UAPSD power state to the WLAN
3855 Device. Upon the call of this API the WLAN DAL will pack
3856 and send a HAL Set UAPSD params request message to
3857 the lower RIVA sub-system if DAL is in state STARTED.
3858
3859 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003861
3862 WDI_PostAssocReq must have been called.
3863
3864 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3865 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003866
Jeff Johnson295189b2012-06-20 16:38:30 -07003867 wdiSetUapsdAcParamsCb: callback for passing back the
3868 response of the set UAPSD params operation received from
3869 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003870
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 callback
3873
Jeff Johnson295189b2012-06-20 16:38:30 -07003874 @see WDI_PostAssocReq
3875 @return Result of the function call
3876*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003877WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003878WDI_SetUapsdAcParamsReq
3879(
3880 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3881 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3882 void* pUserData
3883)
3884{
3885 WDI_EventInfoType wdiEventData;
3886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3887
3888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003889 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 ------------------------------------------------------------------------*/
3891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3892 {
3893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3894 "WDI API call before module is initialized - Fail request");
3895
Jeff Johnsone7245742012-09-05 17:12:55 -07003896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003897 }
3898
3899 /*------------------------------------------------------------------------
3900 Fill in Event data and post to the Main FSM
3901 ------------------------------------------------------------------------*/
3902 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 wdiEventData.pEventData = pwdiUapsdInfo;
3904 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3905 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 wdiEventData.pUserData = pUserData;
3907
3908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3909
3910}/*WDI_SetUapsdAcParamsReq*/
3911
3912/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003913 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003914 MAC wants to set/reset the RXP filters for received pkts
3915 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3916 and send a HAL configure RXP filter request message to
3917 the lower RIVA sub-system.
3918
3919 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003920 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003921
Jeff Johnsone7245742012-09-05 17:12:55 -07003922
3923 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 filter as specified by the Device
3925 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003926
Jeff Johnson295189b2012-06-20 16:38:30 -07003927 wdiConfigureRxpFilterCb: callback for passing back the
3928 response of the configure RXP filter operation received
3929 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003930
Jeff Johnson295189b2012-06-20 16:38:30 -07003931 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 callback
3933
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 @return Result of the function call
3935*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003936WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003937WDI_ConfigureRxpFilterReq
3938(
3939 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3940 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3941 void* pUserData
3942)
3943{
3944 WDI_EventInfoType wdiEventData;
3945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3946
3947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003948 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 ------------------------------------------------------------------------*/
3950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3951 {
3952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3953 "WDI API call before module is initialized - Fail request");
3954
Jeff Johnsone7245742012-09-05 17:12:55 -07003955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 }
3957
3958 /*------------------------------------------------------------------------
3959 Fill in Event data and post to the Main FSM
3960 ------------------------------------------------------------------------*/
3961 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003962 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3963 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3964 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003965 wdiEventData.pUserData = pUserData;
3966
3967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3968}/*WDI_ConfigureRxpFilterReq*/
3969
3970/**
3971 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3972 wants to set the beacon filters while in power save.
3973 Upon the call of this API the WLAN DAL will pack and
3974 send a Beacon filter request message to the
3975 lower RIVA sub-system.
3976
3977 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003978 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003979
Jeff Johnsone7245742012-09-05 17:12:55 -07003980
3981 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003982 filter as specified by the Device
3983 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003984
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 wdiBeaconFilterCb: callback for passing back the
3986 response of the set beacon filter operation received
3987 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003988
Jeff Johnson295189b2012-06-20 16:38:30 -07003989 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003990 callback
3991
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 @return Result of the function call
3993*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003994WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003995WDI_SetBeaconFilterReq
3996(
3997 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3998 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3999 void* pUserData
4000)
4001{
4002 WDI_EventInfoType wdiEventData;
4003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4004
4005 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004006 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 ------------------------------------------------------------------------*/
4008 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4009 {
4010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4011 "WDI API call before module is initialized - Fail request");
4012
Jeff Johnsone7245742012-09-05 17:12:55 -07004013 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 }
4015
4016 /*------------------------------------------------------------------------
4017 Fill in Event data and post to the Main FSM
4018 ------------------------------------------------------------------------*/
4019 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004021 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004022 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004023 wdiEventData.pUserData = pUserData;
4024
4025 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4026}/*WDI_SetBeaconFilterReq*/
4027
4028/**
4029 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4030 wants to remove the beacon filter for particular IE
4031 while in power save. Upon the call of this API the WLAN
4032 DAL will pack and send a remove Beacon filter request
4033 message to the lower RIVA sub-system.
4034
4035 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004037
Jeff Johnsone7245742012-09-05 17:12:55 -07004038
4039 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004040 filter as specified by the Device
4041 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004042
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 wdiBeaconFilterCb: callback for passing back the
4044 response of the remove beacon filter operation received
4045 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004046
Jeff Johnson295189b2012-06-20 16:38:30 -07004047 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004048 callback
4049
Jeff Johnson295189b2012-06-20 16:38:30 -07004050 @return Result of the function call
4051*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004052WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004053WDI_RemBeaconFilterReq
4054(
4055 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4056 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4057 void* pUserData
4058)
4059{
4060 WDI_EventInfoType wdiEventData;
4061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4062
4063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 ------------------------------------------------------------------------*/
4066 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4067 {
4068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4069 "WDI API call before module is initialized - Fail request");
4070
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 }
4073
4074 /*------------------------------------------------------------------------
4075 Fill in Event data and post to the Main FSM
4076 ------------------------------------------------------------------------*/
4077 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004078 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004079 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 wdiEventData.pUserData = pUserData;
4082
4083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4084}/*WDI_RemBeaconFilterReq*/
4085
4086/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004087 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004088 MAC wants to set the RSSI thresholds related
4089 configurations while in power save. Upon the call of
4090 this API the WLAN DAL will pack and send a HAL Set RSSI
4091 thresholds request message to the lower RIVA
4092 sub-system if DAL is in state STARTED.
4093
4094 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004096
4097 WDI_PostAssocReq must have been called.
4098
4099 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4100 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004101
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 wdiSetUapsdAcParamsCb: callback for passing back the
4103 response of the set UAPSD params operation received from
4104 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004105
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004107 callback
4108
Jeff Johnson295189b2012-06-20 16:38:30 -07004109 @see WDI_PostAssocReq
4110 @return Result of the function call
4111*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004112WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004113WDI_SetRSSIThresholdsReq
4114(
4115 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4116 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4117 void* pUserData
4118)
4119{
4120 WDI_EventInfoType wdiEventData;
4121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4122
4123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 ------------------------------------------------------------------------*/
4126 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4127 {
4128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4129 "WDI API call before module is initialized - Fail request");
4130
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 }
4133
4134 /*------------------------------------------------------------------------
4135 Fill in Event data and post to the Main FSM
4136 ------------------------------------------------------------------------*/
4137 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004139 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004140 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 wdiEventData.pUserData = pUserData;
4142
4143 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4144}/* WDI_SetRSSIThresholdsReq*/
4145
4146/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 wants to set the filter to minimize unnecessary host
4149 wakeup due to broadcast traffic while in power save.
4150 Upon the call of this API the WLAN DAL will pack and
4151 send a HAL host offload request message to the
4152 lower RIVA sub-system if DAL is in state STARTED.
4153
4154 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004156
4157 WDI_PostAssocReq must have been called.
4158
Jeff Johnsone7245742012-09-05 17:12:55 -07004159 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004160 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004161
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 wdiHostOffloadCb: callback for passing back the response
4163 of the host offload operation received from the
4164 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004165
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004167 callback
4168
Jeff Johnson295189b2012-06-20 16:38:30 -07004169 @see WDI_PostAssocReq
4170 @return Result of the function call
4171*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004172WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004173WDI_HostOffloadReq
4174(
4175 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4176 WDI_HostOffloadCb wdiHostOffloadCb,
4177 void* pUserData
4178)
4179{
4180 WDI_EventInfoType wdiEventData;
4181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4182
4183 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 ------------------------------------------------------------------------*/
4186 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4187 {
4188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4189 "WDI API call before module is initialized - Fail request");
4190
Jeff Johnsone7245742012-09-05 17:12:55 -07004191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 }
4193
4194 /*------------------------------------------------------------------------
4195 Fill in Event data and post to the Main FSM
4196 ------------------------------------------------------------------------*/
4197 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004199 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 wdiEventData.pUserData = pUserData;
4202
4203 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4204}/*WDI_HostOffloadReq*/
4205
4206/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 @brief WDI_KeepAliveReq will be called when the upper MAC
4208 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004209 and minimize unnecessary host wakeups due to while in power save.
4210 Upon the call of this API the WLAN DAL will pack and
4211 send a HAL Keep Alive request message to the
4212 lower RIVA sub-system if DAL is in state STARTED.
4213
4214 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004215 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004216
4217 WDI_PostAssocReq must have been called.
4218
Jeff Johnsone7245742012-09-05 17:12:55 -07004219 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004220 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004221
Jeff Johnson295189b2012-06-20 16:38:30 -07004222 wdiKeepAliveCb: callback for passing back the response
4223 of the Keep Alive operation received from the
4224 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004225
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004227 callback
4228
Jeff Johnson295189b2012-06-20 16:38:30 -07004229 @see WDI_PostAssocReq
4230 @return Result of the function call
4231*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004232WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004233WDI_KeepAliveReq
4234(
4235 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4236 WDI_KeepAliveCb wdiKeepAliveCb,
4237 void* pUserData
4238)
4239{
4240 WDI_EventInfoType wdiEventData;
4241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4242
4243 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004244 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 ------------------------------------------------------------------------*/
4246 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4247 {
4248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4249 "WDI_KeepAliveReq: WDI API call before module "
4250 "is initialized - Fail request");
4251
Jeff Johnsone7245742012-09-05 17:12:55 -07004252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004253 }
4254
4255 /*------------------------------------------------------------------------
4256 Fill in Event data and post to the Main FSM
4257 ------------------------------------------------------------------------*/
4258 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004259 wdiEventData.pEventData = pwdiKeepAliveParams;
4260 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4261 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 wdiEventData.pUserData = pUserData;
4263
4264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4265}/*WDI_KeepAliveReq*/
4266
4267/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004268 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004269 wants to set the Wowl Bcast ptrn to minimize unnecessary
4270 host wakeup due to broadcast traffic while in power
4271 save. Upon the call of this API the WLAN DAL will pack
4272 and send a HAL Wowl Bcast ptrn request message to the
4273 lower RIVA sub-system if DAL is in state STARTED.
4274
4275 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004277
4278 WDI_PostAssocReq must have been called.
4279
Jeff Johnsone7245742012-09-05 17:12:55 -07004280 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004281 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004282
Jeff Johnson295189b2012-06-20 16:38:30 -07004283 wdiWowlAddBcPtrnCb: callback for passing back the
4284 response of the add Wowl bcast ptrn operation received
4285 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004286
Jeff Johnson295189b2012-06-20 16:38:30 -07004287 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004288 callback
4289
Jeff Johnson295189b2012-06-20 16:38:30 -07004290 @see WDI_PostAssocReq
4291 @return Result of the function call
4292*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004294WDI_WowlAddBcPtrnReq
4295(
4296 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4297 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4298 void* pUserData
4299)
4300{
4301 WDI_EventInfoType wdiEventData;
4302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4303
4304 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004306 ------------------------------------------------------------------------*/
4307 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4308 {
4309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4310 "WDI API call before module is initialized - Fail request");
4311
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 }
4314
4315 /*------------------------------------------------------------------------
4316 Fill in Event data and post to the Main FSM
4317 ------------------------------------------------------------------------*/
4318 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004319 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004320 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004321 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 wdiEventData.pUserData = pUserData;
4323
4324 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4325}/*WDI_WowlAddBcPtrnReq*/
4326
4327/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004328 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 wants to clear the Wowl Bcast ptrn. Upon the call of
4330 this API the WLAN DAL will pack and send a HAL delete
4331 Wowl Bcast ptrn request message to the lower RIVA
4332 sub-system if DAL is in state STARTED.
4333
4334 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004336
4337 WDI_WowlAddBcPtrnReq must have been called.
4338
Jeff Johnsone7245742012-09-05 17:12:55 -07004339 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004340 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004341
Jeff Johnson295189b2012-06-20 16:38:30 -07004342 wdiWowlDelBcPtrnCb: callback for passing back the
4343 response of the del Wowl bcast ptrn operation received
4344 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004345
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004347 callback
4348
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 @see WDI_WowlAddBcPtrnReq
4350 @return Result of the function call
4351*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004352WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004353WDI_WowlDelBcPtrnReq
4354(
4355 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4356 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4357 void* pUserData
4358)
4359{
4360 WDI_EventInfoType wdiEventData;
4361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4362
4363 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004365 ------------------------------------------------------------------------*/
4366 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4367 {
4368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4369 "WDI API call before module is initialized - Fail request");
4370
Jeff Johnsone7245742012-09-05 17:12:55 -07004371 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004372 }
4373
4374 /*------------------------------------------------------------------------
4375 Fill in Event data and post to the Main FSM
4376 ------------------------------------------------------------------------*/
4377 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004378 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004379 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004380 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004381 wdiEventData.pUserData = pUserData;
4382
4383 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4384}/*WDI_WowlDelBcPtrnReq*/
4385
4386/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004387 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004388 wants to enter the Wowl state to minimize unnecessary
4389 host wakeup while in power save. Upon the call of this
4390 API the WLAN DAL will pack and send a HAL Wowl enter
4391 request message to the lower RIVA sub-system if DAL is
4392 in state STARTED.
4393
4394 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004396
4397 WDI_PostAssocReq must have been called.
4398
Jeff Johnsone7245742012-09-05 17:12:55 -07004399 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004400 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004401
Jeff Johnson295189b2012-06-20 16:38:30 -07004402 wdiWowlEnterReqCb: callback for passing back the
4403 response of the enter Wowl operation received from the
4404 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004405
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004407 callback
4408
Jeff Johnson295189b2012-06-20 16:38:30 -07004409 @see WDI_PostAssocReq
4410 @return Result of the function call
4411*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004412WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004413WDI_WowlEnterReq
4414(
4415 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4416 WDI_WowlEnterReqCb wdiWowlEnterCb,
4417 void* pUserData
4418)
4419{
4420 WDI_EventInfoType wdiEventData;
4421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4422
4423 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004425 ------------------------------------------------------------------------*/
4426 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4427 {
4428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4429 "WDI API call before module is initialized - Fail request");
4430
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 }
4433
4434 /*------------------------------------------------------------------------
4435 Fill in Event data and post to the Main FSM
4436 ------------------------------------------------------------------------*/
4437 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004439 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004440 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004441 wdiEventData.pUserData = pUserData;
4442
4443 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4444}/*WDI_WowlEnterReq*/
4445
4446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004447 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 wants to exit the Wowl state. Upon the call of this API
4449 the WLAN DAL will pack and send a HAL Wowl exit request
4450 message to the lower RIVA sub-system if DAL is in state
4451 STARTED.
4452
4453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004455
4456 WDI_WowlEnterReq must have been called.
4457
Jeff Johnsone7245742012-09-05 17:12:55 -07004458 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004459 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004460
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 wdiWowlExitReqCb: callback for passing back the response
4462 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004463
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004465 callback
4466
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 @see WDI_WowlEnterReq
4468 @return Result of the function call
4469*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004470WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004471WDI_WowlExitReq
4472(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004473 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004474 WDI_WowlExitReqCb wdiWowlExitCb,
4475 void* pUserData
4476)
4477{
4478 WDI_EventInfoType wdiEventData;
4479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4480
4481 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004482 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004483 ------------------------------------------------------------------------*/
4484 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4485 {
4486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4487 "WDI API call before module is initialized - Fail request");
4488
Jeff Johnsone7245742012-09-05 17:12:55 -07004489 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 }
4491
4492 /*------------------------------------------------------------------------
4493 Fill in Event data and post to the Main FSM
4494 ------------------------------------------------------------------------*/
4495 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004496 wdiEventData.pEventData = pwdiWowlExitParams;
4497 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004498 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004499 wdiEventData.pUserData = pUserData;
4500
4501 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4502}/*WDI_WowlExitReq*/
4503
4504/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004505 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 the upper MAC wants to dynamically adjusts the listen
4507 interval based on the WLAN/MSM activity. Upon the call
4508 of this API the WLAN DAL will pack and send a HAL
4509 configure Apps Cpu Wakeup State request message to the
4510 lower RIVA sub-system.
4511
4512 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004513 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004514
Jeff Johnsone7245742012-09-05 17:12:55 -07004515
4516 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 Apps Cpu Wakeup State as specified by the
4518 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004519
Jeff Johnson295189b2012-06-20 16:38:30 -07004520 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4521 back the response of the configure Apps Cpu Wakeup State
4522 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004523
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004525 callback
4526
Jeff Johnson295189b2012-06-20 16:38:30 -07004527 @return Result of the function call
4528*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004529WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004530WDI_ConfigureAppsCpuWakeupStateReq
4531(
4532 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4533 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4534 void* pUserData
4535)
4536{
4537 WDI_EventInfoType wdiEventData;
4538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4539
4540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004542 ------------------------------------------------------------------------*/
4543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4544 {
4545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4546 "WDI API call before module is initialized - Fail request");
4547
Jeff Johnsone7245742012-09-05 17:12:55 -07004548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004549 }
4550
4551 /*------------------------------------------------------------------------
4552 Fill in Event data and post to the Main FSM
4553 ------------------------------------------------------------------------*/
4554 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004555 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4556 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4557 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004558 wdiEventData.pUserData = pUserData;
4559
4560 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4561}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4562/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004563 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004564 to to perform a flush operation on a given AC. Upon the
4565 call of this API the WLAN DAL will pack and send a HAL
4566 Flush AC request message to the lower RIVA sub-system if
4567 DAL is in state STARTED.
4568
4569 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004571
4572 WDI_AddBAReq must have been called.
4573
Jeff Johnsone7245742012-09-05 17:12:55 -07004574 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004575 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004576
Jeff Johnson295189b2012-06-20 16:38:30 -07004577 wdiFlushAcRspCb: callback for passing back the response
4578 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004579
Jeff Johnson295189b2012-06-20 16:38:30 -07004580 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004581 callback
4582
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 @see WDI_AddBAReq
4584 @return Result of the function call
4585*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004586WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004587WDI_FlushAcReq
4588(
4589 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4590 WDI_FlushAcRspCb wdiFlushAcRspCb,
4591 void* pUserData
4592)
4593{
4594 WDI_EventInfoType wdiEventData;
4595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4596
4597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004598 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004599 ------------------------------------------------------------------------*/
4600 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4601 {
4602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4603 "WDI API call before module is initialized - Fail request");
4604
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 }
4607
4608 /*------------------------------------------------------------------------
4609 Fill in Event data and post to the Main FSM
4610 ------------------------------------------------------------------------*/
4611 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 wdiEventData.pEventData = pwdiFlushAcReqParams;
4613 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4614 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 wdiEventData.pUserData = pUserData;
4616
4617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4618
4619}/*WDI_FlushAcReq*/
4620
4621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 wants to notify the lower mac on a BT AMP event. This is
4624 to inform BTC-SLM that some BT AMP event occurred. Upon
4625 the call of this API the WLAN DAL will pack and send a
4626 HAL BT AMP event request message to the lower RIVA
4627 sub-system if DAL is in state STARTED.
4628
4629 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004631
Jeff Johnsone7245742012-09-05 17:12:55 -07004632
4633 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004634 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004635
Jeff Johnson295189b2012-06-20 16:38:30 -07004636 wdiBtAmpEventRspCb: callback for passing back the
4637 response of the BT AMP event operation received from the
4638 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004639
Jeff Johnson295189b2012-06-20 16:38:30 -07004640 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004641 callback
4642
Jeff Johnson295189b2012-06-20 16:38:30 -07004643 @return Result of the function call
4644*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004645WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004646WDI_BtAmpEventReq
4647(
4648 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4649 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4650 void* pUserData
4651)
4652{
4653 WDI_EventInfoType wdiEventData;
4654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4655
4656 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004657 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 ------------------------------------------------------------------------*/
4659 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4660 {
4661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4662 "WDI API call before module is initialized - Fail request");
4663
Jeff Johnsone7245742012-09-05 17:12:55 -07004664 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004665 }
4666
4667 /*------------------------------------------------------------------------
4668 Fill in Event data and post to the Main FSM
4669 ------------------------------------------------------------------------*/
4670 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004671 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4672 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4673 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004674 wdiEventData.pUserData = pUserData;
4675
4676 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4677
4678}/*WDI_BtAmpEventReq*/
4679
Jeff Johnsone7245742012-09-05 17:12:55 -07004680#ifdef FEATURE_OEM_DATA_SUPPORT
4681/**
4682 @brief WDI_Start Oem Data Req will be called when the upper MAC
4683 wants to notify the lower mac on a oem data Req event.Upon
4684 the call of this API the WLAN DAL will pack and send a
4685 HAL OEM Data Req event request message to the lower RIVA
4686 sub-system if DAL is in state STARTED.
4687
4688 In state BUSY this request will be queued. Request won't
4689 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004690
4691
Jeff Johnsone7245742012-09-05 17:12:55 -07004692
4693 @param pwdiOemDataReqParams: the Oem Data Req as
4694 specified by the Device Interface
4695
4696 wdiStartOemDataRspCb: callback for passing back the
4697 response of the Oem Data Req received from the
4698 device
4699
4700 pUserData: user data will be passed back with the
4701 callback
4702
4703 @return Result of the function call
4704*/
4705WDI_Status
4706WDI_StartOemDataReq
4707(
4708 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4709 WDI_oemDataRspCb wdiOemDataRspCb,
4710 void* pUserData
4711)
4712{
4713 WDI_EventInfoType wdiEventData;
4714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4715
4716 /*------------------------------------------------------------------------
4717 Sanity Check
4718 ------------------------------------------------------------------------*/
4719 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4720 {
4721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4722 "WDI API call before module is initialized - Fail request");
4723
4724 return WDI_STATUS_E_NOT_ALLOWED;
4725 }
4726
4727 /*------------------------------------------------------------------------
4728 Fill in Event data and post to the Main FSM
4729 ------------------------------------------------------------------------*/
4730 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4731 wdiEventData.pEventData = pwdiOemDataReqParams;
4732 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4733 wdiEventData.pCBfnc = wdiOemDataRspCb;
4734 wdiEventData.pUserData = pUserData;
4735
4736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4737
4738
4739}
4740
4741#endif
4742
4743
4744/*========================================================================
4745
Jeff Johnson295189b2012-06-20 16:38:30 -07004746 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004747
Jeff Johnson295189b2012-06-20 16:38:30 -07004748==========================================================================*/
4749/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004751 the WLAN HW to change the current channel of operation.
4752 Upon the call of this API the WLAN DAL will pack and
4753 send a HAL Start request message to the lower RIVA
4754 sub-system if DAL is in state STARTED.
4755
4756 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004757 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004758
4759 WDI_Start must have been called.
4760
Jeff Johnsone7245742012-09-05 17:12:55 -07004761 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004763
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 wdiSwitchChRspCb: callback for passing back the response
4765 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004766
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004768 callback
4769
Jeff Johnson295189b2012-06-20 16:38:30 -07004770 @see WDI_Start
4771 @return Result of the function call
4772*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004773WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004774WDI_SwitchChReq
4775(
4776 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4777 WDI_SwitchChRspCb wdiSwitchChRspCb,
4778 void* pUserData
4779)
4780{
4781 WDI_EventInfoType wdiEventData;
4782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4783
4784 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004785 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004786 ------------------------------------------------------------------------*/
4787 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4788 {
4789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4790 "WDI API call before module is initialized - Fail request");
4791
Jeff Johnsone7245742012-09-05 17:12:55 -07004792 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 }
4794
4795 /*------------------------------------------------------------------------
4796 Fill in Event data and post to the Main FSM
4797 ------------------------------------------------------------------------*/
4798 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 wdiEventData.pEventData = pwdiSwitchChReqParams;
4800 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4801 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 wdiEventData.pUserData = pUserData;
4803
4804 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4805
4806}/*WDI_SwitchChReq*/
4807
4808
4809/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004810 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004811 wishes to add or update a STA in HW. Upon the call of
4812 this API the WLAN DAL will pack and send a HAL Start
4813 message request message to the lower RIVA sub-system if
4814 DAL is in state STARTED.
4815
4816 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004817 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004818
4819 WDI_Start must have been called.
4820
Jeff Johnsone7245742012-09-05 17:12:55 -07004821 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004822 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004823
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 wdiConfigSTARspCb: callback for passing back the
4825 response of the config STA operation received from the
4826 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004827
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004829 callback
4830
Jeff Johnson295189b2012-06-20 16:38:30 -07004831 @see WDI_Start
4832 @return Result of the function call
4833*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004834WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004835WDI_ConfigSTAReq
4836(
4837 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4838 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4839 void* pUserData
4840)
4841{
4842 WDI_EventInfoType wdiEventData;
4843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4844
4845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 ------------------------------------------------------------------------*/
4848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4849 {
4850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4851 "WDI API call before module is initialized - Fail request");
4852
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004854 }
4855
4856 /*------------------------------------------------------------------------
4857 Fill in Event data and post to the Main FSM
4858 ------------------------------------------------------------------------*/
4859 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4861 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4862 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 wdiEventData.pUserData = pUserData;
4864
4865 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4866
4867}/*WDI_ConfigSTAReq*/
4868
4869/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004870 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004871 wants to change the state of an ongoing link. Upon the
4872 call of this API the WLAN DAL will pack and send a HAL
4873 Start message request message to the lower RIVA
4874 sub-system if DAL is in state STARTED.
4875
4876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004878
4879 WDI_JoinStartReq must have been called.
4880
Jeff Johnsone7245742012-09-05 17:12:55 -07004881 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004883
Jeff Johnson295189b2012-06-20 16:38:30 -07004884 wdiSetLinkStateRspCb: callback for passing back the
4885 response of the set link state operation received from
4886 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004887
Jeff Johnson295189b2012-06-20 16:38:30 -07004888 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004889 callback
4890
Jeff Johnson295189b2012-06-20 16:38:30 -07004891 @see WDI_JoinStartReq
4892 @return Result of the function call
4893*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004895WDI_SetLinkStateReq
4896(
4897 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4898 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4899 void* pUserData
4900)
4901{
4902 WDI_EventInfoType wdiEventData;
4903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4904
4905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004907 ------------------------------------------------------------------------*/
4908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4909 {
4910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4911 "WDI API call before module is initialized - Fail request");
4912
Jeff Johnsone7245742012-09-05 17:12:55 -07004913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004914 }
4915
4916 /*------------------------------------------------------------------------
4917 Fill in Event data and post to the Main FSM
4918 ------------------------------------------------------------------------*/
4919 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004920 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4921 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4922 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004923 wdiEventData.pUserData = pUserData;
4924
4925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4926
4927}/*WDI_SetLinkStateReq*/
4928
4929
4930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004931 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004932 to get statistics (MIB counters) from the device. Upon
4933 the call of this API the WLAN DAL will pack and send a
4934 HAL Start request message to the lower RIVA sub-system
4935 if DAL is in state STARTED.
4936
4937 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004938 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004939
4940 WDI_Start must have been called.
4941
Jeff Johnsone7245742012-09-05 17:12:55 -07004942 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004943 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004944
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 wdiGetStatsRspCb: callback for passing back the response
4946 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004947
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 callback
4950
Jeff Johnson295189b2012-06-20 16:38:30 -07004951 @see WDI_Start
4952 @return Result of the function call
4953*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004954WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004955WDI_GetStatsReq
4956(
4957 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4958 WDI_GetStatsRspCb wdiGetStatsRspCb,
4959 void* pUserData
4960)
4961{
4962 WDI_EventInfoType wdiEventData;
4963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4964
4965 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004966 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004967 ------------------------------------------------------------------------*/
4968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4969 {
4970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4971 "WDI API call before module is initialized - Fail request");
4972
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004974 }
4975
4976 /*------------------------------------------------------------------------
4977 Fill in Event data and post to the Main FSM
4978 ------------------------------------------------------------------------*/
4979 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004980 wdiEventData.pEventData = pwdiGetStatsReqParams;
4981 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4982 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 wdiEventData.pUserData = pUserData;
4984
4985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4986
4987}/*WDI_GetStatsReq*/
4988
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08004989#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4990/**
4991 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4992 to get roam rssi from the device. Upon
4993 the call of this API the WLAN DAL will pack and send a
4994 HAL Start request message to the lower RIVA sub-system
4995 if DAL is in state STARTED.
4996
4997 In state BUSY this request will be queued. Request won't
4998 be allowed in any other state.
4999
5000 WDI_Start must have been called.
5001
5002 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5003 specified by the Device Interface
5004
5005 wdiGetRoamRssiRspCb: callback for passing back the response
5006 of the get stats operation received from the device
5007
5008 pUserData: user data will be passed back with the
5009 callback
5010
5011 @see WDI_Start
5012 @return Result of the function call
5013*/
5014WDI_Status
5015WDI_GetRoamRssiReq
5016(
5017 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5018 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5019 void* pUserData
5020)
5021{
5022 WDI_EventInfoType wdiEventData;
5023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5024
5025 /*------------------------------------------------------------------------
5026 Sanity Check
5027 ------------------------------------------------------------------------*/
5028 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5029 {
5030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5031 "WDI API call before module is initialized - Fail request");
5032
5033 return WDI_STATUS_E_NOT_ALLOWED;
5034 }
5035 /*------------------------------------------------------------------------
5036 Fill in Event data and post to the Main FSM
5037 ------------------------------------------------------------------------*/
5038 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5039 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5040 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5041 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5042 wdiEventData.pUserData = pUserData;
5043
5044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5045
5046}/*WDI_GetRoamRssiReq*/
5047#endif
5048
Jeff Johnson295189b2012-06-20 16:38:30 -07005049
5050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005051 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005052 it wishes to change the configuration of the WLAN
5053 Device. Upon the call of this API the WLAN DAL will pack
5054 and send a HAL Update CFG request message to the lower
5055 RIVA sub-system if DAL is in state STARTED.
5056
5057 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005058 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005059
5060 WDI_Start must have been called.
5061
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005064
Jeff Johnson295189b2012-06-20 16:38:30 -07005065 wdiUpdateCfgsRspCb: callback for passing back the
5066 response of the update cfg operation received from the
5067 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005068
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 callback
5071
Jeff Johnson295189b2012-06-20 16:38:30 -07005072 @see WDI_Start
5073 @return Result of the function call
5074*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005076WDI_UpdateCfgReq
5077(
5078 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5079 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5080 void* pUserData
5081)
5082{
5083 WDI_EventInfoType wdiEventData;
5084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5085
5086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 ------------------------------------------------------------------------*/
5089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5090 {
5091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5092 "WDI API call before module is initialized - Fail request");
5093
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 }
5096
5097 /*------------------------------------------------------------------------
5098 Fill in Event data and post to the Main FSM
5099 ------------------------------------------------------------------------*/
5100 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005101 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5102 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5103 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005104 wdiEventData.pUserData = pUserData;
5105
5106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5107
5108}/*WDI_UpdateCfgReq*/
5109
5110
5111
5112/**
5113 @brief WDI_AddBAReq will be called when the upper MAC has setup
5114 successfully a BA session and needs to notify the HW for
5115 the appropriate settings to take place. Upon the call of
5116 this API the WLAN DAL will pack and send a HAL Add BA
5117 request message to the lower RIVA sub-system if DAL is
5118 in state STARTED.
5119
5120 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005122
5123 WDI_PostAssocReq must have been called.
5124
5125 @param wdiAddBAReqParams: the add BA parameters as specified by
5126 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005127
Jeff Johnson295189b2012-06-20 16:38:30 -07005128 wdiAddBARspCb: callback for passing back the response of
5129 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005130
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005132 callback
5133
Jeff Johnson295189b2012-06-20 16:38:30 -07005134 @see WDI_PostAssocReq
5135 @return Result of the function call
5136*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005137WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005138WDI_AddBAReq
5139(
5140 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5141 WDI_AddBARspCb wdiAddBARspCb,
5142 void* pUserData
5143)
5144{
5145 WDI_EventInfoType wdiEventData;
5146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5147
5148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 ------------------------------------------------------------------------*/
5151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5152 {
5153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5154 "WDI API call before module is initialized - Fail request");
5155
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005157 }
5158
5159 /*------------------------------------------------------------------------
5160 Fill in Event data and post to the Main FSM
5161 ------------------------------------------------------------------------*/
5162 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 wdiEventData.pEventData = pwdiAddBAReqParams;
5164 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5165 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 wdiEventData.pUserData = pUserData;
5167
5168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5169
5170}/*WDI_AddBAReq*/
5171
5172
5173/**
5174 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5175 successfully a BA session and needs to notify the HW for
5176 the appropriate settings to take place. Upon the call of
5177 this API the WLAN DAL will pack and send a HAL Add BA
5178 request message to the lower RIVA sub-system if DAL is
5179 in state STARTED.
5180
5181 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005183
5184 WDI_PostAssocReq must have been called.
5185
5186 @param wdiAddBAReqParams: the add BA parameters as specified by
5187 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005188
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 wdiAddBARspCb: callback for passing back the response of
5190 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005191
Jeff Johnson295189b2012-06-20 16:38:30 -07005192 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005193 callback
5194
Jeff Johnson295189b2012-06-20 16:38:30 -07005195 @see WDI_PostAssocReq
5196 @return Result of the function call
5197*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005199WDI_TriggerBAReq
5200(
5201 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5202 WDI_TriggerBARspCb wdiTriggerBARspCb,
5203 void* pUserData
5204)
5205{
5206 WDI_EventInfoType wdiEventData;
5207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5208
5209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005211 ------------------------------------------------------------------------*/
5212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5213 {
5214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5215 "WDI API call before module is initialized - Fail request");
5216
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 }
5219
5220 /*------------------------------------------------------------------------
5221 Fill in Event data and post to the Main FSM
5222 ------------------------------------------------------------------------*/
5223 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005224 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5225 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5226 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 wdiEventData.pUserData = pUserData;
5228
5229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5230
5231}/*WDI_AddBAReq*/
5232
5233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005234 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005235 wishes to update any of the Beacon parameters used by HW.
5236 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5237 message to the lower RIVA sub-system if DAL is in state
5238 STARTED.
5239
5240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005242
5243 WDI_PostAssocReq must have been called.
5244
Jeff Johnsone7245742012-09-05 17:12:55 -07005245 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005246 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005247
Jeff Johnson295189b2012-06-20 16:38:30 -07005248 wdiUpdateBeaconParamsRspCb: callback for passing back the
5249 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005250
Jeff Johnson295189b2012-06-20 16:38:30 -07005251 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005252 callback
5253
Jeff Johnson295189b2012-06-20 16:38:30 -07005254 @see WDI_PostAssocReq
5255 @return Result of the function call
5256*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005257WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005258WDI_UpdateBeaconParamsReq
5259(
5260 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5261 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5262 void* pUserData
5263)
5264{
5265 WDI_EventInfoType wdiEventData;
5266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5267
5268 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005269 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 ------------------------------------------------------------------------*/
5271 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5272 {
5273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5274 "WDI API call before module is initialized - Fail request");
5275
Jeff Johnsone7245742012-09-05 17:12:55 -07005276 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 }
5278
5279 /*------------------------------------------------------------------------
5280 Fill in Event data and post to the Main FSM
5281 ------------------------------------------------------------------------*/
5282 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5284 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5285 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005286 wdiEventData.pUserData = pUserData;
5287
5288 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5289
5290}/*WDI_UpdateBeaconParamsReq*/
5291
5292/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005293 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005294 wishes to update the Beacon template used by HW.
5295 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5296 message to the lower RIVA sub-system if DAL is in state
5297 STARTED.
5298
5299 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005301
5302 WDI_PostAssocReq must have been called.
5303
Jeff Johnsone7245742012-09-05 17:12:55 -07005304 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005305 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005306
Jeff Johnson295189b2012-06-20 16:38:30 -07005307 wdiSendBeaconParamsRspCb: callback for passing back the
5308 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005309
Jeff Johnson295189b2012-06-20 16:38:30 -07005310 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005311 callback
5312
Jeff Johnson295189b2012-06-20 16:38:30 -07005313 @see WDI_PostAssocReq
5314 @return Result of the function call
5315*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005316WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005317WDI_SendBeaconParamsReq
5318(
5319 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5320 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5321 void* pUserData
5322)
5323{
5324 WDI_EventInfoType wdiEventData;
5325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5326
5327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005329 ------------------------------------------------------------------------*/
5330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5331 {
5332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5333 "WDI API call before module is initialized - Fail request");
5334
Jeff Johnsone7245742012-09-05 17:12:55 -07005335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005336 }
5337
5338 /*------------------------------------------------------------------------
5339 Fill in Event data and post to the Main FSM
5340 ------------------------------------------------------------------------*/
5341 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005342 wdiEventData.pEventData = pwdiSendBeaconParams;
5343 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5344 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 wdiEventData.pUserData = pUserData;
5346
5347 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5348
5349}/*WDI_SendBeaconParamsReq*/
5350
5351/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 upper MAC wants to update the probe response template to
5354 be transmitted as Soft AP
5355 Upon the call of this API the WLAN DAL will
5356 pack and send the probe rsp template message to the
5357 lower RIVA sub-system if DAL is in state STARTED.
5358
5359 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005360 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005361
5362
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005364 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005365
Jeff Johnson295189b2012-06-20 16:38:30 -07005366 wdiSendBeaconParamsRspCb: callback for passing back the
5367 response of the Send Beacon Params operation received
5368 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005369
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005371 callback
5372
Jeff Johnson295189b2012-06-20 16:38:30 -07005373 @see WDI_AddBAReq
5374 @return Result of the function call
5375*/
5376
Jeff Johnsone7245742012-09-05 17:12:55 -07005377WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005378WDI_UpdateProbeRspTemplateReq
5379(
5380 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5381 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5382 void* pUserData
5383)
5384{
5385 WDI_EventInfoType wdiEventData;
5386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5387
5388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005390 ------------------------------------------------------------------------*/
5391 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5392 {
5393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5394 "WDI API call before module is initialized - Fail request");
5395
Jeff Johnsone7245742012-09-05 17:12:55 -07005396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 }
5398
5399 /*------------------------------------------------------------------------
5400 Fill in Event data and post to the Main FSM
5401 ------------------------------------------------------------------------*/
5402 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5404 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5405 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 wdiEventData.pUserData = pUserData;
5407
5408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5409
5410}/*WDI_UpdateProbeRspTemplateReq*/
5411
5412/**
5413 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5414 to the NV memory.
5415
5416
5417 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5418 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005419
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 wdiNvDownloadRspCb: callback for passing back the response of
5421 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005422
Jeff Johnson295189b2012-06-20 16:38:30 -07005423 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005424 callback
5425
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 @see WDI_PostAssocReq
5427 @return Result of the function call
5428*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005429WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005430WDI_NvDownloadReq
5431(
5432 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5433 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5434 void* pUserData
5435)
5436{
5437 WDI_EventInfoType wdiEventData;
5438
5439 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005440 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005441 ------------------------------------------------------------------------*/
5442 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5443 {
5444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5445 "WDI API call before module is initialized - Fail request");
5446
Jeff Johnsone7245742012-09-05 17:12:55 -07005447 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005448 }
5449
5450 /*------------------------------------------------------------------------
5451 Fill in Event data and post to the Main FSM
5452 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005453 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5454 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5455 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5456 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005457 wdiEventData.pUserData = pUserData;
5458
5459 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5460
5461}/*WDI_NVDownloadReq*/
5462
Jeff Johnson295189b2012-06-20 16:38:30 -07005463/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 upper MAC wants to send Notice of Absence
5466 Upon the call of this API the WLAN DAL will
5467 pack and send the probe rsp template message to the
5468 lower RIVA sub-system if DAL is in state STARTED.
5469
5470 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005471 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005472
5473
Jeff Johnsone7245742012-09-05 17:12:55 -07005474 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005475 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005476
Jeff Johnson295189b2012-06-20 16:38:30 -07005477 wdiSendBeaconParamsRspCb: callback for passing back the
5478 response of the Send Beacon Params operation received
5479 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005480
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005482 callback
5483
Jeff Johnson295189b2012-06-20 16:38:30 -07005484 @see WDI_AddBAReq
5485 @return Result of the function call
5486*/
5487WDI_Status
5488WDI_SetP2PGONOAReq
5489(
5490 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5491 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5492 void* pUserData
5493)
5494{
5495 WDI_EventInfoType wdiEventData;
5496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5497
5498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005499 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005500 ------------------------------------------------------------------------*/
5501 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5502 {
5503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5504 "WDI API call before module is initialized - Fail request");
5505
Jeff Johnsone7245742012-09-05 17:12:55 -07005506 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 }
5508
5509 /*------------------------------------------------------------------------
5510 Fill in Event data and post to the Main FSM
5511 ------------------------------------------------------------------------*/
5512 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005513 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5514 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5515 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005516 wdiEventData.pUserData = pUserData;
5517
5518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5519
5520}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005521
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305522#ifdef FEATURE_WLAN_TDLS
5523/**
5524 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5525 upper MAC wants to send TDLS Link Establish Request Parameters
5526 Upon the call of this API the WLAN DAL will
5527 pack and send the TDLS Link Establish Request message to the
5528 lower RIVA sub-system if DAL is in state STARTED.
5529
5530 In state BUSY this request will be queued. Request won't
5531 be allowed in any other state.
5532
5533
5534 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5535 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5536
5537 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5538 response of the TDLS Link Establish request received
5539 from the device
5540
5541 pUserData: user data will be passed back with the
5542 callback
5543
5544 @see
5545 @return Result of the function call
5546*/
5547WDI_Status
5548WDI_SetTDLSLinkEstablishReq
5549(
5550 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5551 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5552 void* pUserData
5553)
5554{
5555 WDI_EventInfoType wdiEventData;
5556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5557
5558 /*------------------------------------------------------------------------
5559 Sanity Check
5560 ------------------------------------------------------------------------*/
5561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5562 {
5563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5564 "WDI API call before module is initialized - Fail request");
5565
5566 return WDI_STATUS_E_NOT_ALLOWED;
5567 }
5568
5569 /*------------------------------------------------------------------------
5570 Fill in Event data and post to the Main FSM
5571 ------------------------------------------------------------------------*/
5572 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5573 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5574 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5575 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5576 wdiEventData.pUserData = pUserData;
5577
5578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5579
5580}/*WDI_SetTDLSLinkEstablishReq*/
5581#endif
5582
Jeff Johnson295189b2012-06-20 16:38:30 -07005583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005584 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005585 UMAC wanted to add STA self while opening any new session
5586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005588
5589
Jeff Johnsone7245742012-09-05 17:12:55 -07005590 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005591 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005592
Jeff Johnson295189b2012-06-20 16:38:30 -07005593 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005594 callback
5595
5596 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005597 @return Result of the function call
5598*/
5599WDI_Status
5600WDI_AddSTASelfReq
5601(
5602 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5603 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5604 void* pUserData
5605)
5606{
5607 WDI_EventInfoType wdiEventData;
5608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5609
5610 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005611 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005612 ------------------------------------------------------------------------*/
5613 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5614 {
5615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5616 "WDI API call before module is initialized - Fail request");
5617
Jeff Johnsone7245742012-09-05 17:12:55 -07005618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005619 }
5620
5621 /*------------------------------------------------------------------------
5622 Fill in Event data and post to the Main FSM
5623 ------------------------------------------------------------------------*/
5624 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005625 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5626 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5627 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005628 wdiEventData.pUserData = pUserData;
5629
5630 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5631
5632}/*WDI_AddSTASelfReq*/
5633
5634
Jeff Johnsone7245742012-09-05 17:12:55 -07005635#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005636/**
5637 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5638 the device of a successful add TSpec negotiation. HW
5639 needs to receive the TSpec Info from the UMAC in order
5640 to configure properly the QoS data traffic. Upon the
5641 call of this API the WLAN DAL will pack and send a HAL
5642 Add TS request message to the lower RIVA sub-system if
5643 DAL is in state STARTED.
5644
5645 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005646 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005647
5648 WDI_PostAssocReq must have been called.
5649
5650 @param wdiAddTsReqParams: the add TS parameters as specified by
5651 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005652
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 wdiAddTsRspCb: callback for passing back the response of
5654 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005655
Jeff Johnson295189b2012-06-20 16:38:30 -07005656 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 callback
5658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 @see WDI_PostAssocReq
5660 @return Result of the function call
5661*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005662WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005663WDI_AggrAddTSReq
5664(
5665 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5666 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5667 void* pUserData
5668)
5669{
5670 WDI_EventInfoType wdiEventData;
5671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5672
5673 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005674 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005675 ------------------------------------------------------------------------*/
5676 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5677 {
5678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5679 "WDI API call before module is initialized - Fail request");
5680
Jeff Johnsone7245742012-09-05 17:12:55 -07005681 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 }
5683
5684 /*------------------------------------------------------------------------
5685 Fill in Event data and post to the Main FSM
5686 ------------------------------------------------------------------------*/
5687 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005688 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5689 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5690 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 wdiEventData.pUserData = pUserData;
5692
5693 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5694
5695}/*WDI_AggrAddTSReq*/
5696
5697#endif /* WLAN_FEATURE_VOWIFI_11R */
5698
Jeff Johnson295189b2012-06-20 16:38:30 -07005699/**
5700 @brief WDI_FTMCommandReq
5701 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005702
5703 @param ftmCommandReq: FTM Command Body
5704 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005706
Jeff Johnson295189b2012-06-20 16:38:30 -07005707 @see
5708 @return Result of the function call
5709*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005710WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005711WDI_FTMCommandReq
5712(
5713 WDI_FTMCommandReqType *ftmCommandReq,
5714 WDI_FTMCommandRspCb ftmCommandRspCb,
5715 void *pUserData
5716)
5717{
5718 WDI_EventInfoType wdiEventData;
5719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5720
5721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005722 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 ------------------------------------------------------------------------*/
5724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5725 {
5726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5727 "WDI API call before module is initialized - Fail request");
5728
Jeff Johnsone7245742012-09-05 17:12:55 -07005729 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 }
5731
5732 /*------------------------------------------------------------------------
5733 Fill in Event data and post to the Main FSM
5734 ------------------------------------------------------------------------*/
5735 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5736 wdiEventData.pEventData = (void *)ftmCommandReq;
5737 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5738 wdiEventData.pCBfnc = ftmCommandRspCb;
5739 wdiEventData.pUserData = pUserData;
5740
5741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5742}
Jeff Johnson295189b2012-06-20 16:38:30 -07005743/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005744 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005745
5746 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005747 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005748
5749
5750 @param pwdiResumeReqParams: as specified by
5751 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005752
Jeff Johnson295189b2012-06-20 16:38:30 -07005753 wdiResumeReqRspCb: callback for passing back the response of
5754 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005755
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005757 callback
5758
5759 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005760 @return Result of the function call
5761*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005762WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005763WDI_HostResumeReq
5764(
5765 WDI_ResumeParamsType* pwdiResumeReqParams,
5766 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5767 void* pUserData
5768)
5769{
5770 WDI_EventInfoType wdiEventData;
5771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5772
5773 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005774 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005775 ------------------------------------------------------------------------*/
5776 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5777 {
5778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5779 "WDI API call before module is initialized - Fail request");
5780
Jeff Johnsone7245742012-09-05 17:12:55 -07005781 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 }
5783
5784 /*------------------------------------------------------------------------
5785 Fill in Event data and post to the Main FSM
5786 ------------------------------------------------------------------------*/
5787 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005788 wdiEventData.pEventData = pwdiResumeReqParams;
5789 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5790 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 wdiEventData.pUserData = pUserData;
5792
5793 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5794
5795}/*WDI_HostResumeReq*/
5796
5797/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005799
5800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005802
5803
5804 @param pwdiDelStaSelfReqParams: as specified by
5805 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005806
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 wdiDelStaSelfRspCb: callback for passing back the response of
5808 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005809
Jeff Johnson295189b2012-06-20 16:38:30 -07005810 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005811 callback
5812
Jeff Johnson295189b2012-06-20 16:38:30 -07005813 @see WDI_PostAssocReq
5814 @return Result of the function call
5815*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005816WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005817WDI_DelSTASelfReq
5818(
5819 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5820 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5821 void* pUserData
5822)
5823{
5824 WDI_EventInfoType wdiEventData;
5825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5826
5827 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 ------------------------------------------------------------------------*/
5830 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5831 {
5832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5833 "WDI API call before module is initialized - Fail request");
5834
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 }
5837
5838 /*------------------------------------------------------------------------
5839 Fill in Event data and post to the Main FSM
5840 ------------------------------------------------------------------------*/
5841 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5843 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5844 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005845 wdiEventData.pUserData = pUserData;
5846
5847 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5848
5849}/*WDI_AggrAddTSReq*/
5850
5851/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005852 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5853 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005854 Upon the call of this API the WLAN DAL will pack
5855 and send a HAL Set Tx Per Tracking request message to the
5856 lower RIVA sub-system if DAL is in state STARTED.
5857
5858 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005859 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005860
Jeff Johnsone7245742012-09-05 17:12:55 -07005861 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005862 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005863
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 pwdiSetTxPerTrackingRspCb: callback for passing back the
5865 response of the set Tx PER Tracking configurations operation received
5866 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005867
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 callback
5870
Jeff Johnson295189b2012-06-20 16:38:30 -07005871 @return Result of the function call
5872*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005873WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005874WDI_SetTxPerTrackingReq
5875(
5876 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5877 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5878 void* pUserData
5879)
5880{
5881 WDI_EventInfoType wdiEventData;
5882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5883
5884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005885 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 ------------------------------------------------------------------------*/
5887 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5888 {
5889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5890 "WDI API call before module is initialized - Fail request");
5891
Jeff Johnsone7245742012-09-05 17:12:55 -07005892 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005893 }
5894
5895 /*------------------------------------------------------------------------
5896 Fill in Event data and post to the Main FSM
5897 ------------------------------------------------------------------------*/
5898 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 wdiEventData.pUserData = pUserData;
5903
5904 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5905
5906}/*WDI_SetTxPerTrackingReq*/
5907
5908/**
5909 @brief WDI_SetTmLevelReq
5910 If HW Thermal condition changed, driver should react based on new
5911 HW thermal condition.
5912
5913 @param pwdiSetTmLevelReq: New thermal condition information
5914
5915 pwdiSetTmLevelRspCb: callback
5916
5917 usrData: user data will be passed back with the
5918 callback
5919
5920 @return Result of the function call
5921*/
5922WDI_Status
5923WDI_SetTmLevelReq
5924(
5925 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5926 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5927 void *usrData
5928)
5929{
5930 WDI_EventInfoType wdiEventData;
5931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5932
5933 /*------------------------------------------------------------------------
5934 Sanity Check
5935 ------------------------------------------------------------------------*/
5936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5937 {
5938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5939 "WDI API call before module is initialized - Fail request");
5940
5941 return WDI_STATUS_E_NOT_ALLOWED;
5942 }
5943
5944 /*------------------------------------------------------------------------
5945 Fill in Event data and post to the Main FSM
5946 ------------------------------------------------------------------------*/
5947 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5948 wdiEventData.pEventData = pwdiSetTmLevelReq;
5949 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5950 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5951 wdiEventData.pUserData = usrData;
5952
5953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5954}
5955
5956/**
5957 @brief WDI_HostSuspendInd
5958
5959 Suspend Indication from the upper layer will be sent
5960 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005961
Jeff Johnson295189b2012-06-20 16:38:30 -07005962 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005963
5964 @see
5965
Jeff Johnson295189b2012-06-20 16:38:30 -07005966 @return Status of the request
5967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005969WDI_HostSuspendInd
5970(
5971 WDI_SuspendParamsType* pwdiSuspendIndParams
5972)
5973{
5974
5975 WDI_EventInfoType wdiEventData;
5976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5977
5978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005980 ------------------------------------------------------------------------*/
5981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5982 {
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5984 "WDI API call before module is initialized - Fail request");
5985
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 }
5988
5989 /*------------------------------------------------------------------------
5990 Fill in Event data and post to the Main FSM
5991 ------------------------------------------------------------------------*/
5992 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005993 wdiEventData.pEventData = pwdiSuspendIndParams;
5994 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5995 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005996 wdiEventData.pUserData = NULL;
5997
5998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5999
6000}/*WDI_HostSuspendInd*/
6001
6002/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006003 @brief WDI_TrafficStatsInd
6004 Traffic Stats from the upper layer will be sent
6005 down to HAL
6006
6007 @param WDI_TrafficStatsIndType
6008
6009 @see
6010
6011 @return Status of the request
6012*/
6013WDI_Status
6014WDI_TrafficStatsInd
6015(
6016 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6017)
6018{
6019
6020 WDI_EventInfoType wdiEventData;
6021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6022
6023 /*------------------------------------------------------------------------
6024 Sanity Check
6025 ------------------------------------------------------------------------*/
6026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6027 {
6028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6029 "WDI API call before module is initialized - Fail request");
6030
6031 return WDI_STATUS_E_NOT_ALLOWED;
6032 }
6033
6034 /*------------------------------------------------------------------------
6035 Fill in Event data and post to the Main FSM
6036 ------------------------------------------------------------------------*/
6037 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6038 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6039 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6040 wdiEventData.pCBfnc = NULL;
6041 wdiEventData.pUserData = NULL;
6042
6043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6044
6045}/*WDI_TrafficStatsInd*/
6046
Chet Lanctot186b5732013-03-18 10:26:30 -07006047#ifdef WLAN_FEATURE_11W
6048/**
6049 @brief WDI_ExcludeUnencryptedInd
6050 Register with HAL to receive/drop unencrypted frames
6051
6052 @param WDI_ExcludeUnencryptIndType
6053
6054 @see
6055
6056 @return Status of the request
6057*/
6058WDI_Status
6059WDI_ExcludeUnencryptedInd
6060(
6061 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6062)
6063{
6064
6065 WDI_EventInfoType wdiEventData;
6066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6067
6068 /*------------------------------------------------------------------------
6069 Sanity Check
6070 ------------------------------------------------------------------------*/
6071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6072 {
6073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6074 "WDI API call before module is initialized - Fail request");
6075
6076 return WDI_STATUS_E_NOT_ALLOWED;
6077 }
6078
6079 /*------------------------------------------------------------------------
6080 Fill in Event data and post to the Main FSM
6081 ------------------------------------------------------------------------*/
6082 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6083 wdiEventData.pEventData = pWdiExcUnencParams;
6084 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6085 wdiEventData.pCBfnc = NULL;
6086 wdiEventData.pUserData = NULL;
6087
6088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6089
6090}/*WDI_TrafficStatsInd*/
6091#endif
6092
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006093/**
Yue Mab9c86f42013-08-14 15:59:08 -07006094 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6095
6096 @param addPeriodicTxPtrnParams: Add Pattern parameters
6097
6098 @see
6099
6100 @return Status of the request
6101*/
6102WDI_Status
6103WDI_AddPeriodicTxPtrnInd
6104(
6105 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6106)
6107{
6108 WDI_EventInfoType wdiEventData;
6109
6110 /*-------------------------------------------------------------------------
6111 Sanity Check
6112 ------------------------------------------------------------------------*/
6113 if (eWLAN_PAL_FALSE == gWDIInitialized)
6114 {
6115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6116 "WDI API call before module is initialized - Fail request!");
6117
6118 return WDI_STATUS_E_NOT_ALLOWED;
6119 }
6120
6121 /*-------------------------------------------------------------------------
6122 Fill in Event data and post to the Main FSM
6123 ------------------------------------------------------------------------*/
6124 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6125 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6126 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6127 wdiEventData.pCBfnc = NULL;
6128 wdiEventData.pUserData = NULL;
6129
6130 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6131}
6132
6133/**
6134 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6135
6136 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6137
6138 @see
6139
6140 @return Status of the request
6141*/
6142WDI_Status
6143WDI_DelPeriodicTxPtrnInd
6144(
6145 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6146)
6147{
6148 WDI_EventInfoType wdiEventData;
6149
6150 /*-------------------------------------------------------------------------
6151 Sanity Check
6152 ------------------------------------------------------------------------*/
6153 if (eWLAN_PAL_FALSE == gWDIInitialized)
6154 {
6155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6156 "WDI API call before module is initialized - Fail request!");
6157
6158 return WDI_STATUS_E_NOT_ALLOWED;
6159 }
6160
6161 /*-------------------------------------------------------------------------
6162 Fill in Event data and post to the Main FSM
6163 ------------------------------------------------------------------------*/
6164 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6165 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6166 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6167 wdiEventData.pCBfnc = NULL;
6168 wdiEventData.pUserData = NULL;
6169
6170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6171}
6172
6173/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006174 @brief WDI_HALDumpCmdReq
6175 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006176
6177 @param halDumpCmdReqParams: Hal Dump Command Body
6178 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006179 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006180
Jeff Johnson295189b2012-06-20 16:38:30 -07006181 @see
6182 @return Result of the function call
6183*/
6184WDI_Status WDI_HALDumpCmdReq
6185(
6186 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6187 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6188 void *pUserData
6189)
6190{
6191 WDI_EventInfoType wdiEventData;
6192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6193
6194 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006195 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006196 ------------------------------------------------------------------------*/
6197 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6198 {
6199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6200 "WDI API call before module is initialized - Fail request");
6201
Jeff Johnsone7245742012-09-05 17:12:55 -07006202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006203 }
6204
6205 /*------------------------------------------------------------------------
6206 Fill in Event data and post to the Main FSM
6207 ------------------------------------------------------------------------*/
6208 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6209 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6210 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6211 wdiEventData.pCBfnc = halDumpCmdRspCb;
6212 wdiEventData.pUserData = pUserData;
6213
6214 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6215}
6216
Jeff Johnsone7245742012-09-05 17:12:55 -07006217/*============================================================================
6218
Jeff Johnson295189b2012-06-20 16:38:30 -07006219 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006220
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 ============================================================================*/
6222
6223/**
6224 @brief Main FSM Start function for all states except BUSY
6225
Jeff Johnsone7245742012-09-05 17:12:55 -07006226
6227 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006228 wdiEV: event posted to the main DAL FSM
6229 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006230 structure
6231
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 @see
6233 @return Result of the function call
6234*/
6235WDI_Status
6236WDI_PostMainEvent
6237(
Jeff Johnsone7245742012-09-05 17:12:55 -07006238 WDI_ControlBlockType* pWDICtx,
6239 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006241
Jeff Johnson295189b2012-06-20 16:38:30 -07006242)
6243{
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 WDI_Status wdiStatus;
6245 WDI_MainFuncType pfnWDIMainEvHdlr;
6246 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6248
6249 /*-------------------------------------------------------------------------
6250 Sanity check
6251 -------------------------------------------------------------------------*/
6252 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6253 ( wdiEV >= WDI_MAX_EVENT ))
6254 {
6255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6256 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6257 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006259 }
6260
6261 /*Access to the global state must be locked */
6262 wpalMutexAcquire(&pWDICtx->wptMutex);
6263
6264 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006265 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006266
6267 wdiOldState = pWDICtx->uGlobalState;
6268
6269 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6271 response comes from CCPU for the request sent by host:
6272 the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
Jeff Johnsone7245742012-09-05 17:12:55 -07006274 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006275 CCPU:
6276 don't change the state */
6277 if ( WDI_RESPONSE_EVENT != wdiEV)
6278 {
6279 /*Transition to BUSY State - the request is now being processed by the FSM,
6280 if the request fails we shall transition back to the old state, if not
6281 the request will manage its own state transition*/
6282 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6283 }
6284 /* If the state function associated with the EV is NULL it means that this
6285 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006286 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006287 {
6288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006289 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006291 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006292 }
6293 else
6294 {
6295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006296 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006297 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006298 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006299 }
6300
6301 /* If a request handles itself well it will end up in a success or in a
6302 pending
6303 Success - means that the request was processed and the proper state
6304 transition already occurred or will occur when the resp is received
6305 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006306
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 Pending - means the request could not be processed at this moment in time
6308 because the FSM was already busy so no state transition or dequeueing
6309 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 Success for synchronous case means that the transition may occur and
6312 processing of pending requests may continue - so it should go through
6313 and restores the state and continue processing queued requests*/
6314 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6315 ( WDI_STATUS_PENDING != wdiStatus ))
6316 {
6317 if ( WDI_RESPONSE_EVENT != wdiEV)
6318 {
6319 /*The request has failed or could not be processed - transition back to
6320 the old state - check to see if anything was queued and try to execute
6321 The dequeue logic should post a message to a thread and return - no
6322 actual processing can occur */
6323 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6324 }
6325 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006326
Jeff Johnson295189b2012-06-20 16:38:30 -07006327 }
6328
6329 /* we have completed processing the event */
6330 wpalMutexRelease(&pWDICtx->wptMutex);
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006333
6334}/*WDI_PostMainEvent*/
6335
6336
6337/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006338 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006339--------------------------------------------------------------------------*/
6340/**
6341 @brief Main FSM Start function for all states except BUSY
6342
Jeff Johnsone7245742012-09-05 17:12:55 -07006343
6344 @param pWDICtx: pointer to the WLAN DAL context
6345 pEventData: pointer to the event information structure
6346
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 @see
6348 @return Result of the function call
6349*/
6350WDI_Status
6351WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006352(
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 WDI_ControlBlockType* pWDICtx,
6354 WDI_EventInfoType* pEventData
6355)
6356{
6357
6358 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006359 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006360 ----------------------------------------------------------------------*/
6361 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6362 {
6363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006364 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006365 pWDICtx, pEventData);
6366 return WDI_STATUS_E_FAILURE;
6367 }
6368
6369 wpalMutexAcquire(&pWDICtx->wptMutex);
6370
6371 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006372 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006373 ----------------------------------------------------------------------*/
6374 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6375 {
6376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6377 "Control Transport not yet Open - queueing the request");
6378
6379 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006380 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006381
6382 wpalMutexRelease(&pWDICtx->wptMutex);
6383 return WDI_STATUS_PENDING;
6384 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006385
Jeff Johnson295189b2012-06-20 16:38:30 -07006386 wpalMutexRelease(&pWDICtx->wptMutex);
6387
6388 /*Return Success*/
6389 return WDI_ProcessRequest( pWDICtx, pEventData );
6390
6391}/*WDI_MainStart*/
6392
6393/**
6394 @brief Main FSM Response function for state INIT
6395
Jeff Johnsone7245742012-09-05 17:12:55 -07006396
6397 @param pWDICtx: pointer to the WLAN DAL context
6398 pEventData: pointer to the event information structure
6399
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 @see
6401 @return Result of the function call
6402*/
6403WDI_Status
6404WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006405(
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 WDI_ControlBlockType* pWDICtx,
6407 WDI_EventInfoType* pEventData
6408)
6409{
6410 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006411 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006412 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006413 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006414
6415 /*Return Success*/
6416 return WDI_STATUS_E_NOT_ALLOWED;
6417}/* WDI_MainRspInit */
6418
6419/**
6420 @brief Main FSM Close function for all states except BUSY
6421
Jeff Johnsone7245742012-09-05 17:12:55 -07006422
6423 @param pWDICtx: pointer to the WLAN DAL context
6424 pEventData: pointer to the event information structure
6425
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 @see
6427 @return Result of the function call
6428*/
6429WDI_Status
6430WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006431(
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 WDI_ControlBlockType* pWDICtx,
6433 WDI_EventInfoType* pEventData
6434)
6435{
6436
6437 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 ----------------------------------------------------------------------*/
6440 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6441 {
6442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006443 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 pWDICtx, pEventData);
6445 return WDI_STATUS_E_FAILURE;
6446 }
6447
6448 /*Return Success*/
6449 return WDI_ProcessRequest( pWDICtx, pEventData );
6450
6451}/*WDI_MainClose*/
6452/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006453 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006454--------------------------------------------------------------------------*/
6455/**
6456 @brief Main FSM Start function for state STARTED
6457
Jeff Johnsone7245742012-09-05 17:12:55 -07006458
6459 @param pWDICtx: pointer to the WLAN DAL context
6460 pEventData: pointer to the event information structure
6461
Jeff Johnson295189b2012-06-20 16:38:30 -07006462 @see
6463 @return Result of the function call
6464*/
6465WDI_Status
6466WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006467(
Jeff Johnson295189b2012-06-20 16:38:30 -07006468 WDI_ControlBlockType* pWDICtx,
6469 WDI_EventInfoType* pEventData
6470)
6471{
6472 WDI_StartRspCb wdiStartRspCb = NULL;
6473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6474
6475 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006476 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006477 ----------------------------------------------------------------------*/
6478 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6479 {
6480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006481 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 pWDICtx, pEventData);
6483 return WDI_STATUS_E_FAILURE;
6484 }
6485
6486 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 ----------------------------------------------------------------------*/
6489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006490 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006491
6492 wpalMutexAcquire(&pWDICtx->wptMutex);
6493
6494 /*Transition back to started because the post function transitioned us to
6495 busy*/
6496 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6497
6498 /*Check to see if any request is pending*/
6499 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006500
Jeff Johnson295189b2012-06-20 16:38:30 -07006501 wpalMutexRelease(&pWDICtx->wptMutex);
6502
6503 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6505
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 /*Notify UMAC*/
6507 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6508
6509 /*Return Success*/
6510 return WDI_STATUS_SUCCESS;
6511
6512}/*WDI_MainStartStarted*/
6513
6514/**
6515 @brief Main FSM Stop function for state STARTED
6516
Jeff Johnsone7245742012-09-05 17:12:55 -07006517
6518 @param pWDICtx: pointer to the WLAN DAL context
6519 pEventData: pointer to the event information structure
6520
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 @see
6522 @return Result of the function call
6523*/
6524WDI_Status
6525WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006526(
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 WDI_ControlBlockType* pWDICtx,
6528 WDI_EventInfoType* pEventData
6529)
6530{
6531 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006532 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 ----------------------------------------------------------------------*/
6534 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6535 {
6536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006537 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006538 pWDICtx, pEventData);
6539 return WDI_STATUS_E_FAILURE;
6540 }
6541
6542 /*State at this point is BUSY - because we enter this state before posting
6543 an event to the FSM in order to prevent potential race conditions*/
6544
6545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6546 "Processing stop request in FSM");
6547
6548 /*Return Success*/
6549 return WDI_ProcessRequest( pWDICtx, pEventData );
6550
6551}/*WDI_MainStopStarted*/
6552/**
6553 @brief Main FSM Request function for state started
6554
Jeff Johnsone7245742012-09-05 17:12:55 -07006555
6556 @param pWDICtx: pointer to the WLAN DAL context
6557 pEventData: pointer to the event information structure
6558
Jeff Johnson295189b2012-06-20 16:38:30 -07006559 @see
6560 @return Result of the function call
6561*/
6562WDI_Status
6563WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006564(
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 WDI_ControlBlockType* pWDICtx,
6566 WDI_EventInfoType* pEventData
6567)
6568{
6569
6570 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006571 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006572 ----------------------------------------------------------------------*/
6573 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6574 {
6575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006576 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006577 pWDICtx, pEventData);
6578 return WDI_STATUS_E_FAILURE;
6579 }
6580
6581 /*State at this point is BUSY - because we enter this state before posting
6582 an event to the FSM in order to prevent potential race conditions*/
6583
6584 /*Return Success*/
6585 return WDI_ProcessRequest( pWDICtx, pEventData );
6586
6587}/*WDI_MainReqStarted*/
6588
6589/**
6590 @brief Main FSM Response function for all states except INIT
6591
Jeff Johnsone7245742012-09-05 17:12:55 -07006592
6593 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006594 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006595
Jeff Johnson295189b2012-06-20 16:38:30 -07006596 @see
6597 @return Result of the function call
6598*/
6599WDI_Status
6600WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006601(
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 WDI_ControlBlockType* pWDICtx,
6603 WDI_EventInfoType* pEventData
6604)
6605{
Jeff Johnsone7245742012-09-05 17:12:55 -07006606 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006607 wpt_boolean expectedResponse;
6608
6609 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 ----------------------------------------------------------------------*/
6612 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6613 {
6614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006615 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 pWDICtx, pEventData);
6617 return WDI_STATUS_E_FAILURE;
6618 }
6619
6620 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6621 {
6622 /* we received an expected response */
6623 expectedResponse = eWLAN_PAL_TRUE;
6624
6625 /*We expect that we will transition to started after this processing*/
6626 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6627
6628 /* we are no longer expecting a response */
6629 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6630 }
6631 else
6632 {
6633 /* we received an indication or unexpected response */
6634 expectedResponse = eWLAN_PAL_FALSE;
6635 /* for indications no need to update state from what it is right
6636 now, unless it explicitly does it in the indication handler (say
6637 for device failure ind) */
6638 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6639 }
6640
6641 /*Process the response and indication */
6642 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6643
6644 /*Lock the CB as we are about to do a state transition*/
6645 wpalMutexAcquire(&pWDICtx->wptMutex);
6646
6647 /*Transition to the expected state after the response processing
6648 - this should always be started state with the following exceptions:
6649 1. processing of a failed start response
6650 2. device failure detected while processing response
6651 3. stop response received*/
6652 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006653
Jeff Johnson295189b2012-06-20 16:38:30 -07006654 /*Dequeue request that may have been queued while we were waiting for the
6655 response */
6656 if ( expectedResponse )
6657 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006658 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006659 }
6660
6661 wpalMutexRelease(&pWDICtx->wptMutex);
6662
6663 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006664 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006665
6666}/*WDI_MainRsp*/
6667
6668/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006669 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006670--------------------------------------------------------------------------*/
6671/**
6672 @brief Main FSM Stop function for state STOPPED
6673
Jeff Johnsone7245742012-09-05 17:12:55 -07006674
6675 @param pWDICtx: pointer to the WLAN DAL context
6676 pEventData: pointer to the event information structure
6677
Jeff Johnson295189b2012-06-20 16:38:30 -07006678 @see
6679 @return Result of the function call
6680*/
6681WDI_Status
6682WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006683(
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 WDI_ControlBlockType* pWDICtx,
6685 WDI_EventInfoType* pEventData
6686)
6687{
6688 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 ----------------------------------------------------------------------*/
6691 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6692 {
6693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006694 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 pWDICtx, pEventData);
6696 return WDI_STATUS_E_FAILURE;
6697 }
6698
6699 /*We should normally not get a STOP request if we are already stopped
6700 since we should normally be stopped by the UMAC. However in some
6701 error situations we put ourselves in the stopped state without the
6702 UMAC knowing, so when we get a STOP request in this state we still
6703 process it since we need to clean up the underlying state */
6704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6705 "Processing stop request while stopped in FSM");
6706
6707 /*Return Success*/
6708 return WDI_ProcessRequest( pWDICtx, pEventData );
6709
6710}/*WDI_MainStopStopped*/
6711
6712/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006713 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006714--------------------------------------------------------------------------*/
6715/**
6716 @brief Main FSM Start function for state BUSY
6717
Jeff Johnsone7245742012-09-05 17:12:55 -07006718
6719 @param pWDICtx: pointer to the WLAN DAL context
6720 pEventData: pointer to the event information structure
6721
Jeff Johnson295189b2012-06-20 16:38:30 -07006722 @see
6723 @return Result of the function call
6724*/
6725WDI_Status
6726WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006727(
Jeff Johnson295189b2012-06-20 16:38:30 -07006728 WDI_ControlBlockType* pWDICtx,
6729 WDI_EventInfoType* pEventData
6730)
6731{
6732 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006733 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006734 ----------------------------------------------------------------------*/
6735 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6736 {
6737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006738 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 pWDICtx, pEventData);
6740 return WDI_STATUS_E_FAILURE;
6741 }
6742
6743 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006744 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 ----------------------------------------------------------------------*/
6746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6747 "WDI Busy state - queue start request");
6748
6749 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006750 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006751
6752 /*Return Success*/
6753 return WDI_STATUS_PENDING;
6754}/*WDI_MainStartBusy*/
6755
6756/**
6757 @brief Main FSM Stop function for state BUSY
6758
Jeff Johnsone7245742012-09-05 17:12:55 -07006759
6760 @param pWDICtx: pointer to the WLAN DAL context
6761 pEventData: pointer to the event information structure
6762
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 @see
6764 @return Result of the function call
6765*/
6766WDI_Status
6767WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006768(
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 WDI_ControlBlockType* pWDICtx,
6770 WDI_EventInfoType* pEventData
6771)
6772{
6773 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006774 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006775 ----------------------------------------------------------------------*/
6776 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6777 {
6778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006779 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 pWDICtx, pEventData);
6781 return WDI_STATUS_E_FAILURE;
6782 }
6783
6784 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006785 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 ----------------------------------------------------------------------*/
6787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6788 "WDI Busy state - queue stop request");
6789
Jeff Johnsone7245742012-09-05 17:12:55 -07006790 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006791 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006792
Jeff Johnson295189b2012-06-20 16:38:30 -07006793}/*WDI_MainStopBusy*/
6794
6795/**
6796 @brief Main FSM Request function for state BUSY
6797
Jeff Johnsone7245742012-09-05 17:12:55 -07006798
6799 @param pWDICtx: pointer to the WLAN DAL context
6800 pEventData: pointer to the event information structure
6801
Jeff Johnson295189b2012-06-20 16:38:30 -07006802 @see
6803 @return Result of the function call
6804*/
6805WDI_Status
6806WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006807(
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 WDI_ControlBlockType* pWDICtx,
6809 WDI_EventInfoType* pEventData
6810)
6811{
6812 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006813 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006814 ----------------------------------------------------------------------*/
6815 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6816 {
6817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006818 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 pWDICtx, pEventData);
6820 return WDI_STATUS_E_FAILURE;
6821 }
6822
6823 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006824 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 ----------------------------------------------------------------------*/
6826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6827 "WDI Busy state - queue request %d because waiting for response %d",
6828 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6829
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006832
Jeff Johnson295189b2012-06-20 16:38:30 -07006833}/*WDI_MainReqBusy*/
6834/**
6835 @brief Main FSM Close function for state BUSY
6836
Jeff Johnsone7245742012-09-05 17:12:55 -07006837
6838 @param pWDICtx: pointer to the WLAN DAL context
6839 pEventData: pointer to the event information structure
6840
Jeff Johnson295189b2012-06-20 16:38:30 -07006841 @see
6842 @return Result of the function call
6843*/
6844WDI_Status
6845WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006846(
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 WDI_ControlBlockType* pWDICtx,
6848 WDI_EventInfoType* pEventData
6849)
6850{
6851 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 ----------------------------------------------------------------------*/
6854 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6855 {
6856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006857 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006858 pWDICtx, pEventData);
6859 return WDI_STATUS_E_FAILURE;
6860 }
6861
6862 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006863 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 ----------------------------------------------------------------------*/
6865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6866 "WDI Busy state - queue close request");
6867
Jeff Johnsone7245742012-09-05 17:12:55 -07006868 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006869 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006870
Jeff Johnson295189b2012-06-20 16:38:30 -07006871}/*WDI_MainCloseBusy*/
6872
6873/**
6874 @brief Main FSM Shutdown function for INIT & STARTED states
6875
6876
6877 @param pWDICtx: pointer to the WLAN DAL context
6878 pEventData: pointer to the event information structure
6879
6880 @see
6881 @return Result of the function call
6882*/
6883WDI_Status
6884WDI_MainShutdown
6885(
6886 WDI_ControlBlockType* pWDICtx,
6887 WDI_EventInfoType* pEventData
6888)
6889{
6890 /*--------------------------------------------------------------------
6891 Sanity Check
6892 ----------------------------------------------------------------------*/
6893 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6894 {
6895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006896 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 pWDICtx, pEventData);
6898 return WDI_STATUS_E_FAILURE;
6899 }
6900
6901 /*State at this point is BUSY - because we enter this state before posting
6902 an event to the FSM in order to prevent potential race conditions*/
6903
6904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6905 "Processing shutdown request in FSM");
6906
6907 /*Return Success*/
6908 return WDI_ProcessRequest( pWDICtx, pEventData );
6909
6910}/*WDI_MainShutdown*/
6911
6912/**
6913 @brief Main FSM Shutdown function for BUSY state
6914
6915
6916 @param pWDICtx: pointer to the WLAN DAL context
6917 pEventData: pointer to the event information structure
6918
6919 @see
6920 @return Result of the function call
6921*/
6922WDI_Status
6923WDI_MainShutdownBusy
6924(
6925 WDI_ControlBlockType* pWDICtx,
6926 WDI_EventInfoType* pEventData
6927)
6928{
6929 /*--------------------------------------------------------------------
6930 Sanity Check
6931 ----------------------------------------------------------------------*/
6932 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6933 {
6934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006935 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 pWDICtx, pEventData);
6937 return WDI_STATUS_E_FAILURE;
6938 }
6939
6940 /* If you are waiting for a HAL response at this stage, you are not
6941 * going to get it. Riva is already shutdown/crashed.
6942 */
6943 wpalTimerStop(&gWDICb.wptResponseTimer);
6944
6945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6946 "Processing shutdown request in FSM: Busy state ");
6947
6948 return WDI_ProcessRequest( pWDICtx, pEventData );
6949
6950}/*WDI_MainShutdownBusy*/
6951
6952
Jeff Johnsone7245742012-09-05 17:12:55 -07006953/*=======================================================================
6954
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006956
Jeff Johnson295189b2012-06-20 16:38:30 -07006957*=======================================================================*/
6958
6959/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006960 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006961========================================================================*/
6962/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006965
6966 @param pWDICtx: pointer to the WLAN DAL context
6967 pEventData: pointer to the event information structure
6968
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 @see
6970 @return Result of the function call
6971*/
6972WDI_Status
6973WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006974(
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 WDI_ControlBlockType* pWDICtx,
6976 WDI_EventInfoType* pEventData
6977)
6978{
6979 WDI_StartReqParamsType* pwdiStartParams = NULL;
6980 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 wpt_uint16 usDataOffset = 0;
6983 wpt_uint16 usSendSize = 0;
6984
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 tHalMacStartReqMsg halStartReq;
6986 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6988
6989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 -------------------------------------------------------------------------*/
6992 if (( NULL == pEventData ) ||
6993 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6994 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6995 {
6996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 }
7001
7002 /*-----------------------------------------------------------------------
7003 Get message buffer
7004 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007005 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 pwdiStartParams->usConfigBufferLen;
7007
Jeff Johnsone7245742012-09-05 17:12:55 -07007008 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 usLen,
7010 &pSendBuffer, &usDataOffset, &usSendSize))||
7011 ( usSendSize < (usDataOffset + usLen )))
7012 {
7013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007014 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007015 pEventData, pwdiStartParams, wdiStartRspCb);
7016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 }
7019
7020 /*-----------------------------------------------------------------------
7021 Fill in the message
7022 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007023 halStartReq.startReqParams.driverType =
7024 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007025
Jeff Johnsone7245742012-09-05 17:12:55 -07007026 halStartReq.startReqParams.uConfigBufferLen =
7027 pwdiStartParams->usConfigBufferLen;
7028 wpalMemoryCopy( pSendBuffer+usDataOffset,
7029 &halStartReq.startReqParams,
7030 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007031
Jeff Johnsone7245742012-09-05 17:12:55 -07007032 usDataOffset += sizeof(halStartReq.startReqParams);
7033 wpalMemoryCopy( pSendBuffer+usDataOffset,
7034 pwdiStartParams->pConfigBuffer,
7035 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007036
7037 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007038 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007039
7040 /*Save Low Level Ind CB and associated user data - it will be used further
7041 on when an indication is coming from the lower MAC*/
7042 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007043 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007044
Jeff Johnsone7245742012-09-05 17:12:55 -07007045 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007046 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007047 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007048 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007050 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7051
Jeff Johnsone7245742012-09-05 17:12:55 -07007052
Jeff Johnson295189b2012-06-20 16:38:30 -07007053}/*WDI_ProcessStartReq*/
7054
7055/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007056 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007057 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007058
7059 @param pWDICtx: pointer to the WLAN DAL context
7060 pEventData: pointer to the event information structure
7061
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 @see
7063 @return Result of the function call
7064*/
7065WDI_Status
7066WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007067(
Jeff Johnson295189b2012-06-20 16:38:30 -07007068 WDI_ControlBlockType* pWDICtx,
7069 WDI_EventInfoType* pEventData
7070)
7071{
7072 WDI_StopReqParamsType* pwdiStopParams = NULL;
7073 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 wpt_uint16 usDataOffset = 0;
7076 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007077 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007078 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7080
7081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 -------------------------------------------------------------------------*/
7084 if (( NULL == pEventData ) ||
7085 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7086 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7087 {
7088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007090 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007091 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 }
7093
7094 /*-----------------------------------------------------------------------
7095 Get message buffer
7096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007098 sizeof(halStopReq.stopReqParams),
7099 &pSendBuffer, &usDataOffset, &usSendSize))||
7100 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7101 {
7102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007103 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 pEventData, pwdiStopParams, wdiStopRspCb);
7105 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007106 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 }
7108
7109 /*-----------------------------------------------------------------------
7110 Fill in the message
7111 -----------------------------------------------------------------------*/
7112 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7113 pwdiStopParams->wdiStopReason);
7114
Jeff Johnsone7245742012-09-05 17:12:55 -07007115 wpalMemoryCopy( pSendBuffer+usDataOffset,
7116 &halStopReq.stopReqParams,
7117 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007118
7119 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007120 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007121
7122 /*! TO DO: stop the data services */
7123 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7124 {
7125 /*Stop the STA Table !UT- check this logic again
7126 It is safer to do it here than on the response - because a stop is imminent*/
7127 WDI_STATableStop(pWDICtx);
7128
7129 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007130 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7131 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007132 {
7133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7134 "WDI Init failed to reset power state event");
7135
Jeff Johnsone7245742012-09-05 17:12:55 -07007136 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007137 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007138 }
7139 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007140 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7141 if( eWLAN_PAL_STATUS_SUCCESS != status )
7142 {
7143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007144 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Ravali85acf6b2012-12-12 14:01:38 -08007145 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007146 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007147 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007148 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007150 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007151 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7152 WDI_SET_POWER_STATE_TIMEOUT);
7153 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 {
7155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7156 "WDI Init failed to wait on an event");
7157
Jeff Johnsone7245742012-09-05 17:12:55 -07007158 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007159 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 }
7161 }
7162
7163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007164 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007165 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007166 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7168
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007169fail:
7170 // Release the message buffer so we don't leak
7171 wpalMemoryFree(pSendBuffer);
7172
7173failRequest:
7174 //WDA should have failure check to avoid the memory leak
7175 return WDI_STATUS_E_FAILURE;
7176
Jeff Johnson295189b2012-06-20 16:38:30 -07007177}/*WDI_ProcessStopReq*/
7178
7179/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007182
7183 @param pWDICtx: pointer to the WLAN DAL context
7184 pEventData: pointer to the event information structure
7185
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 @see
7187 @return Result of the function call
7188*/
7189WDI_Status
7190WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007191(
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 WDI_ControlBlockType* pWDICtx,
7193 WDI_EventInfoType* pEventData
7194)
7195{
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7198
7199 /*Lock control block for cleanup*/
7200 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007201
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 /*Clear all pending request*/
7203 WDI_ClearPendingRequests(pWDICtx);
7204
7205 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007207
7208 /* Close Data transport*/
7209 /* FTM mode does not open Data Path */
7210 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7211 {
7212 WDTS_Close(pWDICtx);
7213 }
7214
7215 /*Close the STA Table !UT- check this logic again*/
7216 WDI_STATableClose(pWDICtx);
7217
7218 /*close the PAL */
7219 wptStatus = wpalClose(pWDICtx->pPALContext);
7220 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7221 {
7222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7223 "Failed to wpal Close %d", wptStatus);
7224 WDI_ASSERT(0);
7225 }
7226
7227 /*Transition back to init state*/
7228 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7229
7230 wpalMutexRelease(&pWDICtx->wptMutex);
7231
7232 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007233 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007234
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007236}/*WDI_ProcessCloseReq*/
7237
7238
7239/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007240 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007241===========================================================================*/
7242
7243/**
7244 @brief Process Init Scan Request function (called when Main FSM
7245 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007246
7247 @param pWDICtx: pointer to the WLAN DAL context
7248 pEventData: pointer to the event information structure
7249
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 @see
7251 @return Result of the function call
7252*/
7253WDI_Status
7254WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007255(
Jeff Johnson295189b2012-06-20 16:38:30 -07007256 WDI_ControlBlockType* pWDICtx,
7257 WDI_EventInfoType* pEventData
7258)
7259{
7260 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7261 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007263 wpt_uint16 usDataOffset = 0;
7264 wpt_uint16 usSendSize = 0;
7265 wpt_uint8 i = 0;
7266
7267 tHalInitScanReqMsg halInitScanReqMsg;
7268
Jeff Johnsone7245742012-09-05 17:12:55 -07007269 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 * It shold be removed once host and riva changes are in sync*/
7271 tHalInitScanConReqMsg halInitScanConReqMsg;
7272
7273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7274
7275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 -------------------------------------------------------------------------*/
7278 if (( NULL == pEventData ) ||
7279 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7280 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7281 {
7282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 }
7287
7288#if 0
7289 wpalMutexAcquire(&pWDICtx->wptMutex);
7290 /*-----------------------------------------------------------------------
7291 Check to see if SCAN is already in progress - if so reject the req
7292 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 -----------------------------------------------------------------------*/
7295 if ( pWDICtx->bScanInProgress )
7296 {
7297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7298 "Scan is already in progress - subsequent scan is not allowed"
7299 " until the first scan completes");
7300
7301 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007303 }
7304
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7306 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007307
7308 wpalMutexRelease(&pWDICtx->wptMutex);
7309#endif
Viral Modid86bde22012-12-10 13:09:21 -08007310 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007312 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 * It shold be removed once host and riva changes are in sync*/
7314 /*-----------------------------------------------------------------------
7315 Get message buffer
7316 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 sizeof(halInitScanConReqMsg.initScanParams),
7319 &pSendBuffer, &usDataOffset, &usSendSize))||
7320 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7321 {
7322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007323 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 }
7328
7329
7330 /*-----------------------------------------------------------------------
7331 Fill in the message
7332 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007333 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007334 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7335
7336 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7337 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7338
Jeff Johnsone7245742012-09-05 17:12:55 -07007339 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007343 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007344 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7345
7346 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7347 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7348
Jeff Johnson295189b2012-06-20 16:38:30 -07007349 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7350 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007351
Jeff Johnsone7245742012-09-05 17:12:55 -07007352 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7354
7355 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7356 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7359 }
7360
Jeff Johnsone7245742012-09-05 17:12:55 -07007361 wpalMemoryCopy( pSendBuffer+usDataOffset,
7362 &halInitScanConReqMsg.initScanParams,
7363 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 }
7365 else
7366 {
7367 /*-----------------------------------------------------------------------
7368 Get message buffer
7369 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 sizeof(halInitScanReqMsg.initScanParams),
7372 &pSendBuffer, &usDataOffset, &usSendSize))||
7373 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7374 {
7375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007376 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007380 }
7381
7382
7383 /*-----------------------------------------------------------------------
7384 Fill in the message
7385 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7388
7389 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7390 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7391
Jeff Johnsone7245742012-09-05 17:12:55 -07007392 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007394 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007397 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7398
7399 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7400 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7401
Jeff Johnsone7245742012-09-05 17:12:55 -07007402 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7404
7405 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7406 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007407 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7409 }
7410
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 wpalMemoryCopy( pSendBuffer+usDataOffset,
7412 &halInitScanReqMsg.initScanParams,
7413 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 }
7415
7416 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007418
7419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007422 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007423 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7424
7425}/*WDI_ProcessInitScanReq*/
7426
7427/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007430
7431 @param pWDICtx: pointer to the WLAN DAL context
7432 pEventData: pointer to the event information structure
7433
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 @see
7435 @return Result of the function call
7436*/
7437WDI_Status
7438WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007439(
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 WDI_ControlBlockType* pWDICtx,
7441 WDI_EventInfoType* pEventData
7442)
7443{
7444 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7445 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007446 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007447 wpt_uint16 usDataOffset = 0;
7448 wpt_uint16 usSendSize = 0;
7449
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7452
7453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 -------------------------------------------------------------------------*/
7456 if (( NULL == pEventData ) ||
7457 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7458 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7459 {
7460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 }
7465
7466#if 0
7467 wpalMutexAcquire(&pWDICtx->wptMutex);
7468 /*-----------------------------------------------------------------------
7469 Check to see if SCAN is already in progress - start scan is only
7470 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7475 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7476 {
7477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7478 "Scan start not allowed in this state %d %d",
7479 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007480
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 }
7484
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007486
7487 wpalMutexRelease(&pWDICtx->wptMutex);
7488#endif
7489
7490 /*-----------------------------------------------------------------------
7491 Get message buffer
7492 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007493 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 sizeof(halStartScanReqMsg.startScanParams),
7495 &pSendBuffer, &usDataOffset, &usSendSize))||
7496 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7497 {
7498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007499 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 }
7504
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 wpalMemoryCopy( pSendBuffer+usDataOffset,
7508 &halStartScanReqMsg.startScanParams,
7509 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007510
7511 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007512 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007513
7514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007515 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007518 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7519}/*WDI_ProcessStartScanReq*/
7520
7521
7522/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007523 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007525
7526 @param pWDICtx: pointer to the WLAN DAL context
7527 pEventData: pointer to the event information structure
7528
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 @see
7530 @return Result of the function call
7531*/
7532WDI_Status
7533WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007534(
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 WDI_ControlBlockType* pWDICtx,
7536 WDI_EventInfoType* pEventData
7537)
7538{
7539 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7540 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 wpt_uint16 usDataOffset = 0;
7543 wpt_uint16 usSendSize = 0;
7544
Jeff Johnsone7245742012-09-05 17:12:55 -07007545 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7547
7548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 -------------------------------------------------------------------------*/
7551 if (( NULL == pEventData ) ||
7552 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7553 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7554 {
7555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 }
7560
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7562 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007563 * forwarded to HAL and result in hang*/
7564#if 0
7565 wpalMutexAcquire(&pWDICtx->wptMutex);
7566 /*-----------------------------------------------------------------------
7567 Check to see if SCAN is already in progress - end scan is only
7568 allowed when a scan is ongoing and the state of the scan procedure
7569 is started
7570 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007571 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007572 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7573 {
7574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7575 "End start not allowed in this state %d %d",
7576 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007577
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007579 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007580 }
7581
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007583
7584 wpalMutexRelease(&pWDICtx->wptMutex);
7585#endif
7586
7587 /*-----------------------------------------------------------------------
7588 Get message buffer
7589 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007591 sizeof(halEndScanReqMsg.endScanParams),
7592 &pSendBuffer, &usDataOffset, &usSendSize))||
7593 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7594 {
7595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007596 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 }
7601
7602 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7603
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 wpalMemoryCopy( pSendBuffer+usDataOffset,
7605 &halEndScanReqMsg.endScanParams,
7606 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007607
7608 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007610
7611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007612 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007613 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007614 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7616}/*WDI_ProcessEndScanReq*/
7617
7618
7619/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007622
7623 @param pWDICtx: pointer to the WLAN DAL context
7624 pEventData: pointer to the event information structure
7625
Jeff Johnson295189b2012-06-20 16:38:30 -07007626 @see
7627 @return Result of the function call
7628*/
7629WDI_Status
7630WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007631(
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 WDI_ControlBlockType* pWDICtx,
7633 WDI_EventInfoType* pEventData
7634)
7635{
7636 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7637 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 wpt_uint16 usDataOffset = 0;
7640 wpt_uint16 usSendSize = 0;
7641 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007642 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7645
7646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 -------------------------------------------------------------------------*/
7649 if (( NULL == pEventData ) ||
7650 ( NULL == pEventData->pEventData) ||
7651 ( NULL == pEventData->pCBfnc))
7652 {
7653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007654 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 }
7658
7659 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7660 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7662 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 * forwarded to HAL and result in hang*/
7664#if 0
7665 wpalMutexAcquire(&pWDICtx->wptMutex);
7666 /*-----------------------------------------------------------------------
7667 Check to see if SCAN is already in progress
7668 Finish scan gets invoked any scan states. ie. abort scan
7669 It should be allowed in any states.
7670 -----------------------------------------------------------------------*/
7671 if ( !pWDICtx->bScanInProgress )
7672 {
7673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7674 "Finish start not allowed in this state %d",
7675 pWDICtx->bScanInProgress );
7676
7677 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 }
7680
7681 /*-----------------------------------------------------------------------
7682 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7686 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 wpalMutexRelease(&pWDICtx->wptMutex);
7688#endif
7689
7690 if ( pWDICtx->bInBmps )
7691 {
7692 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007693 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7694 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7695 {
7696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007697 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007698 WDI_ASSERT(0);
7699 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 }
7701
7702 /*-----------------------------------------------------------------------
7703 Get message buffer
7704 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 sizeof(halFinishScanReqMsg.finishScanParams),
7707 &pSendBuffer, &usDataOffset, &usSendSize))||
7708 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7709 {
7710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007711 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 }
7716
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7719
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7722
Jeff Johnsone7245742012-09-05 17:12:55 -07007723 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7725
7726 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7727 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7728
Jeff Johnsone7245742012-09-05 17:12:55 -07007729 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007733 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007734 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7735
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7738
7739 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7740 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7743 }
7744
7745 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7746 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7747
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 wpalMemoryCopy( pSendBuffer+usDataOffset,
7749 &halFinishScanReqMsg.finishScanParams,
7750 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007751
7752 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007753 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007754
7755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7760}/*WDI_ProcessFinishScanReq*/
7761
7762
7763/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007765==========================================================================*/
7766/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 @brief Process BSS Join for a given Session
7768
7769 @param pWDICtx: pointer to the WLAN DAL context
7770 pEventData: pointer to the event information structure
7771
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 @see
7773 @return Result of the function call
7774*/
7775WDI_Status
7776WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007777(
Jeff Johnson295189b2012-06-20 16:38:30 -07007778 WDI_ControlBlockType* pWDICtx,
7779 WDI_JoinReqParamsType* pwdiJoinParams,
7780 WDI_JoinRspCb wdiJoinRspCb,
7781 void* pUserData
7782)
7783{
7784 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 wpt_uint16 usDataOffset = 0;
7787 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007789
Jeff Johnsone7245742012-09-05 17:12:55 -07007790 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7792
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007793 wpalMutexAcquire(&pWDICtx->wptMutex);
7794
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 /*------------------------------------------------------------------------
7796 Check to see if we have any session with this BSSID already stored, we
7797 should not
7798 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7800 pwdiJoinParams->wdiReqInfo.macBSSID,
7801 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007802
7803 if ( NULL != pBSSSes )
7804 {
7805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007806 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7807 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007808
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007809 /*reset the bAssociationInProgress otherwise the next
7810 *join request will be queued*/
7811 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7812 wpalMutexRelease(&pWDICtx->wptMutex);
7813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 }
7815
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 if ( NULL == pBSSSes )
7821 {
7822
7823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7824 "DAL has no free sessions - cannot run another join");
7825
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007826 /*reset the bAssociationInProgress otherwise the next
7827 *join request will be queued*/
7828 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 }
7832
7833 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7835 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007836 WDI_MAC_ADDR_LEN);
7837
7838 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007841
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 wpalMutexRelease(&pWDICtx->wptMutex);
7843
7844 /*-----------------------------------------------------------------------
7845 Get message buffer
7846 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 sizeof(halJoinReqMsg.joinReqParams),
7849 &pSendBuffer, &usDataOffset, &usSendSize))||
7850 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7851 {
7852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007853 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 pUserData, pwdiJoinParams, wdiJoinRspCb);
7855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 }
7858
7859 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007861
7862 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 pwdiJoinParams->wdiReqInfo.macSTASelf,
7864 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007865
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7868
7869 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7870
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007871#ifdef WLAN_FEATURE_VOWIFI
7872 halJoinReqMsg.joinReqParams.maxTxPower =
7873 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7874#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007876 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7877#endif
7878
Jeff Johnsone7245742012-09-05 17:12:55 -07007879 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7881 wdiSecondaryChannelOffset);
7882
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 wpalMemoryCopy( pSendBuffer+usDataOffset,
7884 &halJoinReqMsg.joinReqParams,
7885 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007886
7887 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007889
7890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007891 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007892 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7894 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007895
7896}/*WDI_ProcessBSSSessionJoinReq*/
7897
7898/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007901
7902 @param pWDICtx: pointer to the WLAN DAL context
7903 pEventData: pointer to the event information structure
7904
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 @see
7906 @return Result of the function call
7907*/
7908WDI_Status
7909WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007910(
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 WDI_ControlBlockType* pWDICtx,
7912 WDI_EventInfoType* pEventData
7913)
7914{
7915 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7916 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7917 WDI_JoinRspCb wdiJoinRspCb = NULL;
7918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7919
7920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 -------------------------------------------------------------------------*/
7923 if (( NULL == pEventData ) ||
7924 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7925 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7926 {
7927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007932
Jeff Johnson295189b2012-06-20 16:38:30 -07007933 /*-------------------------------------------------------------------------
7934 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 -------------------------------------------------------------------------*/
7937 wpalMutexAcquire(&pWDICtx->wptMutex);
7938
7939 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7940 {
7941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7942 "Association is currently in progress, queueing new join req");
7943
7944 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 pwdiJoinParams->wdiReqInfo.macBSSID);
7947
7948 wpalMutexRelease(&pWDICtx->wptMutex);
7949
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 }
7952
7953 /*Starting a new association */
7954 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7955 wpalMutexRelease(&pWDICtx->wptMutex);
7956
7957 /*Process the Join Request*/
7958 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7959 wdiJoinRspCb,pEventData->pUserData);
7960
7961}/*WDI_ProcessJoinReq*/
7962
7963
7964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007967
7968 @param pWDICtx: pointer to the WLAN DAL context
7969 pEventData: pointer to the event information structure
7970
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 @see
7972 @return Result of the function call
7973*/
7974WDI_Status
7975WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007976(
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 WDI_ControlBlockType* pWDICtx,
7978 WDI_EventInfoType* pEventData
7979)
7980{
7981 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7982 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007983 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007984 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 wpt_uint16 uMsgSize = 0;
7986 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 wpt_uint16 usDataOffset = 0;
7988 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007990
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7993
7994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 -------------------------------------------------------------------------*/
7997 if (( NULL == pEventData ) ||
7998 ( NULL == pEventData->pEventData ) ||
7999 ( NULL == pEventData->pCBfnc ))
8000 {
8001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 }
8006
8007 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8008 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8009 /*-------------------------------------------------------------------------
8010 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008011 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008012 -------------------------------------------------------------------------*/
8013 wpalMutexAcquire(&pWDICtx->wptMutex);
8014
8015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8019 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8020 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008021
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 {
8024#ifdef WLAN_FEATURE_VOWIFI_11R
8025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008026 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 if ( NULL == pBSSSes )
8030 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008031
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8033 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008034
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008038
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8041 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008043
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8047#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 * Request in case of IBSS*/
8050 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8051 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8052 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8053 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8054 {
8055 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 if ( NULL == pBSSSes )
8060 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008061
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8063 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008064
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008066 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008068
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8071 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008073
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8077 }
8078 else
8079 {
8080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8082 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8083 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8084
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 /* for IBSS testing */
8086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 }
8089#endif
8090 }
8091
8092 /*------------------------------------------------------------------------
8093 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008094 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 ------------------------------------------------------------------------*/
8096 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8097 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8099 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8100 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8101 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008102
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008104
8105 wpalMutexRelease(&pWDICtx->wptMutex);
8106
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 }
8109
8110 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8112 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 sizeof(pWDICtx->wdiCachedConfigBssReq));
8114
8115 wpalMutexRelease(&pWDICtx->wptMutex);
8116
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8118#ifdef WLAN_FEATURE_11AC
8119 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008120 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 else
8122#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008123 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008124
8125 /*-----------------------------------------------------------------------
8126 Get message buffer
8127 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008129 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8130 ( usSendSize < (usDataOffset + uMsgSize )))
8131 {
8132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008133 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 }
8138
8139 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008140#ifdef WLAN_FEATURE_11AC
8141 if (WDI_getFwWlanFeatCaps(DOT11AC))
8142 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8143 &pwdiConfigBSSParams->wdiReqInfo);
8144 else
8145#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 &pwdiConfigBSSParams->wdiReqInfo);
8148
8149 /* Need to fill in the STA Index to invalid, since at this point we have not
8150 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008152
8153 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8155
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008156#ifdef WLAN_FEATURE_11AC
8157 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8158 wpalMemoryCopy( pSendBuffer+usDataOffset,
8159 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8160 uMsgSize);
8161 }else
8162#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008163 {
8164 if ( uMsgSize <= sizeof(tConfigBssParams) )
8165 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008166 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008167 &halConfigBssReqMsg.uBssParams.configBssParams,
8168 uMsgSize);
8169 }
8170 else
8171 {
8172 return WDI_STATUS_E_FAILURE;
8173 }
8174 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008175
8176 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008178
8179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8183 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 WDI_CONFIG_BSS_RESP);
8185
8186}/*WDI_ProcessConfigBSSReq*/
8187
8188
8189/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008192
8193 @param pWDICtx: pointer to the WLAN DAL context
8194 pEventData: pointer to the event information structure
8195
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 @see
8197 @return Result of the function call
8198*/
8199WDI_Status
8200WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008201(
Jeff Johnson295189b2012-06-20 16:38:30 -07008202 WDI_ControlBlockType* pWDICtx,
8203 WDI_EventInfoType* pEventData
8204)
8205{
8206 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8207 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008208 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008209 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 wpt_uint16 usDataOffset = 0;
8212 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008214
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8217
8218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 -------------------------------------------------------------------------*/
8221 if (( NULL == pEventData ) ||
8222 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8223 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8224 {
8225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 }
8230
8231 /*-------------------------------------------------------------------------
8232 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 -------------------------------------------------------------------------*/
8235 wpalMutexAcquire(&pWDICtx->wptMutex);
8236
8237 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008238 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008239 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8241 pwdiDelBSSParams->ucBssIdx,
8242 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008243
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 {
8246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008247 "%s: BSS does not yet exist. ucBssIdx %d",
8248 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008249
8250 wpalMutexRelease(&pWDICtx->wptMutex);
8251
8252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008254
8255 /*------------------------------------------------------------------------
8256 Check if this BSS is being currently processed or queued,
8257 if queued - queue the new request as well
8258 ------------------------------------------------------------------------*/
8259 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8262 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8263 __func__, pwdiDelBSSParams->ucBssIdx);
8264
8265 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8266
8267 wpalMutexRelease(&pWDICtx->wptMutex);
8268
8269 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008271
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 /*-----------------------------------------------------------------------
8273 If we receive a Del BSS request for an association that is already in
8274 progress, it indicates that the assoc has failed => we no longer have
8275 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 -----------------------------------------------------------------------*/
8278 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8279 {
8280 /*We can switch to false here because even if a subsequent Join comes in
8281 it will only be processed when DAL transitions out of BUSY state which
8282 happens when the Del BSS request comes */
8283 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8284
8285 /*Former association is complete - prepare next pending assoc for
8286 processing */
8287 WDI_DequeueAssocRequest(pWDICtx);
8288 }
8289
8290 wpalMutexRelease(&pWDICtx->wptMutex);
8291 /*-----------------------------------------------------------------------
8292 Get message buffer
8293 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 sizeof(halBssReqMsg.deleteBssParams),
8296 &pSendBuffer, &usDataOffset, &usSendSize))||
8297 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8298 {
8299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008300 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 }
8305
8306 /*Fill in the message request structure*/
8307
8308 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008309 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 wpalMemoryCopy( pSendBuffer+usDataOffset,
8312 &halBssReqMsg.deleteBssParams,
8313 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008314
8315 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008317
Jeff Johnsone7245742012-09-05 17:12:55 -07008318
Jeff Johnson295189b2012-06-20 16:38:30 -07008319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008320 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8324
Jeff Johnsone7245742012-09-05 17:12:55 -07008325
Jeff Johnson295189b2012-06-20 16:38:30 -07008326}/*WDI_ProcessDelBSSReq*/
8327
8328/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008331
8332 @param pWDICtx: pointer to the WLAN DAL context
8333 pEventData: pointer to the event information structure
8334
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 @see
8336 @return Result of the function call
8337*/
8338WDI_Status
8339WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008340(
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 WDI_ControlBlockType* pWDICtx,
8342 WDI_EventInfoType* pEventData
8343)
8344{
8345 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8346 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008349 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 wpt_uint16 usDataOffset = 0;
8351 wpt_uint16 usSendSize = 0;
8352 wpt_uint16 uMsgSize = 0;
8353 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008354 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008355
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8358
8359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 -------------------------------------------------------------------------*/
8362 if (( NULL == pEventData ) ||
8363 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8364 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8365 {
8366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 }
8371
8372 /*-------------------------------------------------------------------------
8373 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 -------------------------------------------------------------------------*/
8376 wpalMutexAcquire(&pWDICtx->wptMutex);
8377
8378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8382 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8383 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008384
8385 if ( NULL == pBSSSes )
8386 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8388 "%s: Association sequence for this BSS does not yet exist - "
8389 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8390 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008391
8392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 }
8395
8396 /*------------------------------------------------------------------------
8397 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 ------------------------------------------------------------------------*/
8400 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8401 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8403 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8404 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008405
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008407
8408 wpalMutexRelease(&pWDICtx->wptMutex);
8409
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 }
8412
8413 /*-----------------------------------------------------------------------
8414 If Post Assoc was not yet received - the current association must
8415 be in progress
8416 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8419 {
8420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8421 "Association sequence for this BSS association no longer in "
8422 "progress - not allowed");
8423
8424 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 }
8427
8428 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 -----------------------------------------------------------------------*/
8431 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8432 {
8433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8434 "Post Assoc not allowed before JOIN - failing request");
8435
8436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 }
8439
8440 wpalMutexRelease(&pWDICtx->wptMutex);
8441
8442 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8443 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8444 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008445 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008446 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8449 ( usSendSize < (usDataOffset + uMsgSize )))
8450 {
8451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008452 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 }
8457
8458 /*Copy the STA parameters */
8459 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8460 &pwdiPostAssocParams->wdiSTAParams );
8461
8462 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008464 WDI_STATableFindStaidByAddr(pWDICtx,
8465 pwdiPostAssocParams->wdiSTAParams.macSTA,
8466 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8467 {
8468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008469 MAC_ADDRESS_STR
8470 ": This station does not exist in the WDI Station Table",
8471 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008473 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 }
8476
8477 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 pBSSSes->ucBSSIdx;
8480
8481 /*Copy the BSS parameters */
8482 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8483 &pwdiPostAssocParams->wdiBSSParams);
8484
8485 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 WDI_STATableFindStaidByAddr(pWDICtx,
8488 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 {
8491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008492 MAC_ADDRESS_STR
8493 ": This station does not exist in the WDI Station Table",
8494 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008496 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 }
8499
8500 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 pBSSSes->ucBSSIdx;
8503
Jeff Johnsone7245742012-09-05 17:12:55 -07008504
8505 wpalMemoryCopy( pSendBuffer+usDataOffset,
8506 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8507 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008508
8509 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8510
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8512 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8513 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008514
Jeff Johnsone7245742012-09-05 17:12:55 -07008515
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008518
Jeff Johnsone7245742012-09-05 17:12:55 -07008519
8520 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008523
8524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8529
Jeff Johnsone7245742012-09-05 17:12:55 -07008530
Jeff Johnson295189b2012-06-20 16:38:30 -07008531}/*WDI_ProcessPostAssocReq*/
8532
8533/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008536
8537 @param pWDICtx: pointer to the WLAN DAL context
8538 pEventData: pointer to the event information structure
8539
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 @see
8541 @return Result of the function call
8542*/
8543WDI_Status
8544WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008545(
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 WDI_ControlBlockType* pWDICtx,
8547 WDI_EventInfoType* pEventData
8548)
8549{
8550 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8551 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008552 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 wpt_uint16 usDataOffset = 0;
8556 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8559
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8562
8563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 -------------------------------------------------------------------------*/
8566 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8567 ( NULL == pEventData->pCBfnc ))
8568 {
8569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008573 }
8574
8575 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8576 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8577 /*-------------------------------------------------------------------------
8578 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008579 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 -------------------------------------------------------------------------*/
8581 wpalMutexAcquire(&pWDICtx->wptMutex);
8582
8583 /*------------------------------------------------------------------------
8584 Find the BSS for which the request is made and identify WDI session
8585 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8587 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 &macBSSID))
8589 {
8590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008591 "This station does not exist in the WDI Station Table %d",
8592 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 }
8596
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8598 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8601 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8602 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008603
8604 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 }
8607
8608 /*------------------------------------------------------------------------
8609 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 ------------------------------------------------------------------------*/
8612 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8613 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8615 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8616 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008617
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 }
8622
8623 wpalMutexRelease(&pWDICtx->wptMutex);
8624 /*-----------------------------------------------------------------------
8625 Get message buffer
8626 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 sizeof(halDelStaReqMsg.delStaParams),
8629 &pSendBuffer, &usDataOffset, &usSendSize))||
8630 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8631 {
8632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008633 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 }
8638
Jeff Johnsone7245742012-09-05 17:12:55 -07008639 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8640 wpalMemoryCopy( pSendBuffer+usDataOffset,
8641 &halDelStaReqMsg.delStaParams,
8642 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008643
8644 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008646
8647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8652
8653}/*WDI_ProcessDelSTAReq*/
8654
8655
8656/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008658==========================================================================*/
8659/**
8660 @brief Process Set BSS Key Request function (called when Main FSM
8661 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008662
8663 @param pWDICtx: pointer to the WLAN DAL context
8664 pEventData: pointer to the event information structure
8665
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 @see
8667 @return Result of the function call
8668*/
8669WDI_Status
8670WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008671(
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 WDI_ControlBlockType* pWDICtx,
8673 WDI_EventInfoType* pEventData
8674)
8675{
8676 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8677 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 wpt_uint16 usDataOffset = 0;
8682 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008683 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8685 wpt_uint8 keyIndex = 0;
8686
8687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8688
8689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 -------------------------------------------------------------------------*/
8692 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8693 ( NULL == pEventData->pCBfnc ))
8694 {
8695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 }
8700
8701 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8702 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8703 /*-------------------------------------------------------------------------
8704 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 -------------------------------------------------------------------------*/
8707 wpalMutexAcquire(&pWDICtx->wptMutex);
8708
8709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8713 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8714 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008715
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 {
8718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8720 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008721
8722 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 }
8725
8726 /*------------------------------------------------------------------------
8727 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 ------------------------------------------------------------------------*/
8730 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8731 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8733 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8734 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008735
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 }
8740
8741
8742 wpalMutexRelease(&pWDICtx->wptMutex);
8743 /*-----------------------------------------------------------------------
8744 Get message buffer
8745 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8748 &pSendBuffer, &usDataOffset, &usSendSize))||
8749 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8750 {
8751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008752 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 }
8757
8758 /*-----------------------------------------------------------------------
8759 Copy the Key parameters into the HAL message
8760 -----------------------------------------------------------------------*/
8761
Jeff Johnsone7245742012-09-05 17:12:55 -07008762 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008763
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8766
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8769
8770 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8771 keyIndex++)
8772 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8775 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8776 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8777 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8778 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8779 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8786 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 WDI_MAX_KEY_LENGTH);
8789 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008790
8791 wpalMemoryCopy( pSendBuffer+usDataOffset,
8792 &halSetBssKeyReqMsg.setBssKeyParams,
8793 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008794
8795 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008797
8798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8802 wdiSetBSSKeyRspCb, pEventData->pUserData,
8803 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008804
8805}/*WDI_ProcessSetBssKeyReq*/
8806
8807/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008810
8811 @param pWDICtx: pointer to the WLAN DAL context
8812 pEventData: pointer to the event information structure
8813
Jeff Johnson295189b2012-06-20 16:38:30 -07008814 @see
8815 @return Result of the function call
8816*/
8817WDI_Status
8818WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008819(
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 WDI_ControlBlockType* pWDICtx,
8821 WDI_EventInfoType* pEventData
8822)
8823{
8824 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8825 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 wpt_uint16 usDataOffset = 0;
8830 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8834
8835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 -------------------------------------------------------------------------*/
8838 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8839 ( NULL == pEventData->pCBfnc ))
8840 {
8841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 }
8846
8847 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8848 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8849 /*-------------------------------------------------------------------------
8850 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 -------------------------------------------------------------------------*/
8853 wpalMutexAcquire(&pWDICtx->wptMutex);
8854
8855 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008856 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8859 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8860 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008861
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 {
8864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8866 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008867
8868 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 }
8871
8872 /*------------------------------------------------------------------------
8873 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 ------------------------------------------------------------------------*/
8876 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8877 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8879 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8880 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008881
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 }
8886
8887
8888 wpalMutexRelease(&pWDICtx->wptMutex);
8889
8890 /*-----------------------------------------------------------------------
8891 Get message buffer
8892 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8895 &pSendBuffer, &usDataOffset, &usSendSize))||
8896 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8897 {
8898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008899 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 }
8904 /*-----------------------------------------------------------------------
8905 Copy the Key parameters into the HAL message
8906 -----------------------------------------------------------------------*/
8907 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8908
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8911
8912 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8913
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8916
Jeff Johnsone7245742012-09-05 17:12:55 -07008917 wpalMemoryCopy( pSendBuffer+usDataOffset,
8918 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8919 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008920
8921 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008923
8924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008930}/*WDI_ProcessRemoveBssKeyReq*/
8931
8932/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008935
8936 @param pWDICtx: pointer to the WLAN DAL context
8937 pEventData: pointer to the event information structure
8938
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 @see
8940 @return Result of the function call
8941*/
8942WDI_Status
8943WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008944(
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 WDI_ControlBlockType* pWDICtx,
8946 WDI_EventInfoType* pEventData
8947)
8948{
8949 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8950 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8951 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 wpt_uint16 usDataOffset = 0;
8954 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8959 wpt_uint8 keyIndex = 0;
8960
8961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8962
8963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 -------------------------------------------------------------------------*/
8966 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8967 ( NULL == pEventData->pCBfnc ))
8968 {
8969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008970 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 }
8974
8975 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8976 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8977 /*-------------------------------------------------------------------------
8978 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008980 -------------------------------------------------------------------------*/
8981 wpalMutexAcquire(&pWDICtx->wptMutex);
8982
8983 /*------------------------------------------------------------------------
8984 Find the BSS for which the request is made and identify WDI session
8985 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8987 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 &macBSSID))
8989 {
8990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008991 "This station does not exist in the WDI Station Table %d",
8992 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 }
8996
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8998 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9001 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9002 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009003
9004 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009007
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 /*------------------------------------------------------------------------
9009 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 ------------------------------------------------------------------------*/
9012 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9013 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9015 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9016 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009017
Jeff Johnsone7245742012-09-05 17:12:55 -07009018 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 }
9022
9023
9024 wpalMutexRelease(&pWDICtx->wptMutex);
9025 /*-----------------------------------------------------------------------
9026 Get message buffer
9027 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9030 &pSendBuffer, &usDataOffset, &usSendSize))||
9031 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9032 {
9033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009034 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 }
9039 /*-----------------------------------------------------------------------
9040 Copy the STA Key parameters into the HAL message
9041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9044
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9047
9048 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9049
9050 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9051
9052 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9053
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9055 keyIndex++)
9056 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9059 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9060 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9061 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9062 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9063 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9070 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 WDI_MAX_KEY_LENGTH);
9073 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009074
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 wpalMemoryCopy( pSendBuffer+usDataOffset,
9076 &halSetStaKeyReqMsg.setStaKeyParams,
9077 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009078
9079 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009081
9082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9086 wdiSetSTAKeyRspCb, pEventData->pUserData,
9087 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009088
9089}/*WDI_ProcessSetSTAKeyReq*/
9090
9091/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009094
9095 @param pWDICtx: pointer to the WLAN DAL context
9096 pEventData: pointer to the event information structure
9097
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 @see
9099 @return Result of the function call
9100*/
9101WDI_Status
9102WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009103(
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 WDI_ControlBlockType* pWDICtx,
9105 WDI_EventInfoType* pEventData
9106)
9107{
9108 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9109 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9110 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 wpt_uint16 usDataOffset = 0;
9113 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 wpt_macAddr macBSSID;
9116 wpt_uint8 ucCurrentBSSSesIdx;
9117 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9119
9120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 -------------------------------------------------------------------------*/
9123 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9124 ( NULL == pEventData->pCBfnc ))
9125 {
9126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 }
9131
9132 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9133 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9134 /*-------------------------------------------------------------------------
9135 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 -------------------------------------------------------------------------*/
9138 wpalMutexAcquire(&pWDICtx->wptMutex);
9139
9140 /*------------------------------------------------------------------------
9141 Find the BSS for which the request is made and identify WDI session
9142 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9144 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 &macBSSID))
9146 {
9147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009148 "This station does not exist in the WDI Station Table %d",
9149 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009150 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 }
9153
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9155 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9158 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9159 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009160
9161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009164
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 /*------------------------------------------------------------------------
9166 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 ------------------------------------------------------------------------*/
9169 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9170 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9172 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009174
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 }
9179
9180
9181
9182 wpalMutexRelease(&pWDICtx->wptMutex);
9183 /*-----------------------------------------------------------------------
9184 Get message buffer
9185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009187 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9188 &pSendBuffer, &usDataOffset, &usSendSize))||
9189 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9190 {
9191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009192 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 }
9197
9198 /*-----------------------------------------------------------------------
9199 Copy the Key parameters into the HAL message
9200 -----------------------------------------------------------------------*/
9201
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009203 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9204
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9207
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9210
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9213
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 wpalMemoryCopy( pSendBuffer+usDataOffset,
9215 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9216 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009217
9218 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009220
9221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009227
9228}/*WDI_ProcessRemoveSTAKeyReq*/
9229
9230/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009233
9234 @param pWDICtx: pointer to the WLAN DAL context
9235 pEventData: pointer to the event information structure
9236
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 @see
9238 @return Result of the function call
9239*/
9240WDI_Status
9241WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009242(
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 WDI_ControlBlockType* pWDICtx,
9244 WDI_EventInfoType* pEventData
9245)
9246{
9247 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9248 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9249 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 wpt_uint16 usDataOffset = 0;
9252 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9257 wpt_uint8 keyIndex = 0;
9258
9259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9260
9261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 -------------------------------------------------------------------------*/
9264 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9265 ( NULL == pEventData->pCBfnc ))
9266 {
9267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 }
9272
9273 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9274 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9275 /*-------------------------------------------------------------------------
9276 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 -------------------------------------------------------------------------*/
9279 wpalMutexAcquire(&pWDICtx->wptMutex);
9280
9281 /*------------------------------------------------------------------------
9282 Find the BSS for which the request is made and identify WDI session
9283 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9285 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 &macBSSID))
9287 {
9288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009289 "This station does not exist in the WDI Station Table %d",
9290 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 }
9294
Jeff Johnsone7245742012-09-05 17:12:55 -07009295 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9296 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 {
9298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009299 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009301
9302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009305
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 /*------------------------------------------------------------------------
9307 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 ------------------------------------------------------------------------*/
9310 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9311 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9313 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9314 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009315
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 }
9320
9321
9322 wpalMutexRelease(&pWDICtx->wptMutex);
9323 /*-----------------------------------------------------------------------
9324 Get message buffer
9325 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9328 &pSendBuffer, &usDataOffset, &usSendSize))||
9329 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9330 {
9331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009332 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 }
9337 /*-----------------------------------------------------------------------
9338 Copy the STA Key parameters into the HAL message
9339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9342
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9345
9346 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9347
9348 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9349
9350 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9351
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9353 keyIndex++)
9354 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9357 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9358 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9359 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9360 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9361 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9368 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 WDI_MAX_KEY_LENGTH);
9371 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009372
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 wpalMemoryCopy( pSendBuffer+usDataOffset,
9374 &halSetStaKeyReqMsg.setStaKeyParams,
9375 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009376
9377 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009379
9380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9384 wdiSetSTAKeyRspCb, pEventData->pUserData,
9385 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009386
9387}/*WDI_ProcessSetSTABcastKeyReq*/
9388
9389/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009392
9393 @param pWDICtx: pointer to the WLAN DAL context
9394 pEventData: pointer to the event information structure
9395
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 @see
9397 @return Result of the function call
9398*/
9399WDI_Status
9400WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009401(
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 WDI_ControlBlockType* pWDICtx,
9403 WDI_EventInfoType* pEventData
9404)
9405{
9406 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9407 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9408 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 wpt_uint16 usDataOffset = 0;
9411 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 wpt_macAddr macBSSID;
9414 wpt_uint8 ucCurrentBSSSesIdx;
9415 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9417
9418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 -------------------------------------------------------------------------*/
9421 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9422 ( NULL == pEventData->pCBfnc ))
9423 {
9424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 }
9429
9430 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9431 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9432 /*-------------------------------------------------------------------------
9433 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 -------------------------------------------------------------------------*/
9436 wpalMutexAcquire(&pWDICtx->wptMutex);
9437
9438 /*------------------------------------------------------------------------
9439 Find the BSS for which the request is made and identify WDI session
9440 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9442 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 &macBSSID))
9444 {
9445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009446 "This station does not exist in the WDI Station Table %d",
9447 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 }
9451
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9453 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9456 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9457 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009458
9459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009462
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 /*------------------------------------------------------------------------
9464 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 ------------------------------------------------------------------------*/
9467 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9468 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9470 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9471 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009472
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 }
9477
9478
9479
9480 wpalMutexRelease(&pWDICtx->wptMutex);
9481 /*-----------------------------------------------------------------------
9482 Get message buffer
9483 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9486 &pSendBuffer, &usDataOffset, &usSendSize))||
9487 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9488 {
9489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009490 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 }
9495
9496 /*-----------------------------------------------------------------------
9497 Copy the Key parameters into the HAL message
9498 -----------------------------------------------------------------------*/
9499
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9502
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9505
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9508
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9511
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 wpalMemoryCopy( pSendBuffer+usDataOffset,
9513 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9514 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009515
9516 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009518
9519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009525
9526}/*WDI_ProcessRemoveSTABcastKeyReq*/
9527
9528/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009530==========================================================================*/
9531/**
9532 @brief Process Add TSpec Request function (called when Main FSM
9533 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009534
9535 @param pWDICtx: pointer to the WLAN DAL context
9536 pEventData: pointer to the event information structure
9537
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 @see
9539 @return Result of the function call
9540*/
9541WDI_Status
9542WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009543(
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 WDI_ControlBlockType* pWDICtx,
9545 WDI_EventInfoType* pEventData
9546)
9547{
9548 WDI_AddTSReqParamsType* pwdiAddTSParams;
9549 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 wpt_uint16 usDataOffset = 0;
9554 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 wpt_macAddr macBSSID;
9557 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009558
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9560
9561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 -------------------------------------------------------------------------*/
9564 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9565 ( NULL == pEventData->pCBfnc ))
9566 {
9567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 }
9572
9573 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9574 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9575 /*-------------------------------------------------------------------------
9576 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 -------------------------------------------------------------------------*/
9579 wpalMutexAcquire(&pWDICtx->wptMutex);
9580
9581 /*------------------------------------------------------------------------
9582 Find the BSS for which the request is made and identify WDI session
9583 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9585 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 &macBSSID))
9587 {
9588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009589 "This station does not exist in the WDI Station Table %d",
9590 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 }
9594
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9596 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9599 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9600 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009601
9602 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009605
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 /*------------------------------------------------------------------------
9607 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 ------------------------------------------------------------------------*/
9610 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9611 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9613 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9614 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009615
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 }
9620
9621 wpalMutexRelease(&pWDICtx->wptMutex);
9622 /*-----------------------------------------------------------------------
9623 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9627 sizeof(halAddTsParams),
9628 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 &usSendSize))||
9630 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9631 {
9632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009633 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 }
9638
9639 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9640 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9641
9642 //TSPEC IE
9643 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9644 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009650 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009667 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9675
9676 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009690 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9691
9692 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9697
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 wpalMemoryCopy( pSendBuffer+usDataOffset,
9699 &halAddTsParams,
9700 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009701
9702 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704
9705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009711}/*WDI_ProcessAddTSpecReq*/
9712
9713
9714/**
9715 @brief Process Del TSpec Request function (called when Main FSM
9716 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009717
9718 @param pWDICtx: pointer to the WLAN DAL context
9719 pEventData: pointer to the event information structure
9720
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 @see
9722 @return Result of the function call
9723*/
9724WDI_Status
9725WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009726(
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 WDI_ControlBlockType* pWDICtx,
9728 WDI_EventInfoType* pEventData
9729)
9730{
9731 WDI_DelTSReqParamsType* pwdiDelTSParams;
9732 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 wpt_uint16 usDataOffset = 0;
9737 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9740
9741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 -------------------------------------------------------------------------*/
9744 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9745 ( NULL == pEventData->pCBfnc ))
9746 {
9747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 }
9752
9753 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9754 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9755
9756 /*-------------------------------------------------------------------------
9757 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009758 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 -------------------------------------------------------------------------*/
9760 wpalMutexAcquire(&pWDICtx->wptMutex);
9761
9762 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9766 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9767 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009768
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9772 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9773 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9774
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 }
9778
9779 /*------------------------------------------------------------------------
9780 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 ------------------------------------------------------------------------*/
9783 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9784 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9786 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9787 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009788
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 }
9793
9794
9795 wpalMutexRelease(&pWDICtx->wptMutex);
9796 /*-----------------------------------------------------------------------
9797 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9802 &pSendBuffer, &usDataOffset, &usSendSize))||
9803 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9804 {
9805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009806 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009810 }
9811
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 wpalMemoryCopy( pSendBuffer+usDataOffset,
9813 &pwdiDelTSParams->wdiDelTSInfo,
9814 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009815
9816 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009818
9819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9823 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009824}/*WDI_ProcessDelTSpecReq*/
9825
9826/**
9827 @brief Process Update EDCA Params Request function (called when
9828 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009829
9830 @param pWDICtx: pointer to the WLAN DAL context
9831 pEventData: pointer to the event information structure
9832
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 @see
9834 @return Result of the function call
9835*/
9836WDI_Status
9837WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009838(
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 WDI_ControlBlockType* pWDICtx,
9840 WDI_EventInfoType* pEventData
9841)
9842{
9843 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9844 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 wpt_uint16 usDataOffset = 0;
9849 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009850 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9852
9853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 -------------------------------------------------------------------------*/
9856 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9857 ( NULL == pEventData->pCBfnc ))
9858 {
9859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 }
9864
9865 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9866 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9867 /*-------------------------------------------------------------------------
9868 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 -------------------------------------------------------------------------*/
9871 wpalMutexAcquire(&pWDICtx->wptMutex);
9872
9873 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9877 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9878 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009879
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 {
9882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9884 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009885
9886 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 }
9889
9890 /*------------------------------------------------------------------------
9891 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 ------------------------------------------------------------------------*/
9894 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9895 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9897 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9898 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009899
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 }
9904
9905
9906 wpalMutexRelease(&pWDICtx->wptMutex);
9907 /*-----------------------------------------------------------------------
9908 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9913 &pSendBuffer, &usDataOffset, &usSendSize))||
9914 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9915 {
9916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009917 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 }
9922
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 wpalMemoryCopy( pSendBuffer+usDataOffset,
9924 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9925 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009926
9927 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009929
9930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9934 wdiUpdateEDCARspCb, pEventData->pUserData,
9935 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009936}/*WDI_ProcessUpdateEDCAParamsReq*/
9937
9938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009941
9942 @param pWDICtx: pointer to the WLAN DAL context
9943 pEventData: pointer to the event information structure
9944
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 @see
9946 @return Result of the function call
9947*/
9948WDI_Status
9949WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009950(
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 WDI_ControlBlockType* pWDICtx,
9952 WDI_EventInfoType* pEventData
9953)
9954{
9955 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9956 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 wpt_uint16 usDataOffset = 0;
9961 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 wpt_macAddr macBSSID;
9964
9965 tAddBASessionReqMsg halAddBASessionReq;
9966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9967
9968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 -------------------------------------------------------------------------*/
9971 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9972 ( NULL == pEventData->pCBfnc ))
9973 {
9974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 }
9979
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009981 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9984 /*-------------------------------------------------------------------------
9985 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 -------------------------------------------------------------------------*/
9988 wpalMutexAcquire(&pWDICtx->wptMutex);
9989
9990 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9994 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 &macBSSID))
9996 {
9997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009998 "This station does not exist in the WDI Station Table %d",
9999 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 }
10003
10004
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010006
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10010 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10011 __func__, MAC_ADDR_ARRAY(macBSSID));
10012
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 }
10016
10017 /*------------------------------------------------------------------------
10018 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 ------------------------------------------------------------------------*/
10021 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10022 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10024 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10025 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010026
Jeff Johnsone7245742012-09-05 17:12:55 -070010027 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010028 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 }
10031
10032
10033 wpalMutexRelease(&pWDICtx->wptMutex);
10034 /*-----------------------------------------------------------------------
10035 Get message buffer
10036 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10038 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 sizeof(halAddBASessionReq.addBASessionParams),
10040 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10043 {
10044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010045 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 }
10050
10051 halAddBASessionReq.addBASessionParams.staIdx =
10052 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10053 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10054 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10055 WDI_MAC_ADDR_LEN);
10056 halAddBASessionReq.addBASessionParams.baTID =
10057 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10058 halAddBASessionReq.addBASessionParams.baPolicy =
10059 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10060 halAddBASessionReq.addBASessionParams.baBufferSize =
10061 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10062 halAddBASessionReq.addBASessionParams.baTimeout =
10063 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10064 halAddBASessionReq.addBASessionParams.baSSN =
10065 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10066 halAddBASessionReq.addBASessionParams.baDirection =
10067 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10068
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 wpalMemoryCopy( pSendBuffer+usDataOffset,
10070 &halAddBASessionReq.addBASessionParams,
10071 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010072
10073 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010075
10076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10080 wdiAddBASessionRspCb, pEventData->pUserData,
10081 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010082}/*WDI_ProcessAddBASessionReq*/
10083
10084/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010087
10088 @param pWDICtx: pointer to the WLAN DAL context
10089 pEventData: pointer to the event information structure
10090
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 @see
10092 @return Result of the function call
10093*/
10094WDI_Status
10095WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010096(
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 WDI_ControlBlockType* pWDICtx,
10098 WDI_EventInfoType* pEventData
10099)
10100{
10101 WDI_DelBAReqParamsType* pwdiDelBAParams;
10102 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 wpt_uint16 usDataOffset = 0;
10107 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 wpt_macAddr macBSSID;
10110 tDelBAParams halDelBAparam;
10111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10112
10113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 -------------------------------------------------------------------------*/
10116 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10117 ( NULL == pEventData->pCBfnc ))
10118 {
10119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010120 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 }
10124
10125 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10126 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10127 /*-------------------------------------------------------------------------
10128 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 -------------------------------------------------------------------------*/
10131 wpalMutexAcquire(&pWDICtx->wptMutex);
10132
10133 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10137 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 &macBSSID))
10139 {
10140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010141 "This station does not exist in the WDI Station Table %d",
10142 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 }
10146
Jeff Johnsone7245742012-09-05 17:12:55 -070010147 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010148
Jeff Johnsone7245742012-09-05 17:12:55 -070010149 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010150 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10152 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10153 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010154
10155 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 }
10158
10159 /*------------------------------------------------------------------------
10160 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 ------------------------------------------------------------------------*/
10163 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10164 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10166 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10167 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010168
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 }
10173
10174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 sizeof(halDelBAparam),
10177 &pSendBuffer, &usDataOffset, &usSendSize))||
10178 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10179 {
10180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010181 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 }
10186
10187 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10188 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10189 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10190
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 wpalMemoryCopy( pSendBuffer+usDataOffset,
10192 &halDelBAparam,
10193 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010194
10195 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010197
10198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10202 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010203}/*WDI_ProcessDelBAReq*/
10204
10205#ifdef FEATURE_WLAN_CCX
10206
10207WDI_Status
10208WDI_ProcessTSMStatsReq
10209(
10210 WDI_ControlBlockType* pWDICtx,
10211 WDI_EventInfoType* pEventData
10212)
10213{
10214 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10215 WDI_TsmRspCb wdiTSMRspCb;
10216 wpt_uint8 ucCurrentBSSSesIdx = 0;
10217 WDI_BSSSessionType* pBSSSes = NULL;
10218 wpt_uint8* pSendBuffer = NULL;
10219 wpt_uint16 usDataOffset = 0;
10220 wpt_uint16 usSendSize = 0;
10221 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10222 tTsmStatsParams halTsmStatsReqParams = {0};
10223
10224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10225
10226 /*-------------------------------------------------------------------------
10227 Sanity check
10228 -------------------------------------------------------------------------*/
10229 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10230 ( NULL == pEventData->pCBfnc ))
10231 {
10232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 WDI_ASSERT(0);
10235 return WDI_STATUS_E_FAILURE;
10236 }
10237
10238 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10239 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10240 /*-------------------------------------------------------------------------
10241 Check to see if we are in the middle of an association, if so queue, if
10242 not it means it is free to process request
10243 -------------------------------------------------------------------------*/
10244 wpalMutexAcquire(&pWDICtx->wptMutex);
10245
10246 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10247 if ( NULL == pBSSSes )
10248 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10250 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10251 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010252
10253 wpalMutexRelease(&pWDICtx->wptMutex);
10254 return WDI_STATUS_E_NOT_ALLOWED;
10255 }
10256
10257 /*------------------------------------------------------------------------
10258 Check if this BSS is being currently processed or queued,
10259 if queued - queue the new request as well
10260 ------------------------------------------------------------------------*/
10261 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10262 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010264 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010266
10267 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10268 wpalMutexRelease(&pWDICtx->wptMutex);
10269 return wdiStatus;
10270 }
10271
10272 wpalMutexRelease(&pWDICtx->wptMutex);
10273 /*-----------------------------------------------------------------------
10274 Get message buffer
10275 ! TO DO : proper conversion into the HAL Message Request Format
10276 -----------------------------------------------------------------------*/
10277 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10278 sizeof(halTsmStatsReqParams),
10279 &pSendBuffer, &usDataOffset, &usSendSize))||
10280 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10281 {
10282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010283 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 pEventData, pwdiTSMParams, wdiTSMRspCb);
10285 WDI_ASSERT(0);
10286 return WDI_STATUS_E_FAILURE;
10287 }
10288
10289 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10290 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10291 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10292 WDI_MAC_ADDR_LEN);
10293 wpalMemoryCopy( pSendBuffer+usDataOffset,
10294 &halTsmStatsReqParams,
10295 sizeof(halTsmStatsReqParams));
10296
10297 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10298 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10299
10300 /*-------------------------------------------------------------------------
10301 Send TSM Stats Request to HAL
10302 -------------------------------------------------------------------------*/
10303 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10304 wdiTSMRspCb, pEventData->pUserData,
10305 WDI_TSM_STATS_RESP);
10306}/*WDI_ProcessTSMStatsReq*/
10307
10308#endif
10309
10310
10311/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010314
10315 @param pWDICtx: pointer to the WLAN DAL context
10316 pEventData: pointer to the event information structure
10317
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 @see
10319 @return Result of the function call
10320*/
10321WDI_Status
10322WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010323(
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 WDI_ControlBlockType* pWDICtx,
10325 WDI_EventInfoType* pEventData
10326)
10327{
10328 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10329 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 wpt_uint16 usDataOffset = 0;
10332 wpt_uint16 usSendSize = 0;
10333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10334
10335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 -------------------------------------------------------------------------*/
10338 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10339 ( NULL == pEventData->pCBfnc ))
10340 {
10341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 }
10346
10347 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10348 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10349 /*-----------------------------------------------------------------------
10350 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10355 &pSendBuffer, &usDataOffset, &usSendSize))||
10356 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10357 {
10358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010359 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 }
10364
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 wpalMemoryCopy( pSendBuffer+usDataOffset,
10366 &pwdiFlushAcParams->wdiFlushAcInfo,
10367 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010368
10369 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010370 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010371
10372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10376 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010377}/*WDI_ProcessFlushAcReq*/
10378
10379/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010382
10383 @param pWDICtx: pointer to the WLAN DAL context
10384 pEventData: pointer to the event information structure
10385
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 @see
10387 @return Result of the function call
10388*/
10389WDI_Status
10390WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010391(
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 WDI_ControlBlockType* pWDICtx,
10393 WDI_EventInfoType* pEventData
10394)
10395{
10396 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10397 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 wpt_uint16 usDataOffset = 0;
10400 wpt_uint16 usSendSize = 0;
10401
10402 tBtAmpEventMsg haltBtAmpEventMsg;
10403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10404
10405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 -------------------------------------------------------------------------*/
10408 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10409 ( NULL == pEventData->pCBfnc ))
10410 {
10411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 }
10416
10417 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10418 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10419 /*-----------------------------------------------------------------------
10420 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010423 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10425 &pSendBuffer, &usDataOffset, &usSendSize))||
10426 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10427 {
10428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010429 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 }
10434
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 wpalMemoryCopy( pSendBuffer+usDataOffset,
10438 &haltBtAmpEventMsg.btAmpEventParams,
10439 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010440
10441 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010443
10444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10448 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010449}/*WDI_ProcessBtAmpEventReq*/
10450
10451/**
10452 @brief Process Add STA self Request function (called when Main FSM
10453 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010454
10455 @param pWDICtx: pointer to the WLAN DAL context
10456 pEventData: pointer to the event information structure
10457
Jeff Johnson295189b2012-06-20 16:38:30 -070010458 @see
10459 @return Result of the function call
10460*/
10461WDI_Status
10462WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010463(
Jeff Johnson295189b2012-06-20 16:38:30 -070010464 WDI_ControlBlockType* pWDICtx,
10465 WDI_EventInfoType* pEventData
10466)
10467{
10468 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10469 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 wpt_uint16 usDataOffset = 0;
10472 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010473 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10475
10476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 -------------------------------------------------------------------------*/
10479 if (( NULL == pEventData ) ||
10480 ( NULL == pEventData->pEventData) ||
10481 ( NULL == pEventData->pCBfnc))
10482 {
10483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 }
10488
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010492 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10493 /*-----------------------------------------------------------------------
10494 Get message buffer
10495 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10497 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010498 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010500 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 {
10502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010503 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010504 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 }
10508
10509 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10512
Jeff Johnsone7245742012-09-05 17:12:55 -070010513 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010514 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10515 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10516 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10517 {
10518 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10519 }
10520 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10521 VOS_P2P_CLIENT_MODE) ||
10522 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10523 VOS_P2P_DEVICE))
10524 {
10525 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10526 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010528 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010529
10530 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010532
10533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010534 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010535 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10537 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10538 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010539}/*WDI_ProcessAddSTASelfReq*/
10540
10541
10542
10543/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010545 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010546
10547 @param pWDICtx: pointer to the WLAN DAL context
10548 pEventData: pointer to the event information structure
10549
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 @see
10551 @return Result of the function call
10552*/
10553WDI_Status
10554WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010555(
Jeff Johnson295189b2012-06-20 16:38:30 -070010556 WDI_ControlBlockType* pWDICtx,
10557 WDI_EventInfoType* pEventData
10558)
10559{
10560 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10561 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010562 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 wpt_uint16 usDataOffset = 0;
10564 wpt_uint16 usSendSize = 0;
10565 tDelStaSelfParams halSetDelSelfSTAParams;
10566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10567
10568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 -------------------------------------------------------------------------*/
10571 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10572 ( NULL == pEventData->pCBfnc ))
10573 {
10574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010578 }
10579
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10582 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10583
10584 /*-----------------------------------------------------------------------
10585 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10590 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10593 {
10594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010595 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 }
10600
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10603
Jeff Johnsone7245742012-09-05 17:12:55 -070010604 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10605 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010606
10607 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010608 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010609
10610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010611 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10614 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 WDI_DEL_STA_SELF_RESP);
10616
10617}
10618
Jeff Johnsone7245742012-09-05 17:12:55 -070010619#ifdef FEATURE_OEM_DATA_SUPPORT
10620/**
10621 @brief Process Start Oem Data Request function (called when Main
10622 FSM allows it)
10623
10624 @param pWDICtx: pointer to the WLAN DAL context
10625 pEventData: pointer to the event information structure
10626
10627 @see
10628 @return Result of the function call
10629*/
10630WDI_Status
10631WDI_ProcessStartOemDataReq
10632(
10633 WDI_ControlBlockType* pWDICtx,
10634 WDI_EventInfoType* pEventData
10635)
10636{
10637 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10638 WDI_oemDataRspCb wdiOemDataRspCb;
10639 wpt_uint8* pSendBuffer = NULL;
10640 wpt_uint16 usDataOffset = 0;
10641 wpt_uint16 usSendSize = 0;
10642 wpt_uint16 reqLen;
10643 tStartOemDataReqParams* halStartOemDataReqParams;
10644
10645 /*-------------------------------------------------------------------------
10646 Sanity check
10647 -------------------------------------------------------------------------*/
10648 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10649 ( NULL == pEventData->pCBfnc ))
10650 {
10651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010652 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 WDI_ASSERT(0);
10654 return WDI_STATUS_E_FAILURE;
10655 }
10656
10657 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10658 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10659
10660 /*-----------------------------------------------------------------------
10661 Get message buffer
10662 -----------------------------------------------------------------------*/
10663
10664 reqLen = sizeof(tStartOemDataReqParams);
10665
10666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10667 WDI_START_OEM_DATA_REQ, reqLen,
10668 &pSendBuffer, &usDataOffset, &usSendSize))||
10669 (usSendSize < (usDataOffset + reqLen)))
10670 {
10671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010672 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10674 WDI_ASSERT(0);
10675 return WDI_STATUS_E_FAILURE;
10676 }
10677
10678 //copying WDI OEM DATA REQ PARAMS to shared memory
10679 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10680
10681 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10682 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10683
10684 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10685 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10686
10687 /*-------------------------------------------------------------------------
10688 Send Start Request to HAL
10689 -------------------------------------------------------------------------*/
10690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10691 wdiOemDataRspCb, pEventData->pUserData,
10692 WDI_START_OEM_DATA_RESP);
10693}/*WDI_ProcessStartOemDataReq*/
10694#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010695
10696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010699
10700 @param pWDICtx: pointer to the WLAN DAL context
10701 pEventData: pointer to the event information structure
10702
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 @see
10704 @return Result of the function call
10705*/
10706WDI_Status
10707WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010708(
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 WDI_ControlBlockType* pWDICtx,
10710 WDI_EventInfoType* pEventData
10711)
10712{
10713 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10714 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 wpt_uint16 usDataOffset = 0;
10717 wpt_uint16 usSendSize = 0;
10718 tHalWlanHostResumeReqParam halResumeReqParams;
10719
10720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10721
10722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 -------------------------------------------------------------------------*/
10725 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10726 ( NULL == pEventData->pCBfnc ))
10727 {
10728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010729 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 }
10733
10734 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10735 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10736
10737 /*-----------------------------------------------------------------------
10738 Get message buffer
10739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10742 &pSendBuffer, &usDataOffset, &usSendSize))||
10743 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10744 {
10745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010746 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 }
10751
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010754
10755 wpalMemoryCopy( pSendBuffer+usDataOffset,
10756 &halResumeReqParams,
10757 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010758
10759 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010760 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010761
10762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10766 wdiHostResumeRspCb, pEventData->pUserData,
10767 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010768}/*WDI_ProcessHostResumeReq*/
10769
10770/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010771 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010773
10774 @param pWDICtx: pointer to the WLAN DAL context
10775 pEventData: pointer to the event information structure
10776
Jeff Johnson295189b2012-06-20 16:38:30 -070010777 @see
10778 @return Result of the function call
10779*/
10780WDI_Status
10781WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010782(
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 WDI_ControlBlockType* pWDICtx,
10784 WDI_EventInfoType* pEventData
10785)
10786{
10787 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10788 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 wpt_uint16 usDataOffset = 0;
10791 wpt_uint16 usSendSize = 0;
10792 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10794
10795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 -------------------------------------------------------------------------*/
10798 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10799 ( NULL == pEventData->pCBfnc ))
10800 {
10801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010802 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 }
10806
10807 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10808 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010809
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 /*-----------------------------------------------------------------------
10811 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 sizeof(halTxPerTrackingReqParam),
10816 &pSendBuffer, &usDataOffset, &usSendSize))||
10817 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10818 {
10819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010820 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010825
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10827 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10828 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10829 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010830
10831 wpalMemoryCopy( pSendBuffer+usDataOffset,
10832 &halTxPerTrackingReqParam,
10833 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010834
10835 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010836 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010837
10838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10842 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010843}/*WDI_ProcessSetTxPerTrackingReq*/
10844
10845/*=========================================================================
10846 Indications
10847=========================================================================*/
10848
10849/**
10850 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010851
10852 @param pWDICtx: pointer to the WLAN DAL context
10853 pEventData: pointer to the event information structure
10854
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 @see
10856 @return Result of the function call
10857*/
10858WDI_Status
10859WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010860(
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 WDI_ControlBlockType* pWDICtx,
10862 WDI_EventInfoType* pEventData
10863)
10864{
10865 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 wpt_uint16 usDataOffset = 0;
10868 wpt_uint16 usSendSize = 0;
10869 WDI_Status wdiStatus;
10870 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10872
10873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 -------------------------------------------------------------------------*/
10876 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10877 {
10878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010879 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 }
10883
10884 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10885
10886 /*-----------------------------------------------------------------------
10887 Get message buffer
10888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10890 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010891 sizeof(halWlanSuspendIndparams),
10892 &pSendBuffer, &usDataOffset, &usSendSize))||
10893 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10894 {
10895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10896 "Unable to get send buffer in Suspend Ind ");
10897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 }
10900
10901 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10902 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10903
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070010905 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010906
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10908 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010909
10910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 -------------------------------------------------------------------------*/
10913 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010914 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010915
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10918}/*WDI_ProcessHostSuspendInd*/
10919
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080010920
10921
10922/**
10923 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10924
10925 @param pWDICtx: pointer to the WLAN DAL context
10926 pEventData: pointer to the event information structure
10927
10928 @see
10929 @return Result of the function call
10930*/
10931WDI_Status
10932WDI_ProcessTrafficStatsInd
10933(
10934 WDI_ControlBlockType* pWDICtx,
10935 WDI_EventInfoType* pEventData
10936)
10937{
10938 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10939 wpt_uint8* pSendBuffer = NULL;
10940 wpt_uint16 usDataOffset = 0;
10941 wpt_uint16 usSendSize = 0;
10942 WDI_Status wdiStatus;
10943 tStatsClassBIndParams* pStatsClassBIndParams;
10944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10945
10946 /*-------------------------------------------------------------------------
10947 Sanity check
10948 -------------------------------------------------------------------------*/
10949 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10950 {
10951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10952 "%s: Invalid parameters in Traffic Stats ind",__func__);
10953 WDI_ASSERT(0);
10954 return WDI_STATUS_E_FAILURE;
10955 }
10956
10957 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10958
10959 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10960 {
10961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10962 "%s: Invalid parameters in Traffic Stats ind",__func__);
10963 WDI_ASSERT(0);
10964 return WDI_STATUS_E_FAILURE;
10965 }
10966
10967 /*-----------------------------------------------------------------------
10968 Get message buffer
10969 -----------------------------------------------------------------------*/
10970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10971 WDI_TRAFFIC_STATS_IND,
10972 sizeof(tStatsClassBIndParams),
10973 &pSendBuffer, &usDataOffset, &usSendSize))||
10974 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10975 {
10976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10977 "Unable to get send buffer in Traffic Stats Ind ");
10978 WDI_ASSERT(0);
10979 return WDI_STATUS_E_FAILURE;
10980 }
10981
10982 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10983
10984 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10985
10986 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10987 pTrafficStatsIndParams->pTrafficStats,
10988 pTrafficStatsIndParams->length);
10989
10990 /*-------------------------------------------------------------------------
10991 Send Suspend Request to HAL
10992 -------------------------------------------------------------------------*/
10993 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10994 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10995
10996 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10997 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10998}/*WDI_ProcessTrafficStatsInd*/
10999
Chet Lanctot186b5732013-03-18 10:26:30 -070011000#ifdef WLAN_FEATURE_11W
11001/**
11002 @brief Process Exclude Unencrypted Indications function (called
11003 when Main FSM allows it)
11004
11005 @param pWDICtx: pointer to the WLAN DAL context
11006 pEventData: pointer to the event information structure
11007
11008 @see
11009 @return Result of the function call
11010*/
11011WDI_Status
11012WDI_ProcessExcludeUnencryptInd
11013(
11014 WDI_ControlBlockType* pWDICtx,
11015 WDI_EventInfoType* pEventData
11016)
11017{
11018 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11019 wpt_uint8* pSendBuffer = NULL;
11020 wpt_uint16 usDataOffset = 0;
11021 wpt_uint16 usSendSize = 0;
11022 WDI_Status wdiStatus;
11023 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11025
11026 /*-------------------------------------------------------------------------
11027 Sanity check
11028 -------------------------------------------------------------------------*/
11029 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11030 {
11031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11032 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11033 WDI_ASSERT(0);
11034 return WDI_STATUS_E_FAILURE;
11035 }
11036
11037 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11038
11039 /*-----------------------------------------------------------------------
11040 Get message buffer
11041 -----------------------------------------------------------------------*/
11042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11043 WDI_EXCLUDE_UNENCRYPTED_IND,
11044 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11045 &pSendBuffer, &usDataOffset, &usSendSize))||
11046 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11047 {
11048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11049 "Unable to get send buffer in Exclude Unencrypted Ind ");
11050 WDI_ASSERT(0);
11051 return WDI_STATUS_E_FAILURE;
11052 }
11053
11054 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11055
11056 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11057
11058 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11059 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11060
11061 /*-------------------------------------------------------------------------
11062 Send Suspend Request to HAL
11063 -------------------------------------------------------------------------*/
11064 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11065 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11066
11067 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11068 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11069}/*WDI_ProcessExcludeUnencryptInd*/
11070#endif
11071
Yue Mab9c86f42013-08-14 15:59:08 -070011072/**
11073 @brief Process Add Periodic Tx Pattern Indication function (called when
11074 Main FSM allows it)
11075
11076 @param pWDICtx: pointer to the WLAN DAL context
11077 pEventData: pointer to the event information structure
11078
11079 @see
11080 @return Result of the function call
11081*/
11082WDI_Status
11083WDI_ProcessAddPeriodicTxPtrnInd
11084(
11085 WDI_ControlBlockType* pWDICtx,
11086 WDI_EventInfoType* pEventData
11087)
11088{
11089 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11090 wpt_uint8* pSendBuffer = NULL;
11091 wpt_uint16 usDataOffset = 0;
11092 wpt_uint16 usSendSize = 0;
11093 WDI_Status wdiStatus;
11094 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11095 wpt_uint8 selfStaIdx = 0;
11096
11097 /*-------------------------------------------------------------------------
11098 Sanity check
11099 -------------------------------------------------------------------------*/
11100 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11101 {
11102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11103 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11104 WDI_ASSERT(0);
11105 return WDI_STATUS_E_FAILURE;
11106 }
11107
11108 pAddPeriodicTxPtrnParams =
11109 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11110
11111 /*------------------------------------------------------------------------
11112 Get message buffer
11113 ------------------------------------------------------------------------*/
11114 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11115 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11116 &pSendBuffer, &usDataOffset, &usSendSize))||
11117 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11118 {
11119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11120 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11121 __func__);
11122 WDI_ASSERT(0);
11123 return WDI_STATUS_E_FAILURE;
11124 }
11125
11126 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11127
11128 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11129 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11130 &selfStaIdx))
11131 {
11132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11133 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011134 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011135
11136 return WDI_STATUS_E_FAILURE;
11137 }
11138
11139 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11140 halAddPeriodicTxPtrn->ucPtrnId =
11141 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11142 halAddPeriodicTxPtrn->usPtrnSize =
11143 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11144 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11145 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11146
11147 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11148 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11149 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11150
11151 /*-------------------------------------------------------------------------
11152 Send Indication to HAL
11153 -------------------------------------------------------------------------*/
11154 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11155 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11156
11157 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11158
11159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11160 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11161
11162 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11163} /* WDI_ProcessAddPeriodicTxPtrnInd */
11164
11165/**
11166 @brief Process Delete Periodic Tx Pattern Indication function (called when
11167 Main FSM allows it)
11168
11169 @param pWDICtx: pointer to the WLAN DAL context
11170 pEventData: pointer to the event information structure
11171
11172 @see
11173 @return Result of the function call
11174*/
11175WDI_Status
11176WDI_ProcessDelPeriodicTxPtrnInd
11177(
11178 WDI_ControlBlockType* pWDICtx,
11179 WDI_EventInfoType* pEventData
11180)
11181{
11182 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11183 wpt_uint8* pSendBuffer = NULL;
11184 wpt_uint16 usDataOffset = 0;
11185 wpt_uint16 usSendSize = 0;
11186 WDI_Status wdiStatus;
11187 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11188 wpt_uint8 selfStaIdx = 0;
11189
11190 /*-------------------------------------------------------------------------
11191 Sanity check
11192 -------------------------------------------------------------------------*/
11193 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11194 {
11195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11196 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11197 WDI_ASSERT(0);
11198 return WDI_STATUS_E_FAILURE;
11199 }
11200
11201 pDelPeriodicTxPtrnParams =
11202 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11203
11204 /*------------------------------------------------------------------------
11205 Get message buffer
11206 ------------------------------------------------------------------------*/
11207 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11208 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11209 &pSendBuffer, &usDataOffset, &usSendSize))||
11210 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11211 {
11212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11213 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11214 __func__);
11215 WDI_ASSERT(0);
11216 return WDI_STATUS_E_FAILURE;
11217 }
11218
11219 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11220
11221 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11222 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11223 &selfStaIdx))
11224 {
11225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11226 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011227 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011228
11229 return WDI_STATUS_E_FAILURE;
11230 }
11231
11232 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11233 halDelPeriodicTxPtrn->uPatternIdBitmap =
11234 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11235
11236 /*-------------------------------------------------------------------------
11237 Send Indication to HAL
11238 -------------------------------------------------------------------------*/
11239 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11240 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11241
11242 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11243
11244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11245 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11246
11247 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11248} /* WDI_ProcessDelPeriodicTxPtrnInd */
11249
Jeff Johnson295189b2012-06-20 16:38:30 -070011250/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011252==========================================================================*/
11253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011254 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011256
11257 @param pWDICtx: pointer to the WLAN DAL context
11258 pEventData: pointer to the event information structure
11259
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 @see
11261 @return Result of the function call
11262*/
11263WDI_Status
11264WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011265(
Jeff Johnson295189b2012-06-20 16:38:30 -070011266 WDI_ControlBlockType* pWDICtx,
11267 WDI_EventInfoType* pEventData
11268)
11269{
11270 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11271 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011272 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011273 wpt_uint16 usDataOffset = 0;
11274 wpt_uint16 usSendSize = 0;
11275 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11277
11278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 -------------------------------------------------------------------------*/
11281 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11282 ( NULL == pEventData->pCBfnc ))
11283 {
11284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011288 }
11289
11290 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11291 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11292 /*-----------------------------------------------------------------------
11293 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011294 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 sizeof(halSwitchChannelReq.switchChannelParams),
11298 &pSendBuffer, &usDataOffset, &usSendSize))||
11299 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11300 {
11301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011302 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011306 }
11307
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011310#ifndef WLAN_FEATURE_VOWIFI
11311 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11313#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11316
11317#ifdef WLAN_FEATURE_VOWIFI
11318 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11321 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11322 WDI_MAC_ADDR_LEN);
11323 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11324 pwdiSwitchChParams->wdiChInfo.macBSSId,
11325 WDI_MAC_ADDR_LEN);
11326#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 wpalMemoryCopy( pSendBuffer+usDataOffset,
11328 &halSwitchChannelReq.switchChannelParams,
11329 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011330
11331 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011333
11334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11338 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011339}/*WDI_ProcessChannelSwitchReq*/
11340
11341/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011344
11345 @param pWDICtx: pointer to the WLAN DAL context
11346 pEventData: pointer to the event information structure
11347
Jeff Johnson295189b2012-06-20 16:38:30 -070011348 @see
11349 @return Result of the function call
11350*/
11351WDI_Status
11352WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011353(
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 WDI_ControlBlockType* pWDICtx,
11355 WDI_EventInfoType* pEventData
11356)
11357{
11358 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11359 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011363 wpt_uint16 usDataOffset = 0;
11364 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011366
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 tConfigStaReqMsg halConfigStaReqMsg;
11368 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11370
11371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 -------------------------------------------------------------------------*/
11374 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11375 ( NULL == pEventData->pCBfnc ))
11376 {
11377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011381 }
11382
11383 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11384 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11385 /*-------------------------------------------------------------------------
11386 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011387 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011388 -------------------------------------------------------------------------*/
11389 wpalMutexAcquire(&pWDICtx->wptMutex);
11390
11391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011392 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11395 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11396 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011397
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11401 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11402 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011403
11404 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 }
11407
11408 /*------------------------------------------------------------------------
11409 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 ------------------------------------------------------------------------*/
11412 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11413 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11415 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11416 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011417
Jeff Johnsone7245742012-09-05 17:12:55 -070011418 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 }
11422
11423 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011424
11425 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11426#ifdef WLAN_FEATURE_11AC
11427 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011428 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 else
11430#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011431 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011432
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 /*-----------------------------------------------------------------------
11434 Get message buffer
11435 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011436 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11437 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011438 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 {
11441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011442 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 }
11447
11448 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 &pwdiConfigSTAParams->wdiReqInfo);
11451
11452 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11453 {
11454 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011455 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 WDI_STATableFindStaidByAddr(pWDICtx,
11457 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 {
11460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011461 MAC_ADDRESS_STR
11462 ": This station does not exist in the WDI Station Table",
11463 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011465 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 }
11468 }
11469 else
11470 {
11471 /* Need to fill in the STA Index to invalid, since at this point we have not
11472 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011473 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 }
11475
11476 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011477 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011478
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 wpalMemoryCopy( pSendBuffer+usDataOffset,
11480 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011481 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011482
11483 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011485
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11487 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 sizeof(pWDICtx->wdiCachedConfigStaReq));
11489
11490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11494 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011495}/*WDI_ProcessConfigStaReq*/
11496
11497
11498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011499 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011500 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011501
11502 @param pWDICtx: pointer to the WLAN DAL context
11503 pEventData: pointer to the event information structure
11504
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 @see
11506 @return Result of the function call
11507*/
11508WDI_Status
11509WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011510(
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 WDI_ControlBlockType* pWDICtx,
11512 WDI_EventInfoType* pEventData
11513)
11514{
11515 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11516 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 wpt_uint16 usDataOffset = 0;
11521 wpt_uint16 usSendSize = 0;
11522 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11525
11526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 -------------------------------------------------------------------------*/
11529 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11530 ( NULL == pEventData->pCBfnc ))
11531 {
11532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 }
11537
11538 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11539 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11540 /*-------------------------------------------------------------------------
11541 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 -------------------------------------------------------------------------*/
11544 wpalMutexAcquire(&pWDICtx->wptMutex);
11545
11546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011547 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11550 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11551 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011552
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011554 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11557 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 }
11559 else
11560 {
11561 /*------------------------------------------------------------------------
11562 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 ------------------------------------------------------------------------*/
11565 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11566 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11568 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11569 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11570
11571 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 }
11575 }
11576 /* If the link is set to enter IDLE - the Session allocated for this BSS
11577 will be deleted on the Set Link State response coming from HAL
11578 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11581
11582 wpalMutexRelease(&pWDICtx->wptMutex);
11583 /*-----------------------------------------------------------------------
11584 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011587
11588 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011589 sizeof(halLinkStateReqMsg),
11590 &pSendBuffer, &usDataOffset, &usSendSize))||
11591 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11592 {
11593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011594 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 }
11599
11600 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11601 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11602
11603 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11604 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11605
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011607 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11608
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 wpalMemoryCopy( pSendBuffer+usDataOffset,
11610 &halLinkStateReqMsg,
11611 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011612
11613 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011615
11616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11620 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011621}/*WDI_ProcessSetLinkStateReq*/
11622
11623
11624/**
11625 @brief Process Get Stats Request function (called when Main FSM
11626 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011627
11628 @param pWDICtx: pointer to the WLAN DAL context
11629 pEventData: pointer to the event information structure
11630
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 @see
11632 @return Result of the function call
11633*/
11634WDI_Status
11635WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011636(
Jeff Johnson295189b2012-06-20 16:38:30 -070011637 WDI_ControlBlockType* pWDICtx,
11638 WDI_EventInfoType* pEventData
11639)
11640{
11641 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11642 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011644 wpt_uint16 usDataOffset = 0;
11645 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 WDI_BSSSessionType* pBSSSes = NULL;
11648 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 tHalStatsReqMsg halStatsReqMsg;
11651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11652
11653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011655 -------------------------------------------------------------------------*/
11656 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11657 ( NULL == pEventData->pCBfnc ) )
11658 {
11659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 }
11664
11665 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11666 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11667
11668 /*-------------------------------------------------------------------------
11669 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011670 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 -------------------------------------------------------------------------*/
11672 wpalMutexAcquire(&pWDICtx->wptMutex);
11673
11674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11678 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 &macBSSID))
11680 {
11681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011682 "This station does not exist in the WDI Station Table %d",
11683 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011686 }
11687
Jeff Johnsone7245742012-09-05 17:12:55 -070011688 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11689 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11692 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11693 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011694
11695 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011697 }
11698
11699 /*------------------------------------------------------------------------
11700 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011702 ------------------------------------------------------------------------*/
11703 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11704 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11706 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11707 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011708
Jeff Johnsone7245742012-09-05 17:12:55 -070011709 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011710 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011711 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011712 }
11713
11714
11715 wpalMutexRelease(&pWDICtx->wptMutex);
11716
11717 /*-----------------------------------------------------------------------
11718 Get message buffer
11719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011721 sizeof(halStatsReqMsg.statsReqParams),
11722 &pSendBuffer, &usDataOffset, &usSendSize))||
11723 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11724 {
11725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011726 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011730 }
11731
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011736 wpalMemoryCopy( pSendBuffer+usDataOffset,
11737 &halStatsReqMsg.statsReqParams,
11738 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011739
11740 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011741 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011742
11743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011744 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011746 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11747 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011748}/*WDI_ProcessGetStatsReq*/
11749
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011750#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11751/**
11752 @brief Process Get Roam Rssi Request function (called when Main FSM
11753 allows it)
11754
11755 @param pWDICtx: pointer to the WLAN DAL context
11756 pEventData: pointer to the event information structure
11757
11758 @see
11759 @return Result of the function call
11760*/
11761WDI_Status
11762WDI_ProcessGetRoamRssiReq
11763(
11764 WDI_ControlBlockType* pWDICtx,
11765 WDI_EventInfoType* pEventData
11766)
11767{
11768 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11769 WDI_GetStatsRspCb wdiGetStatsRspCb;
11770 wpt_uint8* pSendBuffer = NULL;
11771 wpt_uint16 usDataOffset = 0;
11772 wpt_uint16 usSendSize = 0;
11773 wpt_uint8 ucCurrentBSSSesIdx = 0;
11774 WDI_BSSSessionType* pBSSSes = NULL;
11775 wpt_macAddr macBSSID;
11776 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11777 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11779 /*-------------------------------------------------------------------------
11780 Sanity check
11781 -------------------------------------------------------------------------*/
11782 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11783 ( NULL == pEventData->pCBfnc ) )
11784 {
11785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11786 "%s: Invalid parameters", __func__);
11787 WDI_ASSERT(0);
11788 return WDI_STATUS_E_FAILURE;
11789 }
11790
11791 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11792 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11793
11794 /*-------------------------------------------------------------------------
11795 Check to see if we are in the middle of an association, if so queue, if
11796 not it means it is free to process request
11797 -------------------------------------------------------------------------*/
11798 wpalMutexAcquire(&pWDICtx->wptMutex);
11799
11800 /*------------------------------------------------------------------------
11801 Find the BSS for which the request is made
11802 ------------------------------------------------------------------------*/
11803 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11804 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11805 &macBSSID))
11806 {
11807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011808 "This station does not exist in the WDI Station Table %d",
11809 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011810 wpalMutexRelease(&pWDICtx->wptMutex);
11811 return WDI_STATUS_E_FAILURE;
11812 }
11813
11814 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11815 if ( NULL == pBSSSes )
11816 {
11817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11818 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11819 __func__, MAC_ADDR_ARRAY(macBSSID));
11820
11821 wpalMutexRelease(&pWDICtx->wptMutex);
11822 return WDI_STATUS_E_NOT_ALLOWED;
11823 }
11824
11825 /*------------------------------------------------------------------------
11826 Check if this BSS is being currently processed or queued,
11827 if queued - queue the new request as well
11828 ------------------------------------------------------------------------*/
11829 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11830 {
11831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11832 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11833 __func__, MAC_ADDR_ARRAY(macBSSID));
11834
11835 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11836 wpalMutexRelease(&pWDICtx->wptMutex);
11837 return wdiStatus;
11838 }
11839
11840 wpalMutexRelease(&pWDICtx->wptMutex);
11841
11842 /*-----------------------------------------------------------------------
11843 Get message buffer
11844 -----------------------------------------------------------------------*/
11845 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11846 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11847 &pSendBuffer, &usDataOffset, &usSendSize))||
11848 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11849 {
11850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011851 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011852 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11853 WDI_ASSERT(0);
11854 return WDI_STATUS_E_FAILURE;
11855 }
11856
11857 halRssiRoamReqMsg.roamRssiReqParams.staId =
11858 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11859 wpalMemoryCopy( pSendBuffer+usDataOffset,
11860 &halRssiRoamReqMsg.roamRssiReqParams,
11861 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11862
11863 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11864 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11865
11866 /*-------------------------------------------------------------------------
11867 Send Get STA Request to HAL
11868 -------------------------------------------------------------------------*/
11869 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11870 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11871}/*WDI_ProcessGetRoamRssiReq*/
11872#endif
11873
Jeff Johnson295189b2012-06-20 16:38:30 -070011874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011875 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011876 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011877
11878 @param pWDICtx: pointer to the WLAN DAL context
11879 pEventData: pointer to the event information structure
11880
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 @see
11882 @return Result of the function call
11883*/
11884WDI_Status
11885WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011886(
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 WDI_ControlBlockType* pWDICtx,
11888 WDI_EventInfoType* pEventData
11889)
11890{
11891 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11892 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11893
Jeff Johnsone7245742012-09-05 17:12:55 -070011894 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011895 wpt_uint16 usDataOffset = 0;
11896 wpt_uint16 usSendSize = 0;
11897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11898
11899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 -------------------------------------------------------------------------*/
11902 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11903 ( NULL == pEventData->pCBfnc))
11904 {
11905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 }
11910
11911 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11912 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11913
11914 /*-----------------------------------------------------------------------
11915 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 -----------------------------------------------------------------------*/
11918
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11921 &pSendBuffer, &usDataOffset, &usSendSize))||
11922 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11923 {
11924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011925 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 }
11930
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 wpalMemoryCopy( pSendBuffer+usDataOffset,
11932 &pwdiUpdateCfgParams->uConfigBufferLen,
11933 sizeof(wpt_uint32));
11934 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11935 pwdiUpdateCfgParams->pConfigBuffer,
11936 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011937
11938 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011940
11941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 -------------------------------------------------------------------------*/
11944
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11946 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011947
11948}/*WDI_ProcessUpdateCfgReq*/
11949
11950
11951/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011954
11955 @param pWDICtx: pointer to the WLAN DAL context
11956 pEventData: pointer to the event information structure
11957
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 @see
11959 @return Result of the function call
11960*/
11961WDI_Status
11962WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011963(
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 WDI_ControlBlockType* pWDICtx,
11965 WDI_EventInfoType* pEventData
11966)
11967{
11968 WDI_AddBAReqParamsType* pwdiAddBAParams;
11969 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011971 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011972 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 wpt_uint16 usDataOffset = 0;
11974 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 wpt_macAddr macBSSID;
11977
11978 tAddBAReqMsg halAddBAReq;
11979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11980
11981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011983 -------------------------------------------------------------------------*/
11984 if (( NULL == pEventData ) ||
11985 ( NULL == pEventData->pEventData) ||
11986 ( NULL == pEventData->pCBfnc ))
11987 {
11988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 }
11993
11994 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11995 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11996
11997 /*-------------------------------------------------------------------------
11998 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 -------------------------------------------------------------------------*/
12001 wpalMutexAcquire(&pWDICtx->wptMutex);
12002
12003 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12007 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 &macBSSID))
12009 {
12010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012011 "This station does not exist in the WDI Station Table %d",
12012 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 }
12016
Jeff Johnsone7245742012-09-05 17:12:55 -070012017 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12018 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12021 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12022 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012023
12024 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012026 }
12027
12028 /*------------------------------------------------------------------------
12029 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012030 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 ------------------------------------------------------------------------*/
12032 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12033 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12035 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12036 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012037
Jeff Johnsone7245742012-09-05 17:12:55 -070012038 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 }
12042
12043
12044 wpalMutexRelease(&pWDICtx->wptMutex);
12045 /*-----------------------------------------------------------------------
12046 Get message buffer
12047 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 sizeof(halAddBAReq.addBAParams),
12050 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012051 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12053 {
12054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012055 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 }
12060
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12063 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12064#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12067#endif
12068
Jeff Johnsone7245742012-09-05 17:12:55 -070012069 wpalMemoryCopy( pSendBuffer+usDataOffset,
12070 &halAddBAReq.addBAParams,
12071 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012072
12073 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012075
12076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012077 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12080 wdiAddBARspCb, pEventData->pUserData,
12081 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012082}/*WDI_ProcessAddBAReq*/
12083
12084
12085
12086/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012089
12090 @param pWDICtx: pointer to the WLAN DAL context
12091 pEventData: pointer to the event information structure
12092
Jeff Johnson295189b2012-06-20 16:38:30 -070012093 @see
12094 @return Result of the function call
12095*/
12096WDI_Status
12097WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012098(
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 WDI_ControlBlockType* pWDICtx,
12100 WDI_EventInfoType* pEventData
12101)
12102{
12103 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12104 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012107 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 wpt_uint16 usDataOffset = 0;
12109 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 wpt_uint16 index;
12112 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012113
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 tTriggerBAReqMsg halTriggerBAReq;
12115 tTriggerBaReqCandidate* halTriggerBACandidate;
12116 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12118
12119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012121 -------------------------------------------------------------------------*/
12122 if (( NULL == pEventData ) ||
12123 ( NULL == pEventData->pEventData ) ||
12124 ( NULL == pEventData->pCBfnc ))
12125 {
12126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 }
12131
12132 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12133 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12134 /*-------------------------------------------------------------------------
12135 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 -------------------------------------------------------------------------*/
12138 wpalMutexAcquire(&pWDICtx->wptMutex);
12139
12140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012141 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12144 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 &macBSSID))
12146 {
12147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012148 "This station does not exist in the WDI Station Table %d",
12149 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 }
12153
Jeff Johnsone7245742012-09-05 17:12:55 -070012154 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12155 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12158 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12159 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012160
12161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012163 }
12164
12165 /*------------------------------------------------------------------------
12166 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012167 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012168 ------------------------------------------------------------------------*/
12169 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12170 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12172 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012174
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012177 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012178 }
12179
12180
12181 wpalMutexRelease(&pWDICtx->wptMutex);
12182 /*-----------------------------------------------------------------------
12183 Get message buffer
12184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12186 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012188 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12190 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12195 {
12196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012197 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 }
12202
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12207
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 wpalMemoryCopy( pSendBuffer+usDataOffset,
12209 &halTriggerBAReq.triggerBAParams,
12210 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012211
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12214 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12215 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012216
12217 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 index++)
12219 {
12220 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12221 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12222 halTriggerBACandidate++;
12223 wdiTriggerBACandidate++;
12224 }
12225
12226 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012227 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012228
12229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012232 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12233 wdiTriggerBARspCb, pEventData->pUserData,
12234 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012235}/*WDI_ProcessTriggerBAReq*/
12236
12237
12238
12239/**
12240 @brief Process Update Beacon Params Request function (called when Main FSM
12241 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012242
12243 @param pWDICtx: pointer to the WLAN DAL context
12244 pEventData: pointer to the event information structure
12245
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 @see
12247 @return Result of the function call
12248*/
12249WDI_Status
12250WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012251(
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 WDI_ControlBlockType* pWDICtx,
12253 WDI_EventInfoType* pEventData
12254)
12255{
12256 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12257 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 wpt_uint16 usDataOffset = 0;
12260 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012261 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12263
12264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 -------------------------------------------------------------------------*/
12267 if (( NULL == pEventData ) ||
12268 ( NULL == pEventData->pEventData) ||
12269 ( NULL == pEventData->pCBfnc))
12270 {
12271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012272 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 }
12276
12277 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12278 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12279 /*-----------------------------------------------------------------------
12280 Get message buffer
12281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 sizeof(halUpdateBeaconParams),
12284 &pSendBuffer, &usDataOffset, &usSendSize))||
12285 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12286 {
12287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012288 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 }
12293
12294 /*BSS Index of the BSS*/
12295 halUpdateBeaconParams.bssIdx =
12296 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12297 /*shortPreamble mode. HAL should update all the STA rates when it
12298 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012299 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012300 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12301 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012302 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12304 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12307
12308 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012309 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012315 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12321 halUpdateBeaconParams.fRIFSMode =
12322 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12325
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12327 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012328
12329 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012331
12332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12336 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012337}/*WDI_ProcessUpdateBeaconParamsReq*/
12338
12339
12340
12341/**
12342 @brief Process Send Beacon template Request function (called when Main FSM
12343 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012344
12345 @param pWDICtx: pointer to the WLAN DAL context
12346 pEventData: pointer to the event information structure
12347
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 @see
12349 @return Result of the function call
12350*/
12351WDI_Status
12352WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012353(
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 WDI_ControlBlockType* pWDICtx,
12355 WDI_EventInfoType* pEventData
12356)
12357{
12358 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12359 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012360 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 wpt_uint16 usDataOffset = 0;
12362 wpt_uint16 usSendSize = 0;
12363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12364
12365 tSendBeaconReqMsg halSendBeaconReq;
12366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 -------------------------------------------------------------------------*/
12369 if (( NULL == pEventData ) ||
12370 ( NULL == pEventData->pEventData ) ||
12371 ( NULL == pEventData->pCBfnc ))
12372 {
12373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 }
12378
12379 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12380 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12381 /*-----------------------------------------------------------------------
12382 Get message buffer
12383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 sizeof(halSendBeaconReq.sendBeaconParam),
12386 &pSendBuffer, &usDataOffset, &usSendSize))||
12387 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12388 {
12389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012390 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 }
12395
12396 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12397 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12398 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12401 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12402 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12403 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012406 /* usP2PIeOffset should be atleast greater than timIeOffset */
12407 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12408 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12409 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12410 {
12411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12412 "Invalid usP2PIeOffset %hu",
12413 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12414 WDI_ASSERT(0);
12415 return WDI_STATUS_E_FAILURE;
12416 }
12417
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012420
Jeff Johnsone7245742012-09-05 17:12:55 -070012421 wpalMemoryCopy( pSendBuffer+usDataOffset,
12422 &halSendBeaconReq.sendBeaconParam,
12423 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012424
12425 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012427
12428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12432 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012433}/*WDI_ProcessSendBeaconParamsReq*/
12434
12435/**
12436 @brief Process Update Beacon Params Request function (called when Main FSM
12437 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012438
12439 @param pWDICtx: pointer to the WLAN DAL context
12440 pEventData: pointer to the event information structure
12441
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 @see
12443 @return Result of the function call
12444*/
12445WDI_Status
12446WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012447(
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 WDI_ControlBlockType* pWDICtx,
12449 WDI_EventInfoType* pEventData
12450)
12451{
12452 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12453 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 wpt_uint16 usDataOffset = 0;
12456 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12459
12460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012461 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 -------------------------------------------------------------------------*/
12463 if (( NULL == pEventData ) ||
12464 ( NULL == pEventData->pEventData) ||
12465 ( NULL == pEventData->pCBfnc))
12466 {
12467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 }
12472
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012474 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012475 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12477 /*-----------------------------------------------------------------------
12478 Get message buffer
12479 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 sizeof(halUpdateProbeRspTmplParams),
12482 &pSendBuffer, &usDataOffset, &usSendSize))||
12483 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12484 {
12485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012486 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012487 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 }
12491
12492 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 WDI_MAC_ADDR_LEN);
12495
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012497 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12498
12499 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12500 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012502
12503
12504 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12505 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12506 WDI_PROBE_REQ_BITMAP_IE_LEN);
12507
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 wpalMemoryCopy( pSendBuffer+usDataOffset,
12509 &halUpdateProbeRspTmplParams,
12510 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012511
12512 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012514
12515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12519 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12520 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012521}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12522
12523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012526
12527 @param pWDICtx: pointer to the WLAN DAL context
12528 pEventData: pointer to the event information structure
12529
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 @see
12531 @return Result of the function call
12532*/
12533WDI_Status
12534WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012535(
Jeff Johnson295189b2012-06-20 16:38:30 -070012536 WDI_ControlBlockType* pWDICtx,
12537 WDI_EventInfoType* pEventData
12538)
12539{
12540
12541 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12542 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12543
12544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 -------------------------------------------------------------------------*/
12547 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12552 {
12553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 }
12558
12559 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12562
12563 /*cache the wdi nv request message here if the the first fragment
12564 * To issue the request to HAL for the next fragment */
12565 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12566 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12568 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12570
12571 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12572 pWDICtx->pRspCBUserData = pEventData->pUserData;
12573 }
12574
12575 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12576}
12577
12578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012579 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012581
12582 @param pWDICtx: pointer to the WLAN DAL context
12583 pEventData: pointer to the event information structure
12584
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 @see
12586 @return Result of the function call
12587*/
12588WDI_Status WDI_ProcessSetMaxTxPowerReq
12589(
12590 WDI_ControlBlockType* pWDICtx,
12591 WDI_EventInfoType* pEventData
12592)
12593{
12594 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12595 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 wpt_uint16 usDataOffset = 0;
12598 wpt_uint16 usSendSize = 0;
12599 tSetMaxTxPwrReq halSetMaxTxPower;
12600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12601
12602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 -------------------------------------------------------------------------*/
12605 if (( NULL == pEventData ) ||
12606 ( NULL == pEventData->pEventData ) ||
12607 ( NULL == pEventData->pCBfnc ))
12608 {
12609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012614 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012615 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12618
12619 /*-----------------------------------------------------------------------
12620 Get message buffer
12621 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012622if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12624 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012626)))
12627 {
12628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012629 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 }
12634
12635 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12636 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12637 WDI_MAC_ADDR_LEN);
12638
12639 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12640 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12641 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012642 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012643 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012644
12645 wpalMemoryCopy( pSendBuffer+usDataOffset,
12646 &halSetMaxTxPower.setMaxTxPwrParams,
12647 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012648
12649 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012651
12652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12656 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12657 WDI_SET_MAX_TX_POWER_RESP);
12658
Jeff Johnson295189b2012-06-20 16:38:30 -070012659}
12660
Arif Hussaina5ebce02013-08-09 15:09:58 -070012661/*
12662 @brief Process Set Max Tx Power Per Band Request function (called when Main
12663 FSM allows it)
12664
12665 @param pWDICtx: pointer to the WLAN DAL context
12666 pEventData: pointer to the event information structure
12667
12668 @see
12669 @return Result of the function call
12670*/
12671WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12672(
12673 WDI_ControlBlockType* pWDICtx,
12674 WDI_EventInfoType* pEventData
12675)
12676{
12677 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12678 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12679 wpt_uint8* pSendBuffer = NULL;
12680 wpt_uint16 usDataOffset = 0;
12681 wpt_uint16 usSendSize = 0;
12682 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12683 WDI_Status rValue = WDI_STATUS_SUCCESS;
12684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12685
12686 /*-------------------------------------------------------------------------
12687 Sanity check
12688 -------------------------------------------------------------------------*/
12689 if (( NULL == pEventData ) ||
12690 ( NULL == pEventData->pEventData ) ||
12691 ( NULL == pEventData->pCBfnc ))
12692 {
12693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12694 "%s: Invalid parameters", __func__);
12695 WDI_ASSERT(0);
12696 return WDI_STATUS_E_FAILURE;
12697 }
12698 pwdiSetMaxTxPowerPerBandParams = \
12699 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12700
12701 wdiSetMaxTxPowerPerBandRspCb = \
12702 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12703
12704 /*-----------------------------------------------------------------------
12705 Get message buffer
12706 -----------------------------------------------------------------------*/
12707
12708 rValue = WDI_GetMessageBuffer(pWDICtx,
12709 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12710 sizeof(tSetMaxTxPwrPerBandParams),
12711 &pSendBuffer, &usDataOffset, &usSendSize);
12712
12713 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12714 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12715 {
12716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12717 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12718 pEventData, pwdiSetMaxTxPowerPerBandParams,
12719 wdiSetMaxTxPowerPerBandRspCb);
12720 WDI_ASSERT(0);
12721 return WDI_STATUS_E_FAILURE;
12722 }
12723
12724
12725 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12726 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12727 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12728
12729 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12730 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12731
12732 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12733 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12734
12735 /*-------------------------------------------------------------------------
12736 Send Set Max Tx Power Per Band Request to HAL
12737 -------------------------------------------------------------------------*/
12738 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12739 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12740 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12741}
12742
schang86c22c42013-03-13 18:41:24 -070012743/**
12744 @brief Process Set Tx Power Request function (called when Main
12745 FSM allows it)
12746
12747 @param pWDICtx: pointer to the WLAN DAL context
12748 pEventData: pointer to the event information structure
12749
12750 @see
12751 @return Result of the function call
12752*/
12753WDI_Status WDI_ProcessSetTxPowerReq
12754(
12755 WDI_ControlBlockType* pWDICtx,
12756 WDI_EventInfoType* pEventData
12757)
12758{
12759 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12760 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12761 wpt_uint8* pSendBuffer = NULL;
12762 wpt_uint16 usDataOffset = 0;
12763 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070012764 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070012765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12766
12767 /*-------------------------------------------------------------------------
12768 Sanity check
12769 -------------------------------------------------------------------------*/
12770 if (( NULL == pEventData ) ||
12771 ( NULL == pEventData->pEventData ) ||
12772 ( NULL == pEventData->pCBfnc ))
12773 {
12774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12775 "%s: Invalid parameters", __func__);
12776 WDI_ASSERT(0);
12777 return WDI_STATUS_E_FAILURE;
12778 }
12779
12780 pwdiSetTxPowerParams =
12781 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12782 wdiSetTxPowerRspCb =
12783 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12784
12785 /*-----------------------------------------------------------------------
12786 Get message buffer
12787 -----------------------------------------------------------------------*/
12788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12789 sizeof(tSetTxPwrReqParams),
12790 &pSendBuffer, &usDataOffset, &usSendSize))||
12791 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12792 )))
12793 {
12794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012795 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070012796 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12797 WDI_ASSERT(0);
12798 return WDI_STATUS_E_FAILURE;
12799 }
12800
Leo Chang9a43db92013-03-25 17:39:58 -070012801 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12802 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12803 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070012804
12805 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12806 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12807
12808 /*-------------------------------------------------------------------------
12809 Send Set Tx Power Request to HAL
12810 -------------------------------------------------------------------------*/
12811 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12812 wdiSetTxPowerRspCb, pEventData->pUserData,
12813 WDI_SET_TX_POWER_RESP);
12814}
Jeff Johnson295189b2012-06-20 16:38:30 -070012815
12816/**
12817 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12818 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012819
12820 @param pWDICtx: pointer to the WLAN DAL context
12821 pEventData: pointer to the event information structure
12822
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 @see
12824 @return Result of the function call
12825*/
12826WDI_Status
12827WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012828(
Jeff Johnson295189b2012-06-20 16:38:30 -070012829 WDI_ControlBlockType* pWDICtx,
12830 WDI_EventInfoType* pEventData
12831)
12832{
12833 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12834 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012836 wpt_uint16 usDataOffset = 0;
12837 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012838 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12840
12841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 -------------------------------------------------------------------------*/
12844 if (( NULL == pEventData ) ||
12845 ( NULL == pEventData->pEventData) ||
12846 ( NULL == pEventData->pCBfnc))
12847 {
12848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 }
12853
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12858 /*-----------------------------------------------------------------------
12859 Get message buffer
12860 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12862 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 sizeof(halSetP2PGONOAParams),
12864 &pSendBuffer, &usDataOffset, &usSendSize))||
12865 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12866 {
12867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012868 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 }
12873
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12878 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012879 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12887
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 wpalMemoryCopy( pSendBuffer+usDataOffset,
12889 &halSetP2PGONOAParams,
12890 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012891
12892 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012894
12895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012896 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12899 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12900 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012901}/*WDI_ProcessP2PGONOAReq*/
12902
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012903#ifdef FEATURE_WLAN_TDLS
12904
12905/**
12906 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12907 allows it)
12908
12909 @param pWDICtx: pointer to the WLAN DAL context
12910 pEventData: pointer to the event information structure
12911
12912 @see
12913 @return Result of the function call
12914*/
12915WDI_Status
12916WDI_ProcessTdlsLinkEstablishReq
12917(
12918 WDI_ControlBlockType* pWDICtx,
12919 WDI_EventInfoType* pEventData
12920)
12921{
12922 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12923 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12924 wpt_uint8* pSendBuffer = NULL;
12925 wpt_uint16 usDataOffset = 0;
12926 wpt_uint16 usSendSize = 0;
12927
12928 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12930
12931 /*-------------------------------------------------------------------------
12932 Sanity check
12933 -------------------------------------------------------------------------*/
12934 if (( NULL == pEventData ) ||
12935 ( NULL == pEventData->pEventData) ||
12936 ( NULL == pEventData->pCBfnc))
12937 {
12938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12939 "%s: Invalid parameters", __func__);
12940 WDI_ASSERT(0);
12941 return WDI_STATUS_E_FAILURE;
12942 }
12943 pwdiTDLSLinkEstablishReqParams =
12944 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12945 wdiTDLSLinkEstablishReqRspCb =
12946 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12947
12948
12949 /*-----------------------------------------------------------------------
12950 Get message buffer
12951 -----------------------------------------------------------------------*/
12952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12953 WDI_TDLS_LINK_ESTABLISH_REQ,
12954 sizeof(halSetTDLSLinkEstablishParams),
12955 &pSendBuffer, &usDataOffset, &usSendSize))||
12956 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12957 {
12958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012959 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012960 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12961 WDI_ASSERT(0);
12962 return WDI_STATUS_E_FAILURE;
12963 }
12964
12965 halSetTDLSLinkEstablishParams.staIdx =
12966 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12967 halSetTDLSLinkEstablishParams.bIsResponder =
12968 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12969 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12970 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12971 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12972 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12973 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12974 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12975 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12976 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12977 halSetTDLSLinkEstablishParams.aAck = 0;
12978 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12979 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12980 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053012981 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
12982 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
12983
12984 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
12985 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
12986 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
12987 halSetTDLSLinkEstablishParams.validChannelsLen =
12988 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
12989
12990 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
12991 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
12992 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
12993 halSetTDLSLinkEstablishParams.validOperClassesLen =
12994 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012995
12996 wpalMemoryCopy( pSendBuffer+usDataOffset,
12997 &halSetTDLSLinkEstablishParams,
12998 sizeof(halSetTDLSLinkEstablishParams));
12999
13000 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13001 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13002
13003 /*-------------------------------------------------------------------------
13004 Send Update Probe Resp Template Request to HAL
13005 -------------------------------------------------------------------------*/
13006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13007 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13008 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13009 return 0;
13010}/*WDI_ProcessTdlsLinkEstablishReq*/
13011
13012
13013#endif
13014
Jeff Johnson295189b2012-06-20 16:38:30 -070013015
13016
13017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 @param None
13021
13022 @see
13023 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013024*/
13025void
13026WDI_SetPowerStateCb
13027(
13028 wpt_status status,
13029 unsigned int dxePhyAddr,
13030 void *pContext
13031)
13032{
13033 wpt_status wptStatus;
13034 WDI_ControlBlockType *pCB = NULL;
13035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13036 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13037 {
13038 //it shouldn't happen, put an error msg
13039 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013040 /*
13041 * Trigger the event to bring the Enter BMPS req function to come
13042 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013043*/
13044 if( NULL != pContext )
13045 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 }
13048 else
13049 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 pCB = &gWDICb;
13052 }
13053 pCB->dxePhyAddr = dxePhyAddr;
13054 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13055 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13056 {
13057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13058 "Failed to set an event");
13059
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 }
13062 return;
13063}
13064
13065
13066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013069
13070 @param pWDICtx: pointer to the WLAN DAL context
13071 pEventData: pointer to the event information structure
13072
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 @see
13074 @return Result of the function call
13075*/
13076WDI_Status
13077WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013078(
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 WDI_ControlBlockType* pWDICtx,
13080 WDI_EventInfoType* pEventData
13081)
13082{
Jeff Johnson43971f52012-07-17 12:26:56 -070013083 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 wpt_uint16 usDataOffset = 0;
13087 wpt_uint16 usSendSize = 0;
13088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13089
13090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 -------------------------------------------------------------------------*/
13093 if (( NULL == pEventData ) ||
13094 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
13095 {
13096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013099 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 }
13101
13102 /*-----------------------------------------------------------------------
13103 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 0,
13108 &pSendBuffer, &usDataOffset, &usSendSize))||
13109 ( usSendSize < (usDataOffset )))
13110 {
13111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013112 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 pEventData, wdiEnterImpsRspCb);
13114 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013115 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 }
13117
13118 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013119 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13120 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013121 {
13122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13123 "WDI Init failed to reset an event");
13124
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013126 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 }
13128
13129 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013130 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13131 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013133 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013134 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013135 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013136 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013137
13138 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013141 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13142 WDI_SET_POWER_STATE_TIMEOUT);
13143 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 {
13145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13146 "WDI Init failed to wait on an event");
13147
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013149 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 }
13151
13152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13156 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013157
13158fail:
13159 // Release the message buffer so we don't leak
13160 wpalMemoryFree(pSendBuffer);
13161
13162failRequest:
13163 //WDA should have failure check to avoid the memory leak
13164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013165}/*WDI_ProcessEnterImpsReq*/
13166
13167/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013170
13171 @param pWDICtx: pointer to the WLAN DAL context
13172 pEventData: pointer to the event information structure
13173
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 @see
13175 @return Result of the function call
13176*/
13177WDI_Status
13178WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013179(
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 WDI_ControlBlockType* pWDICtx,
13181 WDI_EventInfoType* pEventData
13182)
13183{
13184 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 wpt_uint16 usDataOffset = 0;
13187 wpt_uint16 usSendSize = 0;
13188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13189
13190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 -------------------------------------------------------------------------*/
13193 if (( NULL == pEventData ) ||
13194 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13195 {
13196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 }
13201
13202 /*-----------------------------------------------------------------------
13203 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 0,
13208 &pSendBuffer, &usDataOffset, &usSendSize))||
13209 ( usSendSize < (usDataOffset )))
13210 {
13211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013212 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 pEventData, wdiExitImpsRspCb);
13214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 }
13217
13218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13222 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013223}/*WDI_ProcessExitImpsReq*/
13224
13225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013228
13229 @param pWDICtx: pointer to the WLAN DAL context
13230 pEventData: pointer to the event information structure
13231
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 @see
13233 @return Result of the function call
13234*/
13235WDI_Status
13236WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013237(
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 WDI_ControlBlockType* pWDICtx,
13239 WDI_EventInfoType* pEventData
13240)
13241{
13242 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13243 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 wpt_uint16 usDataOffset = 0;
13246 wpt_uint16 usSendSize = 0;
13247 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013248 wpt_status wptStatus;
13249
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13251
13252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 -------------------------------------------------------------------------*/
13255 if (( NULL == pEventData ) ||
13256 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13257 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13258 {
13259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013262 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 }
13264
13265 /*-----------------------------------------------------------------------
13266 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 sizeof(enterBmpsReq),
13271 &pSendBuffer, &usDataOffset, &usSendSize))||
13272 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13273 {
13274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013275 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013276 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13277 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013278 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 }
13280
13281 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013282 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13283 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 {
13285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13286 "WDI Init failed to reset an event");
13287
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013289 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 }
13291
13292 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013293 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13294 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13295 {
13296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013297 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013298 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013299 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013300 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013301
13302/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013304 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013305 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13306 WDI_SET_POWER_STATE_TIMEOUT);
13307 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 {
13309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13310 "WDI Init failed to wait on an event");
13311
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013313 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 }
13315
13316 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13317
13318 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13319 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13320 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13321 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13322
13323 // For CCX and 11R Roaming
13324 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13325 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13326 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13327
13328 wpalMemoryCopy( pSendBuffer+usDataOffset,
13329 &enterBmpsReq,
13330 sizeof(enterBmpsReq));
13331
13332 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334
13335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13339 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013340
13341fail:
13342 // Release the message buffer so we don't leak
13343 wpalMemoryFree(pSendBuffer);
13344
13345failRequest:
13346 //WDA should have failure check to avoid the memory leak
13347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013348}/*WDI_ProcessEnterBmpsReq*/
13349
13350/**
13351 @brief Process Exit BMPS Request function (called when Main FSM
13352 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013353
13354 @param pWDICtx: pointer to the WLAN DAL context
13355 pEventData: pointer to the event information structure
13356
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 @see
13358 @return Result of the function call
13359*/
13360WDI_Status
13361WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013362(
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 WDI_ControlBlockType* pWDICtx,
13364 WDI_EventInfoType* pEventData
13365)
13366{
13367 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13368 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 wpt_uint16 usDataOffset = 0;
13371 wpt_uint16 usSendSize = 0;
13372 tHalExitBmpsReqParams exitBmpsReq;
13373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13374
13375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 -------------------------------------------------------------------------*/
13378 if (( NULL == pEventData ) ||
13379 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13380 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13381 {
13382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 }
13387
13388 /*-----------------------------------------------------------------------
13389 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 sizeof(exitBmpsReq),
13394 &pSendBuffer, &usDataOffset, &usSendSize))||
13395 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13396 {
13397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013398 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 }
13403 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13404
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13406
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 wpalMemoryCopy( pSendBuffer+usDataOffset,
13408 &exitBmpsReq,
13409 sizeof(exitBmpsReq));
13410
13411 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013413
13414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13418 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013419}/*WDI_ProcessExitBmpsReq*/
13420
13421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013424
13425 @param pWDICtx: pointer to the WLAN DAL context
13426 pEventData: pointer to the event information structure
13427
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 @see
13429 @return Result of the function call
13430*/
13431WDI_Status
13432WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013433(
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 WDI_ControlBlockType* pWDICtx,
13435 WDI_EventInfoType* pEventData
13436)
13437{
13438 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13439 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 wpt_uint16 usDataOffset = 0;
13442 wpt_uint16 usSendSize = 0;
13443 tUapsdReqParams enterUapsdReq;
13444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13445
13446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 -------------------------------------------------------------------------*/
13449 if (( NULL == pEventData ) ||
13450 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13451 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13452 {
13453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 }
13458
13459 /*-----------------------------------------------------------------------
13460 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013461 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 sizeof(enterUapsdReq),
13465 &pSendBuffer, &usDataOffset, &usSendSize))||
13466 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13467 {
13468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013469 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 }
13474
13475 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13476 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13477 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13478 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13479 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13480 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13481 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13482 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 wpalMemoryCopy( pSendBuffer+usDataOffset,
13486 &enterUapsdReq,
13487 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013488
13489 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013491
13492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13496 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013497}/*WDI_ProcessEnterUapsdReq*/
13498
13499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013502
13503 @param pWDICtx: pointer to the WLAN DAL context
13504 pEventData: pointer to the event information structure
13505
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 @see
13507 @return Result of the function call
13508*/
13509WDI_Status
13510WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013511(
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 WDI_ControlBlockType* pWDICtx,
13513 WDI_EventInfoType* pEventData
13514)
13515{
13516 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 wpt_uint16 usDataOffset = 0;
13519 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013520 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13521 wpt_uint8 bssIdx = 0;
13522
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13524
13525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 -------------------------------------------------------------------------*/
13528 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013529 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13531 {
13532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 }
13537
13538 /*-----------------------------------------------------------------------
13539 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013543 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013545 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 {
13547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013548 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 pEventData, wdiExitUapsdRspCb);
13550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 }
13553
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013554 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13555
13556 wpalMemoryCopy( pSendBuffer+usDataOffset,
13557 &bssIdx,
13558 sizeof(wpt_uint8));
13559
13560 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13561 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13562
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13567 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013568}/*WDI_ProcessExitUapsdReq*/
13569
13570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013573
13574 @param pWDICtx: pointer to the WLAN DAL context
13575 pEventData: pointer to the event information structure
13576
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 @see
13578 @return Result of the function call
13579*/
13580WDI_Status
13581WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013582(
Jeff Johnson295189b2012-06-20 16:38:30 -070013583 WDI_ControlBlockType* pWDICtx,
13584 WDI_EventInfoType* pEventData
13585)
13586{
13587 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13588 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 wpt_uint16 usDataOffset = 0;
13591 wpt_uint16 usSendSize = 0;
13592 tUapsdInfo uapsdAcParamsReq;
13593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13594
13595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 -------------------------------------------------------------------------*/
13598 if (( NULL == pEventData ) ||
13599 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13600 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13601 {
13602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 }
13607
13608 /*-----------------------------------------------------------------------
13609 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013610 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 sizeof(uapsdAcParamsReq),
13614 &pSendBuffer, &usDataOffset, &usSendSize))||
13615 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13616 {
13617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013618 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 }
13623
13624 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13625 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13626 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13627 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13628 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13629 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13630
Jeff Johnsone7245742012-09-05 17:12:55 -070013631 wpalMemoryCopy( pSendBuffer+usDataOffset,
13632 &uapsdAcParamsReq,
13633 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013634
13635 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013636 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013637
13638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13642 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013643}/*WDI_ProcessSetUapsdAcParamsReq*/
13644
13645/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013648
13649 @param pWDICtx: pointer to the WLAN DAL context
13650 pEventData: pointer to the event information structure
13651
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 @see
13653 @return Result of the function call
13654*/
13655WDI_Status
13656WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013657(
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 WDI_ControlBlockType* pWDICtx,
13659 WDI_EventInfoType* pEventData
13660)
13661{
13662 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13663 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 wpt_uint16 usDataOffset = 0;
13666 wpt_uint16 usSendSize = 0;
13667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13668
13669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 -------------------------------------------------------------------------*/
13672 if (( NULL == pEventData ) ||
13673 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13674 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13675 {
13676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013680 }
13681
13682 /*-----------------------------------------------------------------------
13683 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13688 &pSendBuffer, &usDataOffset, &usSendSize))||
13689 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13690 {
13691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013692 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013693 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 }
13697
Jeff Johnsone7245742012-09-05 17:12:55 -070013698 wpalMemoryCopy( pSendBuffer+usDataOffset,
13699 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13700 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013701
13702 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013704
13705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13709 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013710}/*WDI_ProcessUpdateUapsdParamsReq*/
13711
13712/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013715
13716 @param pWDICtx: pointer to the WLAN DAL context
13717 pEventData: pointer to the event information structure
13718
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 @see
13720 @return Result of the function call
13721*/
13722WDI_Status
13723WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013724(
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 WDI_ControlBlockType* pWDICtx,
13726 WDI_EventInfoType* pEventData
13727)
13728{
13729 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13730 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 wpt_uint16 usDataOffset = 0;
13733 wpt_uint16 usSendSize = 0;
13734 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13735
13736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13737
13738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 -------------------------------------------------------------------------*/
13741 if (( NULL == pEventData ) ||
13742 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13743 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13744 {
13745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 }
13750
13751 /*-----------------------------------------------------------------------
13752 Get message buffer
13753 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013755 sizeof(halRxpFilterParams),
13756 &pSendBuffer, &usDataOffset, &usSendSize))||
13757 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13758 {
13759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013760 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 }
13765
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13770
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 wpalMemoryCopy( pSendBuffer+usDataOffset,
13772 &halRxpFilterParams,
13773 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013774
13775 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013777
13778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13782 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013783}/*WDI_ProcessConfigureRxpFilterReq*/
13784
13785/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013788
13789 @param pWDICtx: pointer to the WLAN DAL context
13790 pEventData: pointer to the event information structure
13791
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 @see
13793 @return Result of the function call
13794*/
13795WDI_Status
13796WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013797(
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 WDI_ControlBlockType* pWDICtx,
13799 WDI_EventInfoType* pEventData
13800)
13801{
13802 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13803 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 wpt_uint16 usDataOffset = 0;
13806 wpt_uint16 usSendSize = 0;
13807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13808
13809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 -------------------------------------------------------------------------*/
13812 if (( NULL == pEventData ) ||
13813 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13814 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13815 {
13816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 }
13821
13822 /*-----------------------------------------------------------------------
13823 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13828 &pSendBuffer, &usDataOffset, &usSendSize))||
13829 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13830 {
13831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013832 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 }
13837
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 wpalMemoryCopy( pSendBuffer+usDataOffset,
13839 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13840 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13841 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13842 &pwdiBeaconFilterParams->aFilters[0],
13843 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013844
13845 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013846 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013847
13848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13852 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013853}/*WDI_ProcessSetBeaconFilterReq*/
13854
13855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013858
13859 @param pWDICtx: pointer to the WLAN DAL context
13860 pEventData: pointer to the event information structure
13861
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 @see
13863 @return Result of the function call
13864*/
13865WDI_Status
13866WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013867(
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 WDI_ControlBlockType* pWDICtx,
13869 WDI_EventInfoType* pEventData
13870)
13871{
13872 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13873 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 wpt_uint16 usDataOffset = 0;
13876 wpt_uint16 usSendSize = 0;
13877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13878
13879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 -------------------------------------------------------------------------*/
13882 if (( NULL == pEventData ) ||
13883 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13884 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13885 {
13886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 }
13891
13892 /*-----------------------------------------------------------------------
13893 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013894 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013895 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13898 &pSendBuffer, &usDataOffset, &usSendSize))||
13899 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13900 {
13901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013902 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 }
13907
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 wpalMemoryCopy( pSendBuffer+usDataOffset,
13909 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13910 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013911
13912 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013914
13915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013916 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13919 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013920}
13921
13922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013925
13926 @param pWDICtx: pointer to the WLAN DAL context
13927 pEventData: pointer to the event information structure
13928
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 @see
13930 @return Result of the function call
13931*/
13932WDI_Status
13933WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013934(
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 WDI_ControlBlockType* pWDICtx,
13936 WDI_EventInfoType* pEventData
13937)
13938{
13939 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13940 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 wpt_uint16 usDataOffset = 0;
13943 wpt_uint16 usSendSize = 0;
13944 tHalRSSIThresholds rssiThresholdsReq;
13945 WDI_Status ret_status = 0;
13946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13947
13948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 -------------------------------------------------------------------------*/
13951 if (( NULL == pEventData ) ||
13952 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13953 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13954 {
13955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 }
13960
13961 /*-----------------------------------------------------------------------
13962 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 sizeof(rssiThresholdsReq),
13967 &pSendBuffer, &usDataOffset, &usSendSize))||
13968 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13969 {
13970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013971 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 }
13976
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13997
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 wpalMemoryCopy( pSendBuffer+usDataOffset,
13999 &rssiThresholdsReq,
14000 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014001
14002 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014004
14005 /*-------------------------------------------------------------------------
14006 Send Set threshold req to HAL
14007 -------------------------------------------------------------------------*/
14008 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14009 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14010 {
14011 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14012 // req. Then as a result of processing the threshold cross ind, we trigger
14013 // a Set threshold req, then we need to indicate to WDI that it needs to
14014 // go to busy state as a result of the indication as we sent a req in the
14015 // same WDI context.
14016 // Hence expected state transition is to busy.
14017 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14018 }
14019
14020 return ret_status;
14021}
14022
14023/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014026
14027 @param pWDICtx: pointer to the WLAN DAL context
14028 pEventData: pointer to the event information structure
14029
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 @see
14031 @return Result of the function call
14032*/
14033WDI_Status
14034WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014035(
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 WDI_ControlBlockType* pWDICtx,
14037 WDI_EventInfoType* pEventData
14038)
14039{
14040 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14041 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 wpt_uint16 usDataOffset = 0;
14044 wpt_uint16 usSendSize = 0;
14045 tHalHostOffloadReq hostOffloadParams;
14046 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014047 wpt_uint8 ucCurrentBSSSesIdx = 0;
14048 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014049
14050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14051
14052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 -------------------------------------------------------------------------*/
14055 if (( NULL == pEventData ) ||
14056 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14057 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14058 {
14059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014062 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 }
14064
14065 /*-----------------------------------------------------------------------
14066 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14071 &pSendBuffer, &usDataOffset, &usSendSize))||
14072 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14073 {
14074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014075 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014076 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14077 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014078 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 }
14080
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014081 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14082 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14083 &pBSSSes);
14084 if ( NULL == pBSSSes )
14085 {
14086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014087 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14088 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014089 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014090 }
14091
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14093 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014094
Jeff Johnson295189b2012-06-20 16:38:30 -070014095 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14096 {
14097 // ARP Offload
14098 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14099 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14100 4);
14101 }
14102 else
14103 {
14104 // NS Offload
14105 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14106 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14107 16);
14108
14109#ifdef WLAN_NS_OFFLOAD
14110 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14111 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14112 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14113 16);
14114 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14115 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14116 16);
14117 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14118 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14119 16);
14120 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14121 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14122 16);
14123 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14124 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14125 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014126 nsOffloadParams.srcIPv6AddrValid =
14127 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14128
14129 nsOffloadParams.targetIPv6Addr1Valid =
14130 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14131
14132 nsOffloadParams.targetIPv6Addr2Valid =
14133 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14134
14135 nsOffloadParams.slotIndex =
14136 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014137
Jeff Johnson295189b2012-06-20 16:38:30 -070014138#endif // WLAN_NS_OFFLOAD
14139 }
14140
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014141 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14142
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 // copy hostOffloadParams into pSendBuffer
14144 wpalMemoryCopy( pSendBuffer+usDataOffset,
14145 &hostOffloadParams,
14146 sizeof(hostOffloadParams));
14147
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014148 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014150 // copy nsOffloadParams into pSendBuffer
14151 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 &nsOffloadParams,
14153 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014154 }
14155 else
14156 {
14157#ifdef WLAN_NS_OFFLOAD
14158 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14159 {
14160 // copy nsOffloadParams into pSendBuffer
14161 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14162 &nsOffloadParams,
14163 sizeof(nsOffloadParams));
14164 }
14165#endif
14166 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014167
14168 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014170
14171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014172 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014174 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14175 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014176
14177fail:
14178 // Release the message buffer so we don't leak
14179 wpalMemoryFree(pSendBuffer);
14180
14181failRequest:
14182 //WDA should have failure check to avoid the memory leak
14183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014184}/*WDI_ProcessHostOffloadReq*/
14185
14186/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014189
14190 @param pWDICtx: pointer to the WLAN DAL context
14191 pEventData: pointer to the event information structure
14192
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 @see
14194 @return Result of the function call
14195*/
14196WDI_Status
14197WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014198(
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 WDI_ControlBlockType* pWDICtx,
14200 WDI_EventInfoType* pEventData
14201)
14202{
14203 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14204 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 wpt_uint16 usDataOffset = 0;
14207 wpt_uint16 usSendSize = 0;
14208 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014209 wpt_uint8 ucCurrentBSSSesIdx = 0;
14210 WDI_BSSSessionType* pBSSSes = NULL;
14211
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14213
14214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 -------------------------------------------------------------------------*/
14217 if (( NULL == pEventData ) ||
14218 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14219 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14220 {
14221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14222 "Invalid parameters in Keep Alive req");
14223 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014224 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 }
14226
14227 /*-----------------------------------------------------------------------
14228 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 sizeof(keepAliveReq),
14233 &pSendBuffer, &usDataOffset, &usSendSize))||
14234 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14235 {
14236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014237 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14239 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014240 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 }
14242
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014243 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14244 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14245 &pBSSSes);
14246 if ( NULL == pBSSSes )
14247 {
14248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014249 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014250 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014251 }
14252
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14254 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14255
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014256 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014257
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14259 {
14260 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14261 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14262 HAL_IPV4_ADDR_LEN);
14263 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14264 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 wpalMemoryCopy(keepAliveReq.destMacAddr,
14267 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14268 HAL_MAC_ADDR_LEN);
14269 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014270
14271 wpalMemoryCopy( pSendBuffer+usDataOffset,
14272 &keepAliveReq,
14273 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014274
14275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014276 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014277
14278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014279 "Process keep alive req time period %d",
14280 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014281
14282 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014284
14285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14286 "Sending keep alive req to HAL");
14287
14288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14292 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014293
14294fail:
14295 // Release the message buffer so we don't leak
14296 wpalMemoryFree(pSendBuffer);
14297
14298failRequest:
14299 //WDA should have failure check to avoid the memory leak
14300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014301}/*WDI_ProcessKeepAliveReq*/
14302
14303
14304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014307
14308 @param pWDICtx: pointer to the WLAN DAL context
14309 pEventData: pointer to the event information structure
14310
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 @see
14312 @return Result of the function call
14313*/
14314WDI_Status
14315WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014316(
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 WDI_ControlBlockType* pWDICtx,
14318 WDI_EventInfoType* pEventData
14319)
14320{
14321 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14322 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 wpt_uint16 usDataOffset = 0;
14325 wpt_uint16 usSendSize = 0;
14326 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014327 wpt_uint8 ucCurrentBSSSesIdx = 0;
14328 WDI_BSSSessionType* pBSSSes = NULL;
14329
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14331
14332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 -------------------------------------------------------------------------*/
14335 if (( NULL == pEventData ) ||
14336 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14337 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14338 {
14339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014342 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 }
14344
14345 /*-----------------------------------------------------------------------
14346 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 sizeof(wowlAddBcPtrnReq),
14351 &pSendBuffer, &usDataOffset, &usSendSize))||
14352 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14353 {
14354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014355 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14357 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014358 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 }
14360
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014361 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14362 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14363 &pBSSSes);
14364 if ( NULL == pBSSSes )
14365 {
14366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014367 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014368 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014369 }
14370
Jeff Johnsone7245742012-09-05 17:12:55 -070014371 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014375 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14379
14380 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14381 {
14382 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14383 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14384 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14385 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14386 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14387 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14388 }
14389 else
14390 {
14391 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14392 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14393 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14394 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14395 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14396 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14397
14398 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14399 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14400 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14401 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14402 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14403 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14404 }
14405
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014406 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14407
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 wpalMemoryCopy( pSendBuffer+usDataOffset,
14409 &wowlAddBcPtrnReq,
14410 sizeof(wowlAddBcPtrnReq));
14411
14412 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014414
14415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14419 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014420fail:
14421 // Release the message buffer so we don't leak
14422 wpalMemoryFree(pSendBuffer);
14423
14424failRequest:
14425 //WDA should have failure check to avoid the memory leak
14426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014427}/*WDI_ProcessWowlAddBcPtrnReq*/
14428
14429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014432
14433 @param pWDICtx: pointer to the WLAN DAL context
14434 pEventData: pointer to the event information structure
14435
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 @see
14437 @return Result of the function call
14438*/
14439WDI_Status
14440WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014441(
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 WDI_ControlBlockType* pWDICtx,
14443 WDI_EventInfoType* pEventData
14444)
14445{
14446 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14447 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 wpt_uint16 usDataOffset = 0;
14450 wpt_uint16 usSendSize = 0;
14451 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014452 wpt_uint8 ucCurrentBSSSesIdx = 0;
14453 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14455
14456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 -------------------------------------------------------------------------*/
14459 if (( NULL == pEventData ) ||
14460 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14461 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14462 {
14463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014466 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 }
14468
14469 /*-----------------------------------------------------------------------
14470 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 sizeof(wowlDelBcPtrnReq),
14475 &pSendBuffer, &usDataOffset, &usSendSize))||
14476 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14477 {
14478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014479 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14481 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014482 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 }
14484
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014485 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14486 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14487 &pBSSSes);
14488 if ( NULL == pBSSSes )
14489 {
14490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014491 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014492 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014493 }
14494
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014497
14498 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14499
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 wpalMemoryCopy( pSendBuffer+usDataOffset,
14501 &wowlDelBcPtrnReq,
14502 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014503
14504 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014506
14507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014508 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14511 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014512
14513fail:
14514 // Release the message buffer so we don't leak
14515 wpalMemoryFree(pSendBuffer);
14516
14517failRequest:
14518 //WDA should have failure check to avoid the memory leak
14519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014520}/*WDI_ProcessWowlDelBcPtrnReq*/
14521
14522/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014523 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014525
14526 @param pWDICtx: pointer to the WLAN DAL context
14527 pEventData: pointer to the event information structure
14528
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 @see
14530 @return Result of the function call
14531*/
14532WDI_Status
14533WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014534(
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 WDI_ControlBlockType* pWDICtx,
14536 WDI_EventInfoType* pEventData
14537)
14538{
14539 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14540 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 wpt_uint16 usDataOffset = 0;
14543 wpt_uint16 usSendSize = 0;
14544 tHalWowlEnterParams wowlEnterReq;
14545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14546
14547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 -------------------------------------------------------------------------*/
14550 if (( NULL == pEventData ) ||
14551 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14552 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14553 {
14554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 }
14559
14560 /*-----------------------------------------------------------------------
14561 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 sizeof(wowlEnterReq),
14566 &pSendBuffer, &usDataOffset, &usSendSize))||
14567 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14568 {
14569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014570 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 }
14575
Kumar Anandaca924e2013-07-22 14:35:34 -070014576 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14577
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14594
14595#ifdef WLAN_WAKEUP_EVENTS
14596 wowlEnterReq.ucWoWEAPIDRequestEnable =
14597 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14598
14599 wowlEnterReq.ucWoWEAPOL4WayEnable =
14600 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14601
14602 wowlEnterReq.ucWowNetScanOffloadMatch =
14603 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14604
14605 wowlEnterReq.ucWowGTKRekeyError =
14606 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14607
14608 wowlEnterReq.ucWoWBSSConnLoss =
14609 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14610#endif // WLAN_WAKEUP_EVENTS
14611
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014612 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14613
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14615 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14616 sizeof(tSirMacAddr));
14617
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 wpalMemoryCopy( pSendBuffer+usDataOffset,
14619 &wowlEnterReq,
14620 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014621
14622 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014624
14625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14629 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014630}/*WDI_ProcessWowlEnterReq*/
14631
14632/**
14633 @brief Process Wowl exit Request function (called when Main FSM
14634 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014635
14636 @param pWDICtx: pointer to the WLAN DAL context
14637 pEventData: pointer to the event information structure
14638
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 @see
14640 @return Result of the function call
14641*/
14642WDI_Status
14643WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014644(
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 WDI_ControlBlockType* pWDICtx,
14646 WDI_EventInfoType* pEventData
14647)
14648{
14649 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014650 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 wpt_uint16 usDataOffset = 0;
14653 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014654 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14656
14657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 -------------------------------------------------------------------------*/
14660 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014661 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14663 {
14664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 }
14669
14670 /*-----------------------------------------------------------------------
14671 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014675 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014677 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 {
14679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014680 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 pEventData, wdiWowlExitCb);
14682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 }
14685
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014686 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14687
14688 wpalMemoryCopy( pSendBuffer+usDataOffset,
14689 &wowlExitparams,
14690 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14695 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014696}/*WDI_ProcessWowlExitReq*/
14697
14698/**
14699 @brief Process Configure Apps Cpu Wakeup State Request function
14700 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014701
14702 @param pWDICtx: pointer to the WLAN DAL context
14703 pEventData: pointer to the event information structure
14704
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 @see
14706 @return Result of the function call
14707*/
14708WDI_Status
14709WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014710(
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 WDI_ControlBlockType* pWDICtx,
14712 WDI_EventInfoType* pEventData
14713)
14714{
14715 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14716 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 wpt_uint16 usDataOffset = 0;
14719 wpt_uint16 usSendSize = 0;
14720 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14722
14723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 -------------------------------------------------------------------------*/
14726 if (( NULL == pEventData ) ||
14727 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14728 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14729 {
14730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 }
14735
14736 /*-----------------------------------------------------------------------
14737 Get message buffer
14738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 sizeof(halCfgAppsCpuWakeupStateReqParams),
14741 &pSendBuffer, &usDataOffset, &usSendSize))||
14742 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14743 {
14744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014745 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 }
14750
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14753
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 wpalMemoryCopy( pSendBuffer+usDataOffset,
14755 &halCfgAppsCpuWakeupStateReqParams,
14756 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014757
14758 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014760
14761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14765 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14766 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014767}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14768
14769#ifdef WLAN_FEATURE_VOWIFI_11R
14770/**
14771 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14772 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014773
14774 @param pWDICtx: pointer to the WLAN DAL context
14775 pEventData: pointer to the event information structure
14776
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 @see
14778 @return Result of the function call
14779*/
14780WDI_Status
14781WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014782(
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 WDI_ControlBlockType* pWDICtx,
14784 WDI_EventInfoType* pEventData
14785)
14786{
14787 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14788 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014789 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 wpt_uint16 usDataOffset = 0;
14793 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 wpt_macAddr macBSSID;
14796 tAggrAddTsReq halAggrAddTsReq;
14797 int i;
14798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14799
14800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 -------------------------------------------------------------------------*/
14803 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14804 ( NULL == pEventData->pCBfnc ))
14805 {
14806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 }
14811 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14812 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14813 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14814 /*-------------------------------------------------------------------------
14815 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 -------------------------------------------------------------------------*/
14818 wpalMutexAcquire(&pWDICtx->wptMutex);
14819
14820 /*------------------------------------------------------------------------
14821 Find the BSS for which the request is made and identify WDI session
14822 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14824 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 &macBSSID))
14826 {
14827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014828 "This station does not exist in the WDI Station Table %d",
14829 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014832 }
14833
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14835 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14838 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14839 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014840
14841 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014843 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014844
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 /*------------------------------------------------------------------------
14846 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 ------------------------------------------------------------------------*/
14849 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14850 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14852 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14853 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014854
Jeff Johnsone7245742012-09-05 17:12:55 -070014855 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 }
14859
14860 wpalMutexRelease(&pWDICtx->wptMutex);
14861 /*-----------------------------------------------------------------------
14862 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 sizeof(tAggrAddTsParams),
14867 &pSendBuffer, &usDataOffset, &usSendSize))||
14868 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14869 {
14870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014871 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 }
14876
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14881
14882 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14883 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14890 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14893 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14896 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14899 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14902 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14905 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14908 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14911 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014916
14917
14918 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14948 }
14949
Jeff Johnsone7245742012-09-05 17:12:55 -070014950 wpalMemoryCopy( pSendBuffer+usDataOffset,
14951 &halAggrAddTsReq,
14952 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014953
14954 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014955 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956
14957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014963}/*WDI_ProcessAggrAddTSpecReq*/
14964#endif /* WLAN_FEATURE_VOWIFI_11R */
14965
14966/**
14967 @brief Process Shutdown Request function (called when Main FSM
14968 allows it)
14969
14970 @param pWDICtx: pointer to the WLAN DAL context
14971 pEventData: pointer to the event information structure
14972
14973 @see
14974 @return Result of the function call
14975*/
14976WDI_Status
14977WDI_ProcessShutdownReq
14978(
14979 WDI_ControlBlockType* pWDICtx,
14980 WDI_EventInfoType* pEventData
14981 )
14982{
14983 wpt_status wptStatus;
14984
14985
14986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14987
14988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 -------------------------------------------------------------------------*/
14991 if ( NULL == pEventData )
14992 {
14993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 WDI_ASSERT(0);
14996 return WDI_STATUS_E_FAILURE;
14997 }
14998
14999 wpalMutexAcquire(&pWDICtx->wptMutex);
15000
15001
15002 gWDIInitialized = eWLAN_PAL_FALSE;
15003 /*! TO DO: stop the data services */
15004 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15005 {
15006 /*Stop the STA Table !UT- check this logic again
15007 It is safer to do it here than on the response - because a stop is imminent*/
15008 WDI_STATableStop(pWDICtx);
15009
15010 /* Stop Transport Driver, DXE */
15011 WDTS_Stop(pWDICtx);
15012 }
15013
15014 /*Clear all pending request*/
15015 WDI_ClearPendingRequests(pWDICtx);
15016 /* Close Data transport*/
15017 /* FTM mode does not open Data Path */
15018 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15019 {
15020 WDTS_Close(pWDICtx);
15021 }
15022 /*Close the STA Table !UT- check this logic again*/
15023 WDI_STATableClose(pWDICtx);
15024 /*close the PAL */
15025 wptStatus = wpalClose(pWDICtx->pPALContext);
15026 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15027 {
15028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15029 "Failed to wpal Close %d", wptStatus);
15030 WDI_ASSERT(0);
15031 }
15032
15033 /*Transition back to init state*/
15034 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15035
15036 wpalMutexRelease(&pWDICtx->wptMutex);
15037
15038 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015040
15041
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015043}/*WDI_ProcessShutdownReq*/
15044
15045/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015047========================================================================*/
15048
15049/**
15050 @brief Process Start Response function (called when a response
15051 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015052
15053 @param pWDICtx: pointer to the WLAN DAL context
15054 pEventData: pointer to the event information structure
15055
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 @see
15057 @return Result of the function call
15058*/
15059WDI_Status
15060WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015061(
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 WDI_ControlBlockType* pWDICtx,
15063 WDI_EventInfoType* pEventData
15064)
15065{
15066 WDI_StartRspParamsType wdiRspParams;
15067 WDI_StartRspCb wdiStartRspCb = NULL;
15068
15069 tHalMacStartRspParams* startRspParams;
15070
15071#ifndef HAL_SELF_STA_PER_BSS
15072 WDI_AddStaParams wdiAddSTAParam = {0};
15073#endif
15074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15075
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 -------------------------------------------------------------------------*/
15080 if (( NULL == pEventData ) ||
15081 ( NULL == pEventData->pEventData) ||
15082 ( NULL == wdiStartRspCb ))
15083 {
15084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 }
15089
15090 /*-------------------------------------------------------------------------
15091 Extract response and send it to UMAC
15092 -------------------------------------------------------------------------*/
15093 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15094 {
15095 // not enough data was received
15096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015097 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 }
15102
15103 /*-------------------------------------------------------------------------
15104 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 -------------------------------------------------------------------------*/
15107 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15108
15109 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15110 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15111 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15112 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15113 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15114 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15115 wdiRspParams.wlanReportedVersion.major =
15116 startRspParams->wcnssWlanVersion.major;
15117 wdiRspParams.wlanReportedVersion.minor =
15118 startRspParams->wcnssWlanVersion.minor;
15119 wdiRspParams.wlanReportedVersion.version =
15120 startRspParams->wcnssWlanVersion.version;
15121 wdiRspParams.wlanReportedVersion.revision =
15122 startRspParams->wcnssWlanVersion.revision;
15123 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15124 startRspParams->wcnssCrmVersionString,
15125 sizeof(wdiRspParams.wcnssSoftwareVersion));
15126 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15127 startRspParams->wcnssWlanVersionString,
15128 sizeof(wdiRspParams.wcnssHardwareVersion));
15129 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15130
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015131 /*Save the HAL Version*/
15132 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15133
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 wpalMutexAcquire(&pWDICtx->wptMutex);
15135 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15136 {
15137 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15138
15139 /*Cache the start response for further use*/
15140 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015141 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015142 sizeof(pWDICtx->wdiCachedStartRspParams));
15143
15144 }
15145 else
15146 {
15147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15148 "Failed to start device with status %s(%d)",
15149 WDI_getHALStatusMsgString(startRspParams->status),
15150 startRspParams->status);
15151
15152 /*Set the expected state transition to stopped - because the start has
15153 failed*/
15154 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15155
15156 wpalMutexRelease(&pWDICtx->wptMutex);
15157
15158 /*Notify UMAC*/
15159 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015160
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15162
15163 /*Although the response is an error - it was processed by our function
15164 so as far as the caller is concerned this is a succesful reponse processing*/
15165 return WDI_STATUS_SUCCESS;
15166 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015167
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 wpalMutexRelease(&pWDICtx->wptMutex);
15169
15170 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15171 {
15172 /* FTM mode does not need to execute below */
15173 /* Notify UMAC */
15174 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15175 return WDI_STATUS_SUCCESS;
15176 }
15177
15178 /* START the Data transport */
15179 WDTS_startTransport(pWDICtx);
15180
15181 /*Start the STA Table !- check this logic again*/
15182 WDI_STATableStart(pWDICtx);
15183
15184#ifndef HAL_SELF_STA_PER_BSS
15185 /* Store the Self STA Index */
15186 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15187
15188 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15189 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15190 WDI_MAC_ADDR_LEN);
15191
15192 /* At this point add the self-STA */
15193
15194 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15195 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15196 /*! TO DO: wdiAddSTAParam.dpuSig */
15197 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15198 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15199 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15200
15201 //all DPU indices are the same for self STA
15202 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15203 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015204 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15206 WDI_MAC_ADDR_LEN);
15207 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15208 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15209
15210 /* Note: Since we don't get an explicit config STA request for self STA, we
15211 add the self STA upon receiving the Start response message. But the
15212 self STA entry in the table is deleted when WDI gets an explicit delete STA
15213 request */
15214 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15215#endif
15216
15217 /*Notify UMAC*/
15218 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15219
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015221}/*WDI_ProcessStartRsp*/
15222
15223
15224/**
15225 @brief Process Stop Response function (called when a response
15226 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015227
15228 @param pWDICtx: pointer to the WLAN DAL context
15229 pEventData: pointer to the event information structure
15230
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 @see
15232 @return Result of the function call
15233*/
15234WDI_Status
15235WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015236(
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 WDI_ControlBlockType* pWDICtx,
15238 WDI_EventInfoType* pEventData
15239)
15240{
15241 WDI_Status wdiStatus;
15242 WDI_StopRspCb wdiStopRspCb = NULL;
15243
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15246
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 -------------------------------------------------------------------------*/
15251 if (( NULL == pEventData ) ||
15252 ( NULL == pEventData->pEventData) ||
15253 ( NULL == wdiStopRspCb ))
15254 {
15255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 }
15260
15261 /*-------------------------------------------------------------------------
15262 Extract response and send it to UMAC
15263 -------------------------------------------------------------------------*/
15264 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15265 {
15266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015267 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015268 pEventData->uEventDataSize);
15269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 }
15272
15273 /*-------------------------------------------------------------------------
15274 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15278 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 sizeof(halMacStopRspMsg.stopRspParams));
15280
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015282
15283 wpalMutexAcquire(&pWDICtx->wptMutex);
15284
15285 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 --------------------------------------------------------------------------*/
15288 if ( WDI_STATUS_SUCCESS != wdiStatus )
15289 {
15290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15291 "Failed to stop the device with status %s (%d)",
15292 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15293 halMacStopRspMsg.stopRspParams.status);
15294
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15296
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015300
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15302
15303 /*Transition now as WDI may get preempted imediately after it sends
15304 up the Stop Response and it will not get to process the state transition
15305 from Main Rsp function*/
15306 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15307 wpalMutexRelease(&pWDICtx->wptMutex);
15308
15309 /*! TO DO: - STOP the Data transport */
15310
15311 /*Notify UMAC*/
15312 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15313
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015315}/*WDI_ProcessStopRsp*/
15316
15317/**
15318 @brief Process Close Rsp function (called when a response
15319 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015320
15321 @param pWDICtx: pointer to the WLAN DAL context
15322 pEventData: pointer to the event information structure
15323
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 @see
15325 @return Result of the function call
15326*/
15327WDI_Status
15328WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015329(
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 WDI_ControlBlockType* pWDICtx,
15331 WDI_EventInfoType* pEventData
15332)
15333{
15334 /*There is no close response comming from HAL - function just kept for
15335 simmetry */
15336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015338}/*WDI_ProcessCloseRsp*/
15339
15340
15341/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015343============================================================================*/
15344
15345/**
15346 @brief Process Init Scan Rsp function (called when a response
15347 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015348
15349 @param pWDICtx: pointer to the WLAN DAL context
15350 pEventData: pointer to the event information structure
15351
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 @see
15353 @return Result of the function call
15354*/
15355WDI_Status
15356WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015357(
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 WDI_ControlBlockType* pWDICtx,
15359 WDI_EventInfoType* pEventData
15360)
15361{
15362 WDI_Status wdiStatus;
15363 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015365 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15367
15368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 -------------------------------------------------------------------------*/
15371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15372 ( NULL == pEventData->pEventData))
15373 {
15374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 }
15379
15380 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15381 if( NULL == wdiInitScanRspCb)
15382 {
15383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015384 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 }
15388
15389 /*-------------------------------------------------------------------------
15390 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15394 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 sizeof(halInitScanRspMsg.initScanRspParams));
15396
Jeff Johnsone7245742012-09-05 17:12:55 -070015397 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015398
15399 if ( pWDICtx->bInBmps )
15400 {
15401 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015402 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15403 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015405 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080015406 WDI_ASSERT(0);
15407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 }
15409
15410 /*Notify UMAC*/
15411 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15412
Jeff Johnsone7245742012-09-05 17:12:55 -070015413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015414}/*WDI_ProcessInitScanRsp*/
15415
15416
15417/**
15418 @brief Process Start Scan Rsp function (called when a response
15419 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015420
15421 @param pWDICtx: pointer to the WLAN DAL context
15422 pEventData: pointer to the event information structure
15423
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 @see
15425 @return Result of the function call
15426*/
15427WDI_Status
15428WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015429(
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 WDI_ControlBlockType* pWDICtx,
15431 WDI_EventInfoType* pEventData
15432)
15433{
15434 WDI_StartScanRspParamsType wdiStartScanParams;
15435 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015436
15437 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15439
15440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 -------------------------------------------------------------------------*/
15443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15444 ( NULL == pEventData->pEventData))
15445 {
15446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 }
15451
15452 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15453 if( NULL == wdiStartScanRspCb)
15454 {
15455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015456 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015459 }
15460
15461 /*-------------------------------------------------------------------------
15462 Extract response and send it to UMAC
15463 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15465 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 sizeof(halStartScanRspMsg.startScanRspParams));
15467
15468 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15469 halStartScanRspMsg.startScanRspParams.status);
15470#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015471 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015472 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 halStartScanRspMsg.startScanRspParams.startTSF,
15475 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015476#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015477
15478 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15479 {
15480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15481 "Start scan failed with status %s (%d)",
15482 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15483 halStartScanRspMsg.startScanRspParams.status);
15484 /* send the status to UMAC, don't return from here*/
15485 }
15486
15487 /*Notify UMAC*/
15488 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15489
Jeff Johnsone7245742012-09-05 17:12:55 -070015490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015491
15492}/*WDI_ProcessStartScanRsp*/
15493
15494
15495/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015498
15499 @param pWDICtx: pointer to the WLAN DAL context
15500 pEventData: pointer to the event information structure
15501
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 @see
15503 @return Result of the function call
15504*/
15505WDI_Status
15506WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015507(
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 WDI_ControlBlockType* pWDICtx,
15509 WDI_EventInfoType* pEventData
15510)
15511{
15512 WDI_Status wdiStatus;
15513 tHalEndScanRspMsg halEndScanRspMsg;
15514 WDI_EndScanRspCb wdiEndScanRspCb;
15515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15516
15517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 -------------------------------------------------------------------------*/
15520 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15521 ( NULL == pEventData->pEventData))
15522 {
15523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 }
15528
15529 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15530
15531 /*-------------------------------------------------------------------------
15532 Extract response and send it to UMAC
15533 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15535 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 sizeof(halEndScanRspMsg.endScanRspParams));
15537
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015539
15540 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15541 {
15542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15543 "End Scan failed with status %s (%d )",
15544 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15545 halEndScanRspMsg.endScanRspParams.status);
15546 /* send the status to UMAC, don't return from here*/
15547 }
15548
15549 /*Notify UMAC*/
15550 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15551
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015553}/*WDI_ProcessEndScanRsp*/
15554
15555
15556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015559
15560 @param pWDICtx: pointer to the WLAN DAL context
15561 pEventData: pointer to the event information structure
15562
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 @see
15564 @return Result of the function call
15565*/
15566WDI_Status
15567WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015568(
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 WDI_ControlBlockType* pWDICtx,
15570 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015571)
Jeff Johnson295189b2012-06-20 16:38:30 -070015572{
15573 WDI_Status wdiStatus;
15574 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015575
15576 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15578
15579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 -------------------------------------------------------------------------*/
15582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15583 ( NULL == pEventData->pEventData))
15584 {
15585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 }
15590
15591 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15592
15593 /*-------------------------------------------------------------------------
15594 Extract response and send it to UMAC
15595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15597 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15599
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015601
15602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 halFinishScanRspMsg.finishScanRspParams.status);
15605
15606 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15607 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15608 {
15609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15610 "Finish Scan failed with status %s (%d)",
15611 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15612 halFinishScanRspMsg.finishScanRspParams.status);
15613 /* send the status to UMAC, don't return from here*/
15614 }
15615
15616 /*Notify UMAC*/
15617 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15618
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015620}/*WDI_ProcessFinishScanRsp*/
15621
15622/**
15623 @brief Process Join Response function (called when a response
15624 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015625
15626 @param pWDICtx: pointer to the WLAN DAL context
15627 pEventData: pointer to the event information structure
15628
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 @see
15630 @return Result of the function call
15631*/
15632WDI_Status
15633WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015634(
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 WDI_ControlBlockType* pWDICtx,
15636 WDI_EventInfoType* pEventData
15637)
15638{
15639 WDI_Status wdiStatus;
15640 WDI_JoinRspCb wdiJoinRspCb;
15641 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642
15643 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15645
15646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 -------------------------------------------------------------------------*/
15649 if (( NULL == pWDICtx ) ||
15650 ( NULL == pWDICtx->pfncRspCB ) ||
15651 ( NULL == pEventData ) ||
15652 ( NULL == pEventData->pEventData))
15653 {
15654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 }
15659
15660 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15661
15662 /*-------------------------------------------------------------------------
15663 Extract response and send it to UMAC
15664 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15666 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 sizeof(halJoinRspMsg.joinRspParams));
15668
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015670
15671 wpalMutexAcquire(&pWDICtx->wptMutex);
15672
15673 /*-----------------------------------------------------------------------
15674 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15679 {
15680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15682 "association no longer in progress %d - mysterious HAL response",
15683 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015684
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 }
15689
15690 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15691
15692 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 -----------------------------------------------------------------------*/
15695 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15696 {
15697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15698 "Join only allowed in Joining state - failure state is %d "
15699 "strange HAL response", pBSSSes->wdiAssocState);
15700
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15702
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 }
15706
15707
15708 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 -----------------------------------------------------------------------*/
15711 if ( WDI_STATUS_SUCCESS != wdiStatus )
15712 {
15713 /*Association was failed by HAL - remove session*/
15714 WDI_DeleteSession(pWDICtx, pBSSSes);
15715
15716 /*Association no longer in progress */
15717 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15718
15719 /*Association no longer in progress - prepare pending assoc for processing*/
15720 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015721
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 }
15723 else
15724 {
15725 /*Transition to state Joining - this may be redundant as we are supposed
15726 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 }
15729
15730 wpalMutexRelease(&pWDICtx->wptMutex);
15731
15732 /*Notify UMAC*/
15733 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15734
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015736}/*WDI_ProcessJoinRsp*/
15737
15738
15739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015740 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015742
15743 @param pWDICtx: pointer to the WLAN DAL context
15744 pEventData: pointer to the event information structure
15745
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 @see
15747 @return Result of the function call
15748*/
15749WDI_Status
15750WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015751(
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 WDI_ControlBlockType* pWDICtx,
15753 WDI_EventInfoType* pEventData
15754)
15755{
15756 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15757 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 WDI_BSSSessionType* pBSSSes = NULL;
15760
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15763 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015764
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15766
15767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 -------------------------------------------------------------------------*/
15770 if (( NULL == pEventData ) ||
15771 ( NULL == pEventData->pEventData))
15772 {
15773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 }
15778
15779 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15780
15781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15785 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 sizeof(halConfigBssRspMsg.configBssRspParams));
15787
15788 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15789 halConfigBssRspMsg.configBssRspParams.status);
15790 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15791 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15794 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015795
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015797
15798 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015800
15801 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015803
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015805
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15809 #endif
15810 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15811 halConfigBssRspMsg.configBssRspParams.staMac,
15812 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015813
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 wpalMutexAcquire(&pWDICtx->wptMutex);
15815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15819 wdiConfigBSSParams.macBSSID,
15820 &pBSSSes);
15821
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 /*-----------------------------------------------------------------------
15823 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 -----------------------------------------------------------------------*/
15826 if ( NULL == pBSSSes )
15827 {
15828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15829 "Association sequence for this BSS does not yet exist "
15830 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015831
15832 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15833
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015837
Jeff Johnson295189b2012-06-20 16:38:30 -070015838 /*Save data for this BSS*/
15839 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15840 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15851 pBSSSes->bcastStaIdx =
15852 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015853
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015855
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 /*-------------------------------------------------------------------------
15857 Add Peer STA
15858 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15861 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015862
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 wdiAddSTAParam.ucHTCapable =
15867 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15868 wdiAddSTAParam.ucStaType =
15869 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15870
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15873 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015875
15876 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15877 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15878 WDI_MAC_ADDR_LEN);
15879
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015893
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15895 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015896
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15898 /*-------------------------------------------------------------------------
15899 Add Broadcast STA only in AP mode
15900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070015902 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 {
15904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15905 "Add BCAST STA to table for index: %d",
15906 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015907
15908 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015910
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15912 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15913 }
15914 wpalMutexRelease(&pWDICtx->wptMutex);
15915 }
15916 else
15917 {
15918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15919 "Config BSS RSP failed with status : %s(%d)",
15920 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 halConfigBssRspMsg.configBssRspParams.status);
15923
Jeff Johnsone7245742012-09-05 17:12:55 -070015924
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 /*Association was failed by HAL - remove session*/
15926 WDI_DeleteSession(pWDICtx, pBSSSes);
15927
15928 /*Association no longer in progress */
15929 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15930
15931 /*Association no longer in progress - prepare pending assoc for processing*/
15932 WDI_DequeueAssocRequest(pWDICtx);
15933
15934 }
15935
15936 /*Notify UMAC*/
15937 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15938
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940}/*WDI_ProcessConfigBSSRsp*/
15941
15942
15943/**
15944 @brief Process Del BSS Response function (called when a response
15945 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015946
15947 @param pWDICtx: pointer to the WLAN DAL context
15948 pEventData: pointer to the event information structure
15949
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 @see
15951 @return Result of the function call
15952*/
15953WDI_Status
15954WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015955(
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 WDI_ControlBlockType* pWDICtx,
15957 WDI_EventInfoType* pEventData
15958)
15959{
15960 WDI_DelBSSRspParamsType wdiDelBSSParams;
15961 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 WDI_BSSSessionType* pBSSSes = NULL;
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15967
15968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 -------------------------------------------------------------------------*/
15971 if (( NULL == pEventData ) ||
15972 ( NULL == pEventData->pEventData))
15973 {
15974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 }
15979
15980 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15981
15982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015983 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15986 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 sizeof(halDelBssRspMsg.deleteBssRspParams));
15988
15989
15990 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015992
15993 wpalMutexAcquire(&pWDICtx->wptMutex);
15994
15995 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15999 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16000 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016001
16002 /*-----------------------------------------------------------------------
16003 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016004 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 -----------------------------------------------------------------------*/
16006 if ( NULL == pBSSSes )
16007 {
16008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16009 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016010 "association no longer in progress - mysterious HAL response");
16011
16012 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16013
16014 wpalMutexRelease(&pWDICtx->wptMutex);
16015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016017
16018 /*Extract BSSID for the response to UMAC*/
16019 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16020 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16021
16022 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16023
16024 /*-----------------------------------------------------------------------
16025 The current session will be deleted
16026 -----------------------------------------------------------------------*/
16027 WDI_DeleteSession(pWDICtx, pBSSSes);
16028
16029
16030 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016031 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16032 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016034 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016035 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016036
16037 /* Delete the STA's in this BSS */
16038 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16039
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 wpalMutexRelease(&pWDICtx->wptMutex);
16041
16042 /*Notify UMAC*/
16043 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16044
Jeff Johnsone7245742012-09-05 17:12:55 -070016045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016046}/*WDI_ProcessDelBSSRsp*/
16047
16048/**
16049 @brief Process Post Assoc Rsp function (called when a response
16050 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016051
16052 @param pWDICtx: pointer to the WLAN DAL context
16053 pEventData: pointer to the event information structure
16054
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 @see
16056 @return Result of the function call
16057*/
16058WDI_Status
16059WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016060(
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 WDI_ControlBlockType* pWDICtx,
16062 WDI_EventInfoType* pEventData
16063)
16064{
16065 WDI_PostAssocRspParamsType wdiPostAssocParams;
16066 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16071
16072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 -------------------------------------------------------------------------*/
16075 if (( NULL == pEventData ) ||
16076 ( NULL == pEventData->pEventData))
16077 {
16078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 }
16083
16084 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16085
16086 /*-------------------------------------------------------------------------
16087 Extract response and send it to UMAC
16088 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16090 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 sizeof(halPostAssocRspMsg.postAssocRspParams));
16092
16093 /*Extract the Post Assoc STA Params */
16094
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016097 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016098 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16101
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 wdiPostAssocParams.wdiStatus =
16103 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016104
16105 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16106 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16108 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 WDI_MAC_ADDR_LEN);
16110
16111 /* Extract Post Assoc BSS Params */
16112
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16114 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16115 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016116
16117 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16118 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016119 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16121 .macSTA, WDI_MAC_ADDR_LEN);
16122
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16125
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16128
16129 wdiPostAssocParams.bssParams.ucBSSIdx =
16130 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16131
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16134
16135 wpalMutexAcquire(&pWDICtx->wptMutex);
16136
16137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016143
16144 /*-----------------------------------------------------------------------
16145 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 -----------------------------------------------------------------------*/
16148 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16151 {
16152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16153 "Association sequence for this BSS does not yet exist or "
16154 "association no longer in progress - mysterious HAL response");
16155
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16157
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 }
16161
16162 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 -----------------------------------------------------------------------*/
16165 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16166 {
16167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16168 "Post Assoc not allowed before JOIN - failing request "
16169 "strange HAL response");
16170
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16172
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016175 }
16176
16177 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 -----------------------------------------------------------------------*/
16180 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16181 {
16182 /*Association was failed by HAL - remove session*/
16183 WDI_DeleteSession(pWDICtx, pBSSSes);
16184 }
16185 else
16186 {
16187 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016189
16190 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16199
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16202 }
16203
16204 /*Association no longer in progress */
16205 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16206
16207 /*Association no longer in progress - prepare pending assoc for processing*/
16208 WDI_DequeueAssocRequest(pWDICtx);
16209
16210 wpalMutexRelease(&pWDICtx->wptMutex);
16211
16212 /*Notify UMAC*/
16213 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16214
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016216}/*WDI_ProcessPostAssocRsp*/
16217
16218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016221
16222 @param pWDICtx: pointer to the WLAN DAL context
16223 pEventData: pointer to the event information structure
16224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 @see
16226 @return Result of the function call
16227*/
16228WDI_Status
16229WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016230(
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 WDI_ControlBlockType* pWDICtx,
16232 WDI_EventInfoType* pEventData
16233)
16234{
16235 WDI_DelSTARspParamsType wdiDelSTARsp;
16236 WDI_DelSTARspCb wdiDelSTARspCb;
16237 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16240
16241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 -------------------------------------------------------------------------*/
16244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16245 ( NULL == pEventData->pEventData))
16246 {
16247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 }
16252
16253 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16254
16255 /*-------------------------------------------------------------------------
16256 Extract response and send it to UMAC
16257 -------------------------------------------------------------------------*/
16258 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 sizeof(halDelStaRspMsg.delStaRspParams));
16261
16262 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016263 wdiDelSTARsp.wdiStatus =
16264 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016265
16266 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16267
16268 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16269 if(staType == WDI_STA_ENTRY_SELF)
16270 {
16271 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16272
16273 /* At this point add the self-STA */
16274
16275 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16276 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16277 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16278
16279#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16280#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16281
16282 //all DPU indices are the same for self STA
16283 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16284 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16285 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16286 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16287 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16288 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016289
16290 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 }
16292 else
16293 {
16294 //Delete the station in the table
16295 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16296 }
16297
16298 /*Notify UMAC*/
16299 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16300
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302}/*WDI_ProcessDelSTARsp*/
16303
16304
16305/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016307==========================================================================*/
16308
16309/**
16310 @brief Process Set BSS Key Rsp function (called when a response
16311 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016312
16313 @param pWDICtx: pointer to the WLAN DAL context
16314 pEventData: pointer to the event information structure
16315
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 @see
16317 @return Result of the function call
16318*/
16319WDI_Status
16320WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016321(
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 WDI_ControlBlockType* pWDICtx,
16323 WDI_EventInfoType* pEventData
16324)
16325{
16326 WDI_Status wdiStatus;
16327 eHalStatus halStatus;
16328 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16330
16331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016332 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 -------------------------------------------------------------------------*/
16334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16335 ( NULL == pEventData->pEventData))
16336 {
16337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016338 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016341 }
16342
16343 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16344
16345 /*-------------------------------------------------------------------------
16346 Extract response and send it to UMAC
16347 -------------------------------------------------------------------------*/
16348 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016350
16351 if ( eHAL_STATUS_SUCCESS != halStatus )
16352 {
16353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16354 "Set BSS Key failed with status %s (%d)",
16355 WDI_getHALStatusMsgString(halStatus),
16356 halStatus);
16357 /* send the status to UMAC, don't return from here*/
16358 }
16359
16360 /*Notify UMAC*/
16361 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16362
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016364}/*WDI_ProcessSetBssKeyRsp*/
16365
16366/**
16367 @brief Process Remove BSS Key Rsp function (called when a response
16368 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016369
16370 @param pWDICtx: pointer to the WLAN DAL context
16371 pEventData: pointer to the event information structure
16372
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 @see
16374 @return Result of the function call
16375*/
16376WDI_Status
16377WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016378(
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 WDI_ControlBlockType* pWDICtx,
16380 WDI_EventInfoType* pEventData
16381)
16382{
16383 WDI_Status wdiStatus;
16384 eHalStatus halStatus;
16385 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16387
16388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 -------------------------------------------------------------------------*/
16391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16392 ( NULL == pEventData->pEventData))
16393 {
16394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 }
16399
16400 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16401
16402 /*-------------------------------------------------------------------------
16403 Extract response and send it to UMAC
16404 -------------------------------------------------------------------------*/
16405 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016407
16408 if ( eHAL_STATUS_SUCCESS != halStatus )
16409 {
16410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16411 "Remove BSS Key failed with status %s (%d )",
16412 WDI_getHALStatusMsgString(halStatus),
16413 halStatus);
16414 /* send the status to UMAC, don't return from here*/
16415 }
16416
16417 /*Notify UMAC*/
16418 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16419
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016421}/*WDI_ProcessSetBssKeyRsp*/
16422
16423
16424/**
16425 @brief Process Set STA Key Rsp function (called when a response
16426 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016427
16428 @param pWDICtx: pointer to the WLAN DAL context
16429 pEventData: pointer to the event information structure
16430
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 @see
16432 @return Result of the function call
16433*/
16434WDI_Status
16435WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016436(
Jeff Johnson295189b2012-06-20 16:38:30 -070016437 WDI_ControlBlockType* pWDICtx,
16438 WDI_EventInfoType* pEventData
16439)
16440{
16441 WDI_Status wdiStatus;
16442 eHalStatus halStatus;
16443 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16445
16446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 -------------------------------------------------------------------------*/
16449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16450 ( NULL == pEventData->pEventData))
16451 {
16452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 }
16457
16458 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16459
16460 /*-------------------------------------------------------------------------
16461 Extract response and send it to UMAC
16462 -------------------------------------------------------------------------*/
16463 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016465
16466 if ( eHAL_STATUS_SUCCESS != halStatus )
16467 {
16468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16469 "Set STA Key failed with status %s (%d)",
16470 WDI_getHALStatusMsgString(halStatus),
16471 halStatus);
16472 /* send the status to UMAC, don't return from here*/
16473 }
16474
16475 /*Notify UMAC*/
16476 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16477
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016479}/*WDI_ProcessSetSTAKeyRsp*/
16480
16481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016484
16485 @param pWDICtx: pointer to the WLAN DAL context
16486 pEventData: pointer to the event information structure
16487
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 @see
16489 @return Result of the function call
16490*/
16491WDI_Status
16492WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016493(
Jeff Johnson295189b2012-06-20 16:38:30 -070016494 WDI_ControlBlockType* pWDICtx,
16495 WDI_EventInfoType* pEventData
16496)
16497{
16498 WDI_Status wdiStatus;
16499 eHalStatus halStatus;
16500 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16502
16503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 -------------------------------------------------------------------------*/
16506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16507 ( NULL == pEventData->pEventData))
16508 {
16509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 }
16514
16515 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16516
16517 /*-------------------------------------------------------------------------
16518 Extract response and send it to UMAC
16519 -------------------------------------------------------------------------*/
16520 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016522
16523 if ( eHAL_STATUS_SUCCESS != halStatus )
16524 {
16525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16526 "Remove STA Key failed with status %s (%d)",
16527 WDI_getHALStatusMsgString(halStatus),
16528 halStatus);
16529 /* send the status to UMAC, don't return from here*/
16530 }
16531
16532 /*Notify UMAC*/
16533 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16534
Jeff Johnsone7245742012-09-05 17:12:55 -070016535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016536}/*WDI_ProcessRemoveStaKeyRsp*/
16537
16538/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016539 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016541
16542 @param pWDICtx: pointer to the WLAN DAL context
16543 pEventData: pointer to the event information structure
16544
Jeff Johnson295189b2012-06-20 16:38:30 -070016545 @see
16546 @return Result of the function call
16547*/
16548WDI_Status
16549WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016550(
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 WDI_ControlBlockType* pWDICtx,
16552 WDI_EventInfoType* pEventData
16553)
16554{
16555 WDI_Status wdiStatus;
16556 eHalStatus halStatus;
16557 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16559
16560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 -------------------------------------------------------------------------*/
16563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16564 ( NULL == pEventData->pEventData))
16565 {
16566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 }
16571
16572 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16573
16574 /*-------------------------------------------------------------------------
16575 Extract response and send it to UMAC
16576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 wpalMemoryCopy( &halStatus,
16578 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 sizeof(halStatus));
16580
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016582
16583 if ( eHAL_STATUS_SUCCESS != halStatus )
16584 {
16585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16586 "Set STA Key failed with status %s (%d)",
16587 WDI_getHALStatusMsgString(halStatus),
16588 halStatus);
16589 /* send the status to UMAC, don't return from here*/
16590 }
16591
16592 /*Notify UMAC*/
16593 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16594
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016596}/*WDI_ProcessSetSTABcastKeyRsp*/
16597
16598/**
16599 @brief Process Remove STA Bcast Key Rsp function (called when a
16600 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016601
16602 @param pWDICtx: pointer to the WLAN DAL context
16603 pEventData: pointer to the event information structure
16604
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 @see
16606 @return Result of the function call
16607*/
16608WDI_Status
16609WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016610(
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 WDI_ControlBlockType* pWDICtx,
16612 WDI_EventInfoType* pEventData
16613)
16614{
16615 WDI_Status wdiStatus;
16616 eHalStatus halStatus;
16617 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16619
16620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 -------------------------------------------------------------------------*/
16623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16624 ( NULL == pEventData->pEventData))
16625 {
16626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 }
16631
16632 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16633
16634 /*-------------------------------------------------------------------------
16635 Extract response and send it to UMAC
16636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016637 wpalMemoryCopy( &halStatus,
16638 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 sizeof(halStatus));
16640
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016642
16643 if ( eHAL_STATUS_SUCCESS != halStatus )
16644 {
16645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16646 "Remove STA Key failed with status %s (%d)",
16647 WDI_getHALStatusMsgString(halStatus),
16648 halStatus);
16649 /* send the status to UMAC, don't return from here*/
16650 }
16651
16652 /*Notify UMAC*/
16653 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16654
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016656}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16657
16658
16659/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016661==========================================================================*/
16662
16663/**
16664 @brief Process Add TSpec Rsp function (called when a response
16665 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016666
16667 @param pWDICtx: pointer to the WLAN DAL context
16668 pEventData: pointer to the event information structure
16669
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 @see
16671 @return Result of the function call
16672*/
16673WDI_Status
16674WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016675(
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 WDI_ControlBlockType* pWDICtx,
16677 WDI_EventInfoType* pEventData
16678)
16679{
16680 WDI_Status wdiStatus;
16681 eHalStatus halStatus;
16682 WDI_AddTsRspCb wdiAddTsRspCb;
16683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16684
16685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 -------------------------------------------------------------------------*/
16688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16689 ( NULL == pEventData->pEventData))
16690 {
16691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 }
16696
16697 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16698
16699 /*-------------------------------------------------------------------------
16700 Extract response and send it to UMAC
16701 -------------------------------------------------------------------------*/
16702 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016704
16705 /*Notify UMAC*/
16706 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16707
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016709}/*WDI_ProcessAddTSpecRsp*/
16710
16711
16712/**
16713 @brief Process Del TSpec Rsp function (called when a response
16714 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016715
16716 @param pWDICtx: pointer to the WLAN DAL context
16717 pEventData: pointer to the event information structure
16718
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 @see
16720 @return Result of the function call
16721*/
16722WDI_Status
16723WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016724(
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 WDI_ControlBlockType* pWDICtx,
16726 WDI_EventInfoType* pEventData
16727)
16728{
16729 WDI_Status wdiStatus;
16730 eHalStatus halStatus;
16731 WDI_DelTsRspCb wdiDelTsRspCb;
16732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16733
16734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 -------------------------------------------------------------------------*/
16737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16738 ( NULL == pEventData->pEventData))
16739 {
16740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 }
16745
16746 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16747
16748 /*-------------------------------------------------------------------------
16749 Extract response and send it to UMAC
16750 -------------------------------------------------------------------------*/
16751 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016753
16754 /*Notify UMAC*/
16755 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16756
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016758}/*WDI_ProcessDelTSpecRsp*/
16759
16760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016763
16764 @param pWDICtx: pointer to the WLAN DAL context
16765 pEventData: pointer to the event information structure
16766
Jeff Johnson295189b2012-06-20 16:38:30 -070016767 @see
16768 @return Result of the function call
16769*/
16770WDI_Status
16771WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016772(
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 WDI_ControlBlockType* pWDICtx,
16774 WDI_EventInfoType* pEventData
16775)
16776{
16777 WDI_Status wdiStatus;
16778 eHalStatus halStatus;
16779 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16781
16782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 -------------------------------------------------------------------------*/
16785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16786 ( NULL == pEventData->pEventData))
16787 {
16788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 }
16793
16794 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16795
16796 /*-------------------------------------------------------------------------
16797 Extract response and send it to UMAC
16798 -------------------------------------------------------------------------*/
16799 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016801
16802 /*Notify UMAC*/
16803 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16804
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016806}/*WDI_ProcessUpdateEDCAParamsRsp*/
16807
16808
16809/**
16810 @brief Process Add BA Rsp function (called when a response
16811 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016812
16813 @param pWDICtx: pointer to the WLAN DAL context
16814 pEventData: pointer to the event information structure
16815
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 @see
16817 @return Result of the function call
16818*/
16819WDI_Status
16820WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016821(
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 WDI_ControlBlockType* pWDICtx,
16823 WDI_EventInfoType* pEventData
16824)
16825{
16826 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16827
16828 tAddBASessionRspParams halBASessionRsp;
16829 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16830
Jeff Johnsone7245742012-09-05 17:12:55 -070016831
Jeff Johnson295189b2012-06-20 16:38:30 -070016832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16833
16834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 -------------------------------------------------------------------------*/
16837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16838 ( NULL == pEventData->pEventData))
16839 {
16840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 }
16845
16846 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16847
16848 /*-------------------------------------------------------------------------
16849 Extract response and send it to UMAC
16850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016851 wpalMemoryCopy( &halBASessionRsp,
16852 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 sizeof(halBASessionRsp));
16854
16855 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16856
Jeff Johnson43971f52012-07-17 12:26:56 -070016857 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 {
16859 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16860 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16861 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16862 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16863 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16864 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16865 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16866 }
16867
16868 /*Notify UMAC*/
16869 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16870
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016872}/*WDI_ProcessAddSessionBARsp*/
16873
16874
16875/**
16876 @brief Process Del BA Rsp function (called when a response
16877 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016878
16879 @param pWDICtx: pointer to the WLAN DAL context
16880 pEventData: pointer to the event information structure
16881
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 @see
16883 @return Result of the function call
16884*/
16885WDI_Status
16886WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016887(
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 WDI_ControlBlockType* pWDICtx,
16889 WDI_EventInfoType* pEventData
16890)
16891{
16892 WDI_Status wdiStatus;
16893 eHalStatus halStatus;
16894 WDI_DelBARspCb wdiDelBARspCb;
16895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16896
16897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 -------------------------------------------------------------------------*/
16900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16901 ( NULL == pEventData->pEventData))
16902 {
16903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 }
16908
16909 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16910
16911 /*-------------------------------------------------------------------------
16912 Extract response and send it to UMAC
16913 -------------------------------------------------------------------------*/
16914 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016916
16917 if ( eHAL_STATUS_SUCCESS == halStatus )
16918 {
16919 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16920 }
16921
16922 /*Notify UMAC*/
16923 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16924
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016926}/*WDI_ProcessDelBARsp*/
16927
16928#ifdef FEATURE_WLAN_CCX
16929/**
16930 @brief Process TSM Stats Rsp function (called when a response
16931 is being received over the bus from HAL)
16932
16933 @param pWDICtx: pointer to the WLAN DAL context
16934 pEventData: pointer to the event information structure
16935
16936 @see
16937 @return Result of the function call
16938*/
16939WDI_Status
16940WDI_ProcessTsmStatsRsp
16941(
16942 WDI_ControlBlockType* pWDICtx,
16943 WDI_EventInfoType* pEventData
16944)
16945{
16946 WDI_TsmRspCb wdiTsmStatsRspCb;
16947 tTsmStatsRspMsg halTsmStatsRspMsg;
16948 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16950
16951 /*-------------------------------------------------------------------------
16952 Sanity check
16953 -------------------------------------------------------------------------*/
16954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16955 ( NULL == pEventData->pEventData))
16956 {
16957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 WDI_ASSERT(0);
16960 return WDI_STATUS_E_FAILURE;
16961 }
16962
16963 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16964
16965 /*-------------------------------------------------------------------------
16966 Unpack HAL Response Message - the header was already extracted by the
16967 main Response Handling procedure
16968 -------------------------------------------------------------------------*/
16969 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16970 pEventData->pEventData,
16971 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16972
16973 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16974 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16975 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16976 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16977 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16978 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16979 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16980 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16981 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16982 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16983 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16984 halTsmStatsRspMsg.tsmStatsRspParams.status);
16985
16986 /*Notify UMAC*/
16987 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16988
16989 return WDI_STATUS_SUCCESS;
16990}/*WDI_ProcessTsmStatsRsp*/
16991
16992#endif
16993
16994
16995
16996/**
16997 @brief Process Flush AC Rsp function (called when a response
16998 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016999
17000 @param pWDICtx: pointer to the WLAN DAL context
17001 pEventData: pointer to the event information structure
17002
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 @see
17004 @return Result of the function call
17005*/
17006WDI_Status
17007WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017008(
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 WDI_ControlBlockType* pWDICtx,
17010 WDI_EventInfoType* pEventData
17011)
17012{
17013 WDI_Status wdiStatus;
17014 eHalStatus halStatus;
17015 WDI_FlushAcRspCb wdiFlushAcRspCb;
17016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17017
17018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 -------------------------------------------------------------------------*/
17021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17022 ( NULL == pEventData->pEventData))
17023 {
17024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 }
17029
17030 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17031
17032 /*-------------------------------------------------------------------------
17033 Extract response and send it to UMAC
17034 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 wpalMemoryCopy( &halStatus,
17036 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 sizeof(halStatus));
17038
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017040
17041 /*Notify UMAC*/
17042 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17043
Jeff Johnsone7245742012-09-05 17:12:55 -070017044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017045}/*WDI_ProcessFlushAcRsp*/
17046
17047/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017050
17051 @param pWDICtx: pointer to the WLAN DAL context
17052 pEventData: pointer to the event information structure
17053
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 @see
17055 @return Result of the function call
17056*/
17057WDI_Status
17058WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017059(
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 WDI_ControlBlockType* pWDICtx,
17061 WDI_EventInfoType* pEventData
17062)
17063{
17064 WDI_Status wdiStatus;
17065 eHalStatus halStatus;
17066 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17068
17069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 -------------------------------------------------------------------------*/
17072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17073 ( NULL == pEventData->pEventData))
17074 {
17075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 }
17080
17081 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17082
17083 /*-------------------------------------------------------------------------
17084 Extract response and send it to UMAC
17085 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 wpalMemoryCopy( &halStatus,
17087 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 sizeof(halStatus));
17089
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017091
17092 /*Notify UMAC*/
17093 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017096}/*WDI_ProcessBtAmpEventRsp*/
17097
17098
17099/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017102
17103 @param pWDICtx: pointer to the WLAN DAL context
17104 pEventData: pointer to the event information structure
17105
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 @see
17107 @return Result of the function call
17108*/
17109WDI_Status
17110WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017111(
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 WDI_ControlBlockType* pWDICtx,
17113 WDI_EventInfoType* pEventData
17114)
17115{
17116 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17117 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17118 tAddStaSelfRspMsg halAddStaSelfRsp;
17119 WDI_AddStaParams wdiAddSTAParam = {0};
17120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17121
17122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 -------------------------------------------------------------------------*/
17125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17126 ( NULL == pEventData->pEventData))
17127 {
17128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 }
17133
Jeff Johnsone7245742012-09-05 17:12:55 -070017134 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17136
17137 /*-------------------------------------------------------------------------
17138 Extract response and send it to UMAC
17139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017140 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17141 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017142 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17143
17144
Jeff Johnsone7245742012-09-05 17:12:55 -070017145 wdiAddSTASelfParams.wdiStatus =
17146 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017147
Jeff Johnsone7245742012-09-05 17:12:55 -070017148 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017150 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17154
17155 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17156 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17157 WDI_MAC_ADDR_LEN);
17158
17159
17160#ifdef HAL_SELF_STA_PER_BSS
17161
17162 /* At this point add the self-STA */
17163
17164 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17165 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17166 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17167
17168 //all DPU indices are the same for self STA
17169
17170 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017171 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17173 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17174 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17175 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17176 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17177
17178 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17179 WDI_MAC_ADDR_LEN);
17180
17181 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17182 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17183
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17186 {
17187 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17188 }
17189#endif
17190
17191 /*Notify UMAC*/
17192 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17193
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017195}/*WDI_ProcessAddSTASelfRsp*/
17196
17197
17198
17199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017200 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017201 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017202
17203 @param pWDICtx: pointer to the WLAN DAL context
17204 pEventData: pointer to the event information structure
17205
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 @see
17207 @return Result of the function call
17208*/
17209WDI_Status
17210WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017211(
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 WDI_ControlBlockType* pWDICtx,
17213 WDI_EventInfoType* pEventData
17214)
17215{
17216 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17217 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17218 tDelStaSelfRspParams delStaSelfRspParams;
17219 wpt_uint8 ucStaIdx;
17220
17221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17222
17223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 -------------------------------------------------------------------------*/
17226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17227 ( NULL == pEventData->pEventData))
17228 {
17229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 }
17234
17235 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17236
17237 /*-------------------------------------------------------------------------
17238 Extract response and send it to UMAC
17239 -------------------------------------------------------------------------*/
17240
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 (wpt_uint8*)pEventData->pEventData,
17243 sizeof(tDelStaSelfRspParams));
17244
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 wdiDelStaSelfRspParams.wdiStatus =
17246 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017247
Jeff Johnsone7245742012-09-05 17:12:55 -070017248 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17250 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17251 {
17252 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017253 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 delStaSelfRspParams.selfMacAddr,
17255 &ucStaIdx);
17256 if(WDI_STATUS_E_FAILURE == wdiStatus)
17257 {
17258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017259 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 }
17263 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17264 }
17265
17266 /*Notify UMAC*/
17267 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17268
17269 return WDI_STATUS_SUCCESS;
17270}
17271
Jeff Johnsone7245742012-09-05 17:12:55 -070017272#ifdef FEATURE_OEM_DATA_SUPPORT
17273/**
17274 @brief Start Oem Data Rsp function (called when a
17275 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017276
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 @param pWDICtx: pointer to the WLAN DAL context
17278 pEventData: pointer to the event information structure
17279
17280 @see
17281 @return Result of the function call
17282*/
17283#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17284
17285WDI_Status
17286WDI_ProcessStartOemDataRsp
17287(
17288 WDI_ControlBlockType* pWDICtx,
17289 WDI_EventInfoType* pEventData
17290)
17291{
17292 WDI_oemDataRspCb wdiOemDataRspCb;
17293 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17294 tStartOemDataRspParams* halStartOemDataRspParams;
17295
17296 /*-------------------------------------------------------------------------
17297 Sanity check
17298 -------------------------------------------------------------------------*/
17299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17300 ( NULL == pEventData->pEventData))
17301 {
17302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017303 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017304 WDI_ASSERT(0);
17305 return WDI_STATUS_E_FAILURE;
17306 }
17307
17308 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17309
17310 /*-------------------------------------------------------------------------
17311 Extract response and send it to UMAC
17312 -------------------------------------------------------------------------*/
17313 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17314
17315
17316 //It is the responsibility of the application code to check for failure
17317 //conditions!
17318
17319 //Allocate memory for WDI OEM DATA RSP structure
17320 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17321
17322 if(NULL == wdiOemDataRspParams)
17323 {
17324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017325 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 pWDICtx, pEventData, pEventData->pEventData);
17327 WDI_ASSERT(0);
17328 return WDI_STATUS_E_FAILURE;
17329 }
17330
17331 /* Populate WDI structure members */
17332 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17333
17334 /*Notify UMAC*/
17335 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17336
17337 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17338 wpalMemoryFree(wdiOemDataRspParams);
17339
17340 return WDI_STATUS_SUCCESS;
17341}/*WDI_PrcoessStartOemDataRsp*/
17342#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017343
17344/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017346===========================================================================*/
17347
17348/**
17349 @brief Process Channel Switch Rsp function (called when a response
17350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017351
17352 @param pWDICtx: pointer to the WLAN DAL context
17353 pEventData: pointer to the event information structure
17354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 @see
17356 @return Result of the function call
17357*/
17358WDI_Status
17359WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017360(
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ControlBlockType* pWDICtx,
17362 WDI_EventInfoType* pEventData
17363)
17364{
17365 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17366 WDI_SwitchChRspCb wdiChSwitchRspCb;
17367 tSwitchChannelRspParams halSwitchChannelRsp;
17368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17369
17370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 -------------------------------------------------------------------------*/
17373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17374 ( NULL == pEventData->pEventData))
17375 {
17376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 }
17381
17382 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17383
17384 /*-------------------------------------------------------------------------
17385 Extract response and send it to UMAC
17386 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 (wpt_uint8*)pEventData->pEventData,
17389 sizeof(halSwitchChannelRsp));
17390
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 wdiSwitchChRsp.wdiStatus =
17392 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17394
17395#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017397#endif
17398
17399 /*Notify UMAC*/
17400 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403}/*WDI_ProcessChannelSwitchRsp*/
17404
17405
17406/**
17407 @brief Process Config STA Rsp function (called when a response
17408 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017409
17410 @param pWDICtx: pointer to the WLAN DAL context
17411 pEventData: pointer to the event information structure
17412
Jeff Johnson295189b2012-06-20 16:38:30 -070017413 @see
17414 @return Result of the function call
17415*/
17416WDI_Status
17417WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017418(
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 WDI_ControlBlockType* pWDICtx,
17420 WDI_EventInfoType* pEventData
17421)
17422{
17423 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17424 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17425 WDI_AddStaParams wdiAddSTAParam;
17426
17427 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017429
Jeff Johnsone7245742012-09-05 17:12:55 -070017430 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17432
17433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 -------------------------------------------------------------------------*/
17436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17437 ( NULL == pEventData->pEventData))
17438 {
17439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 }
17444
17445 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17446
17447 /*-------------------------------------------------------------------------
17448 Extract response and send it to UMAC
17449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017450 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17451 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 sizeof(halConfigStaRsp.configStaRspParams));
17453
17454
17455 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17456 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17457 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17458 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17459 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17460
17461 /* MAC Address of STA - take from cache as it does not come back in the
17462 response*/
17463 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017465 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017466
17467 wdiCfgSTAParams.wdiStatus =
17468 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017469
17470 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17471 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17472 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17473
17474 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17475 {
17476 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17477 {
17478 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017479 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17481 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017482
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017484 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 wdiAddSTAParam.ucHTCapable =
17487 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17488 wdiAddSTAParam.ucStaType =
17489 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017490 wdiAddSTAParam.ucRmfEnabled =
17491 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017492
Jeff Johnson295189b2012-06-20 16:38:30 -070017493 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017494 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17495 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017497
17498 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17499 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17500 WDI_MAC_ADDR_LEN);
17501
17502 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17503 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17504 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017505
17506 if ( NULL == pBSSSes )
17507 {
17508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17509 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017510
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017513 }
17514
17515 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017519 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017525
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17527 }
17528 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17529 {
17530 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17531
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017538 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017540 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 halConfigStaRsp.configStaRspParams.ucUcastSig;
17546 }
17547 }
17548
17549 /*Notify UMAC*/
17550 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17551
Jeff Johnsone7245742012-09-05 17:12:55 -070017552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017553}/*WDI_ProcessConfigStaRsp*/
17554
17555
17556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017559
17560 @param pWDICtx: pointer to the WLAN DAL context
17561 pEventData: pointer to the event information structure
17562
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 @see
17564 @return Result of the function call
17565*/
17566WDI_Status
17567WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017568(
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 WDI_ControlBlockType* pWDICtx,
17570 WDI_EventInfoType* pEventData
17571)
17572{
17573 WDI_Status wdiStatus;
17574 eHalStatus halStatus;
17575 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17576
17577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017578 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17580
17581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 -------------------------------------------------------------------------*/
17584 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17585 ( NULL == pEventData->pEventData))
17586 {
17587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 }
17592
17593 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17594
17595 wpalMutexAcquire(&pWDICtx->wptMutex);
17596
17597 /*If the link is being transitioned to idle - the BSS is to be deleted
17598 - this type of ending a session is possible when UMAC has failed an
17599 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017600 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17602 {
17603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017604 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17607 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17608 &pBSSSes);
17609
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 /*-----------------------------------------------------------------------
17611 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 -----------------------------------------------------------------------*/
17614 if ( NULL == pBSSSes )
17615 {
17616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17617 "Set link response received outside association session");
17618 }
17619 else
17620 {
17621 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17622 will be del BSS coming after this to stop the beaconing & cleaning up the
17623 sessions*/
17624 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17625 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17626 {
17627 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017628 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 -----------------------------------------------------------------------*/
17630 WDI_DeleteSession(pWDICtx, pBSSSes);
17631
17632 /*-----------------------------------------------------------------------
17633 Check to see if this association is in progress - if so disable the
17634 flag as this has ended
17635 -----------------------------------------------------------------------*/
17636 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017637 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 /*Association no longer in progress */
17639 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17640 /*Association no longer in progress - prepare pending assoc for processing*/
17641 WDI_DequeueAssocRequest(pWDICtx);
17642 }
17643 }
17644 }
17645 }
17646 /* If the link state has been set to POST ASSOC, reset the "association in
17647 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017649 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17650 {
17651 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17652 WDI_DequeueAssocRequest(pWDICtx);
17653 }
17654
17655 wpalMutexRelease(&pWDICtx->wptMutex);
17656
17657 /*-------------------------------------------------------------------------
17658 Extract response and send it to UMAC
17659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017660 wpalMemoryCopy( &halStatus,
17661 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 sizeof(halStatus));
17663
Jeff Johnsone7245742012-09-05 17:12:55 -070017664 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017665
17666 /*Notify UMAC*/
17667 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17668
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017670}/*WDI_ProcessSetLinkStateRsp*/
17671
17672/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017673 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017675
17676 @param pWDICtx: pointer to the WLAN DAL context
17677 pEventData: pointer to the event information structure
17678
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 @see
17680 @return Result of the function call
17681*/
17682WDI_Status
17683WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017684(
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 WDI_ControlBlockType* pWDICtx,
17686 WDI_EventInfoType* pEventData
17687)
17688{
17689 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17690 WDI_GetStatsRspCb wdiGetStatsRspCb;
17691 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017692
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17694
17695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 -------------------------------------------------------------------------*/
17698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17699 ( NULL == pEventData->pEventData))
17700 {
17701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 }
17706
17707 /*-------------------------------------------------------------------------
17708 Extract response and send it to UMAC
17709 -------------------------------------------------------------------------*/
17710 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17711
17712 /*allocate the stats response buffer */
17713 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17714 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17715 + sizeof(WDI_GetStatsRspParamsType));
17716
17717 if(NULL == wdiGetStatsRsp)
17718 {
17719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017720 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017721 pWDICtx, pEventData, pEventData->pEventData);
17722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017724 }
17725
17726 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17727
17728 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17729 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17730 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17731 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17732 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17733 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17734
17735 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17736 wpalMemoryCopy(wdiGetStatsRsp + 1,
17737 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17738 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17739
17740 /*Notify UMAC*/
17741 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17742
17743 wpalMemoryFree(wdiGetStatsRsp);
17744
Jeff Johnsone7245742012-09-05 17:12:55 -070017745 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017746}/*WDI_ProcessGetStatsRsp*/
17747
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080017748#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17749/**
17750 @brief Process Get Roam Rssi Rsp function (called when a response is
17751 being received over the bus from HAL)
17752
17753 @param pWDICtx: pointer to the WLAN DAL context
17754 pEventData: pointer to the event information structure
17755
17756 @see
17757 @return Result of the function call
17758*/
17759WDI_Status
17760WDI_ProcessGetRoamRssiRsp
17761(
17762 WDI_ControlBlockType* pWDICtx,
17763 WDI_EventInfoType* pEventData
17764)
17765{
17766 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17767 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17768 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17770
17771 /*-------------------------------------------------------------------------
17772 Sanity check
17773 -------------------------------------------------------------------------*/
17774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17775 ( NULL == pEventData->pEventData))
17776 {
17777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17778 "%s: Invalid parameters", __func__);
17779 WDI_ASSERT(0);
17780 return WDI_STATUS_E_FAILURE;
17781 }
17782
17783 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17784 if(NULL == wdiGetRoamRssiRspCb)
17785 {
17786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17787 "%s: call back function is NULL", __func__);
17788 WDI_ASSERT(0);
17789 return WDI_STATUS_E_FAILURE;
17790 }
17791
17792 /*-------------------------------------------------------------------------
17793 Extract response and send it to UMAC
17794 -------------------------------------------------------------------------*/
17795 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17796 pEventData->pEventData,
17797 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17798
17799 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17800 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17801 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17802
17803 /*Notify UMAC*/
17804 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17805
17806 return WDI_STATUS_SUCCESS;
17807}/*WDI_ProcessGetRoamRssiRsp*/
17808#endif
17809
Jeff Johnson295189b2012-06-20 16:38:30 -070017810
17811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017812 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017814
17815 @param pWDICtx: pointer to the WLAN DAL context
17816 pEventData: pointer to the event information structure
17817
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 @see
17819 @return Result of the function call
17820*/
17821WDI_Status
17822WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017823(
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 WDI_ControlBlockType* pWDICtx,
17825 WDI_EventInfoType* pEventData
17826)
17827{
17828 WDI_Status wdiStatus;
17829 eHalStatus halStatus;
17830 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17832
17833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 -------------------------------------------------------------------------*/
17836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17837 ( NULL == pEventData->pEventData))
17838 {
17839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 }
17844
17845 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17846
17847 /*-------------------------------------------------------------------------
17848 Extract response and send it to UMAC
17849 -------------------------------------------------------------------------*/
17850 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017852
17853 /*Notify UMAC*/
17854 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17855
Jeff Johnsone7245742012-09-05 17:12:55 -070017856 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017857}/*WDI_ProcessUpdateCfgRsp*/
17858
17859
17860
17861/**
17862 @brief Process Add BA Rsp function (called when a response
17863 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017864
17865 @param pWDICtx: pointer to the WLAN DAL context
17866 pEventData: pointer to the event information structure
17867
Jeff Johnson295189b2012-06-20 16:38:30 -070017868 @see
17869 @return Result of the function call
17870*/
17871WDI_Status
17872WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017873(
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 WDI_ControlBlockType* pWDICtx,
17875 WDI_EventInfoType* pEventData
17876)
17877{
17878 WDI_AddBARspCb wdiAddBARspCb;
17879
17880 tAddBARspParams halAddBARsp;
17881 WDI_AddBARspinfoType wdiAddBARsp;
17882
17883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17884
17885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 -------------------------------------------------------------------------*/
17888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17889 ( NULL == pEventData->pEventData))
17890 {
17891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 }
17896
17897 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17898
17899 /*-------------------------------------------------------------------------
17900 Extract response and send it to UMAC
17901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 wpalMemoryCopy( &halAddBARsp,
17903 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 sizeof(halAddBARsp));
17905
17906 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17907
Jeff Johnson43971f52012-07-17 12:26:56 -070017908 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 {
17910 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17911 }
17912
17913 /*Notify UMAC*/
17914 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17915
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017917}/*WDI_ProcessAddSessionBARsp*/
17918
17919/**
17920 @brief Process Add BA Rsp function (called when a response
17921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017922
17923 @param pWDICtx: pointer to the WLAN DAL context
17924 pEventData: pointer to the event information structure
17925
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 @see
17927 @return Result of the function call
17928*/
17929WDI_Status
17930WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017931(
Jeff Johnson295189b2012-06-20 16:38:30 -070017932 WDI_ControlBlockType* pWDICtx,
17933 WDI_EventInfoType* pEventData
17934)
17935{
17936 WDI_TriggerBARspCb wdiTriggerBARspCb;
17937
17938 tTriggerBARspParams* halTriggerBARsp;
17939 tTriggerBaRspCandidate* halBaCandidate;
17940 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17941 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17942 wpt_uint16 index;
17943 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017944 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17946
17947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017949 -------------------------------------------------------------------------*/
17950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17951 ( NULL == pEventData->pEventData))
17952 {
17953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 }
17958
17959 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17960
17961 /*-------------------------------------------------------------------------
17962 Extract response and send it to UMAC
17963 -------------------------------------------------------------------------*/
17964 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17965
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017966 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17967
17968 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17969 {
17970 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017971 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017972 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017973
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017974 if(NULL == wdiTriggerBARsp)
17975 {
17976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017977 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017978 pWDICtx, pEventData, pEventData->pEventData);
17979 WDI_ASSERT(0);
17980 return WDI_STATUS_E_FAILURE;
17981 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017982
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017983 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17984
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017986 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17988
17989 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17990 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17991
17992 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17993 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017994 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17996 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17997 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017998 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017999 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18002 }
18003 wdiTriggerBARspCandidate++;
18004 halBaCandidate++;
18005 }
18006 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018007 else
18008 {
18009 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18010
18011 if(NULL == wdiTriggerBARsp)
18012 {
18013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018014 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018015 pWDICtx, pEventData, pEventData->pEventData);
18016 WDI_ASSERT(0);
18017 return WDI_STATUS_E_FAILURE;
18018 }
18019
18020 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18021
18022 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018023
18024 /*Notify UMAC*/
18025 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18026
18027 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018029}/*WDI_ProcessAddSessionBARsp*/
18030
18031/**
18032 @brief Process Update Beacon Params Rsp function (called when a response
18033 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018034
18035 @param pWDICtx: pointer to the WLAN DAL context
18036 pEventData: pointer to the event information structure
18037
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 @see
18039 @return Result of the function call
18040*/
18041WDI_Status
18042WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018043(
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDI_ControlBlockType* pWDICtx,
18045 WDI_EventInfoType* pEventData
18046)
18047{
18048 WDI_Status wdiStatus;
18049 eHalStatus halStatus;
18050 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18052
18053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 -------------------------------------------------------------------------*/
18056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18057 ( NULL == pEventData->pEventData))
18058 {
18059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 }
18064
18065 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18066
18067 /*-------------------------------------------------------------------------
18068 Extract response and send it to UMAC
18069 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018070 wpalMemoryCopy( &halStatus,
18071 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 sizeof(halStatus));
18073
Jeff Johnsone7245742012-09-05 17:12:55 -070018074 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018075
18076 /*Notify UMAC*/
18077 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18078
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018080}/*WDI_ProcessUpdateBeaconParamsRsp*/
18081
18082/**
18083 @brief Process Send Beacon template Rsp function (called when a response
18084 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018085
18086 @param pWDICtx: pointer to the WLAN DAL context
18087 pEventData: pointer to the event information structure
18088
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 @see
18090 @return Result of the function call
18091*/
18092WDI_Status
18093WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018094(
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 WDI_ControlBlockType* pWDICtx,
18096 WDI_EventInfoType* pEventData
18097)
18098{
18099 WDI_Status wdiStatus;
18100 eHalStatus halStatus;
18101 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18103
18104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 -------------------------------------------------------------------------*/
18107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18108 ( NULL == pEventData->pEventData))
18109 {
18110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 }
18115
18116 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18117
18118 /*-------------------------------------------------------------------------
18119 Extract response and send it to UMAC
18120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 wpalMemoryCopy( &halStatus,
18122 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018123 sizeof(halStatus));
18124
Jeff Johnsone7245742012-09-05 17:12:55 -070018125 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018126
18127 /*Notify UMAC*/
18128 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18129
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018131}/*WDI_ProcessSendBeaconParamsRsp*/
18132
Jeff Johnsone7245742012-09-05 17:12:55 -070018133
Jeff Johnson295189b2012-06-20 16:38:30 -070018134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018135 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018136 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018137
18138 @param pWDICtx: pointer to the WLAN DAL context
18139 pEventData: pointer to the event information structure
18140
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 @see
18142 @return Result of the function call
18143*/
18144WDI_Status
18145WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018146(
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 WDI_ControlBlockType* pWDICtx,
18148 WDI_EventInfoType* pEventData
18149)
18150{
18151 WDI_Status wdiStatus;
18152 eHalStatus halStatus;
18153 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18155
18156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 -------------------------------------------------------------------------*/
18159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18160 ( NULL == pEventData->pEventData))
18161 {
18162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 }
18167
18168 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18169
18170 /*-------------------------------------------------------------------------
18171 Extract response and send it to UMAC
18172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018173 wpalMemoryCopy( &halStatus,
18174 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 sizeof(halStatus));
18176
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178
18179 /*Notify UMAC*/
18180 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18181
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18184
18185 /**
18186 @brief Process Set Max Tx Power Rsp function (called when a response
18187 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018188
18189 @param pWDICtx: pointer to the WLAN DAL context
18190 pEventData: pointer to the event information structure
18191
Jeff Johnson295189b2012-06-20 16:38:30 -070018192 @see
18193 @return Result of the function call
18194*/
18195WDI_Status
18196WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018197(
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 WDI_ControlBlockType* pWDICtx,
18199 WDI_EventInfoType* pEventData
18200)
18201{
18202 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018203
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018205
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18208
18209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018211 -------------------------------------------------------------------------*/
18212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18213 ( NULL == pEventData->pEventData))
18214 {
18215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 }
18220
18221 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18222
18223 /*-------------------------------------------------------------------------
18224 Extract response and send it to UMAC
18225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18227 pEventData->pEventData,
18228 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018229
18230 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18231 {
18232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18233 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 }
18236
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018240
18241 /*Notify UMAC*/
18242 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18243
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018245}
18246
schang86c22c42013-03-13 18:41:24 -070018247 /**
18248 @brief Process Set Tx Power Rsp function (called when a response
18249 is being received over the bus from HAL)
18250
18251 @param pWDICtx: pointer to the WLAN DAL context
18252 pEventData: pointer to the event information structure
18253
18254 @see
18255 @return Result of the function call
18256*/
18257WDI_Status
18258WDI_ProcessSetTxPowerRsp
18259(
18260 WDI_ControlBlockType* pWDICtx,
18261 WDI_EventInfoType* pEventData
18262)
18263{
18264 tSetTxPwrRspMsg halTxpowerrsp;
18265 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18266 WDA_SetTxPowerRspCb wdiReqStatusCb;
18267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18268
18269 /*-------------------------------------------------------------------------
18270 Sanity check
18271 -------------------------------------------------------------------------*/
18272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18273 ( NULL == pEventData->pEventData))
18274 {
18275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18276 "%s: Invalid parameters", __func__);
18277 WDI_ASSERT(0);
18278 return WDI_STATUS_E_FAILURE;
18279 }
18280
18281 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18282
18283 /*-------------------------------------------------------------------------
18284 Extract response and send it to UMAC
18285 -------------------------------------------------------------------------*/
18286 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18287 pEventData->pEventData,
18288 sizeof(halTxpowerrsp.setTxPwrRspParams));
18289
18290 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18291 {
18292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18293 "Error status returned in Set Tx Power Response ");
18294 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18295 return WDI_STATUS_E_FAILURE;
18296 }
18297
18298 wdiSetTxPowerRspMsg.wdiStatus =
18299 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18300
18301 /*Notify UMAC*/
18302 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18303
18304 return WDI_STATUS_SUCCESS;
18305}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018306
18307/**
18308 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18309 is being received over the bus from HAL)
18310
18311 @param pWDICtx: pointer to the WLAN DAL context
18312 pEventData: pointer to the event information structure
18313
18314 @see
18315 @return Result of the function call
18316*/
18317WDI_Status
18318WDI_ProcessSetMaxTxPowerPerBandRsp
18319(
18320 WDI_ControlBlockType* pWDICtx,
18321 WDI_EventInfoType* pEventData
18322)
18323{
18324 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18325 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18326 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18328
18329 /*-------------------------------------------------------------------------
18330 Sanity check
18331 -------------------------------------------------------------------------*/
18332 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18333 ( NULL == pEventData->pEventData))
18334 {
18335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18336 "%s: Invalid parameters", __func__);
18337 WDI_ASSERT(0);
18338 return WDI_STATUS_E_FAILURE;
18339 }
18340
18341 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18342
18343 /*-------------------------------------------------------------------------
18344 Extract response and send it to UMAC
18345 -------------------------------------------------------------------------*/
18346 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18347 pEventData->pEventData,
18348 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18349
18350 if (eHAL_STATUS_SUCCESS !=
18351 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18352 {
18353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18354 "Error status returned in Set Max Tx Power Per Band Response");
18355 return WDI_STATUS_E_FAILURE;
18356 }
18357
18358 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18359 WDI_HAL_2_WDI_STATUS(
18360 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18361
18362 /* Notify UMAC */
18363 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18364
18365 return WDI_STATUS_SUCCESS;
18366}
18367
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018368#ifdef FEATURE_WLAN_TDLS
18369/**
18370 @brief Process TDLS Link Establish Rsp function (called
18371 when a response is being received over the bus from HAL)
18372
18373 @param pWDICtx: pointer to the WLAN DAL context
18374 pEventData: pointer to the event information structure
18375
18376 @see
18377 @return Result of the function call
18378*/
18379WDI_Status
18380WDI_ProcessLinkEstablishReqRsp
18381(
18382 WDI_ControlBlockType* pWDICtx,
18383 WDI_EventInfoType* pEventData
18384)
18385{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018386 eHalStatus halStatus;
18387 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018388 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18389 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18390
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18392
18393 /*-------------------------------------------------------------------------
18394 Sanity check
18395 -------------------------------------------------------------------------*/
18396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18397 ( NULL == pEventData->pEventData))
18398 {
18399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18400 "%s: Invalid parameters", __func__);
18401 WDI_ASSERT(0);
18402 return WDI_STATUS_E_FAILURE;
18403 }
18404
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018405 /*-------------------------------------------------------------------------
18406 Extract indication and send it to UMAC
18407 -------------------------------------------------------------------------*/
18408 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18409 pEventData->pEventData,
18410 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18411
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018412 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18413
18414 /*-------------------------------------------------------------------------
18415 Extract response and send it to UMAC
18416 -------------------------------------------------------------------------*/
18417 wpalMemoryCopy( &halStatus,
18418 pEventData->pEventData,
18419 sizeof(halStatus));
18420
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018421 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18422 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018423
18424 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018425 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018426
18427 return WDI_STATUS_SUCCESS;
18428}/*WDI_ProcessLinkEstablishReqRsp*/
18429#endif
schang86c22c42013-03-13 18:41:24 -070018430
Jeff Johnson295189b2012-06-20 16:38:30 -070018431/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018432 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018433 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018434
18435 @param pWDICtx: pointer to the WLAN DAL context
18436 pEventData: pointer to the event information structure
18437
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 @see
18439 @return Result of the function call
18440*/
18441WDI_Status
18442WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018443(
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 WDI_ControlBlockType* pWDICtx,
18445 WDI_EventInfoType* pEventData
18446)
18447{
18448 WDI_Status wdiStatus;
18449 eHalStatus halStatus;
18450 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18452
18453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 -------------------------------------------------------------------------*/
18456 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18457 ( NULL == pEventData->pEventData))
18458 {
18459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 }
18464
18465 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18466
18467 /*-------------------------------------------------------------------------
18468 Extract response and send it to UMAC
18469 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 wpalMemoryCopy( &halStatus,
18471 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018472 sizeof(halStatus));
18473
Jeff Johnsone7245742012-09-05 17:12:55 -070018474 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018475
18476 /*Notify UMAC*/
18477 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18478
Jeff Johnsone7245742012-09-05 17:12:55 -070018479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018480}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018482 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018483 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018484
18485 @param pWDICtx: pointer to the WLAN DAL context
18486 pEventData: pointer to the event information structure
18487
Jeff Johnson295189b2012-06-20 16:38:30 -070018488 @see
18489 @return Result of the function call
18490*/
18491WDI_Status
18492WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018493(
Jeff Johnson295189b2012-06-20 16:38:30 -070018494 WDI_ControlBlockType* pWDICtx,
18495 WDI_EventInfoType* pEventData
18496)
18497{
18498 WDI_Status wdiStatus;
18499 eHalStatus halStatus;
18500 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018501 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18503
18504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 -------------------------------------------------------------------------*/
18507 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18508 ( NULL == pEventData->pEventData))
18509 {
18510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 }
18515
18516 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18517
18518 /*-------------------------------------------------------------------------
18519 Extract response and send it to UMAC
18520 -------------------------------------------------------------------------*/
18521 halStatus = *((eHalStatus*)pEventData->pEventData);
18522
Jeff Johnsone7245742012-09-05 17:12:55 -070018523 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018524
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018525 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18526 * Other module states are taken care by PMC.
18527 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18528 */
18529 if (wdiStatus != WDI_STATUS_SUCCESS) {
18530
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18532 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18533 halStatus);
18534 /* Call Back is not required as we are putting the DXE in FULL
18535 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018536 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18537
18538 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018540 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080018541 WDI_ASSERT(0);
18542 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018543 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 /*Notify UMAC*/
18545 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18546
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018548}/*WDI_ProcessEnterImpsRsp*/
18549
18550/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018551 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018552 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018553
18554 @param pWDICtx: pointer to the WLAN DAL context
18555 pEventData: pointer to the event information structure
18556
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 @see
18558 @return Result of the function call
18559*/
18560WDI_Status
18561WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018562(
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 WDI_ControlBlockType* pWDICtx,
18564 WDI_EventInfoType* pEventData
18565)
18566{
18567 WDI_Status wdiStatus;
18568 eHalStatus halStatus;
18569 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018570 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18572
18573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018575 -------------------------------------------------------------------------*/
18576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18577 ( NULL == pEventData->pEventData))
18578 {
18579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 }
18584
18585 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18586
18587 /*-------------------------------------------------------------------------
18588 Extract response and send it to UMAC
18589 -------------------------------------------------------------------------*/
18590 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018591 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018592
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053018593 if (halStatus != eHAL_STATUS_SUCCESS)
18594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18595 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18596
Jeff Johnson295189b2012-06-20 16:38:30 -070018597 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018598 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18599 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18600 {
18601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018602 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080018603 WDI_ASSERT(0);
18604 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 /*Notify UMAC*/
18606 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18607
Jeff Johnsone7245742012-09-05 17:12:55 -070018608 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018609}/*WDI_ProcessExitImpsRsp*/
18610
18611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018612 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018613 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018614
18615 @param pWDICtx: pointer to the WLAN DAL context
18616 pEventData: pointer to the event information structure
18617
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 @see
18619 @return Result of the function call
18620*/
18621WDI_Status
18622WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018623(
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 WDI_ControlBlockType* pWDICtx,
18625 WDI_EventInfoType* pEventData
18626)
18627{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018628 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18629 tHalEnterBmpsRspParams halEnterBmpsRsp;
18630 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18631 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080018632 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18634
18635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 -------------------------------------------------------------------------*/
18638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18639 ( NULL == pEventData->pEventData))
18640 {
18641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 }
18646
Jeff Johnson295189b2012-06-20 16:38:30 -070018647 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018648 Extract response and send it to UMAC
18649 -------------------------------------------------------------------------*/
18650 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18651 {
18652 wpalMemoryCopy( &halEnterBmpsRsp,
18653 pEventData->pEventData,
18654 sizeof(halEnterBmpsRsp));
18655
18656 //Used to print debug message
18657 halStatus = halEnterBmpsRsp.status;
18658 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18659 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18660 }
18661 else
18662 {
18663 halStatus = *((eHalStatus*)pEventData->pEventData);
18664 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18665 }
18666
18667 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018668
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018669 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18670 * Other module states are taken care by PMC.
18671 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18672 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018673 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18674 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018675
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018677 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18678 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018679 /* Call Back is not required as we are putting the DXE in FULL
18680 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018681 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18682 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18683 {
18684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018685 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080018686 WDI_ASSERT(0);
18687 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018688 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018689 }
18690
Jeff Johnson295189b2012-06-20 16:38:30 -070018691 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018692 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018693
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018695}/*WDI_ProcessEnterBmpsRsp*/
18696
18697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018698 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018699 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018700
18701 @param pWDICtx: pointer to the WLAN DAL context
18702 pEventData: pointer to the event information structure
18703
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 @see
18705 @return Result of the function call
18706*/
18707WDI_Status
18708WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018709(
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 WDI_ControlBlockType* pWDICtx,
18711 WDI_EventInfoType* pEventData
18712)
18713{
Jeff Johnson295189b2012-06-20 16:38:30 -070018714 eHalStatus halStatus;
18715 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018716 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080018717 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18718 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18720
18721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 -------------------------------------------------------------------------*/
18724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18725 ( NULL == pEventData->pEventData))
18726 {
18727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 }
18732
18733 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18734
18735 /*-------------------------------------------------------------------------
18736 Extract response and send it to UMAC
18737 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018738
18739 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18740 {
18741 wpalMemoryCopy( &halExitBmpsRsp,
18742 pEventData->pEventData,
18743 sizeof(halExitBmpsRsp));
18744
18745 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18746 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18747 }
18748 else
18749 {
18750 halStatus = *((eHalStatus*)pEventData->pEventData);
18751 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18752 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018753
18754 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018755 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18756 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18757 {
18758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018759 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080018760 WDI_ASSERT(0);
18761 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18763
18764 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018765 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018766
Jeff Johnsone7245742012-09-05 17:12:55 -070018767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018768}/*WDI_ProcessExitBmpsRsp*/
18769
18770/**
18771 @brief Process Enter UAPSD Rsp function (called when a response
18772 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018773
18774 @param pWDICtx: pointer to the WLAN DAL context
18775 pEventData: pointer to the event information structure
18776
Jeff Johnson295189b2012-06-20 16:38:30 -070018777 @see
18778 @return Result of the function call
18779*/
18780WDI_Status
18781WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018782(
Jeff Johnson295189b2012-06-20 16:38:30 -070018783 WDI_ControlBlockType* pWDICtx,
18784 WDI_EventInfoType* pEventData
18785)
18786{
Jeff Johnson295189b2012-06-20 16:38:30 -070018787 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018788 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018790 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18791
Jeff Johnson295189b2012-06-20 16:38:30 -070018792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18793
18794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 -------------------------------------------------------------------------*/
18797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18798 ( NULL == pEventData->pEventData))
18799 {
18800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 }
18805
18806 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18807
18808 /*-------------------------------------------------------------------------
18809 Extract response and send it to UMAC
18810 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018811 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18812 {
18813 wpalMemoryCopy( &halEnterUapsdRsp,
18814 pEventData->pEventData,
18815 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018816
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018817 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18818 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18819 }
18820 else
18821 {
18822 halStatus = *((eHalStatus*)pEventData->pEventData);
18823 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18824 }
18825
18826 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018827 {
18828 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18829 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18830 // the traffic to decide when to suspend the trigger frames when there is no traffic
18831 // activity on the trigger enabled ACs
18832 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18833
18834#ifdef WLAN_PERF
18835 // Increment the BD signature to refresh the fast path BD utilization
18836 pWDICtx->uBdSigSerialNum++;
18837#endif
18838 }
18839
18840 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018841 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018842
Jeff Johnsone7245742012-09-05 17:12:55 -070018843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018844}/*WDI_ProcessEnterUapsdRsp*/
18845
18846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018847 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018849
18850 @param pWDICtx: pointer to the WLAN DAL context
18851 pEventData: pointer to the event information structure
18852
Jeff Johnson295189b2012-06-20 16:38:30 -070018853 @see
18854 @return Result of the function call
18855*/
18856WDI_Status
18857WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018858(
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 WDI_ControlBlockType* pWDICtx,
18860 WDI_EventInfoType* pEventData
18861)
18862{
Jeff Johnson295189b2012-06-20 16:38:30 -070018863 eHalStatus halStatus;
18864 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018865 tHalExitUapsdRspParams halExitUapsdRsp;
18866 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18868
18869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 -------------------------------------------------------------------------*/
18872 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18873 ( NULL == pEventData->pEventData))
18874 {
18875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 }
18880
18881 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18882
18883 /*-------------------------------------------------------------------------
18884 Extract response and send it to UMAC
18885 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018886 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18887 {
18888 wpalMemoryCopy( &halExitUapsdRsp,
18889 pEventData->pEventData,
18890 sizeof(halExitUapsdRsp));
18891
18892 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18893 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18894 }
18895 else
18896 {
18897 halStatus = *((eHalStatus*)pEventData->pEventData);
18898 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18899 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18901 // directly instead of the FW WQ.
18902 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18903
18904#ifdef WLAN_PERF
18905 // Increment the BD signature to refresh the fast path BD utilization
18906 pWDICtx->uBdSigSerialNum++;
18907#endif
18908
18909 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018910 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018911
Jeff Johnsone7245742012-09-05 17:12:55 -070018912 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018913}/*WDI_ProcessExitUapsdRsp*/
18914
18915/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018916 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018918
18919 @param pWDICtx: pointer to the WLAN DAL context
18920 pEventData: pointer to the event information structure
18921
Jeff Johnson295189b2012-06-20 16:38:30 -070018922 @see
18923 @return Result of the function call
18924*/
18925WDI_Status
18926WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018927(
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 WDI_ControlBlockType* pWDICtx,
18929 WDI_EventInfoType* pEventData
18930)
18931{
18932 WDI_Status wdiStatus;
18933 eHalStatus halStatus;
18934 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18936
18937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 -------------------------------------------------------------------------*/
18940 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18941 ( NULL == pEventData->pEventData))
18942 {
18943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018947 }
18948
18949 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18950
18951 /*-------------------------------------------------------------------------
18952 Extract response and send it to UMAC
18953 -------------------------------------------------------------------------*/
18954 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018956
18957 /*Notify UMAC*/
18958 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18959
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018961}/*WDI_ProcessSetUapsdAcParamsRsp*/
18962
18963/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018966
18967 @param pWDICtx: pointer to the WLAN DAL context
18968 pEventData: pointer to the event information structure
18969
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 @see
18971 @return Result of the function call
18972*/
18973WDI_Status
18974WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018975(
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 WDI_ControlBlockType* pWDICtx,
18977 WDI_EventInfoType* pEventData
18978)
18979{
18980 WDI_Status wdiStatus;
18981 eHalStatus halStatus;
18982 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18984
18985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 -------------------------------------------------------------------------*/
18988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18989 ( NULL == pEventData->pEventData))
18990 {
18991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018995 }
18996
18997 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18998
18999 /*-------------------------------------------------------------------------
19000 Extract response and send it to UMAC
19001 -------------------------------------------------------------------------*/
19002 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019004
19005 /*Notify UMAC*/
19006 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19007
Jeff Johnsone7245742012-09-05 17:12:55 -070019008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019009}/*WDI_ProcessUpdateUapsdParamsRsp*/
19010
19011/**
19012 @brief Process Configure RXP filter Rsp function (called when a
19013 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019014
19015 @param pWDICtx: pointer to the WLAN DAL context
19016 pEventData: pointer to the event information structure
19017
Jeff Johnson295189b2012-06-20 16:38:30 -070019018 @see
19019 @return Result of the function call
19020*/
19021WDI_Status
19022WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019023(
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 WDI_ControlBlockType* pWDICtx,
19025 WDI_EventInfoType* pEventData
19026)
19027{
19028 WDI_Status wdiStatus;
19029 eHalStatus halStatus;
19030 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19032
19033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019035 -------------------------------------------------------------------------*/
19036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19037 ( NULL == pEventData->pEventData))
19038 {
19039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019043 }
19044
19045 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19046
19047 /*-------------------------------------------------------------------------
19048 Extract response and send it to UMAC
19049 -------------------------------------------------------------------------*/
19050 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019052
19053 /*Notify UMAC*/
19054 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19055
Jeff Johnsone7245742012-09-05 17:12:55 -070019056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019057}/*WDI_ProcessConfigureRxpFilterRsp*/
19058
19059/**
19060 @brief Process Set beacon filter Rsp function (called when a
19061 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019062
19063 @param pWDICtx: pointer to the WLAN DAL context
19064 pEventData: pointer to the event information structure
19065
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 @see
19067 @return Result of the function call
19068*/
19069WDI_Status
19070WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019071(
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 WDI_ControlBlockType* pWDICtx,
19073 WDI_EventInfoType* pEventData
19074)
19075{
19076 WDI_Status wdiStatus;
19077 eHalStatus halStatus;
19078 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19080
19081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019083 -------------------------------------------------------------------------*/
19084 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19085 ( NULL == pEventData->pEventData))
19086 {
19087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019091 }
19092
19093 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19094
19095 /*-------------------------------------------------------------------------
19096 Extract response and send it to UMAC
19097 -------------------------------------------------------------------------*/
19098 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019099 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019100
19101 /*Notify UMAC*/
19102 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19103
Jeff Johnsone7245742012-09-05 17:12:55 -070019104 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019105}/*WDI_ProcessSetBeaconFilterRsp*/
19106
19107/**
19108 @brief Process remove beacon filter Rsp function (called when a
19109 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019110
19111 @param pWDICtx: pointer to the WLAN DAL context
19112 pEventData: pointer to the event information structure
19113
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 @see
19115 @return Result of the function call
19116*/
19117WDI_Status
19118WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019119(
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 WDI_ControlBlockType* pWDICtx,
19121 WDI_EventInfoType* pEventData
19122)
19123{
19124 WDI_Status wdiStatus;
19125 eHalStatus halStatus;
19126 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19128
19129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019131 -------------------------------------------------------------------------*/
19132 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19133 ( NULL == pEventData->pEventData))
19134 {
19135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 }
19140
19141 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19142
19143 /*-------------------------------------------------------------------------
19144 Extract response and send it to UMAC
19145 -------------------------------------------------------------------------*/
19146 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019147 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019148
19149 /*Notify UMAC*/
19150 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19151
Jeff Johnsone7245742012-09-05 17:12:55 -070019152 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019153}/*WDI_ProcessRemBeaconFilterRsp*/
19154
19155/**
19156 @brief Process set RSSI thresholds Rsp function (called when a
19157 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019158
19159 @param pWDICtx: pointer to the WLAN DAL context
19160 pEventData: pointer to the event information structure
19161
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 @see
19163 @return Result of the function call
19164*/
19165WDI_Status
19166WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019167(
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 WDI_ControlBlockType* pWDICtx,
19169 WDI_EventInfoType* pEventData
19170)
19171{
19172 WDI_Status wdiStatus;
19173 eHalStatus halStatus;
19174 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19176
19177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019179 -------------------------------------------------------------------------*/
19180 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19181 ( NULL == pEventData->pEventData))
19182 {
19183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019187 }
19188
19189 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19190
19191 /*-------------------------------------------------------------------------
19192 Extract response and send it to UMAC
19193 -------------------------------------------------------------------------*/
19194 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019195 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019196
19197 /*Notify UMAC*/
19198 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19199
Jeff Johnsone7245742012-09-05 17:12:55 -070019200 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019201}/*WDI_ProcessSetRSSIThresoldsRsp*/
19202
19203/**
19204 @brief Process host offload Rsp function (called when a
19205 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019206
19207 @param pWDICtx: pointer to the WLAN DAL context
19208 pEventData: pointer to the event information structure
19209
Jeff Johnson295189b2012-06-20 16:38:30 -070019210 @see
19211 @return Result of the function call
19212*/
19213WDI_Status
19214WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019215(
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 WDI_ControlBlockType* pWDICtx,
19217 WDI_EventInfoType* pEventData
19218)
19219{
19220 WDI_Status wdiStatus;
19221 eHalStatus halStatus;
19222 WDI_HostOffloadCb wdiHostOffloadCb;
19223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19224
19225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 -------------------------------------------------------------------------*/
19228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19229 ( NULL == pEventData->pEventData))
19230 {
19231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019235 }
19236
19237 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19238
19239 /*-------------------------------------------------------------------------
19240 Extract response and send it to UMAC
19241 -------------------------------------------------------------------------*/
19242 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019243 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019244
19245 /*Notify UMAC*/
19246 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19247
Jeff Johnsone7245742012-09-05 17:12:55 -070019248 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019249}/*WDI_ProcessHostOffloadRsp*/
19250
19251/**
19252 @brief Process keep alive Rsp function (called when a
19253 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019254
19255 @param pWDICtx: pointer to the WLAN DAL context
19256 pEventData: pointer to the event information structure
19257
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 @see
19259 @return Result of the function call
19260*/
19261WDI_Status
19262WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019263(
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 WDI_ControlBlockType* pWDICtx,
19265 WDI_EventInfoType* pEventData
19266)
19267{
19268 WDI_Status wdiStatus;
19269 eHalStatus halStatus;
19270 WDI_KeepAliveCb wdiKeepAliveCb;
19271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19273 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19274
19275
19276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019278 -------------------------------------------------------------------------*/
19279 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19280 ( NULL == pEventData->pEventData))
19281 {
19282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 }
19287
Jeff Johnsone7245742012-09-05 17:12:55 -070019288 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19289
Jeff Johnson295189b2012-06-20 16:38:30 -070019290 /*-------------------------------------------------------------------------
19291 Extract response and send it to UMAC
19292 -------------------------------------------------------------------------*/
19293 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019294 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019295
19296 /*Notify UMAC*/
19297 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19298
Jeff Johnsone7245742012-09-05 17:12:55 -070019299 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019300}/*WDI_ProcessKeepAliveRsp*/
19301
19302/**
19303 @brief Process wowl add ptrn Rsp function (called when a
19304 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019305
19306 @param pWDICtx: pointer to the WLAN DAL context
19307 pEventData: pointer to the event information structure
19308
Jeff Johnson295189b2012-06-20 16:38:30 -070019309 @see
19310 @return Result of the function call
19311*/
19312WDI_Status
19313WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019314(
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 WDI_ControlBlockType* pWDICtx,
19316 WDI_EventInfoType* pEventData
19317)
19318{
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 eHalStatus halStatus;
19320 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019321 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19322 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19323
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19325
19326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 -------------------------------------------------------------------------*/
19329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19330 ( NULL == pEventData->pEventData))
19331 {
19332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 }
19337
19338 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19339
19340 /*-------------------------------------------------------------------------
19341 Extract response and send it to UMAC
19342 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019343 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19344 {
19345 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19346 pEventData->pEventData,
19347 sizeof(halAddWowlBcastPtrRsp));
19348
19349 wdiWowlAddBcPtrRsp.wdiStatus =
19350 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19351 }
19352 else
19353 {
19354 halStatus = *((eHalStatus*)pEventData->pEventData);
19355 wdiWowlAddBcPtrRsp.wdiStatus =
19356 WDI_HAL_2_WDI_STATUS(halStatus);
19357 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019358
19359 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019360 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019361
Jeff Johnsone7245742012-09-05 17:12:55 -070019362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019363}/*WDI_ProcessWowlAddBcPtrnRsp*/
19364
19365/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019366 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019367 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019368
19369 @param pWDICtx: pointer to the WLAN DAL context
19370 pEventData: pointer to the event information structure
19371
Jeff Johnson295189b2012-06-20 16:38:30 -070019372 @see
19373 @return Result of the function call
19374*/
19375WDI_Status
19376WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019377(
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 WDI_ControlBlockType* pWDICtx,
19379 WDI_EventInfoType* pEventData
19380)
19381{
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 eHalStatus halStatus;
19383 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019384 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19385 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19387
19388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 -------------------------------------------------------------------------*/
19391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19392 ( NULL == pEventData->pEventData))
19393 {
19394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 }
19399
19400 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19401
19402 /*-------------------------------------------------------------------------
19403 Extract response and send it to UMAC
19404 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019405 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19406 {
19407 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19408 pEventData->pEventData,
19409 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019410
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019411 wdiWowlDelBcstPtrRsp.wdiStatus =
19412 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19413 }
19414 else
19415 {
19416 halStatus = *((eHalStatus*)pEventData->pEventData);
19417 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19418 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019419 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019420 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019421
Jeff Johnsone7245742012-09-05 17:12:55 -070019422 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019423}/*WDI_ProcessWowlDelBcPtrnRsp*/
19424
19425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019426 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019428
19429 @param pWDICtx: pointer to the WLAN DAL context
19430 pEventData: pointer to the event information structure
19431
Jeff Johnson295189b2012-06-20 16:38:30 -070019432 @see
19433 @return Result of the function call
19434*/
19435WDI_Status
19436WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019437(
Jeff Johnson295189b2012-06-20 16:38:30 -070019438 WDI_ControlBlockType* pWDICtx,
19439 WDI_EventInfoType* pEventData
19440)
19441{
Jeff Johnson295189b2012-06-20 16:38:30 -070019442 eHalStatus halStatus;
19443 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019444 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19445 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19447
19448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 -------------------------------------------------------------------------*/
19451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19452 ( NULL == pEventData->pEventData))
19453 {
19454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 }
19459
19460 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19461
19462 /*-------------------------------------------------------------------------
19463 Extract response and send it to UMAC
19464 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019465 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19466 {
19467 wpalMemoryCopy( &halEnterWowlRspParams,
19468 (wpt_uint8*)pEventData->pEventData,
19469 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019470
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019471 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19472 wdiwowlEnterRsp.status =
19473 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19474 }
19475 else
19476 {
19477 halStatus = *((eHalStatus*)pEventData->pEventData);
19478 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19479 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019481 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019482
Jeff Johnsone7245742012-09-05 17:12:55 -070019483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019484}/*WDI_ProcessWowlEnterRsp*/
19485
19486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019487 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019489
19490 @param pWDICtx: pointer to the WLAN DAL context
19491 pEventData: pointer to the event information structure
19492
Jeff Johnson295189b2012-06-20 16:38:30 -070019493 @see
19494 @return Result of the function call
19495*/
19496WDI_Status
19497WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019498(
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 WDI_ControlBlockType* pWDICtx,
19500 WDI_EventInfoType* pEventData
19501)
19502{
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 eHalStatus halStatus;
19504 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019505 tHalExitWowlRspParams halExitWowlRspParams;
19506 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19507
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19509
19510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019512 -------------------------------------------------------------------------*/
19513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19514 ( NULL == pEventData->pEventData))
19515 {
19516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 }
19521
19522 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19523
19524 /*-------------------------------------------------------------------------
19525 Extract response and send it to UMAC
19526 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019527 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19528 {
19529 wpalMemoryCopy( &halExitWowlRspParams,
19530 pEventData->pEventData,
19531 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019532
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019533 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19534 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19535
19536 }
19537 else
19538 {
19539 halStatus = *((eHalStatus*)pEventData->pEventData);
19540 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19541 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019542 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019543 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019544
Jeff Johnsone7245742012-09-05 17:12:55 -070019545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019546}/*WDI_ProcessWowlExitRsp*/
19547
19548/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019549 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 (called when a response is being received over the bus
19551 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019552
19553 @param pWDICtx: pointer to the WLAN DAL context
19554 pEventData: pointer to the event information structure
19555
Jeff Johnson295189b2012-06-20 16:38:30 -070019556 @see
19557 @return Result of the function call
19558*/
19559WDI_Status
19560WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019561(
Jeff Johnson295189b2012-06-20 16:38:30 -070019562 WDI_ControlBlockType* pWDICtx,
19563 WDI_EventInfoType* pEventData
19564)
19565{
19566 WDI_Status wdiStatus;
19567 eHalStatus halStatus;
19568 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19570
19571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019573 -------------------------------------------------------------------------*/
19574 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19575 ( NULL == pEventData->pEventData))
19576 {
19577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 }
19582
19583 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19584
19585 /*-------------------------------------------------------------------------
19586 Extract response and send it to UMAC
19587 -------------------------------------------------------------------------*/
19588 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019590
19591 /*Notify UMAC*/
19592 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19593
Jeff Johnsone7245742012-09-05 17:12:55 -070019594 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019595}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19596
19597
19598/**
19599 @brief Process Nv download(called when a response
19600 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019601
19602 @param pWDICtx: pointer to the WLAN DAL context
19603 pEventData: pointer to the event information structure
19604
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 @see
19606 @return Result of the function call
19607*/
19608WDI_Status
19609WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019610(
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 WDI_ControlBlockType* pWDICtx,
19612 WDI_EventInfoType* pEventData
19613)
19614{
19615
19616 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19617 tHalNvImgDownloadRspParams halNvDownloadRsp;
19618 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19619
19620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 -------------------------------------------------------------------------*/
19623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19624 ( NULL == pEventData->pEventData))
19625 {
19626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019630 }
19631
19632 /*-------------------------------------------------------------------------
19633 Extract response and send it to UMAC
19634 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019635 wpalMemoryCopy( &halNvDownloadRsp,
19636 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 sizeof(halNvDownloadRsp));
19638
19639 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19640
19641 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019642 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19643 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 {
19645 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019646 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 }
19648 else
19649 {
19650 /*Reset the Nv related global information in WDI context information */
19651 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19652 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19653 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19654 /*call WDA callback function for last fragment */
19655 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19656 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19657 }
19658
Jeff Johnsone7245742012-09-05 17:12:55 -070019659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019660}
19661#ifdef WLAN_FEATURE_VOWIFI_11R
19662/**
19663 @brief Process Add TSpec Rsp function (called when a response
19664 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019665
19666 @param pWDICtx: pointer to the WLAN DAL context
19667 pEventData: pointer to the event information structure
19668
Jeff Johnson295189b2012-06-20 16:38:30 -070019669 @see
19670 @return Result of the function call
19671*/
19672WDI_Status
19673WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019674(
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 WDI_ControlBlockType* pWDICtx,
19676 WDI_EventInfoType* pEventData
19677)
19678{
19679 WDI_Status wdiStatus;
19680 tAggrAddTsRspParams aggrAddTsRsp;
19681 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19683
19684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 -------------------------------------------------------------------------*/
19687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19688 ( NULL == pEventData->pEventData))
19689 {
19690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019694 }
19695
19696 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19697
19698 /*-------------------------------------------------------------------------
19699 Extract response and send it to UMAC
19700 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019701 wpalMemoryCopy( &aggrAddTsRsp,
19702 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 sizeof(aggrAddTsRsp));
19704
19705 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019707
19708 /*Notify UMAC*/
19709 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19710
Jeff Johnsone7245742012-09-05 17:12:55 -070019711 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019712}/*WDI_ProcessAddTSpecRsp*/
19713#endif /* WLAN_FEATURE_VOWIFI_11R */
19714
19715/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019716 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019717 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019718
19719 @param pWDICtx: pointer to the WLAN DAL context
19720 pEventData: pointer to the event information structure
19721
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 @see
19723 @return Result of the function call
19724*/
19725WDI_Status
19726WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019727(
Jeff Johnson295189b2012-06-20 16:38:30 -070019728 WDI_ControlBlockType* pWDICtx,
19729 WDI_EventInfoType* pEventData
19730)
19731{
19732 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19733 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19734 tHalHostResumeRspParams hostResumeRspMsg;
19735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19736
19737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 -------------------------------------------------------------------------*/
19740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19741 ( NULL == pEventData->pEventData))
19742 {
19743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019747 }
19748
19749 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19750
19751 /*-------------------------------------------------------------------------
19752 Extract response and send it to UMAC
19753 -------------------------------------------------------------------------*/
19754
Jeff Johnsone7245742012-09-05 17:12:55 -070019755 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019756 (wpt_uint8*)pEventData->pEventData,
19757 sizeof(hostResumeRspMsg));
19758
Jeff Johnsone7245742012-09-05 17:12:55 -070019759 wdiResumeRspParams.wdiStatus =
19760 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019761
19762 /*Notify UMAC*/
19763 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19764
19765 return WDI_STATUS_SUCCESS;
19766}
19767
19768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019769 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019770 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019771
19772 @param pWDICtx: pointer to the WLAN DAL context
19773 pEventData: pointer to the event information structure
19774
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 @see
19776 @return Result of the function call
19777*/
19778WDI_Status
19779WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019780(
Jeff Johnson295189b2012-06-20 16:38:30 -070019781 WDI_ControlBlockType* pWDICtx,
19782 WDI_EventInfoType* pEventData
19783)
19784{
19785 WDI_Status wdiStatus;
19786 eHalStatus halStatus;
19787 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19789
19790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 -------------------------------------------------------------------------*/
19793 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19794 ( NULL == pEventData->pEventData))
19795 {
19796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019800 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019801
19802 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019803
19804 /*-------------------------------------------------------------------------
19805 Extract response and send it to UMAC
19806 -------------------------------------------------------------------------*/
19807 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019808 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019809
19810 /*Notify UMAC*/
19811 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19812
Jeff Johnsone7245742012-09-05 17:12:55 -070019813 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019814}/*WDI_ProcessSetTxPerTrackingRsp*/
19815
19816/*==========================================================================
19817 Indications from HAL
19818 ==========================================================================*/
19819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019820 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 indication of this kind is being received over the bus
19822 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019823
19824 @param pWDICtx: pointer to the WLAN DAL context
19825 pEventData: pointer to the event information structure
19826
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 @see
19828 @return Result of the function call
19829*/
19830WDI_Status
19831WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019832(
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 WDI_ControlBlockType* pWDICtx,
19834 WDI_EventInfoType* pEventData
19835)
19836{
19837 WDI_LowLevelIndType wdiInd;
19838 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19840
19841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019843 -------------------------------------------------------------------------*/
19844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19845 ( NULL == pEventData->pEventData))
19846 {
19847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019851 }
19852
19853 /*-------------------------------------------------------------------------
19854 Extract indication and send it to UMAC
19855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019856 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19857 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 sizeof(tHalRSSINotification));
19859
19860 /*Fill in the indication parameters*/
19861 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19862 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19863 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19864 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19865 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19866 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19867 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19868 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19869 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19870 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19871 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19872 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19873 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080019874 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19875 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019876
ltimariub77f24b2013-01-24 18:54:33 -080019877 if ( pWDICtx->wdiLowLevelIndCB )
19878 {
19879 /*Notify UMAC of indication*/
19880 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19881 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019882
19883 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019884}/*WDI_ProcessLowRSSIInd*/
19885
19886
19887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019888 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019889 an indication of this kind is being received over the
19890 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019891
19892 @param pWDICtx: pointer to the WLAN DAL context
19893 pEventData: pointer to the event information structure
19894
Jeff Johnson295189b2012-06-20 16:38:30 -070019895 @see
19896 @return Result of the function call
19897*/
19898WDI_Status
19899WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019900(
Jeff Johnson295189b2012-06-20 16:38:30 -070019901 WDI_ControlBlockType* pWDICtx,
19902 WDI_EventInfoType* pEventData
19903)
19904{
19905 WDI_Status wdiStatus;
19906 eHalStatus halStatus;
19907 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019908 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19910
19911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 -------------------------------------------------------------------------*/
19914 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19915 ( NULL == pEventData->pEventData))
19916 {
19917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019921 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019922 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 /*-------------------------------------------------------------------------
19924 Extract indication and send it to UMAC
19925 -------------------------------------------------------------------------*/
19926 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19927 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019928 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019929
19930 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019931 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019932 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19933 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080019934 if ( pWDICtx->wdiLowLevelIndCB )
19935 {
19936 /*Notify UMAC*/
19937 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19938 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019939
19940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019941}/*WDI_ProcessMissedBeaconInd*/
19942
19943
19944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019945 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019946 an indication of this kind is being received over the
19947 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019948
19949 @param pWDICtx: pointer to the WLAN DAL context
19950 pEventData: pointer to the event information structure
19951
Jeff Johnson295189b2012-06-20 16:38:30 -070019952 @see
19953 @return Result of the function call
19954*/
19955WDI_Status
19956WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019957(
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 WDI_ControlBlockType* pWDICtx,
19959 WDI_EventInfoType* pEventData
19960)
19961{
19962 WDI_Status wdiStatus;
19963 eHalStatus halStatus;
19964 WDI_LowLevelIndType wdiInd;
19965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19966
19967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 -------------------------------------------------------------------------*/
19970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19971 ( NULL == pEventData->pEventData))
19972 {
19973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 }
19978
19979 /*-------------------------------------------------------------------------
19980 Extract indication and send it to UMAC
19981 -------------------------------------------------------------------------*/
19982 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19983 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019984 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019985
19986 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019987 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 /* ! TO DO - fill in from HAL struct:
19989 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19990
ltimariub77f24b2013-01-24 18:54:33 -080019991 if ( pWDICtx->wdiLowLevelIndCB )
19992 {
19993 /*Notify UMAC*/
19994 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19995 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019996
19997 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019998}/*WDI_ProcessUnkAddrFrameInd*/
19999
20000
20001/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020002 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 indication of this kind is being received over the bus
20004 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020005
20006 @param pWDICtx: pointer to the WLAN DAL context
20007 pEventData: pointer to the event information structure
20008
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 @see
20010 @return Result of the function call
20011*/
20012WDI_Status
20013WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020014(
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 WDI_ControlBlockType* pWDICtx,
20016 WDI_EventInfoType* pEventData
20017)
20018{
20019 WDI_LowLevelIndType wdiInd;
20020 tpSirMicFailureInd pHalMicFailureInd;
20021
20022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20023
20024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 -------------------------------------------------------------------------*/
20027 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20028 ( NULL == pEventData->pEventData))
20029 {
20030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020035
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20037 /*-------------------------------------------------------------------------
20038 Extract indication and send it to UMAC
20039 -------------------------------------------------------------------------*/
20040
20041 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020042 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20044 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20045 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20046 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20047 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20048 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20049 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20050 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020051 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020052 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020055 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 pHalMicFailureInd->info.keyId;
20057 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20058 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20059 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20060 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020061
20062 if ( pWDICtx->wdiLowLevelIndCB )
20063 {
20064 /*Notify UMAC*/
20065 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20066 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020067
20068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020069}/*WDI_ProcessMicFailureInd*/
20070
20071
20072/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 an indication of this kind is being received over the
20075 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020076
20077 @param pWDICtx: pointer to the WLAN DAL context
20078 pEventData: pointer to the event information structure
20079
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 @see
20081 @return Result of the function call
20082*/
20083WDI_Status
20084WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020085(
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 WDI_ControlBlockType* pWDICtx,
20087 WDI_EventInfoType* pEventData
20088)
20089{
20090 WDI_Status wdiStatus;
20091 eHalStatus halStatus;
20092 WDI_LowLevelIndType wdiInd;
20093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20094
20095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 -------------------------------------------------------------------------*/
20098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20099 ( NULL == pEventData->pEventData))
20100 {
20101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020105 }
20106
20107 /*-------------------------------------------------------------------------
20108 Extract indication and send it to UMAC
20109 -------------------------------------------------------------------------*/
20110
20111 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20112 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020114
20115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20116 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020117
Jeff Johnson295189b2012-06-20 16:38:30 -070020118 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020119 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20120 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020121
ltimariub77f24b2013-01-24 18:54:33 -080020122 if ( pWDICtx->wdiLowLevelIndCB )
20123 {
20124 /*Notify UMAC*/
20125 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20126 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020127
20128 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020129}/*WDI_ProcessFatalErrorInd*/
20130
20131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020132 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 an indication of this kind is being received over the
20134 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020135
20136 @param pWDICtx: pointer to the WLAN DAL context
20137 pEventData: pointer to the event information structure
20138
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 @see
20140 @return Result of the function call
20141*/
20142WDI_Status
20143WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020144(
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 WDI_ControlBlockType* pWDICtx,
20146 WDI_EventInfoType* pEventData
20147)
20148{
20149 tDeleteStaContextParams halDelSTACtx;
20150 WDI_LowLevelIndType wdiInd;
20151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20152
20153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 -------------------------------------------------------------------------*/
20156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20157 ( NULL == pEventData->pEventData))
20158 {
20159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020163 }
20164
20165 /*-------------------------------------------------------------------------
20166 Extract indication and send it to UMAC
20167 -------------------------------------------------------------------------*/
20168
20169 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020170 wpalMemoryCopy( &halDelSTACtx,
20171 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020172 sizeof(halDelSTACtx));
20173
20174 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176
20177 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20178 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20179 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20180 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20181
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020184 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020186 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20187 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020188
ltimariub77f24b2013-01-24 18:54:33 -080020189 if ( pWDICtx->wdiLowLevelIndCB )
20190 {
20191 /*Notify UMAC*/
20192 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20193 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020194
20195 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020196}/*WDI_ProcessDelSTAInd*/
20197
20198/**
20199*@brief Process Coex Indication function (called when
20200 an indication of this kind is being received over the
20201 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020202
20203 @param pWDICtx: pointer to the WLAN DAL context
20204 pEventData: pointer to the event information structure
20205
Jeff Johnson295189b2012-06-20 16:38:30 -070020206 @see
20207 @return Result of the function call
20208*/
20209WDI_Status
20210WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020211(
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 WDI_ControlBlockType* pWDICtx,
20213 WDI_EventInfoType* pEventData
20214)
20215{
20216 WDI_LowLevelIndType wdiInd;
20217 tCoexIndMsg halCoexIndMsg;
20218 wpt_uint32 index;
20219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20220
20221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020223 -------------------------------------------------------------------------*/
20224 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20225 ( NULL == pEventData->pEventData ))
20226 {
20227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020231 }
20232
20233 /*-------------------------------------------------------------------------
20234 Extract indication and send it to UMAC
20235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020236 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20237 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 sizeof(halCoexIndMsg.coexIndParams) );
20239
20240 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020241 wdiInd.wdiIndicationType = WDI_COEX_IND;
20242 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20244 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020245 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 }
20247
20248 // DEBUG
20249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20250 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020251 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20252 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20253 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20254 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20255 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020256
ltimariub77f24b2013-01-24 18:54:33 -080020257 if ( pWDICtx->wdiLowLevelIndCB )
20258 {
20259 /*Notify UMAC*/
20260 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20261 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020262
20263 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020264}/*WDI_ProcessCoexInd*/
20265
20266/**
20267*@brief Process Tx Complete Indication function (called when
20268 an indication of this kind is being received over the
20269 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020270
20271 @param pWDICtx: pointer to the WLAN DAL context
20272 pEventData: pointer to the event information structure
20273
Jeff Johnson295189b2012-06-20 16:38:30 -070020274 @see
20275 @return Result of the function call
20276*/
20277WDI_Status
20278WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020279(
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 WDI_ControlBlockType* pWDICtx,
20281 WDI_EventInfoType* pEventData
20282)
20283{
20284 WDI_LowLevelIndType wdiInd;
20285 tTxComplIndMsg halTxComplIndMsg;
20286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20287
20288 /*-------------------------------------------------------------------------
20289 Sanity check
20290 -------------------------------------------------------------------------*/
20291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20292 ( NULL == pEventData->pEventData ))
20293 {
20294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020296 WDI_ASSERT( 0 );
20297 return WDI_STATUS_E_FAILURE;
20298 }
20299
20300 /*-------------------------------------------------------------------------
20301 Extract indication and send it to UMAC
20302 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020303 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20304 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 sizeof(halTxComplIndMsg.txComplParams) );
20306
20307 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020308 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20309 wdiInd.wdiIndicationData.tx_complete_status
20310 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020311
ltimariub77f24b2013-01-24 18:54:33 -080020312 if ( pWDICtx->wdiLowLevelIndCB )
20313 {
20314 /*Notify UMAC*/
20315 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20316 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020317
20318 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020319}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020320#ifdef FEATURE_WLAN_TDLS
20321/**
20322*@brief Process TDLS Indication function (called when
20323 an indication of this kind is being received over the
20324 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020325
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020326 @param pWDICtx: pointer to the WLAN DAL context
20327 pEventData: pointer to the event information structure
20328
20329 @see
20330 @return Result of the function call
20331*/
20332WDI_Status
20333WDI_ProcessTdlsInd
20334(
20335 WDI_ControlBlockType* pWDICtx,
20336 WDI_EventInfoType* pEventData
20337)
20338{
20339 WDI_LowLevelIndType wdiInd;
20340 tTdlsIndMsg halTdlsIndMsg;
20341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20342
20343 /*-------------------------------------------------------------------------
20344 Sanity check
20345 -------------------------------------------------------------------------*/
20346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20347 ( NULL == pEventData->pEventData ))
20348 {
20349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20350 "%s: Invalid parameters", __func__);
20351 WDI_ASSERT( 0 );
20352 return WDI_STATUS_E_FAILURE;
20353 }
20354
20355 /*-------------------------------------------------------------------------
20356 Extract indication and send it to UMAC
20357 -------------------------------------------------------------------------*/
20358 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20359 pEventData->pEventData,
20360 sizeof(halTdlsIndMsg.tdlsIndParams) );
20361
20362 /*Fill in the indication parameters*/
20363 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20364
20365 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20366 = halTdlsIndMsg.tdlsIndParams.status;
20367
20368 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20369 = halTdlsIndMsg.tdlsIndParams.staIdx;
20370
20371 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20372 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20373
20374 /*Notify UMAC*/
20375 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20376
20377 return WDI_STATUS_SUCCESS;
20378}/*WDI_ProcessTdlsInd*/
20379#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020380/**
Viral Modid86bde22012-12-10 13:09:21 -080020381*@brief Process Noa Start Indication function (called when
20382 an indication of this kind is being received over the
20383 bus from HAL)
20384
20385 @param pWDICtx: pointer to the WLAN DAL context
20386 pEventData: pointer to the event information structure
20387
20388 @see
20389 @return Result of the function call
20390*/
20391WDI_Status
20392WDI_ProcessP2pNoaStartInd
20393(
20394 WDI_ControlBlockType* pWDICtx,
20395 WDI_EventInfoType* pEventData
20396)
20397{
20398 WDI_LowLevelIndType wdiInd;
20399 tNoaStartIndMsg halNoaStartIndMsg;
20400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20401
20402 /*-------------------------------------------------------------------------
20403 Sanity check
20404 -------------------------------------------------------------------------*/
20405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20406 ( NULL == pEventData->pEventData ))
20407 {
20408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20409 "%s: Invalid parameters", __func__);
20410 WDI_ASSERT( 0 );
20411 return WDI_STATUS_E_FAILURE;
20412 }
20413
20414 /*-------------------------------------------------------------------------
20415 Extract indication and send it to UMAC
20416 -------------------------------------------------------------------------*/
20417 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20418 pEventData->pEventData,
20419 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20420
20421 /*Fill in the indication parameters*/
20422 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20423
20424 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20425 = halNoaStartIndMsg.noaStartIndParams.status;
20426
20427 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20428 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20429
20430 /*Notify UMAC*/
20431 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20432
20433 return WDI_STATUS_SUCCESS;
20434}/*WDI_ProcessNoaAttrInd*/
20435
20436/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020437*@brief Process Noa Attr Indication function (called when
20438 an indication of this kind is being received over the
20439 bus from HAL)
20440
20441 @param pWDICtx: pointer to the WLAN DAL context
20442 pEventData: pointer to the event information structure
20443
20444 @see
20445 @return Result of the function call
20446*/
20447WDI_Status
20448WDI_ProcessP2pNoaAttrInd
20449(
20450 WDI_ControlBlockType* pWDICtx,
20451 WDI_EventInfoType* pEventData
20452)
20453{
20454 WDI_LowLevelIndType wdiInd;
20455 tNoaAttrIndMsg halNoaAttrIndMsg;
20456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20457
20458 /*-------------------------------------------------------------------------
20459 Sanity check
20460 -------------------------------------------------------------------------*/
20461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20462 ( NULL == pEventData->pEventData ))
20463 {
20464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 WDI_ASSERT( 0 );
20467 return WDI_STATUS_E_FAILURE;
20468 }
20469
20470 /*-------------------------------------------------------------------------
20471 Extract indication and send it to UMAC
20472 -------------------------------------------------------------------------*/
20473 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20474 pEventData->pEventData,
20475 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20476
20477 /*Fill in the indication parameters*/
20478 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020479
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20481 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020482
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20484 = halNoaAttrIndMsg.noaAttrIndParams.index;
20485 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20486 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20487 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20488 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020489
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20491 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20492 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20493 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20494 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20495 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20496 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20497 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020498
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20500 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20501 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20502 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20503 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20504 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20505 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20506 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20507
ltimariub77f24b2013-01-24 18:54:33 -080020508 if ( pWDICtx->wdiLowLevelIndCB )
20509 {
20510 /*Notify UMAC*/
20511 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20512 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020513
20514 return WDI_STATUS_SUCCESS;
20515}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020516
20517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020518 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 an indication of this kind is being received over the
20520 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020521
20522 @param pWDICtx: pointer to the WLAN DAL context
20523 pEventData: pointer to the event information structure
20524
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 @see
20526 @return Result of the function call
20527*/
20528WDI_Status
20529WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020530(
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 WDI_ControlBlockType* pWDICtx,
20532 WDI_EventInfoType* pEventData
20533)
20534{
20535 WDI_LowLevelIndType wdiInd;
20536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020537
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 /*-------------------------------------------------------------------------
20539 Extract indication and send it to UMAC
20540 -------------------------------------------------------------------------*/
20541 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020542 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20543
ltimariub77f24b2013-01-24 18:54:33 -080020544 if ( pWDICtx->wdiLowLevelIndCB )
20545 {
20546 /*Notify UMAC*/
20547 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20548 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020549
Jeff Johnsone7245742012-09-05 17:12:55 -070020550 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020551}/*WDI_ProcessTxPerHitInd*/
20552
Jeff Johnson295189b2012-06-20 16:38:30 -070020553/**
Yue Mab9c86f42013-08-14 15:59:08 -070020554 @brief Process Periodic Tx Pattern Fw Indication function
20555
20556 @param pWDICtx: pointer to the WLAN DAL context
20557 pEventData: pointer to the event information structure
20558
20559 @see
20560 @return Result of the function call
20561*/
20562WDI_Status
20563WDI_ProcessPeriodicTxPtrnFwInd
20564(
20565 WDI_ControlBlockType* pWDICtx,
20566 WDI_EventInfoType* pEventData
20567)
20568{
20569 WDI_LowLevelIndType wdiInd;
20570
20571 /*-------------------------------------------------------------------------
20572 Sanity check
20573 -------------------------------------------------------------------------*/
20574 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20575 (NULL == pEventData->pEventData))
20576 {
20577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20578 "%s: Invalid parameters", __func__);
20579 WDI_ASSERT(0);
20580 return WDI_STATUS_E_FAILURE;
20581 }
20582
20583 /*-------------------------------------------------------------------------
20584 Extract indication and send it to UMAC
20585 -------------------------------------------------------------------------*/
20586 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20587 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20588 sizeof(tHalPeriodicTxPtrnFwInd));
20589
20590 if (pWDICtx->wdiLowLevelIndCB)
20591 {
20592 /*Notify UMAC*/
20593 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20594 }
20595
20596 return WDI_STATUS_SUCCESS;
20597}
20598
20599/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 @brief WDI_ProcessFTMCommandReq
20601 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020602
20603 @param pWDICtx: pointer to the WLAN DAL context
20604 pEventData: pointer to the event information structure
20605
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 @see
20607 @return Result of the function call
20608*/
20609WDI_Status
20610WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020611(
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 WDI_ControlBlockType* pWDICtx,
20613 WDI_EventInfoType* pEventData
20614)
20615{
20616 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20617 wpt_uint8 *ftmCommandBuffer = NULL;
20618 wpt_uint16 dataOffset;
20619 wpt_uint16 bufferSize;
20620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 -------------------------------------------------------------------------*/
20623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20624 ( NULL == pEventData->pEventData))
20625
20626 {
20627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020631 }
20632
20633 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20634
20635 /* Get MSG Buffer */
20636 WDI_GetMessageBuffer(pWDICtx,
20637 WDI_FTM_CMD_REQ,
20638 ftmCommandReq->bodyLength,
20639 &ftmCommandBuffer,
20640 &dataOffset,
20641 &bufferSize);
20642
20643 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20644 ftmCommandReq->FTMCommandBody,
20645 ftmCommandReq->bodyLength);
20646
20647 /* Send MSG */
20648 return WDI_SendMsg(pWDICtx,
20649 ftmCommandBuffer,
20650 bufferSize,
20651 pEventData->pCBfnc,
20652 pEventData->pUserData,
20653 WDI_FTM_CMD_RESP);
20654}
20655
20656/**
20657 @brief WDI_ProcessFTMCommandRsp
20658 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020659
20660 @param pWDICtx: pointer to the WLAN DAL context
20661 pEventData: pointer to the event information structure
20662
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 @see
20664 @return Result of the function call
20665*/
20666WDI_Status
20667WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020668(
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 WDI_ControlBlockType* pWDICtx,
20670 WDI_EventInfoType* pEventData
20671)
20672{
20673 WDI_FTMCommandRspCb ftmCMDRspCb;
20674 tProcessPttRspParams *ftmCMDRspData = NULL;
20675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20676
20677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020679 -------------------------------------------------------------------------*/
20680 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20681 ( NULL == pEventData->pEventData))
20682 {
20683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 }
20688
20689 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20690
20691 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20692
Jeff Johnsone7245742012-09-05 17:12:55 -070020693 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20694 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20696
20697 /*Notify UMAC*/
20698 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20699
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020701}
Jeff Johnson295189b2012-06-20 16:38:30 -070020702/**
20703 @brief WDI_ProcessHalDumpCmdReq
20704 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020705
20706 @param pWDICtx: pointer to the WLAN DAL context
20707 pEventData: pointer to the event information structure
20708
Jeff Johnson295189b2012-06-20 16:38:30 -070020709 @see
20710 @return Result of the function call
20711*/
20712WDI_Status
20713WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020714(
Jeff Johnson295189b2012-06-20 16:38:30 -070020715 WDI_ControlBlockType* pWDICtx,
20716 WDI_EventInfoType* pEventData
20717)
20718{
20719 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20720 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20721 wpt_uint16 usDataOffset = 0;
20722 wpt_uint16 usSendSize = 0;
20723 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020724 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020725
20726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 -------------------------------------------------------------------------*/
20729 if (( NULL == pEventData ) ||
20730 ( NULL == pEventData->pEventData) ||
20731 ( NULL == pEventData->pCBfnc ))
20732 {
20733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020737 }
20738
20739 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20740 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20741
20742 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020746 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020749 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020750 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020753
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 /*-----------------------------------------------------------------------
20755 Get message buffer
20756 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20759 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20762 {
20763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080020764 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020768 }
20769
Jeff Johnsone7245742012-09-05 17:12:55 -070020770 wpalMemoryCopy( pSendBuffer+usDataOffset,
20771 &halDumpCmdReqMsg.dumpCmdReqParams,
20772 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020773
20774 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020775 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020776
20777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20781 wdiHALDumpCmdRspCb, pEventData->pUserData,
20782 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020783}
20784
20785/**
20786 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020787 Process hal Dump Command Response from HAL, simply route to HDD
20788
20789 @param pWDICtx: pointer to the WLAN DAL context
20790 pEventData: pointer to the event information structure
20791
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 @see
20793 @return Result of the function call
20794*/
20795WDI_Status
20796WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020797(
Jeff Johnson295189b2012-06-20 16:38:30 -070020798 WDI_ControlBlockType* pWDICtx,
20799 WDI_EventInfoType* pEventData
20800)
20801{
20802 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020803 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020804 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20805
20806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020808 -------------------------------------------------------------------------*/
20809 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20810 ( NULL == pEventData->pEventData))
20811 {
20812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 }
20817
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020819
20820 /*Initialize the WDI Response structure */
20821 wdiHALDumpCmdRsp.usBufferLen = 0;
20822 wdiHALDumpCmdRsp.pBuffer = NULL;
20823
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020824 wpalMemoryCopy( &halDumpCmdRspParams,
20825 pEventData->pEventData,
20826 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020827
20828 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020829 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020830
20831 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020832 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 {
20834 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020835 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20836 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20837
20838 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20839 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053020840 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020842
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 /*Notify UMAC*/
20844 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20845
20846 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20847 {
20848 /* Free the allocated buffer */
20849 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20850 }
20851 return WDI_STATUS_SUCCESS;
20852}
20853
20854/*==========================================================================
20855 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020856
Jeff Johnson295189b2012-06-20 16:38:30 -070020857 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020858 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020859==========================================================================*/
20860/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020861 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 when it wishes to send up a notification like the ones
20863 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020864
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020866
20867 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020869 wctsNotifyCBData: the callback data of the user
20870
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020872
20873 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020874*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020875void
Jeff Johnson295189b2012-06-20 16:38:30 -070020876WDI_NotifyMsgCTSCB
20877(
Jeff Johnsone7245742012-09-05 17:12:55 -070020878 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 WCTS_NotifyEventType wctsEvent,
20880 void* wctsNotifyCBData
20881)
20882{
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20885
20886 if (NULL == pWDICtx )
20887 {
20888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 }
20893
20894 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20895 {
20896 /* callback presumably occurred after close */
20897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020898 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020899 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 }
20901
20902 if ( WCTS_EVENT_OPEN == wctsEvent )
20903 {
20904 /*Flag must be set atomically as it is checked from incoming request
20905 functions*/
20906 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020908
20909 /*Nothing to do - so try to dequeue any pending request that may have
20910 occurred while we were trying to establish this*/
20911 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020914 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020915 {
20916 /*Flag must be set atomically as it is checked from incoming request
20917 functions*/
20918 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020920
20921 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020922 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 wpalMutexRelease(&pWDICtx->wptMutex);
20924
20925 /*Notify that the Control Channel is closed */
20926 wpalEventSet(&pWDICtx->wctsActionEvent);
20927 }
20928
20929}/*WDI_NotifyMsgCTSCB*/
20930
20931
20932/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020933 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020934 when it wishes to send up a packet received over the
20935 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020936
Jeff Johnson295189b2012-06-20 16:38:30 -070020937 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020938
20939 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 pMsg: the packet
20941 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020942 wctsRxMsgCBData: the callback data of the user
20943
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020945
20946 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020947*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020948void
20949WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020950(
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 void* pMsg,
20953 wpt_uint32 uLen,
20954 void* wctsRxMsgCBData
20955)
20956{
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 tHalMsgHeader *pHalMsgHeader;
20958 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20961
20962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020963 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 ( uLen < sizeof(tHalMsgHeader)))
20967 {
20968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 }
20973
20974 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20975 {
20976 /* callback presumably occurred after close */
20977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020978 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020979 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020980 }
20981
Jeff Johnsone7245742012-09-05 17:12:55 -070020982 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 context - so no serialization is necessary here
20984 ! - revisit this assumption */
20985
20986 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20987
20988 if ( uLen != pHalMsgHeader->msgLen )
20989 {
20990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20991 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020992 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20993 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 }
20995
20996 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20997
20998 /*The message itself starts after the header*/
20999 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21000 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21001 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21002 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21003
21004
21005 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21006 {
21007 /*Stop the timer as the response was received */
21008 /*!UT - check for potential race conditions between stop and response */
21009 wpalTimerStop(&pWDICtx->wptResponseTimer);
21010 }
21011 /* Check if we receive a response message which is not expected */
21012 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21013 {
21014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21015 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21016 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21019 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021020
21021 if (gWDICb.bEnableSSR == false)
21022 {
21023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21024 "SSR is not enabled on WDI timeout");
21025 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21026 return;
21027 }
21028 wpalWcnssResetIntr();
21029 /* if this timer fires, it means Riva did not receive the FIQ */
21030 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21031
Jeff Johnson295189b2012-06-20 16:38:30 -070021032 return;
21033 }
21034
21035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21036 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21037
21038 /*Post response event to the state machine*/
21039 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21040
21041}/*WDI_RXMsgCTSCB*/
21042
21043
21044/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021045 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021046========================================================================*/
21047
21048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021051
Jeff Johnson295189b2012-06-20 16:38:30 -070021052 @param pWDICtx - pointer to the control block
21053
21054 @return Result of the function call
21055*/
21056WPT_INLINE WDI_Status
21057WDI_CleanCB
21058(
21059 WDI_ControlBlockType* pWDICtx
21060)
21061{
21062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21063
21064 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021066
Jeff Johnsone7245742012-09-05 17:12:55 -070021067 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21069 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21070
21071 WDI_ResetAssocSessions( pWDICtx );
21072
21073 return WDI_STATUS_SUCCESS;
21074}/*WDI_CleanCB*/
21075
21076
21077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021078 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021079
Jeff Johnsone7245742012-09-05 17:12:55 -070021080
21081 @param pWDICtx: pointer to the WLAN DAL context
21082 pEventData: pointer to the event information structure
21083
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 @see
21085 @return Result of the function call
21086*/
21087WPT_INLINE WDI_Status
21088WDI_ProcessRequest
21089(
21090 WDI_ControlBlockType* pWDICtx,
21091 WDI_EventInfoType* pEventData
21092)
21093{
21094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21095
Jeff Johnsone7245742012-09-05 17:12:55 -070021096 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 already checked these pointers*/
21098
21099 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21100 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021101 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021103 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 WDI_getReqMsgString(pEventData->wdiRequest),
21105 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21106 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21107 }
21108 else
21109 {
21110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 pEventData->wdiRequest);
21113 return WDI_STATUS_E_NOT_IMPLEMENT;
21114 }
21115}/*WDI_ProcessRequest*/
21116
21117
21118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021121 prefixes it with a send message header
21122
21123 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 wdiReqType: type of the request being sent
21125 uBufferLen: message buffer len
21126 pMsgBuffer: resulting allocated buffer
21127 pusDataOffset: offset in the buffer where the caller
21128 can start copying its message data
21129 puBufferSize: the resulting buffer size (offset+buff
21130 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021131
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 @see
21133 @return Result of the function call
21134*/
21135WDI_Status
21136WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021137(
21138 WDI_ControlBlockType* pWDICtx,
21139 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021140 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021141 wpt_uint8** pMsgBuffer,
21142 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021143 wpt_uint16* pusBufferSize
21144)
21145{
21146 tHalMsgHeader halMsgHeader;
21147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21148
Jeff Johnsone7245742012-09-05 17:12:55 -070021149 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 again*/
21151
21152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021153 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21157 if ( NULL == *pMsgBuffer )
21158 {
21159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21160 "Unable to allocate message buffer for req %s (%d)",
21161 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021164 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021165 }
21166
21167 /*-------------------------------------------------------------------------
21168 Fill in the message header
21169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021170 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21171 /* Fill msgVersion */
21172#ifdef WLAN_FEATURE_11AC
21173 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021174 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021175 else
21176#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021177 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021178
Jeff Johnsone7245742012-09-05 17:12:55 -070021179 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21180 *pusDataOffset = sizeof(halMsgHeader);
21181 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21182
21183 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021184}/*WDI_GetMessageBuffer*/
21185
21186
21187/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021188 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021190 the CB
21191
21192 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021194
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 usSendSize size of the buffer to be sent
21196 pRspCb: response callback - save in the WDI
21197 CB
21198 pUserData: user data associated with the
21199 callback
21200 wdiExpectedResponse: the code of the response that is
21201 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021202
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 @see
21204 @return Result of the function call
21205*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021206WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021207WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021208(
21209 WDI_ControlBlockType* pWDICtx,
21210 wpt_uint8* pSendBuffer,
21211 wpt_uint32 usSendSize,
21212 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 void* pUserData,
21214 WDI_ResponseEnumType wdiExpectedResponse
21215)
21216{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021217 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021218 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21220
21221 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021222 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 ------------------------------------------------------------------------*/
21224 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021225 pWDICtx->pfncRspCB = pRspCb;
21226 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021227
21228 /*-----------------------------------------------------------------------
21229 Call the CTS to send this message over - free message afterwards
21230 - notify transport failure
21231 Note: CTS is reponsible for freeing the message buffer.
21232 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021233 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21234 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21235 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 "Failed to send message over the bus - catastrophic failure");
21239
Jeff Johnsond13512a2012-07-17 11:42:19 -070021240 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021242 else
21243 {
21244 /* even when message was placed in CTS deferred Q, we will treat it
21245 success but log this info
21246 */
21247 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21248 {
21249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21250 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21251 "response %s (%d)",
21252 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21253 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021254 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021255 }
21256 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021257
Jeff Johnsond13512a2012-07-17 11:42:19 -070021258 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021259 if ( NULL != pWDICtx->wdiReqStatusCB )
21260 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021261 /*Inform originator whether request went through or not*/
21262 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21263 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 pWDICtx->wdiReqStatusCB = NULL;
21265 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021266 callback(wdiStatus, callbackContext);
21267
21268 /*For WDI requests which have registered a request callback,
21269 inform the WDA caller of the same via setting the return value
21270 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21271 end up repeating the functonality in the req callback for the
21272 WDI_STATUS_E_FAILURE case*/
21273 if (wdiStatus == WDI_STATUS_E_FAILURE)
21274 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021275 }
21276
Jeff Johnsond13512a2012-07-17 11:42:19 -070021277 if ( wdiStatus == WDI_STATUS_SUCCESS )
21278 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021279 /*Start timer for the expected response */
21280 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021281
21282 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021283 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021284 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021285 }
21286 else
21287 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021288 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021289 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21290 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021291
Jeff Johnsond13512a2012-07-17 11:42:19 -070021292 return wdiStatus;
21293
Jeff Johnson295189b2012-06-20 16:38:30 -070021294}/*WDI_SendMsg*/
21295
21296
21297
21298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 the bus using the control transport and saves some info
21301 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021302
21303 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 pSendBuffer: buffer to be sent
21305 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021306
Jeff Johnson295189b2012-06-20 16:38:30 -070021307 @see
21308 @return Result of the function call
21309*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021311WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021312(
21313 WDI_ControlBlockType* pWDICtx,
21314 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 wpt_uint32 usSendSize
21316)
21317{
21318 wpt_uint32 uStatus ;
21319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21320
21321 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021322 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021323 Note: CTS is reponsible for freeing the message buffer.
21324 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 (void*)pSendBuffer, usSendSize );
21327
21328 /*Inform Upper MAC about the outcome of the request*/
21329 if ( NULL != pWDICtx->wdiReqStatusCB )
21330 {
21331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21332 "Send indication status : %d", uStatus);
21333
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021334 /* even if CTS placed indication into its deferred Q, we treat it
21335 * as success and let CTS drain its queue as per smd interrupt to CTS
21336 */
21337 pWDICtx->wdiReqStatusCB( ((uStatus != eWLAN_PAL_STATUS_SUCCESS) && (uStatus != eWLAN_PAL_STATUS_E_RESOURCES)) ? WDI_STATUS_E_FAILURE: WDI_STATUS_SUCCESS,
Jeff Johnsone7245742012-09-05 17:12:55 -070021338 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 }
21340
21341 /*If sending of the message failed - it is considered catastrophic and
21342 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021343 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21344 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21345
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 {
21347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021349
21350 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21351 return WDI_STATUS_E_FAILURE;
21352 }
21353
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021355}/*WDI_SendIndication*/
21356
21357
21358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021359 @brief WDI_DetectedDeviceError - called internally by DAL when
21360 it has detected a failure in the device
21361
21362 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021363 usErrorCode: error code detected by WDI or received
21364 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021365
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021367 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021368*/
21369void
21370WDI_DetectedDeviceError
21371(
21372 WDI_ControlBlockType* pWDICtx,
21373 wpt_uint16 usErrorCode
21374)
21375{
21376 WDI_LowLevelIndType wdiInd;
21377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21378
21379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21380 "Device Error detected code: %d - transitioning to stopped state",
21381 usErrorCode);
21382
21383 wpalMutexAcquire(&pWDICtx->wptMutex);
21384
21385 WDI_STATableStop(pWDICtx);
21386
21387 WDI_ResetAssocSessions(pWDICtx);
21388
21389 /*Set the expected state transition to stopped - because the device
21390 experienced a failure*/
21391 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21392
21393 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021394 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021395
Jeff Johnsone7245742012-09-05 17:12:55 -070021396 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021397
21398 /*TO DO: - there should be an attempt to reset the device here*/
21399
21400 wpalMutexRelease(&pWDICtx->wptMutex);
21401
21402 /*------------------------------------------------------------------------
21403 Notify UMAC if a handler is registered
21404 ------------------------------------------------------------------------*/
21405 if (pWDICtx->wdiLowLevelIndCB)
21406 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021407 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21408 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021409
21410 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21411 }
21412}/*WDI_DetectedDeviceError*/
21413
21414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021415 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021416 we started on send message has expire - this should
21417 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021418 reply - trigger catastrophic failure
21419 @param
21420
Jeff Johnson295189b2012-06-20 16:38:30 -070021421 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021422
21423 @see
21424 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021425*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021426void
Jeff Johnson295189b2012-06-20 16:38:30 -070021427WDI_ResponseTimerCB
21428(
21429 void *pUserData
21430)
21431{
21432 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21434
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021435 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021436 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 }
21442
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021443 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021444 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021445 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021446
21447 /* If response timer is running at this time that means this timer
21448 * event is not for the last request but rather last-to-last request and
21449 * this timer event has come after we recevied respone for last-to-last
21450 * message
21451 */
21452 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21453 {
21454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21455 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021456 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021457 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21459 "uArchTimeStampTmrStart: %llu seconds, "
21460 "uArchTimeStampTmrExp: %llu seconds",
21461 pWDICtx->uArchTimeStampRspTmrStart,
21462 pWDICtx->uArchTimeStampRspTmrExp);
21463
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021464 return;
21465 }
21466
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021467 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 {
21469
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021472 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021474 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21475 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21477 "uArchTimeStampTmrStart: %llu seconds, "
21478 "uArchTimeStampTmrExp: %llu seconds",
21479 pWDICtx->uArchTimeStampRspTmrStart,
21480 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021481
21482 /* WDI timeout means Riva is not responding or SMD communication to Riva
21483 * is not happening. The only possible way to recover from this error
21484 * is to initiate SSR from APPS.
21485 * There is also an option to re-enable wifi, which will eventually
21486 * trigger SSR
21487 */
21488 if (gWDICb.bEnableSSR == false)
21489 {
21490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21491 "SSR is not enabled on WDI timeout");
21492 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21493 return;
21494 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021495#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Katya Nigama0e98e42014-02-05 13:46:40 +053021496 if(wpalIsWDresetInProgress())
21497 {
21498 wpalDevicePanic();
21499 }
21500
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021501 wpalWcnssResetIntr();
21502 /* if this timer fires, it means Riva did not receive the FIQ */
21503 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021504#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021505 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21506 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021507#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 }
21509 else
21510 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021512 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021513 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021514 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21515 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21517 "uArchTimeStampTmrStart: %llu seconds, "
21518 "uArchTimeStampTmrExp: %llu seconds",
21519 pWDICtx->uArchTimeStampRspTmrStart,
21520 pWDICtx->uArchTimeStampRspTmrExp);
21521
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 }
21523
21524 return;
21525
21526}/*WDI_ResponseTimerCB*/
21527
21528
21529/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021530 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021531
Jeff Johnsone7245742012-09-05 17:12:55 -070021532
21533 @param pWDICtx: pointer to the WLAN DAL context
21534 pEventData: pointer to the event information structure
21535
Jeff Johnson295189b2012-06-20 16:38:30 -070021536 @see
21537 @return Result of the function call
21538*/
21539WPT_INLINE WDI_Status
21540WDI_ProcessResponse
21541(
21542 WDI_ControlBlockType* pWDICtx,
21543 WDI_EventInfoType* pEventData
21544)
21545{
21546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21547
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 already checked these pointers
21550 ! - revisit this assumption */
21551 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21552 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021555 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021556 WDI_getRespMsgString(pEventData->wdiResponse),
21557 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21558 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21559 }
21560 else
21561 {
21562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021563 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021564 pEventData->wdiResponse);
21565 return WDI_STATUS_E_NOT_IMPLEMENT;
21566 }
21567}/*WDI_ProcessResponse*/
21568
21569
21570/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021571 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021572=========================================================================*/
21573
21574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021575 @brief Utility function used by the DAL Core to help queue a
21576 request that cannot be processed right away.
21577 @param
21578
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 pWDICtx: - pointer to the WDI control block
21580 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021581 queued
21582
21583 @see
21584 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021585*/
21586WDI_Status
21587WDI_QueuePendingReq
21588(
21589 WDI_ControlBlockType* pWDICtx,
21590 WDI_EventInfoType* pEventData
21591)
21592{
Jeff Johnsone7245742012-09-05 17:12:55 -070021593 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021595 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21597
21598 if ( NULL == pEventDataQueue )
21599 {
21600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021601 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021602 WDI_ASSERT(0);
21603 return WDI_STATUS_MEM_FAILURE;
21604 }
21605
21606 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21607 pEventDataQueue->pUserData = pEventData->pUserData;
21608 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21609 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021611
21612 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21613 {
21614 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021615
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 if ( NULL == pEventInfo )
21617 {
21618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021619 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021620 WDI_ASSERT(0);
21621 wpalMemoryFree(pEventDataQueue);
21622 return WDI_STATUS_MEM_FAILURE;
21623 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021624
Jeff Johnson295189b2012-06-20 16:38:30 -070021625 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21626
21627 }
21628 pEventDataQueue->pEventData = pEventInfo;
21629
21630 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021631 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021632
Jeff Johnsone7245742012-09-05 17:12:55 -070021633 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021634
21635 return WDI_STATUS_SUCCESS;
21636}/*WDI_QueuePendingReq*/
21637
21638/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 @param
21642
21643 pMsg - pointer to the message
21644
21645 @see
21646 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021647*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021648void
Jeff Johnson295189b2012-06-20 16:38:30 -070021649WDI_PALCtrlMsgCB
21650(
21651 wpt_msg *pMsg
21652)
21653{
21654 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021655 WDI_ControlBlockType* pWDICtx = NULL;
21656 WDI_Status wdiStatus;
21657 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021658 void* pUserData;
21659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21660
21661 if (( NULL == pMsg )||
21662 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21663 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21664 {
21665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 }
21670
21671 /*Transition back to the state that we had before serialization
21672 - serialization transitions us to BUSY to stop any incomming requests
21673 ! TO DO L: possible race condition here if a request comes in between the
21674 state transition and the post function*/
21675
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021677
21678 /*-----------------------------------------------------------------------
21679 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 -----------------------------------------------------------------------*/
21682 switch ( pEventData->wdiRequest )
21683 {
21684
Jeff Johnsone7245742012-09-05 17:12:55 -070021685 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021686 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21687 break;
21688
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 case WDI_NV_DOWNLOAD_REQ:
21690 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21691 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21692 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21693 {
21694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021695 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21697 }
21698 else
21699 {
21700 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21701 }
21702
21703 break;
21704
21705 default:
21706 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21707 break;
21708 }/*switch ( pEventData->wdiRequest )*/
21709
21710 if ( WDI_STATUS_SUCCESS != wdiStatus )
21711 {
21712 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21713
21714 if ( NULL != pfnReqStatusCB )
21715 {
21716 /*Fail the request*/
21717 pfnReqStatusCB( wdiStatus, pUserData);
21718 }
21719 }
21720
21721 /* Free data - that was allocated when queueing*/
21722 if( pEventData != NULL )
21723 {
21724 if( pEventData->pEventData != NULL )
21725 {
21726 wpalMemoryFree(pEventData->pEventData);
21727 }
21728 wpalMemoryFree(pEventData);
21729 }
21730
21731 if( pMsg != NULL )
21732 {
21733 wpalMemoryFree(pMsg);
21734 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021735
Jeff Johnson295189b2012-06-20 16:38:30 -070021736}/*WDI_PALCtrlMsgCB*/
21737
21738/**
21739 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 and schedule for execution a pending request
21741 @param
21742
Jeff Johnson295189b2012-06-20 16:38:30 -070021743 pWDICtx: - pointer to the WDI control block
21744 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 queued
21746
21747 @see
21748 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021749*/
21750WDI_Status
21751WDI_DequeuePendingReq
21752(
21753 WDI_ControlBlockType* pWDICtx
21754)
21755{
Jeff Johnsone7245742012-09-05 17:12:55 -070021756 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021757 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021758 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21760
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021762
21763 if ( NULL == pNode )
21764 {
21765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021766 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 return WDI_STATUS_SUCCESS;
21768 }
21769
21770 /*The node actually points to the 1st element inside the Event Data struct -
21771 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021773
21774 /*Serialize processing in the control thread
21775 !TO DO: - check to see if these are all the messages params that need
21776 to be filled in*/
21777 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21778
21779 if ( NULL == palMsg )
21780 {
21781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021784 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021786 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021787 palMsg->callback = WDI_PALCtrlMsgCB;
21788 palMsg->ptr = pEventData;
21789
21790 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021791 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080021792 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021793
Jeff Johnson295189b2012-06-20 16:38:30 -070021794 /*Transition back to BUSY as we need to handle a queued request*/
21795 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021796
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21798
21799 return WDI_STATUS_PENDING;
21800}/*WDI_DequeuePendingReq*/
21801
21802
21803/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021804 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021806 away.- The assoc requests will be queued by BSSID
21807 @param
21808
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 pWDICtx: - pointer to the WDI control block
21810 pEventData: pointer to the evnt info that needs to be queued
21811 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021812
21813 @see
21814 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021815*/
21816WDI_Status
21817WDI_QueueNewAssocRequest
21818(
21819 WDI_ControlBlockType* pWDICtx,
21820 WDI_EventInfoType* pEventData,
21821 wpt_macAddr macBSSID
21822)
21823{
Jeff Johnsone7245742012-09-05 17:12:55 -070021824 wpt_uint8 i;
21825 WDI_BSSSessionType* pSession = NULL;
21826 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 void* pEventInfo;
21829 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021831
Jeff Johnsone7245742012-09-05 17:12:55 -070021832
21833 /*------------------------------------------------------------------------
21834 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021835 ------------------------------------------------------------------------*/
21836 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21837 {
21838 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21839 {
21840 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 pSession = &pWDICtx->aBSSSessions[i];
21842 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 }
21844 }
21845
21846 if ( i >= WDI_MAX_BSS_SESSIONS )
21847 {
21848 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021850 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021851
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 /*------------------------------------------------------------------------
21853 Fill in the BSSID for this session and set the usage flag
21854 ------------------------------------------------------------------------*/
21855 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021857
21858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021859 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021860 ------------------------------------------------------------------------*/
21861 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21862 if ( NULL == pEventDataQueue )
21863 {
21864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021865 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 WDI_ASSERT(0);
21867 return WDI_STATUS_MEM_FAILURE;
21868 }
21869
21870 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21871 if ( NULL == pSessionIdElement )
21872 {
21873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021874 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021875 WDI_ASSERT(0);
21876 wpalMemoryFree(pEventDataQueue);
21877 return WDI_STATUS_MEM_FAILURE;
21878 }
21879
21880 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21881 if ( NULL == pEventInfo )
21882 {
21883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021884 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021885 WDI_ASSERT(0);
21886 wpalMemoryFree(pSessionIdElement);
21887 wpalMemoryFree(pEventDataQueue);
21888 return WDI_STATUS_MEM_FAILURE;
21889 }
21890
21891 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21892 pEventDataQueue->pUserData = pEventData->pUserData;
21893 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21894 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021896
21897 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21898 pEventDataQueue->pEventData = pEventInfo;
21899
21900 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021901 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021902
21903 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021905
Jeff Johnsone7245742012-09-05 17:12:55 -070021906 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021907
21908 /*We need to maintain a separate list that keeps track of the order in which
21909 the new assoc requests are being queued such that we can start processing
21910 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 pSessionIdElement->ucIndex = i;
21912 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021913
21914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21915 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021917
21918 /*Return pending as this is what the status of the request is since it has
21919 been queued*/
21920 return WDI_STATUS_PENDING;
21921}/*WDI_QueueNewAssocRequest*/
21922
21923/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 away.- The assoc requests will be queued by BSSID
21927 @param
21928
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 pWDICtx: - pointer to the WDI control block
21930 pSession: - session in which to queue
21931 pEventData: pointer to the event info that needs to be
21932 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021933
21934 @see
21935 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021936*/
21937WDI_Status
21938WDI_QueueAssocRequest
21939(
21940 WDI_ControlBlockType* pWDICtx,
21941 WDI_BSSSessionType* pSession,
21942 WDI_EventInfoType* pEventData
21943)
21944{
Jeff Johnsone7245742012-09-05 17:12:55 -070021945 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021949
21950 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 Sanity check
21952 ------------------------------------------------------------------------*/
21953 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21954 {
21955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021957
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 }
21960
21961 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 ------------------------------------------------------------------------*/
21964 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21965 if ( NULL == pEventDataQueue )
21966 {
21967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021968 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 WDI_ASSERT(0);
21970 return WDI_STATUS_MEM_FAILURE;
21971 }
21972
21973 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21974 if ( NULL == pEventInfo )
21975 {
21976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21977 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021978 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 WDI_ASSERT(0);
21980 wpalMemoryFree(pEventDataQueue);
21981 return WDI_STATUS_MEM_FAILURE;
21982 }
21983
21984 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21985 pEventDataQueue->pUserData = pEventData->pUserData;
21986 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21987 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 pEventDataQueue->pEventData = pEventInfo;
21990
21991 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21992
21993 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021995
21996 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021998
Jeff Johnsone7245742012-09-05 17:12:55 -070021999 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022000
22001 /*The result of this operation is pending because the request has been
22002 queued and it will be processed at a later moment in time */
22003 return WDI_STATUS_PENDING;
22004}/*WDI_QueueAssocRequest*/
22005
22006/**
22007 @brief Utility function used by the DAL Core to help dequeue
22008 an association request that was pending
22009 The request will be queued up in front of the main
22010 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 @param
22012
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022014
22015
22016 @see
22017 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022018*/
22019WDI_Status
22020WDI_DequeueAssocRequest
22021(
22022 WDI_ControlBlockType* pWDICtx
22023)
22024{
Jeff Johnsone7245742012-09-05 17:12:55 -070022025 wpt_list_node* pNode = NULL;
22026 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022027 WDI_BSSSessionType* pSession;
22028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022029
22030 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 Sanity check
22032 ------------------------------------------------------------------------*/
22033 if ( NULL == pWDICtx )
22034 {
22035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022036 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022037
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 }
22040
22041 /*------------------------------------------------------------------------
22042 An association has been completed => a new association can occur
22043 Check to see if there are any pending associations ->
22044 If so , transfer all the pending requests into the busy queue for
22045 processing
22046 These requests have arrived prior to the requests in the busy queue
22047 (bc they needed to be processed in order to be placed in this queue)
22048 => they will be placed at the front of the busy queue
22049 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022051
22052 if ( NULL == pNode )
22053 {
22054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022055 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022056 return WDI_STATUS_SUCCESS;
22057 }
22058
22059 /*The node actually points to the 1st element inside the Session Id struct -
22060 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022061 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022062
22063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22064 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22065
22066 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22067 {
22068 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022069
Jeff Johnson295189b2012-06-20 16:38:30 -070022070 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022071 the front of the main waiting queue for subsequent execution*/
22072 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022073 while ( NULL != pNode )
22074 {
22075 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022076 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22077 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022079 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022080 }
22081 else
22082 {
22083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 WPAL_ASSERT(0);
22086 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022088 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022089
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22091 wpalMemoryFree(pSessionIdElement);
22092 return WDI_STATUS_SUCCESS;
22093}/*WDI_DequeueAssocRequest*/
22094
22095/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022096 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 pending requests - all req cb will be called with
22098 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022099 @param
22100
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022102
22103 @see
22104 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022105*/
22106WDI_Status
22107WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022108(
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 WDI_ControlBlockType* pWDICtx
22110)
22111{
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 void* pUserData;
22116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22117
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022119
22120 /*------------------------------------------------------------------------
22121 Go through all the requests and fail them - this will only be called
22122 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022123 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 ------------------------------------------------------------------------*/
22125 while( pNode )
22126 {
22127 /*The node actually points to the 1st element inside the Event Data struct -
22128 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 pEventDataQueue = (WDI_EventInfoType*)pNode;
22130
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22132 if ( NULL != pfnReqStatusCB )
22133 {
22134 /*Fail the request*/
22135 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22136 }
22137 /* Free data - that was allocated when queueing */
22138 if ( pEventDataQueue->pEventData != NULL )
22139 {
22140 wpalMemoryFree(pEventDataQueue->pEventData);
22141 }
22142 wpalMemoryFree(pEventDataQueue);
22143
22144 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22145 {
22146 break;
22147 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 }
22149
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 return WDI_STATUS_SUCCESS;
22151}/*WDI_ClearPendingRequests*/
22152
22153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 @brief Helper routine used to init the BSS Sessions in the WDI control block
22155
22156
22157 @param pWDICtx: pointer to the WLAN DAL context
22158
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 @see
22160*/
22161void
22162WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022163(
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 WDI_ControlBlockType* pWDICtx
22165)
22166{
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22169
22170 /*-------------------------------------------------------------------------
22171 No Sanity check
22172 -------------------------------------------------------------------------*/
22173 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22174 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22177 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22178 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22179 }
22180}/*WDI_ResetAssocSessions*/
22181
22182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022183 @brief Helper routine used to find a session based on the BSSID
22184
22185
22186 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022188 pSession: pointer to the session (if found)
22189
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022192*/
22193wpt_uint8
22194WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022195(
Jeff Johnson295189b2012-06-20 16:38:30 -070022196 WDI_ControlBlockType* pWDICtx,
22197 wpt_macAddr macBSSID,
22198 WDI_BSSSessionType** ppSession
22199)
22200{
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22203
22204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022206 -------------------------------------------------------------------------*/
22207 if ( NULL == ppSession )
22208 {
22209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022210 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022212 }
22213
Jeff Johnsone7245742012-09-05 17:12:55 -070022214 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022215
Jeff Johnsone7245742012-09-05 17:12:55 -070022216 /*------------------------------------------------------------------------
22217 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 ------------------------------------------------------------------------*/
22219 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22220 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022221 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22222 (eWLAN_PAL_TRUE ==
22223 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22224 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022225 {
22226 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022227 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022228 return i;
22229 }
22230 }
22231
Jeff Johnsone7245742012-09-05 17:12:55 -070022232 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022233}/*WDI_FindAssocSession*/
22234
22235/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022236 @brief Helper routine used to find a session based on the BSSID
22237
22238
22239 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 ucBSSIdx: BSS Index of the session
22241 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022242
Jeff Johnson295189b2012-06-20 16:38:30 -070022243 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022245*/
22246wpt_uint8
22247WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022248(
Jeff Johnson295189b2012-06-20 16:38:30 -070022249 WDI_ControlBlockType* pWDICtx,
22250 wpt_uint16 ucBSSIdx,
22251 WDI_BSSSessionType** ppSession
22252)
22253{
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22256
22257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 -------------------------------------------------------------------------*/
22260 if ( NULL == ppSession )
22261 {
22262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022263 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 }
22266
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022268
Jeff Johnsone7245742012-09-05 17:12:55 -070022269 /*------------------------------------------------------------------------
22270 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 ------------------------------------------------------------------------*/
22272 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22273 {
22274 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22275 {
22276 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 return i;
22279 }
22280 }
22281
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022283}/*WDI_FindAssocSessionByBSSIdx*/
22284
22285/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 @brief Helper routine used to find a session based on the BSSID
22287
22288
22289 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022290 ucBSSIdx: BSS Index of the session
22291 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022292
Jeff Johnson295189b2012-06-20 16:38:30 -070022293 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022295*/
22296wpt_uint8
22297WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022298(
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 WDI_ControlBlockType* pWDICtx,
22300 wpt_uint16 usIdx,
22301 WDI_BSSSessionType** ppSession
22302)
22303{
22304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22305
22306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 -------------------------------------------------------------------------*/
22309 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22310 {
22311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022312 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 }
22315
22316 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022317 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022318
22319 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022320
Jeff Johnson295189b2012-06-20 16:38:30 -070022321}/*WDI_FindAssocSessionByBSSIdx*/
22322
22323/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022324 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022325 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022326
22327
22328 @param pWDICtx: pointer to the WLAN DAL context
22329 pSession: pointer to the session (if found)
22330
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022333*/
22334wpt_uint8
22335WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022336(
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 WDI_ControlBlockType* pWDICtx,
22338 WDI_BSSSessionType** ppSession
22339)
22340{
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022344 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 -------------------------------------------------------------------------*/
22346 if ( NULL == ppSession )
22347 {
22348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022349 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 }
22352
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022354
Jeff Johnsone7245742012-09-05 17:12:55 -070022355 /*------------------------------------------------------------------------
22356 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 ------------------------------------------------------------------------*/
22358 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22359 {
22360 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22361 {
22362 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022363 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 return i;
22365 }
22366 }
22367
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022369}/*WDI_FindEmptySession*/
22370
22371
22372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022375
22376
22377 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022378 macBSSID: pointer to BSSID. If NULL, get all the session.
22379 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22380 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22381 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022382 @see
22383 @return Number of sessions in use
22384*/
22385wpt_uint8
22386WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022387(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022388 WDI_ControlBlockType* pWDICtx,
22389 wpt_macAddr macBSSID,
22390 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022391)
22392{
Jeff Johnsone7245742012-09-05 17:12:55 -070022393 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022395
22396 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022397 Count all sessions in use
22398 ------------------------------------------------------------------------*/
22399 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22400 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022401 if ( macBSSID && skipBSSID &&
22402 (eWLAN_PAL_TRUE ==
22403 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22404 WDI_MAC_ADDR_LEN)))
22405 {
22406 continue;
22407 }
22408 else if ( pWDICtx->aBSSSessions[i].bInUse )
22409 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022411 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 }
22413
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022415}/*WDI_GetActiveSessionsCount*/
22416
22417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022420
22421
22422 @param pWDICtx: pointer to the WLAN DAL context
22423 pSession: pointer to the session (if found)
22424
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022427*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022428void
Jeff Johnson295189b2012-06-20 16:38:30 -070022429WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022430(
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 WDI_ControlBlockType* pWDICtx,
22432 WDI_BSSSessionType* ppSession
22433)
22434{
22435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 -------------------------------------------------------------------------*/
22438 if ( NULL == ppSession )
22439 {
22440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022441 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 }
22444
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 /*------------------------------------------------------------------------
22446 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 ------------------------------------------------------------------------*/
22448 wpal_list_destroy(&ppSession->wptPendingQueue);
22449 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22451 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22453 wpal_list_init(&ppSession->wptPendingQueue);
22454
22455}/*WDI_DeleteSession*/
22456
22457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022460 @param
22461
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 WDI_AddStaParams: - pointer to the WDI Add STA params
22463 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022464
22465 @see
22466 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022467*/
22468void
22469WDI_AddBcastSTAtoSTATable
22470(
22471 WDI_ControlBlockType* pWDICtx,
22472 WDI_AddStaParams * staParams,
22473 wpt_uint16 usBcastStaIdx
22474)
22475{
22476 WDI_AddStaParams wdiAddSTAParam = {0};
22477 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22479
22480 /*---------------------------------------------------------------------
22481 Sanity check
22482 ---------------------------------------------------------------------*/
22483 if ( NULL == staParams )
22484 {
22485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022486 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022487
Jeff Johnsone7245742012-09-05 17:12:55 -070022488 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022489 }
22490
22491 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22492 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22493 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22494 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22495 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22496 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22497 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22498 WDI_MAC_ADDR_LEN );
22499 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22500 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22501 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22502 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22503 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22504 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22505 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022506
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22508}
22509
22510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 @brief NV blob will be divided into fragments of size 4kb and
22512 Sent to HAL
22513
22514 @param pWDICtx: pointer to the WLAN DAL context
22515 pEventData: pointer to the event information structure
22516
Jeff Johnson295189b2012-06-20 16:38:30 -070022517 @see
22518 @return Result of the function call
22519 */
22520
22521WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022522(
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 WDI_ControlBlockType* pWDICtx,
22524 WDI_EventInfoType* pEventData
22525)
22526{
22527
22528 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22529 wpt_uint8* pSendBuffer = NULL;
22530 wpt_uint16 usDataOffset = 0;
22531 wpt_uint16 usSendSize = 0;
22532 wpt_uint16 usCurrentFragmentSize =0;
22533 wpt_uint8* pSrcBuffer = NULL;
22534 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22535 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22536
22537 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22538 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22539 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22540
Jeff Johnsone7245742012-09-05 17:12:55 -070022541 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022542 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22543
22544 /* Update the current Fragment Number */
22545 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22546
22547 /*Update the HAL REQ structure */
22548 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22549 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22550 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22551
22552 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022553 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 image will be sent to HAL*/
22555
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22562 usCurrentFragmentSize = FRAGMENT_SIZE;
22563
22564 /*Update the HAL REQ structure */
22565 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22566 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22567
22568 }
22569 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 usCurrentFragmentSize = FRAGMENT_SIZE;
22572
22573 /*Update the HAL REQ structure */
22574 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22575 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22576 }
22577
22578 /*-----------------------------------------------------------------------
22579 Get message buffer
22580 -----------------------------------------------------------------------*/
22581 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22582 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22583 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022584 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022585 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22586 {
22587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022588 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022589 pEventData, pwdiNvDownloadReqParams);
22590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 }
22593
22594 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022595 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022596 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22597
22598 /* Appending the NV image fragment */
22599 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22600 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22601 usCurrentFragmentSize);
22602
22603 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022604 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022605
Jeff Johnsone7245742012-09-05 17:12:55 -070022606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22607 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022608 WDI_NV_DOWNLOAD_RESP);
22609
22610}
Jeff Johnsone7245742012-09-05 17:12:55 -070022611/*============================================================================
22612 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 ============================================================================*/
22614/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022615 @brief Helper routine used to find a session based on the BSSID
22616 @param pContext: pointer to the WLAN DAL context
22617 @param pDPContext: pointer to the Datapath context
22618
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022620 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022621*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022622WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022623WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22624{
22625 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22626
22627 pCB->pDPContext = pDPContext;
22628 return;
22629}
22630
22631/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 @brief Helper routine used to find a session based on the BSSID
22633
22634
22635 @param pContext: pointer to the WLAN DAL context
22636
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 @see
22638 @return pointer to Datapath context
22639*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022640WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022641WDI_DS_GetDatapathContext (void *pContext)
22642{
22643 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22644 return pCB->pDPContext;
22645}
22646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 @brief Helper routine used to find a session based on the BSSID
22648
22649
22650 @param pContext: pointer to the WLAN DAL context
22651 @param pDTDriverContext: pointer to the Transport Driver context
22652
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 @see
22654 @return void
22655*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022656WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022657WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22658{
22659 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22660
22661 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022662 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022663}
22664
22665/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022666 @brief Helper routine used to find a session based on the BSSID
22667
22668
22669 @param pWDICtx: pointer to the WLAN DAL context
22670
Jeff Johnson295189b2012-06-20 16:38:30 -070022671 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022672 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022673*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022674WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022675WDT_GetTransportDriverContext (void *pContext)
22676{
22677 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022678 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022679}
22680
Jeff Johnsone7245742012-09-05 17:12:55 -070022681/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022682 Helper inline converters
22683 ============================================================================*/
22684/*Convert WDI driver type into HAL driver type*/
22685WPT_STATIC WPT_INLINE WDI_Status
22686WDI_HAL_2_WDI_STATUS
22687(
22688 eHalStatus halStatus
22689)
22690{
Jeff Johnsone7245742012-09-05 17:12:55 -070022691 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022692 the chances of getting inlined*/
22693 switch( halStatus )
22694 {
22695 case eHAL_STATUS_SUCCESS:
22696 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22697 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22698 return WDI_STATUS_SUCCESS;
22699 case eHAL_STATUS_FAILURE:
22700 return WDI_STATUS_E_FAILURE;
22701 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 return WDI_STATUS_MEM_FAILURE;
22703 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022704 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 default:
22706 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22707 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022708
Jeff Johnsone7245742012-09-05 17:12:55 -070022709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022710}/*WDI_HAL_2_WDI_STATUS*/
22711
22712/*Convert WDI request type into HAL request type*/
22713WPT_STATIC WPT_INLINE tHalHostMsgType
22714WDI_2_HAL_REQ_TYPE
22715(
22716 WDI_RequestEnumType wdiReqType
22717)
22718{
Jeff Johnsone7245742012-09-05 17:12:55 -070022719 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 the chances of getting inlined*/
22721 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022744 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022752 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022754 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 return WLAN_HAL_RMV_STAKEY_REQ;
22758 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 case WDI_DEL_BA_REQ:
22767 return WLAN_HAL_DEL_BA_REQ;
22768#ifdef FEATURE_WLAN_CCX
22769 case WDI_TSM_STATS_REQ:
22770 return WLAN_HAL_TSM_STATS_REQ;
22771#endif
22772 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022773 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022775 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022776 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022777 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 case WDI_ADD_BA_SESSION_REQ:
22783 return WLAN_HAL_ADD_BA_SESSION_REQ;
22784 case WDI_TRIGGER_BA_REQ:
22785 return WLAN_HAL_TRIGGER_BA_REQ;
22786 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022787 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022788 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022789 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22791 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22792 case WDI_SET_MAX_TX_POWER_REQ:
22793 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070022794 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22795 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070022796 case WDI_SET_TX_POWER_REQ:
22797 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022798 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22799 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022800#ifdef FEATURE_WLAN_TDLS
22801 case WDI_TDLS_LINK_ESTABLISH_REQ:
22802 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22803#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022807 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022808 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022809 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022817 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022819 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022820 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 case WDI_REM_BEACON_FILTER_REQ:
22825 return WLAN_HAL_REM_BCN_FILTER_REQ;
22826 case WDI_SET_RSSI_THRESHOLDS_REQ:
22827 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22828 case WDI_HOST_OFFLOAD_REQ:
22829 return WLAN_HAL_HOST_OFFLOAD_REQ;
22830 case WDI_WOWL_ADD_BC_PTRN_REQ:
22831 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22832 case WDI_WOWL_DEL_BC_PTRN_REQ:
22833 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22834 case WDI_WOWL_ENTER_REQ:
22835 return WLAN_HAL_ENTER_WOWL_REQ;
22836 case WDI_WOWL_EXIT_REQ:
22837 return WLAN_HAL_EXIT_WOWL_REQ;
22838 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22839 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22840 case WDI_NV_DOWNLOAD_REQ:
22841 return WLAN_HAL_DOWNLOAD_NV_REQ;
22842 case WDI_FLUSH_AC_REQ:
22843 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22844 case WDI_BTAMP_EVENT_REQ:
22845 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22846#ifdef WLAN_FEATURE_VOWIFI_11R
22847 case WDI_AGGR_ADD_TS_REQ:
22848 return WLAN_HAL_AGGR_ADD_TS_REQ;
22849#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022850 case WDI_FTM_CMD_REQ:
22851 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022852 case WDI_ADD_STA_SELF_REQ:
22853 return WLAN_HAL_ADD_STA_SELF_REQ;
22854 case WDI_DEL_STA_SELF_REQ:
22855 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022856#ifdef FEATURE_OEM_DATA_SUPPORT
22857 case WDI_START_OEM_DATA_REQ:
22858 return WLAN_HAL_START_OEM_DATA_REQ;
22859#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 case WDI_HOST_RESUME_REQ:
22861 return WLAN_HAL_HOST_RESUME_REQ;
22862 case WDI_HOST_SUSPEND_IND:
22863 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080022864 case WDI_TRAFFIC_STATS_IND:
22865 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070022866#ifdef WLAN_FEATURE_11W
22867 case WDI_EXCLUDE_UNENCRYPTED_IND:
22868 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22869#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022870 case WDI_KEEP_ALIVE_REQ:
22871 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022872#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070022873 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22874 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022875#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022876#ifdef FEATURE_WLAN_SCAN_PNO
22877 case WDI_SET_PREF_NETWORK_REQ:
22878 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22879 case WDI_SET_RSSI_FILTER_REQ:
22880 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22881 case WDI_UPDATE_SCAN_PARAMS_REQ:
22882 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22883#endif // FEATURE_WLAN_SCAN_PNO
22884 case WDI_SET_TX_PER_TRACKING_REQ:
22885 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22886#ifdef WLAN_FEATURE_PACKET_FILTERING
22887 case WDI_8023_MULTICAST_LIST_REQ:
22888 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22889 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022890 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022891 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22892 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22893 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22894 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22895#endif // WLAN_FEATURE_PACKET_FILTERING
22896 case WDI_HAL_DUMP_CMD_REQ:
22897 return WLAN_HAL_DUMP_COMMAND_REQ;
22898#ifdef WLAN_FEATURE_GTK_OFFLOAD
22899 case WDI_GTK_OFFLOAD_REQ:
22900 return WLAN_HAL_GTK_OFFLOAD_REQ;
22901 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22902 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22903#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22904
22905 case WDI_INIT_SCAN_CON_REQ:
22906 return WLAN_HAL_INIT_SCAN_CON_REQ;
22907 case WDI_SET_POWER_PARAMS_REQ:
22908 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22909 case WDI_SET_TM_LEVEL_REQ:
22910 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22911 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22912 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022913#ifdef WLAN_FEATURE_11AC
22914 case WDI_UPDATE_VHT_OP_MODE_REQ:
22915 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22916#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080022917 case WDI_GET_ROAM_RSSI_REQ:
22918 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053022919 case WDI_DHCP_START_IND:
22920 return WLAN_HAL_DHCP_START_IND;
22921 case WDI_DHCP_STOP_IND:
22922 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070022923#ifdef FEATURE_WLAN_LPHB
22924 case WDI_LPHB_CFG_REQ:
22925 return WLAN_HAL_LPHB_CFG_REQ;
22926#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070022927 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22928 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22929 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22930 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22931
Rajeev79dbe4c2013-10-05 11:03:42 +053022932#ifdef FEATURE_WLAN_BATCH_SCAN
22933 case WDI_SET_BATCH_SCAN_REQ:
22934 return WLAN_HAL_BATCHSCAN_SET_REQ;
22935 case WDI_STOP_BATCH_SCAN_IND:
22936 return WLAN_HAL_BATCHSCAN_STOP_IND;
22937 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22938 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22939#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070022940 case WDI_RATE_UPDATE_IND:
22941 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev79dbe4c2013-10-05 11:03:42 +053022942
Jeff Johnson295189b2012-06-20 16:38:30 -070022943 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022945 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022946
Jeff Johnson295189b2012-06-20 16:38:30 -070022947}/*WDI_2_HAL_REQ_TYPE*/
22948
22949/*Convert WDI response type into HAL response type*/
22950WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22951HAL_2_WDI_RSP_TYPE
22952(
22953 tHalHostMsgType halMsg
22954)
22955{
Jeff Johnsone7245742012-09-05 17:12:55 -070022956 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022957 the chances of getting inlined*/
22958 switch( halMsg )
22959 {
22960 case WLAN_HAL_START_RSP:
22961 return WDI_START_RESP;
22962 case WLAN_HAL_STOP_RSP:
22963 return WDI_STOP_RESP;
22964 case WLAN_HAL_INIT_SCAN_RSP:
22965 return WDI_INIT_SCAN_RESP;
22966 case WLAN_HAL_START_SCAN_RSP:
22967 return WDI_START_SCAN_RESP;
22968 case WLAN_HAL_END_SCAN_RSP:
22969 return WDI_END_SCAN_RESP;
22970 case WLAN_HAL_FINISH_SCAN_RSP:
22971 return WDI_FINISH_SCAN_RESP;
22972 case WLAN_HAL_CONFIG_STA_RSP:
22973 return WDI_CONFIG_STA_RESP;
22974 case WLAN_HAL_DELETE_STA_RSP:
22975 return WDI_DEL_STA_RESP;
22976 case WLAN_HAL_CONFIG_BSS_RSP:
22977 return WDI_CONFIG_BSS_RESP;
22978 case WLAN_HAL_DELETE_BSS_RSP:
22979 return WDI_DEL_BSS_RESP;
22980 case WLAN_HAL_JOIN_RSP:
22981 return WDI_JOIN_RESP;
22982 case WLAN_HAL_POST_ASSOC_RSP:
22983 return WDI_POST_ASSOC_RESP;
22984 case WLAN_HAL_SET_BSSKEY_RSP:
22985 return WDI_SET_BSS_KEY_RESP;
22986 case WLAN_HAL_SET_STAKEY_RSP:
22987 return WDI_SET_STA_KEY_RESP;
22988 case WLAN_HAL_RMV_BSSKEY_RSP:
22989 return WDI_RMV_BSS_KEY_RESP;
22990 case WLAN_HAL_RMV_STAKEY_RSP:
22991 return WDI_RMV_STA_KEY_RESP;
22992 case WLAN_HAL_SET_BCASTKEY_RSP:
22993 return WDI_SET_STA_BCAST_KEY_RESP;
22994 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22995 // return WDI_RMV_STA_BCAST_KEY_RESP;
22996 case WLAN_HAL_ADD_TS_RSP:
22997 return WDI_ADD_TS_RESP;
22998 case WLAN_HAL_DEL_TS_RSP:
22999 return WDI_DEL_TS_RESP;
23000 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23001 return WDI_UPD_EDCA_PRMS_RESP;
23002 case WLAN_HAL_ADD_BA_RSP:
23003 return WDI_ADD_BA_RESP;
23004 case WLAN_HAL_DEL_BA_RSP:
23005 return WDI_DEL_BA_RESP;
23006#ifdef FEATURE_WLAN_CCX
23007 case WLAN_HAL_TSM_STATS_RSP:
23008 return WDI_TSM_STATS_RESP;
23009#endif
23010 case WLAN_HAL_CH_SWITCH_RSP:
23011 return WDI_CH_SWITCH_RESP;
23012 case WLAN_HAL_SET_LINK_ST_RSP:
23013 return WDI_SET_LINK_ST_RESP;
23014 case WLAN_HAL_GET_STATS_RSP:
23015 return WDI_GET_STATS_RESP;
23016 case WLAN_HAL_UPDATE_CFG_RSP:
23017 return WDI_UPDATE_CFG_RESP;
23018 case WLAN_HAL_ADD_BA_SESSION_RSP:
23019 return WDI_ADD_BA_SESSION_RESP;
23020 case WLAN_HAL_TRIGGER_BA_RSP:
23021 return WDI_TRIGGER_BA_RESP;
23022 case WLAN_HAL_UPDATE_BEACON_RSP:
23023 return WDI_UPD_BCON_PRMS_RESP;
23024 case WLAN_HAL_SEND_BEACON_RSP:
23025 return WDI_SND_BCON_RESP;
23026 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23027 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23028 /*Indications*/
23029 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23030 return WDI_HAL_RSSI_NOTIFICATION_IND;
23031 case WLAN_HAL_MISSED_BEACON_IND:
23032 return WDI_HAL_MISSED_BEACON_IND;
23033 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23034 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23035 case WLAN_HAL_MIC_FAILURE_IND:
23036 return WDI_HAL_MIC_FAILURE_IND;
23037 case WLAN_HAL_FATAL_ERROR_IND:
23038 return WDI_HAL_FATAL_ERROR_IND;
23039 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23040 return WDI_HAL_DEL_STA_IND;
23041 case WLAN_HAL_COEX_IND:
23042 return WDI_HAL_COEX_IND;
23043 case WLAN_HAL_OTA_TX_COMPL_IND:
23044 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 case WLAN_HAL_P2P_NOA_ATTR_IND:
23046 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023047 case WLAN_HAL_P2P_NOA_START_IND:
23048 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023049 case WLAN_HAL_TX_PER_HIT_IND:
23050 return WDI_HAL_TX_PER_HIT_IND;
23051 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23052 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023053 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23054 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023055 case WLAN_HAL_SET_TX_POWER_RSP:
23056 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023057 case WLAN_HAL_SET_P2P_GONOA_RSP:
23058 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023059#ifdef FEATURE_WLAN_TDLS
23060 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23061 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23062 case WLAN_HAL_TDLS_IND:
23063 return WDI_HAL_TDLS_IND;
23064#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23084 return WDI_SET_BEACON_FILTER_RESP;
23085 case WLAN_HAL_REM_BCN_FILTER_RSP:
23086 return WDI_REM_BEACON_FILTER_RESP;
23087 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23088 return WDI_SET_RSSI_THRESHOLDS_RESP;
23089 case WLAN_HAL_HOST_OFFLOAD_RSP:
23090 return WDI_HOST_OFFLOAD_RESP;
23091 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23092 return WDI_WOWL_ADD_BC_PTRN_RESP;
23093 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23094 return WDI_WOWL_DEL_BC_PTRN_RESP;
23095 case WLAN_HAL_ENTER_WOWL_RSP:
23096 return WDI_WOWL_ENTER_RESP;
23097 case WLAN_HAL_EXIT_WOWL_RSP:
23098 return WDI_WOWL_EXIT_RESP;
23099 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23100 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23101 case WLAN_HAL_DOWNLOAD_NV_RSP:
23102 return WDI_NV_DOWNLOAD_RESP;
23103 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23104 return WDI_FLUSH_AC_RESP;
23105 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23106 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023107 case WLAN_HAL_PROCESS_PTT_RSP:
23108 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023109 case WLAN_HAL_ADD_STA_SELF_RSP:
23110 return WDI_ADD_STA_SELF_RESP;
23111case WLAN_HAL_DEL_STA_SELF_RSP:
23112 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023113#ifdef FEATURE_OEM_DATA_SUPPORT
23114 case WLAN_HAL_START_OEM_DATA_RSP:
23115 return WDI_START_OEM_DATA_RESP;
23116#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 case WLAN_HAL_HOST_RESUME_RSP:
23118 return WDI_HOST_RESUME_RESP;
23119 case WLAN_HAL_KEEP_ALIVE_RSP:
23120 return WDI_KEEP_ALIVE_RESP;
23121#ifdef FEATURE_WLAN_SCAN_PNO
23122 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23123 return WDI_SET_PREF_NETWORK_RESP;
23124 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023125 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023126 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23127 return WDI_UPDATE_SCAN_PARAMS_RESP;
23128 case WLAN_HAL_PREF_NETW_FOUND_IND:
23129 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23130#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023131#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023132 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23133 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023134#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23136 return WDI_SET_TX_PER_TRACKING_RESP;
23137#ifdef WLAN_FEATURE_PACKET_FILTERING
23138 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23139 return WDI_8023_MULTICAST_LIST_RESP;
23140 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23141 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23142 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23143 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23144 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23145 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23146#endif // WLAN_FEATURE_PACKET_FILTERING
23147
23148 case WLAN_HAL_DUMP_COMMAND_RSP:
23149 return WDI_HAL_DUMP_CMD_RESP;
23150 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23151 return WDI_SET_POWER_PARAMS_RESP;
23152#ifdef WLAN_FEATURE_VOWIFI_11R
23153 case WLAN_HAL_AGGR_ADD_TS_RSP:
23154 return WDI_AGGR_ADD_TS_RESP;
23155#endif
23156
23157#ifdef WLAN_FEATURE_GTK_OFFLOAD
23158 case WLAN_HAL_GTK_OFFLOAD_RSP:
23159 return WDI_GTK_OFFLOAD_RESP;
23160 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23161 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23162#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23163#ifdef WLAN_WAKEUP_EVENTS
23164 case WLAN_HAL_WAKE_REASON_IND:
23165 return WDI_HAL_WAKE_REASON_IND;
23166#endif // WLAN_WAKEUP_EVENTS
23167
23168 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23169 return WDI_SET_TM_LEVEL_RESP;
23170 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23171 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023172#ifdef WLAN_FEATURE_11AC
23173 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23174 return WDI_UPDATE_VHT_OP_MODE_RESP;
23175#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023176#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23177 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23178 return WDI_GET_ROAM_RSSI_RESP;
23179#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023180
Leo Chang9056f462013-08-01 19:21:11 -070023181#ifdef FEATURE_WLAN_LPHB
23182 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023183 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023184 case WLAN_HAL_LPHB_CFG_RSP:
23185 return WDI_LPHB_CFG_RESP;
23186#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023187
23188 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23189 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023190 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23191 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023192
Rajeev79dbe4c2013-10-05 11:03:42 +053023193#ifdef FEATURE_WLAN_BATCH_SCAN
23194 case WLAN_HAL_BATCHSCAN_SET_RSP:
23195 return WDI_SET_BATCH_SCAN_RESP;
23196 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23197 return WDI_BATCHSCAN_RESULT_IND;
23198#endif // FEATURE_WLAN_BATCH_SCAN
23199
Leo Chang0b0e45a2013-12-15 15:18:55 -080023200#ifdef FEATURE_WLAN_CH_AVOID
23201 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23202 return WDI_HAL_CH_AVOID_IND;
23203#endif /* FEATURE_WLAN_CH_AVOID */
23204
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 }
23208
23209}/*HAL_2_WDI_RSP_TYPE*/
23210
23211
23212/*Convert WDI driver type into HAL driver type*/
23213WPT_STATIC WPT_INLINE tDriverType
23214WDI_2_HAL_DRV_TYPE
23215(
23216 WDI_DriverType wdiDriverType
23217)
23218{
Jeff Johnsone7245742012-09-05 17:12:55 -070023219 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 the chances of getting inlined*/
23221 switch( wdiDriverType )
23222 {
23223 case WDI_DRIVER_TYPE_PRODUCTION:
23224 return eDRIVER_TYPE_PRODUCTION;
23225 case WDI_DRIVER_TYPE_MFG:
23226 return eDRIVER_TYPE_MFG;
23227 case WDI_DRIVER_TYPE_DVT:
23228 return eDRIVER_TYPE_DVT;
23229 }
23230
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023232}/*WDI_2_HAL_DRV_TYPE*/
23233
23234
23235/*Convert WDI stop reason into HAL stop reason*/
23236WPT_STATIC WPT_INLINE tHalStopType
23237WDI_2_HAL_STOP_REASON
23238(
23239 WDI_StopType wdiDriverType
23240)
23241{
Jeff Johnsone7245742012-09-05 17:12:55 -070023242 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 the chances of getting inlined*/
23244 switch( wdiDriverType )
23245 {
23246 case WDI_STOP_TYPE_SYS_RESET:
23247 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023248 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23249 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023250 case WDI_STOP_TYPE_RF_KILL:
23251 return HAL_STOP_TYPE_RF_KILL;
23252 }
23253
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023255}/*WDI_2_HAL_STOP_REASON*/
23256
23257
23258/*Convert WDI scan mode type into HAL scan mode type*/
23259WPT_STATIC WPT_INLINE eHalSysMode
23260WDI_2_HAL_SCAN_MODE
23261(
23262 WDI_ScanMode wdiScanMode
23263)
23264{
Jeff Johnsone7245742012-09-05 17:12:55 -070023265 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023266 the chances of getting inlined*/
23267 switch( wdiScanMode )
23268 {
23269 case WDI_SCAN_MODE_NORMAL:
23270 return eHAL_SYS_MODE_NORMAL;
23271 case WDI_SCAN_MODE_LEARN:
23272 return eHAL_SYS_MODE_LEARN;
23273 case WDI_SCAN_MODE_SCAN:
23274 return eHAL_SYS_MODE_SCAN;
23275 case WDI_SCAN_MODE_PROMISC:
23276 return eHAL_SYS_MODE_PROMISC;
23277 case WDI_SCAN_MODE_SUSPEND_LINK:
23278 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023279 case WDI_SCAN_MODE_ROAM_SCAN:
23280 return eHAL_SYS_MODE_ROAM_SCAN;
23281 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23282 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 }
23284
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023286}/*WDI_2_HAL_SCAN_MODE*/
23287
23288/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023289WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023290WDI_2_HAL_SEC_CH_OFFSET
23291(
23292 WDI_HTSecondaryChannelOffset wdiSecChOffset
23293)
23294{
Jeff Johnsone7245742012-09-05 17:12:55 -070023295 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 the chances of getting inlined*/
23297 switch( wdiSecChOffset )
23298 {
23299 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23305#ifdef WLAN_FEATURE_11AC
23306 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23307 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23308 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23309 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23310 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23311 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23312 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23313 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23314 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23315 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23316 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23317 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23318 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23319 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23320#endif
23321 default:
23322 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023323 }
23324
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023326}/*WDI_2_HAL_SEC_CH_OFFSET*/
23327
23328/*Convert WDI BSS type into HAL BSS type*/
23329WPT_STATIC WPT_INLINE tSirBssType
23330WDI_2_HAL_BSS_TYPE
23331(
23332 WDI_BssType wdiBSSType
23333)
23334{
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 the chances of getting inlined*/
23337 switch( wdiBSSType )
23338 {
23339 case WDI_INFRASTRUCTURE_MODE:
23340 return eSIR_INFRASTRUCTURE_MODE;
23341 case WDI_INFRA_AP_MODE:
23342 return eSIR_INFRA_AP_MODE;
23343 case WDI_IBSS_MODE:
23344 return eSIR_IBSS_MODE;
23345 case WDI_BTAMP_STA_MODE:
23346 return eSIR_BTAMP_STA_MODE;
23347 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023348 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023349 case WDI_BSS_AUTO_MODE:
23350 return eSIR_AUTO_MODE;
23351 }
23352
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354}/*WDI_2_HAL_BSS_TYPE*/
23355
23356/*Convert WDI NW type into HAL NW type*/
23357WPT_STATIC WPT_INLINE tSirNwType
23358WDI_2_HAL_NW_TYPE
23359(
23360 WDI_NwType wdiNWType
23361)
23362{
Jeff Johnsone7245742012-09-05 17:12:55 -070023363 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 the chances of getting inlined*/
23365 switch( wdiNWType )
23366 {
23367 case WDI_11A_NW_TYPE:
23368 return eSIR_11A_NW_TYPE;
23369 case WDI_11B_NW_TYPE:
23370 return eSIR_11B_NW_TYPE;
23371 case WDI_11G_NW_TYPE:
23372 return eSIR_11G_NW_TYPE;
23373 case WDI_11N_NW_TYPE:
23374 return eSIR_11N_NW_TYPE;
23375 }
23376
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378}/*WDI_2_HAL_NW_TYPE*/
23379
23380/*Convert WDI chanel bonding type into HAL cb type*/
23381WPT_STATIC WPT_INLINE ePhyChanBondState
23382WDI_2_HAL_CB_STATE
23383(
23384 WDI_PhyChanBondState wdiCbState
23385)
23386{
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 the chances of getting inlined*/
23389 switch ( wdiCbState )
23390 {
23391 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23392 return PHY_SINGLE_CHANNEL_CENTERED;
23393 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23394 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23395 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23396 return PHY_DOUBLE_CHANNEL_CENTERED;
23397 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23398 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023399#ifdef WLAN_FEATURE_11AC
23400 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23401 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23402 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23403 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23404 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23405 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23406 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23407 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23408 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23409 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23410 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23411 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23412 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23413 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23414#endif
23415 case WDI_MAX_CB_STATE:
23416 default:
23417 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023419
Jeff Johnson295189b2012-06-20 16:38:30 -070023420 return PHY_CHANNEL_BONDING_STATE_MAX;
23421}/*WDI_2_HAL_CB_STATE*/
23422
23423/*Convert WDI chanel bonding type into HAL cb type*/
23424WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23425WDI_2_HAL_HT_OPER_MODE
23426(
23427 WDI_HTOperatingMode wdiHTOperMode
23428)
23429{
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 the chances of getting inlined*/
23432 switch ( wdiHTOperMode )
23433 {
23434 case WDI_HT_OP_MODE_PURE:
23435 return eSIR_HT_OP_MODE_PURE;
23436 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23437 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23438 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23439 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23440 case WDI_HT_OP_MODE_MIXED:
23441 return eSIR_HT_OP_MODE_MIXED;
23442 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023443
Jeff Johnson295189b2012-06-20 16:38:30 -070023444 return eSIR_HT_OP_MODE_MAX;
23445}/*WDI_2_HAL_HT_OPER_MODE*/
23446
23447/*Convert WDI mimo PS type into HAL mimo PS type*/
23448WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23449WDI_2_HAL_MIMO_PS
23450(
23451 WDI_HTMIMOPowerSaveState wdiHTOperMode
23452)
23453{
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023455 the chances of getting inlined*/
23456 switch ( wdiHTOperMode )
23457 {
23458 case WDI_HT_MIMO_PS_STATIC:
23459 return eSIR_HT_MIMO_PS_STATIC;
23460 case WDI_HT_MIMO_PS_DYNAMIC:
23461 return eSIR_HT_MIMO_PS_DYNAMIC;
23462 case WDI_HT_MIMO_PS_NA:
23463 return eSIR_HT_MIMO_PS_NA;
23464 case WDI_HT_MIMO_PS_NO_LIMIT:
23465 return eSIR_HT_MIMO_PS_NO_LIMIT;
23466 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023467
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 return eSIR_HT_MIMO_PS_MAX;
23469}/*WDI_2_HAL_MIMO_PS*/
23470
23471/*Convert WDI ENC type into HAL ENC type*/
23472WPT_STATIC WPT_INLINE tAniEdType
23473WDI_2_HAL_ENC_TYPE
23474(
23475 WDI_EncryptType wdiEncType
23476)
23477{
Jeff Johnsone7245742012-09-05 17:12:55 -070023478 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023479 the chances of getting inlined*/
23480 switch ( wdiEncType )
23481 {
23482 case WDI_ENCR_NONE:
23483 return eSIR_ED_NONE;
23484
23485 case WDI_ENCR_WEP40:
23486 return eSIR_ED_WEP40;
23487
23488 case WDI_ENCR_WEP104:
23489 return eSIR_ED_WEP104;
23490
23491 case WDI_ENCR_TKIP:
23492 return eSIR_ED_TKIP;
23493
23494 case WDI_ENCR_CCMP:
23495 return eSIR_ED_CCMP;
23496
23497 case WDI_ENCR_AES_128_CMAC:
23498 return eSIR_ED_AES_128_CMAC;
23499#if defined(FEATURE_WLAN_WAPI)
23500 case WDI_ENCR_WPI:
23501 return eSIR_ED_WPI;
23502#endif
23503 default:
23504 return eSIR_ED_NOT_IMPLEMENTED;
23505 }
23506
23507}/*WDI_2_HAL_ENC_TYPE*/
23508
23509/*Convert WDI WEP type into HAL WEP type*/
23510WPT_STATIC WPT_INLINE tAniWepType
23511WDI_2_HAL_WEP_TYPE
23512(
23513 WDI_WepType wdiWEPType
23514)
23515{
Jeff Johnsone7245742012-09-05 17:12:55 -070023516 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 the chances of getting inlined*/
23518 switch ( wdiWEPType )
23519 {
23520 case WDI_WEP_STATIC:
23521 return eSIR_WEP_STATIC;
23522
23523 case WDI_WEP_DYNAMIC:
23524 return eSIR_WEP_DYNAMIC;
23525 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023526
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 return eSIR_WEP_MAX;
23528}/*WDI_2_HAL_WEP_TYPE*/
23529
23530WPT_STATIC WPT_INLINE tSirLinkState
23531WDI_2_HAL_LINK_STATE
23532(
23533 WDI_LinkStateType wdiLinkState
23534)
23535{
Jeff Johnsone7245742012-09-05 17:12:55 -070023536 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 the chances of getting inlined*/
23538 switch ( wdiLinkState )
23539 {
23540 case WDI_LINK_IDLE_STATE:
23541 return eSIR_LINK_IDLE_STATE;
23542
23543 case WDI_LINK_PREASSOC_STATE:
23544 return eSIR_LINK_PREASSOC_STATE;
23545
23546 case WDI_LINK_POSTASSOC_STATE:
23547 return eSIR_LINK_POSTASSOC_STATE;
23548
23549 case WDI_LINK_AP_STATE:
23550 return eSIR_LINK_AP_STATE;
23551
23552 case WDI_LINK_IBSS_STATE:
23553 return eSIR_LINK_IBSS_STATE;
23554
23555 case WDI_LINK_BTAMP_PREASSOC_STATE:
23556 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23557
23558 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23559 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23560
23561 case WDI_LINK_BTAMP_AP_STATE:
23562 return eSIR_LINK_BTAMP_AP_STATE;
23563
23564 case WDI_LINK_BTAMP_STA_STATE:
23565 return eSIR_LINK_BTAMP_STA_STATE;
23566
23567 case WDI_LINK_LEARN_STATE:
23568 return eSIR_LINK_LEARN_STATE;
23569
23570 case WDI_LINK_SCAN_STATE:
23571 return eSIR_LINK_SCAN_STATE;
23572
23573 case WDI_LINK_FINISH_SCAN_STATE:
23574 return eSIR_LINK_FINISH_SCAN_STATE;
23575
23576 case WDI_LINK_INIT_CAL_STATE:
23577 return eSIR_LINK_INIT_CAL_STATE;
23578
23579 case WDI_LINK_FINISH_CAL_STATE:
23580 return eSIR_LINK_FINISH_CAL_STATE;
23581
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 case WDI_LINK_LISTEN_STATE:
23583 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023584
Gopichand Nakkala924e4552013-05-08 19:18:14 +053023585 case WDI_LINK_SEND_ACTION_STATE:
23586 return eSIR_LINK_SEND_ACTION_STATE;
23587
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 default:
23589 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023591}
23592
Jeff Johnsone7245742012-09-05 17:12:55 -070023593/*Translate a STA Context from WDI into HAL*/
23594WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023595void
23596WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023597(
Jeff Johnson295189b2012-06-20 16:38:30 -070023598 tConfigStaParams* phalConfigSta,
23599 WDI_ConfigStaReqInfoType* pwdiConfigSta
23600)
23601{
23602 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023603#ifdef WLAN_FEATURE_11AC
23604 /* Get the Version 1 Handler */
23605 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23606 if (WDI_getFwWlanFeatCaps(DOT11AC))
23607 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023608 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023609 }
23610#endif
23611 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 the chances of getting inlined*/
23613
Jeff Johnsone7245742012-09-05 17:12:55 -070023614 wpalMemoryCopy(phalConfigSta->bssId,
23615 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23616
23617 wpalMemoryCopy(phalConfigSta->staMac,
23618 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023619
23620 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23621 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23622 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23623 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23624 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23625 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23626 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23627 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23628 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23629 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23630 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23631 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23632 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23633 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23634 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23635 phalConfigSta->action = pwdiConfigSta->wdiAction;
23636 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23637 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23638 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23639 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23640 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23641 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23642 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023643
Jeff Johnson295189b2012-06-20 16:38:30 -070023644 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23645
Jeff Johnsone7245742012-09-05 17:12:55 -070023646 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 pwdiConfigSta->wdiSupportedRates.opRateMode;
23648 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23649 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23652 }
23653 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23654 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023655 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023656 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23657 }
23658 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23659 {
23660 phalConfigSta->supportedRates.aniLegacyRates[i] =
23661 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23662 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023663 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023664 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23665 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23666 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023667 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23669 }
23670 phalConfigSta->supportedRates.rxHighestDataRate =
23671 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23672
Jeff Johnsone7245742012-09-05 17:12:55 -070023673#ifdef WLAN_FEATURE_11AC
23674 if(phalConfigSta_V1 != NULL)
23675 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023676 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23677 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23678 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23679 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 }
23681#endif
23682
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023684
Jeff Johnsone7245742012-09-05 17:12:55 -070023685#ifdef WLAN_FEATURE_11AC
23686 if(phalConfigSta_V1 != NULL)
23687 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023688 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23689 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080023690 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080023691 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23692 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23693
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 }
23695#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023696}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023697
23698/*Translate a Rate set info from WDI into HAL*/
23699WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023700WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023701(
Jeff Johnson295189b2012-06-20 16:38:30 -070023702 tSirMacRateSet* pHalRateSet,
23703 WDI_RateSet* pwdiRateSet
23704)
23705{
Jeff Johnsone7245742012-09-05 17:12:55 -070023706 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23708
23709 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23710 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23711
23712 for ( i = 0; i < pHalRateSet->numRates; i++ )
23713 {
23714 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23715 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023716
Jeff Johnson295189b2012-06-20 16:38:30 -070023717}/*WDI_CopyWDIRateSetToHALRateSet*/
23718
23719
23720/*Translate an EDCA Parameter Record from WDI into HAL*/
23721WPT_STATIC WPT_INLINE void
23722WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023723(
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 tSirMacEdcaParamRecord* phalEdcaParam,
23725 WDI_EdcaParamRecord* pWDIEdcaParam
23726)
23727{
Jeff Johnsone7245742012-09-05 17:12:55 -070023728 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 the chances of getting inlined*/
23730
23731 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23732 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23733 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23734 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23735
23736 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23737 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23738 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23739}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23740
23741
23742/*Copy a management frame header from WDI fmt into HAL fmt*/
23743WPT_STATIC WPT_INLINE void
23744WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23745(
23746 tSirMacMgmtHdr* pmacMgmtHdr,
23747 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23748)
23749{
23750 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23751 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23752 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23753 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23754 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23755 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23756 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23757 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23758 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23759 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23760 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23761
23762 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23763 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23764
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023767 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023768 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023769 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 pwdiMacMgmtHdr->bssId, 6);
23771
23772 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23773 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23774 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23775
23776}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23777
23778
23779/*Copy config bss parameters from WDI fmt into HAL fmt*/
23780WPT_STATIC WPT_INLINE void
23781WDI_CopyWDIConfigBSSToHALConfigBSS
23782(
23783 tConfigBssParams* phalConfigBSS,
23784 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23785)
23786{
23787
23788 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023789#ifdef WLAN_FEATURE_11AC
23790 /* Get the Version 1 Handler */
23791 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23792 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023793 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023794#endif
23795
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 wpalMemoryCopy( phalConfigBSS->bssId,
23797 pwdiConfigBSS->macBSSID,
23798 WDI_MAC_ADDR_LEN);
23799
23800#ifdef HAL_SELF_STA_PER_BSS
23801 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23802 pwdiConfigBSS->macSelfAddr,
23803 WDI_MAC_ADDR_LEN);
23804#endif
23805
23806 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23807
23808 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23809 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23810
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 pwdiConfigBSS->ucShortSlotTimeSupported;
23813 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23814 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23815 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23816 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23817 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23820 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23821 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23822 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23823 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23824 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23825 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23826 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23827 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23828 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23829 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23830
Jeff Johnsone7245742012-09-05 17:12:55 -070023831 phalConfigBSS->htOperMode =
23832 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023833
23834 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23835 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23836 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23837 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23838
23839#ifdef WLAN_FEATURE_VOWIFI
23840 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23841#endif
23842
23843 /*! Used 32 as magic number because that is how the ssid is declared inside the
23844 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23847 pwdiConfigBSS->wdiSSID.ucLength : 32;
23848 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 pwdiConfigBSS->wdiSSID.sSSID,
23850 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023851
23852 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23853 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023854
Jeff Johnson295189b2012-06-20 16:38:30 -070023855 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23856 &pwdiConfigBSS->wdiRateSet);
23857
23858 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23859
23860 if(phalConfigBSS->edcaParamsValid)
23861 {
23862 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23863 &pwdiConfigBSS->wdiBEEDCAParams);
23864 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23865 &pwdiConfigBSS->wdiBKEDCAParams);
23866 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23867 &pwdiConfigBSS->wdiVIEDCAParams);
23868 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23869 &pwdiConfigBSS->wdiVOEDCAParams);
23870 }
23871
Jeff Johnsone7245742012-09-05 17:12:55 -070023872 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023873
23874 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23875
23876#ifdef WLAN_FEATURE_VOWIFI_11R
23877
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023879 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023880
Jeff Johnson295189b2012-06-20 16:38:30 -070023881 if( phalConfigBSS->extSetStaKeyParamValid )
23882 {
23883 /*-----------------------------------------------------------------------
23884 Copy the STA Key parameters into the HAL message
23885 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23888
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23891
23892 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23893
23894 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23895
23896 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23897
Jeff Johnson295189b2012-06-20 16:38:30 -070023898 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23899 keyIndex++)
23900 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023901 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023902 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23903 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23904 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23905 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23906 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23907 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023908 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023910 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023911 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023912 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023913 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23914 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023915 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 WDI_MAX_KEY_LENGTH);
23917 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023918 }
23919 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23920 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023921 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 sizeof(phalConfigBSS->extSetStaKeyParam) );
23923 }
23924
23925#endif /*WLAN_FEATURE_VOWIFI_11R*/
23926
Jeff Johnsone7245742012-09-05 17:12:55 -070023927#ifdef WLAN_FEATURE_11AC
23928 if(phalConfigBSS_V1 != NULL)
23929 {
23930 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23931 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23932 }
23933#endif
23934
Jeff Johnson295189b2012-06-20 16:38:30 -070023935}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23936
23937
Jeff Johnsone7245742012-09-05 17:12:55 -070023938/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 pointed to by user data */
23940WPT_STATIC WPT_INLINE void
23941WDI_ExtractRequestCBFromEvent
23942(
23943 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 void** ppUserData
23946)
23947{
23948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23949 switch ( pEvent->wdiRequest )
23950 {
23951 case WDI_START_REQ:
23952 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23953 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23954 break;
23955 case WDI_STOP_REQ:
23956 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23957 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23958 break;
23959 case WDI_INIT_SCAN_REQ:
23960 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23961 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23962 break;
23963 case WDI_START_SCAN_REQ:
23964 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23965 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23966 break;
23967 case WDI_END_SCAN_REQ:
23968 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23969 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23970 break;
23971 case WDI_FINISH_SCAN_REQ:
23972 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23973 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23974 break;
23975 case WDI_JOIN_REQ:
23976 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23977 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23978 break;
23979 case WDI_CONFIG_BSS_REQ:
23980 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23981 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23982 break;
23983 case WDI_DEL_BSS_REQ:
23984 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23985 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23986 break;
23987 case WDI_POST_ASSOC_REQ:
23988 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23989 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23990 break;
23991 case WDI_DEL_STA_REQ:
23992 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23993 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23994 break;
23995 case WDI_DEL_STA_SELF_REQ:
23996 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23997 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23998 break;
23999
24000 case WDI_SET_BSS_KEY_REQ:
24001 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24002 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24003 break;
24004 case WDI_RMV_BSS_KEY_REQ:
24005 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24006 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24007 break;
24008 case WDI_SET_STA_KEY_REQ:
24009 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24010 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24011 break;
24012 case WDI_RMV_STA_KEY_REQ:
24013 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24014 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24015 break;
24016 case WDI_ADD_TS_REQ:
24017 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24018 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24019 break;
24020 case WDI_DEL_TS_REQ:
24021 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24022 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24023 break;
24024 case WDI_UPD_EDCA_PRMS_REQ:
24025 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24026 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24027 break;
24028 case WDI_ADD_BA_SESSION_REQ:
24029 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24030 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24031 break;
24032 case WDI_DEL_BA_REQ:
24033 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24034 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24035 break;
24036#ifdef FEATURE_WLAN_CCX
24037 case WDI_TSM_STATS_REQ:
24038 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24039 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24040 break;
24041#endif
24042 case WDI_CH_SWITCH_REQ:
24043 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24044 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24045 break;
24046 case WDI_CONFIG_STA_REQ:
24047 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24048 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24049 break;
24050 case WDI_SET_LINK_ST_REQ:
24051 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24052 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24053 break;
24054 case WDI_GET_STATS_REQ:
24055 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24056 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24057 break;
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024058#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
24059 case WDI_GET_ROAM_RSSI_REQ:
24060 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24061 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24062 break;
24063#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 case WDI_UPDATE_CFG_REQ:
24065 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24066 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24067 break;
24068 case WDI_ADD_BA_REQ:
24069 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24070 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24071 break;
24072 case WDI_TRIGGER_BA_REQ:
24073 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24074 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24075 break;
24076 case WDI_UPD_BCON_PRMS_REQ:
24077 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24078 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24079 break;
24080 case WDI_SND_BCON_REQ:
24081 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24082 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24083 break;
24084 case WDI_ENTER_BMPS_REQ:
24085 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24086 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24087 break;
24088 case WDI_EXIT_BMPS_REQ:
24089 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24090 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24091 break;
24092 case WDI_ENTER_UAPSD_REQ:
24093 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24094 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24095 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024096 case WDI_EXIT_UAPSD_REQ:
24097 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24098 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24099 break;
24100 case WDI_SET_UAPSD_PARAM_REQ:
24101 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24102 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24103 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024104 case WDI_UPDATE_UAPSD_PARAM_REQ:
24105 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24106 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24107 break;
24108 case WDI_CONFIGURE_RXP_FILTER_REQ:
24109 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24110 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24111 break;
24112 case WDI_SET_BEACON_FILTER_REQ:
24113 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24114 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24115 break;
24116 case WDI_REM_BEACON_FILTER_REQ:
24117 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24118 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024119 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024120 case WDI_SET_RSSI_THRESHOLDS_REQ:
24121 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24122 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24123 break;
24124 case WDI_HOST_OFFLOAD_REQ:
24125 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24126 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24127 break;
24128 case WDI_WOWL_ADD_BC_PTRN_REQ:
24129 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24130 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24131 break;
24132 case WDI_WOWL_DEL_BC_PTRN_REQ:
24133 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24134 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24135 break;
24136 case WDI_WOWL_ENTER_REQ:
24137 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24138 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24139 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024140 case WDI_WOWL_EXIT_REQ:
24141 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24142 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24143 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24145 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24146 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24147 break;
24148 case WDI_FLUSH_AC_REQ:
24149 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24150 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24151 break;
24152 case WDI_BTAMP_EVENT_REQ:
24153 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24154 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24155 break;
24156 case WDI_KEEP_ALIVE_REQ:
24157 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24158 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24159 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024160#if defined FEATURE_WLAN_SCAN_PNO
24161 case WDI_SET_PREF_NETWORK_REQ:
24162 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24163 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24164 break;
24165 case WDI_SET_RSSI_FILTER_REQ:
24166 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24167 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24168 break;
24169 case WDI_UPDATE_SCAN_PARAMS_REQ:
24170 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24171 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24172 break;
24173#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024174 case WDI_SET_TX_PER_TRACKING_REQ:
24175 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24176 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024177 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024178#if defined WLAN_FEATURE_PACKET_FILTERING
24179 case WDI_8023_MULTICAST_LIST_REQ:
24180 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24181 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24182 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024183 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24184 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24185 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24186 break;
24187 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24188 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24189 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24190 break;
24191 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24192 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24193 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24194 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024195#endif
24196 case WDI_SET_POWER_PARAMS_REQ:
24197 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24198 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24199 break;
24200#if defined WLAN_FEATURE_GTK_OFFLOAD
24201 case WDI_GTK_OFFLOAD_REQ:
24202 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24203 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24204 break;
24205 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24206 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24207 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24208 break;
24209#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024210
Jeff Johnson295189b2012-06-20 16:38:30 -070024211 default:
24212 *ppfnReqCB = NULL;
24213 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024214 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024215 }
24216}/*WDI_ExtractRequestCBFromEvent*/
24217
24218
24219/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024221 frame xtl is enabled for a particular STA.
24222
24223 WDI_PostAssocReq must have been called.
24224
Jeff Johnsone7245742012-09-05 17:12:55 -070024225 @param uSTAIdx: STA index
24226
Jeff Johnson295189b2012-06-20 16:38:30 -070024227 @see WDI_PostAssocReq
24228 @return Result of the function call
24229*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024230wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024231WDI_IsHwFrameTxTranslationCapable
24232(
24233 wpt_uint8 uSTAIdx
24234)
24235{
Jeff Johnsone7245742012-09-05 17:12:55 -070024236 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024237 uma value*/
24238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 ------------------------------------------------------------------------*/
24241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24242 {
24243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24244 "WDI API call before module is initialized - Fail request");
24245
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 }
24248
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024249#ifdef WLAN_SOFTAP_VSTA_FEATURE
24250 if (IS_VSTA_IDX(uSTAIdx))
24251 {
24252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24253 "STA %d is a Virtual STA, "
24254 "HW frame translation disabled", uSTAIdx);
24255 return eWLAN_PAL_FALSE;
24256 }
24257#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024258
Jeff Johnson295189b2012-06-20 16:38:30 -070024259 return gWDICb.bFrameTransEnabled;
24260}/*WDI_IsHwFrameTxTranslationCapable*/
24261
24262#ifdef FEATURE_WLAN_SCAN_PNO
24263/**
24264 @brief WDI_SetPreferredNetworkList
24265
Jeff Johnsone7245742012-09-05 17:12:55 -070024266 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024268
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 wdiPNOScanCb: callback for passing back the response
24270 of the Set PNO operation received from the
24271 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024272
Jeff Johnson295189b2012-06-20 16:38:30 -070024273 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 callback
24275
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 @return Result of the function call
24277*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024278WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024279WDI_SetPreferredNetworkReq
24280(
24281 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24282 WDI_PNOScanCb wdiPNOScanCb,
24283 void* pUserData
24284)
24285{
24286 WDI_EventInfoType wdiEventData = {{0}};
24287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24288
24289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024290 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024291 ------------------------------------------------------------------------*/
24292 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24293 {
24294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24295 "WDI API call before module is initialized - Fail request");
24296
Jeff Johnsone7245742012-09-05 17:12:55 -070024297 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 }
24299
24300 /*------------------------------------------------------------------------
24301 Fill in Event data and post to the Main FSM
24302 ------------------------------------------------------------------------*/
24303 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024304 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 wdiEventData.pUserData = pUserData;
24308
24309 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24310}
24311
24312
24313/**
24314 @brief WDI_SetRssiFilterReq
24315
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024318
Jeff Johnson295189b2012-06-20 16:38:30 -070024319 wdiRssiFilterCb: callback for passing back the response
24320 of the Set RSSI Filter operation received from the
24321 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024322
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 callback
24325
Jeff Johnson295189b2012-06-20 16:38:30 -070024326 @return Result of the function call
24327*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024328WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024329WDI_SetRssiFilterReq
24330(
24331 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24332 WDI_RssiFilterCb wdiRssiFilterCb,
24333 void* pUserData
24334)
24335{
24336 WDI_EventInfoType wdiEventData = {{0}};
24337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24338
24339 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024340 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024341 ------------------------------------------------------------------------*/
24342 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24343 {
24344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24345 "WDI API call before module is initialized - Fail request");
24346
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 }
24349
24350 /*------------------------------------------------------------------------
24351 Fill in Event data and post to the Main FSM
24352 ------------------------------------------------------------------------*/
24353 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024354 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024355 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024356 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 wdiEventData.pUserData = pUserData;
24358
24359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24360}/*WDI_SetRssiFilterReq*/
24361
24362/**
24363 @brief WDI_UpdateScanParamsReq
24364
Jeff Johnsone7245742012-09-05 17:12:55 -070024365 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024367
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 wdiUpdateScanParamsCb: callback for passing back the response
24369 of the Set PNO operation received from the
24370 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024371
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 callback
24374
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 @return Result of the function call
24376*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024377WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024378WDI_UpdateScanParamsReq
24379(
24380 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24381 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24382 void* pUserData
24383)
24384{
24385 WDI_EventInfoType wdiEventData = {{0}};
24386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24387
24388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024390 ------------------------------------------------------------------------*/
24391 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24392 {
24393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24394 "WDI API call before module is initialized - Fail request");
24395
Jeff Johnsone7245742012-09-05 17:12:55 -070024396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 }
24398
24399 /*------------------------------------------------------------------------
24400 Fill in Event data and post to the Main FSM
24401 ------------------------------------------------------------------------*/
24402 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024404 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024405 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024406 wdiEventData.pUserData = pUserData;
24407
24408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24409}
24410
24411/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024414
24415 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024416 pwdiPNOScanReqParams: pointer to the info received
24417 from upper layers
24418 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024419 and its size
24420
Jeff Johnson295189b2012-06-20 16:38:30 -070024421 @return Result of the function call
24422*/
24423
24424WDI_Status
24425WDI_PackPreferredNetworkList
24426(
24427 WDI_ControlBlockType* pWDICtx,
24428 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24429 wpt_uint8** ppSendBuffer,
24430 wpt_uint16* pSize
24431)
24432{
Jeff Johnsone7245742012-09-05 17:12:55 -070024433 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024434 wpt_uint16 usDataOffset = 0;
24435 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024436 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024438 /*-----------------------------------------------------------------------
24439 Get message buffer
24440 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024441 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024442 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024444 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024445 {
24446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024447 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 pwdiPNOScanReqParams);
24449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 }
24452
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024453 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24454
Jeff Johnson295189b2012-06-20 16:38:30 -070024455 /*-------------------------------------------------------------------------
24456 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24457 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024458 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024459 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024460 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024461 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24462
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024463 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024464 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024465 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024466 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24468
24469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24472 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24473 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24474
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024475 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 {
24477 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024478 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024479 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24480
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024481 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024482 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024483 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024484
24485 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024486 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024487 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024488
24489 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024490 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024491 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024492
Jeff Johnsone7245742012-09-05 17:12:55 -070024493 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024495 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024496 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24497 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24498 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24499 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024500
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024501 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024502 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024503 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024504
24505 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024506 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024507 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24508
24509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024510 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024511 pPrefNetwListParams->aNetworks[i].ssId.length,
24512 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 }
24514
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024515 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024516 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024517 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24518 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24519 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24520
24521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024522 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024523 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24525 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24526
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024527 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024528 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024529 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024530 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024531 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024532 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24533 }
24534
24535 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024536 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24538 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24539 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024540 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024541
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024542 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024543 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024544 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024545
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024546 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024547 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24548 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24549 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024550 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024551
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024552 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024553 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024554 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024555
24556 /*Set the output values*/
24557 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024558 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024559
24560 return WDI_STATUS_SUCCESS;
24561}/*WDI_PackPreferredNetworkList*/
24562
24563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024564 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024566
24567 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024568 pwdiPNOScanReqParams: pointer to the info received
24569 from upper layers
24570 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024571 and its size
24572
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 @return Result of the function call
24574*/
24575
24576WDI_Status
24577WDI_PackPreferredNetworkListNew
24578(
24579 WDI_ControlBlockType* pWDICtx,
24580 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24581 wpt_uint8** ppSendBuffer,
24582 wpt_uint16* pSize
24583)
24584{
Jeff Johnsone7245742012-09-05 17:12:55 -070024585 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024586 wpt_uint16 usDataOffset = 0;
24587 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024588 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024589 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024590
24591 /*-----------------------------------------------------------------------
24592 Get message buffer
24593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024594 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024595 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024596 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024597 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024598 {
24599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024600 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 pwdiPNOScanReqParams);
24602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024604 }
24605
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024606 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24607
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 /*-------------------------------------------------------------------------
24609 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24610 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024611 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024612 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024613 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24615
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024616 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024619 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24621
24622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024623 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024624 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24625 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24626 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24627
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024628 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 {
24630 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024631 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024632 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24633
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024634 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024636 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024637
24638 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024639 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024640 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024641
24642 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024643 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024644 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024645
24646 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024647 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024649
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024652 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24654
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024655 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024656 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024657 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024658
24659 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024660 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024661 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24662
24663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024664 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024665 pPrefNetwListParams->aNetworks[i].ssId.length,
24666 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 }
24668
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024669 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024670 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024671 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24672 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24673 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24674
24675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024676 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024677 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24679 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24680
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024681 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024683 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024685 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024686 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24687 }
24688
24689 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024690 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24692 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24693 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024695
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024696 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024697 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024698 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024699
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024700 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24702 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24703 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024704 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024705
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024706 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024707 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024708 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024709
Jeff Johnson295189b2012-06-20 16:38:30 -070024710
24711 /*Set the output values*/
24712 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024713 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024714
24715 return WDI_STATUS_SUCCESS;
24716}/*WDI_PackPreferredNetworkListNew*/
24717
24718/**
24719 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024720
24721 @param pWDICtx: pointer to the WLAN DAL context
24722 pEventData: pointer to the event information structure
24723
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 @return Result of the function call
24725*/
24726WDI_Status
24727WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024728(
Jeff Johnson295189b2012-06-20 16:38:30 -070024729 WDI_ControlBlockType* pWDICtx,
24730 WDI_EventInfoType* pEventData
24731)
24732{
24733 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24734 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024736 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024737 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024738
24739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024741 -------------------------------------------------------------------------*/
24742 if (( NULL == pEventData ) ||
24743 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24744 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24745 {
24746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 }
24751
24752 /*-------------------------------------------------------------------------
24753 Pack the PNO request structure based on version
24754 -------------------------------------------------------------------------*/
24755 if ( pWDICtx->wdiPNOVersion > 0 )
24756 {
24757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024758 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024759 pWDICtx->wdiPNOVersion);
24760
24761 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24762 &pSendBuffer, &usSendSize);
24763 }
24764 else
24765 {
24766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024767 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 pWDICtx->wdiPNOVersion);
24769
24770 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24771 &pSendBuffer, &usSendSize);
24772 }
24773
24774 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24775 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24776 {
24777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024778 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024780 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024781 }
24782
24783 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024784 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024785
24786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024787 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024788 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024789 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24790 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024791}
24792
24793/**
24794 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024795
24796 @param pWDICtx: pointer to the WLAN DAL context
24797 pEventData: pointer to the event information structure
24798
Jeff Johnson295189b2012-06-20 16:38:30 -070024799 @see
24800 @return Result of the function call
24801*/
24802WDI_Status
24803WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024804(
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 WDI_ControlBlockType* pWDICtx,
24806 WDI_EventInfoType* pEventData
24807)
24808{
24809 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24810 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024811 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024812 wpt_uint16 usDataOffset = 0;
24813 wpt_uint16 usSendSize = 0;
24814 wpt_uint8 ucRssiThreshold;
24815
24816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024818 -------------------------------------------------------------------------*/
24819 if (( NULL == pEventData ) ||
24820 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24821 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24822 {
24823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024824 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024827 }
24828
24829 /*-----------------------------------------------------------------------
24830 Get message buffer
24831 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 sizeof(ucRssiThreshold),
24834 &pSendBuffer, &usDataOffset, &usSendSize))||
24835 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24836 {
24837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024838 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024839 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024842 }
24843
24844 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24845
Jeff Johnsone7245742012-09-05 17:12:55 -070024846 wpalMemoryCopy( pSendBuffer+usDataOffset,
24847 &ucRssiThreshold,
24848 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024849
24850 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024851 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024852
24853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024854 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024856 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24857 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024858}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024859#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24860/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024861 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024862
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024863 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024864 by the Device Interface
24865
24866 wdiRoamOffloadScancb: callback for passing back the response
24867 of the Roam Candidate Lookup Req operation received from the
24868 device
24869
24870 pUserData: user data will be passed back with the
24871 callback
24872 @return Result of the function call
24873*/
24874WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024875WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024876(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024877 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024878 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24879 void* pUserData
24880)
24881{
24882 WDI_EventInfoType wdiEventData = {{0}};
24883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24884
24885 /*------------------------------------------------------------------------
24886 Sanity Check
24887 ------------------------------------------------------------------------*/
24888 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24889 {
24890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24891 "WDI API call before module is initialized - Fail request");
24892
24893 return WDI_STATUS_E_NOT_ALLOWED;
24894 }
24895
24896 /*------------------------------------------------------------------------
24897 Fill in Event data and post to the Main FSM
24898 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024899 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24900 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24901 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024902 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24903 wdiEventData.pUserData = pUserData;
24904
24905 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24906}
24907
24908void
24909WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24910{
24911 switch (wdiEdType)
24912 {
24913 case WDI_ED_NONE:
24914 *EdType = eED_NONE;
24915 break;
24916 case WDI_ED_WEP40:
24917 case WDI_ED_WEP104:
24918 *EdType = eED_WEP;
24919 break;
24920 case WDI_ED_TKIP:
24921 *EdType = eED_TKIP;
24922 break;
24923 case WDI_ED_CCMP:
24924#ifdef WLAN_FEATURE_11W
24925 case WDI_ED_AES_128_CMAC:
24926#endif
24927 *EdType = eED_CCMP;
24928 break;
24929#ifdef FEATURE_WLAN_WAPI
24930 case WDI_ED_WPI:
24931 *EdType = eED_WPI;
24932 break;
24933#endif
24934 case WDI_ED_ANY:
24935 *EdType = eED_ANY;
24936 break;
24937
24938 default:
24939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24940 "%s: Unknown Encryption Type", __func__);
24941 break;
24942 }
24943}
24944
24945/**
24946 @brief Helper function to pack Start Roam Candidate Lookup
24947 Request parameters
24948
24949 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024950 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024951 from upper layers
24952 ppSendBuffer, pSize - out pointers of the packed buffer
24953 and its size
24954
24955 @return Result of the function call
24956*/
24957
24958WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024959WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024960(
24961 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024962 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024963 wpt_uint8** ppSendBuffer,
24964 wpt_uint16* pSize
24965)
24966{
24967 wpt_uint8* pSendBuffer = NULL;
24968 wpt_uint16 usDataOffset = 0;
24969 wpt_uint16 usSendSize = 0;
24970 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24971 wpt_uint8 i;
24972 /*-----------------------------------------------------------------------
24973 Get message buffer
24974 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024975 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024976 sizeof(tRoamCandidateListParams),
24977 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070024978 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024979 {
24980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024981 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024982 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024983 WDI_ASSERT(0);
24984 return WDI_STATUS_E_FAILURE;
24985 }
24986 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070024987 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024988 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024989 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024990 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024991 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024992 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024993 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024994 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024995 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024996 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024997
24998 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024999 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025000 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025001 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025002 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25003 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025004 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25005 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25006 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25007 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25008 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025009 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025010 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025011 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025012 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25013 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25014 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25015 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25016 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25017 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25018 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
25019 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025020 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025021 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25022 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25023 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025024
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25026 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25027 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25028 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25029 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25030 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025031 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025032 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25033 pRoamCandidateListParams->RoamScanOffloadEnabled,
25034 pRoamCandidateListParams->Command,
25035 pRoamCandidateListParams->StartScanReason,
25036 pRoamCandidateListParams->NeighborScanTimerPeriod,
25037 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25038 pRoamCandidateListParams->NeighborScanChannelMinTime,
25039 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25040 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25041 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25042 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25043 pRoamCandidateListParams->ConnectedNetwork.authentication,
25044 pRoamCandidateListParams->ConnectedNetwork.encryption,
25045 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25046 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25047 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025048 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025049 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025050 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025051 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025052 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25053 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025054 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025055 pRoamCandidateListParams->us24GProbeSize);
25056 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025057 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025058 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025059 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025060 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25061 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025062 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025063 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025064 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25065 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25066 pRoamCandidateListParams->nProbes =
25067 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25068 pRoamCandidateListParams->HomeAwayTime =
25069 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025071 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25072 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025074 }
25075
25076
25077 /*Set the output values*/
25078 *ppSendBuffer = pSendBuffer;
25079 *pSize = usSendSize;
25080 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025081}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025082
25083/**
25084 @brief Process Start Roam Candidate Lookup Request function
25085
25086 @param pWDICtx: pointer to the WLAN DAL context
25087 pEventData: pointer to the event information structure
25088
25089 @return Result of the function call
25090*/
25091WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025092WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025093(
25094 WDI_ControlBlockType* pWDICtx,
25095 WDI_EventInfoType* pEventData
25096)
25097{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025098 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025099 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25100 wpt_uint8* pSendBuffer = NULL;
25101 wpt_uint16 usSendSize = 0;
25102 WDI_Status wdiStatus;
25103 /*-------------------------------------------------------------------------
25104 Sanity check
25105 -------------------------------------------------------------------------*/
25106 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025107 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025108 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25109 {
25110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25111 "%s: Invalid parameters", __func__);
25112 WDI_ASSERT(0);
25113 return WDI_STATUS_E_FAILURE;
25114 }
25115
25116 /*-------------------------------------------------------------------------
25117 Pack the Start Roam Candidate Lookup request structure based on version
25118 -------------------------------------------------------------------------*/
25119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25120 "%s: Packing Roam Candidate Lookup request ", __func__);
25121
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025122 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025123 &pSendBuffer, &usSendSize);
25124
25125 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25126 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25127 {
25128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25129 "%s: failed to pack request parameters", __func__);
25130 WDI_ASSERT(0);
25131 return wdiStatus;
25132 }
25133
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025134 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25135 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025136
25137 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025138 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025139 -------------------------------------------------------------------------*/
25140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025141 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025142}
25143
25144/**
25145 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25146 response is being received over the bus from HAL)
25147
25148 @param pWDICtx: pointer to the WLAN DAL context
25149 pEventData: pointer to the event information structure
25150
25151 @see
25152 @return Result of the function call
25153*/
25154WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025155WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025156(
25157 WDI_ControlBlockType* pWDICtx,
25158 WDI_EventInfoType* pEventData
25159)
25160{
25161 WDI_Status wdiStatus;
25162 eHalStatus halStatus;
25163 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25164
25165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25166
25167 /*-------------------------------------------------------------------------
25168 Sanity check
25169 -------------------------------------------------------------------------*/
25170 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25171 ( NULL == pEventData->pEventData ))
25172 {
25173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25174 "%s: Invalid parameters", __func__);
25175 WDI_ASSERT(0);
25176 return WDI_STATUS_E_FAILURE;
25177 }
25178
25179 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25180
25181 /*-------------------------------------------------------------------------
25182 Extract response and send it to UMAC
25183 -------------------------------------------------------------------------*/
25184 halStatus = *((eHalStatus*)pEventData->pEventData);
25185 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25186
25187 /*Notify UMAC*/
25188 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25189
25190 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025191}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025192#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025193
25194/**
25195 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025196
25197 @param pWDICtx: pointer to the WLAN DAL context
25198 pEventData: pointer to the event information structure
25199
Jeff Johnson295189b2012-06-20 16:38:30 -070025200 @see
25201 @return Result of the function call
25202*/
25203WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025204WDI_PackUpdateScanParamsReq
25205(
25206 WDI_ControlBlockType* pWDICtx,
25207 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25208 wpt_uint8** ppSendBuffer,
25209 wpt_uint16* pSize
25210)
25211{
25212 wpt_uint8* pSendBuffer = NULL;
25213 wpt_uint16 usDataOffset = 0;
25214 wpt_uint16 usSendSize = 0;
25215 tUpdateScanParams updateScanParams = {0};
25216
25217
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025219 "Begin WDI Update Scan Parameters Old Style Params");
25220 /*-----------------------------------------------------------------------
25221 Get message buffer
25222 -----------------------------------------------------------------------*/
25223 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25224 sizeof(updateScanParams),
25225 &pSendBuffer, &usDataOffset, &usSendSize))||
25226 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25227 {
25228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025229 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025230 pwdiUpdateScanParams);
25231 WDI_ASSERT(0);
25232 return WDI_STATUS_E_FAILURE;
25233 }
25234
25235 //
25236 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25237 //
25238
25239 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25240 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25241
25242 updateScanParams.ucChannelCount =
25243 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25244 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25245 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25246 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25247
25248 wpalMemoryCopy( updateScanParams.aChannels,
25249 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25250 updateScanParams.ucChannelCount);
25251
25252
25253 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25254 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25255 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25256 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25257 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25258
25259 wpalMemoryCopy( pSendBuffer+usDataOffset,
25260 &updateScanParams,
25261 sizeof(updateScanParams));
25262
25263 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25264 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25265
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025267 "End Update Scan Parameters Old Style");
25268
25269 /*Set the output values*/
25270 *ppSendBuffer = pSendBuffer;
25271 *pSize = usSendSize;
25272
25273 return WDI_STATUS_SUCCESS;
25274}
25275
25276/**
25277 @brief Process Update Scan Params function
25278
25279 @param pWDICtx: pointer to the WLAN DAL context
25280 pEventData: pointer to the event information structure
25281
25282 @see
25283 @return Result of the function call
25284*/
25285WDI_Status
25286WDI_PackUpdateScanParamsReqEx
25287(
25288 WDI_ControlBlockType* pWDICtx,
25289 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25290 wpt_uint8** ppSendBuffer,
25291 wpt_uint16* pSize
25292)
25293{
25294 wpt_uint8* pSendBuffer = NULL;
25295 wpt_uint16 usDataOffset = 0;
25296 wpt_uint16 usSendSize = 0;
25297 tUpdateScanParamsEx updateScanParams = {0};
25298
25299
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025300 /*-----------------------------------------------------------------------
25301 Get message buffer
25302 -----------------------------------------------------------------------*/
25303 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25304 sizeof(updateScanParams),
25305 &pSendBuffer, &usDataOffset, &usSendSize))||
25306 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25307 {
25308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025309 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025310 pwdiUpdateScanParams);
25311 WDI_ASSERT(0);
25312 return WDI_STATUS_E_FAILURE;
25313 }
25314
25315 //
25316 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25317 //
25318
25319 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25320 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25321
25322 updateScanParams.ucChannelCount =
25323 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25324 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25325 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25326 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25327
25328 wpalMemoryCopy( updateScanParams.aChannels,
25329 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25330 updateScanParams.ucChannelCount);
25331
25332
25333 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25334 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25335 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25336 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25337 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25338
25339 wpalMemoryCopy( pSendBuffer+usDataOffset,
25340 &updateScanParams,
25341 sizeof(updateScanParams));
25342
25343 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25344 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25345
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025346 /*Set the output values*/
25347 *ppSendBuffer = pSendBuffer;
25348 *pSize = usSendSize;
25349
25350 return WDI_STATUS_SUCCESS;
25351}
25352
25353/**
25354 @brief Process Update Scan Params function
25355
25356 @param pWDICtx: pointer to the WLAN DAL context
25357 pEventData: pointer to the event information structure
25358
25359 @see
25360 @return Result of the function call
25361*/
25362WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025363WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025364(
Jeff Johnson295189b2012-06-20 16:38:30 -070025365 WDI_ControlBlockType* pWDICtx,
25366 WDI_EventInfoType* pEventData
25367)
25368{
25369 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25370 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025372 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025373 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025374
25375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025377 -------------------------------------------------------------------------*/
25378 if (( NULL == pEventData ) ||
25379 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25380 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25381 {
25382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025386 }
25387
25388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25389 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025390
25391 //
25392 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25393 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025394 if ( pWDICtx->wlanVersion.revision < 1 )
25395 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025396 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025397 &pSendBuffer, &usSendSize);
25398 }
25399 else
25400 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025401 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25402 &pSendBuffer, &usSendSize);
25403 }
25404
25405 if(WDI_STATUS_SUCCESS != wdiStatus)
25406 {
25407 //memory allocation failed
25408 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025409 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025410
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025412 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025414 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025415 wdiUpdateScanParamsCb, pEventData->pUserData,
25416 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025417}
25418
25419/**
25420 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025421
25422 @param pWDICtx: pointer to the WLAN DAL context
25423 pEventData: pointer to the event information structure
25424
Jeff Johnson295189b2012-06-20 16:38:30 -070025425 @see
25426 @return Result of the function call
25427*/
25428WDI_Status
25429WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025430(
Jeff Johnson295189b2012-06-20 16:38:30 -070025431 WDI_ControlBlockType* pWDICtx,
25432 WDI_EventInfoType* pEventData
25433)
25434{
Srikant Kuppa066904f2013-05-07 13:56:02 -070025435 WDI_LowLevelIndType wdiInd;
25436 tpPrefNetwFoundParams pNetwFoundParams;
25437 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025438
25439
25440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 -------------------------------------------------------------------------*/
25443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25444 ( NULL == pEventData->pEventData ))
25445 {
25446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025450 }
25451
25452 /*-------------------------------------------------------------------------
25453 Extract indication and send it to UMAC
25454 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070025455 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25456
25457 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25458 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25459 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25460
25461 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25462 {
25463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25464 "%s: fail to allocate memory", __func__);
25465 return WDI_STATUS_MEM_FAILURE;
25466 }
25467
25468 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25469 (pNetwFoundParams->ssId.length < 32 )?
25470 pNetwFoundParams->ssId.length : 32;
25471 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25472 pNetwFoundParams->ssId.ssId,
25473 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25474 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25475 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25476 pNetwFoundParams->frameLength;
25477 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25478 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25479 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025480
25481 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025482 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025483
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 // DEBUG
25485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070025486 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070025488 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025489 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070025490 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25492
ltimariub77f24b2013-01-24 18:54:33 -080025493 if ( pWDICtx->wdiLowLevelIndCB )
25494 {
25495 /*Notify UMAC*/
25496 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25497 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025498
25499 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025500}
25501
25502/**
25503 @brief Process PNO Rsp function (called when a
25504 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025505
25506 @param pWDICtx: pointer to the WLAN DAL context
25507 pEventData: pointer to the event information structure
25508
Jeff Johnson295189b2012-06-20 16:38:30 -070025509 @see
25510 @return Result of the function call
25511*/
25512WDI_Status
25513WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025514(
Jeff Johnson295189b2012-06-20 16:38:30 -070025515 WDI_ControlBlockType* pWDICtx,
25516 WDI_EventInfoType* pEventData
25517)
25518{
25519 WDI_Status wdiStatus;
25520 eHalStatus halStatus;
25521 WDI_PNOScanCb wdiPNOScanCb = NULL;
25522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25523
25524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 -------------------------------------------------------------------------*/
25527 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25528 ( NULL == pEventData->pEventData ))
25529 {
25530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 }
25535
25536
Jeff Johnsone7245742012-09-05 17:12:55 -070025537 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025538
25539 /*-------------------------------------------------------------------------
25540 Extract response and send it to UMAC
25541 -------------------------------------------------------------------------*/
25542 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025543 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025544
25545 /*Notify UMAC*/
25546 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25547
Jeff Johnsone7245742012-09-05 17:12:55 -070025548 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025549}/*WDI_ProcessSetPreferredNetworkRsp*/
25550
25551/**
25552 @brief Process RSSI Filter Rsp function (called when a
25553 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025554
25555 @param pWDICtx: pointer to the WLAN DAL context
25556 pEventData: pointer to the event information structure
25557
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 @see
25559 @return Result of the function call
25560*/
25561WDI_Status
25562WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025563(
Jeff Johnson295189b2012-06-20 16:38:30 -070025564 WDI_ControlBlockType* pWDICtx,
25565 WDI_EventInfoType* pEventData
25566)
25567{
25568 WDI_Status wdiStatus;
25569 eHalStatus halStatus;
25570 WDI_RssiFilterCb wdiRssiFilterCb;
25571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25572
25573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025575 -------------------------------------------------------------------------*/
25576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25577 ( NULL == pEventData->pEventData ))
25578 {
25579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025583 }
25584
Jeff Johnsone7245742012-09-05 17:12:55 -070025585 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025586
25587 /*-------------------------------------------------------------------------
25588 Extract response and send it to UMAC
25589 -------------------------------------------------------------------------*/
25590 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025592
25593 /*Notify UMAC*/
25594 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25595
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025597}/*WDI_ProcessSetRssiFilterRsp*/
25598
25599/**
25600 @brief Process Update Scan Params Rsp function (called when a
25601 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025602
25603 @param pWDICtx: pointer to the WLAN DAL context
25604 pEventData: pointer to the event information structure
25605
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 @see
25607 @return Result of the function call
25608*/
25609WDI_Status
25610WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025611(
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 WDI_ControlBlockType* pWDICtx,
25613 WDI_EventInfoType* pEventData
25614)
25615{
25616 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025617 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025618 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025619 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25621
25622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025624 -------------------------------------------------------------------------*/
25625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25626 ( NULL == pEventData->pEventData ))
25627 {
25628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 }
25633
25634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025635 "%s: Process UPD scan params ptr : %p",
25636 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025637
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025639
25640 /*-------------------------------------------------------------------------
25641 Extract response and send it to UMAC
25642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025643 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25644 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025645 sizeof(halUpdScanParams.status));
25646
25647 uStatus = halUpdScanParams.status;
25648
25649 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025651
25652 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025653 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025654
Jeff Johnsone7245742012-09-05 17:12:55 -070025655 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025656
25657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 halUpdScanParams.status);
25660
25661 /*Notify UMAC*/
25662 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25663
Jeff Johnsone7245742012-09-05 17:12:55 -070025664 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025665}
25666#endif // FEATURE_WLAN_SCAN_PNO
25667
25668#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025669WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025670WDI_8023MulticastListReq
25671(
25672 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25673 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25674 void* pUserData
25675)
25676{
25677 WDI_EventInfoType wdiEventData;
25678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25679
25680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025681 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025682
25683 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025684 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025685 ------------------------------------------------------------------------*/
25686 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25687 {
25688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25689 "WDI API call before module is initialized - Fail request");
25690
Jeff Johnsone7245742012-09-05 17:12:55 -070025691 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025692 }
25693
25694 /*------------------------------------------------------------------------
25695 Fill in Event data and post to the Main FSM
25696 ------------------------------------------------------------------------*/
25697 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025698 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025699 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025700 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025701 wdiEventData.pUserData = pUserData;
25702
25703 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25704}
25705
Jeff Johnsone7245742012-09-05 17:12:55 -070025706WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025707WDI_ReceiveFilterSetFilterReq
25708(
25709 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25710 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25711 void* pUserData
25712)
25713{
25714 WDI_EventInfoType wdiEventData;
25715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25716
25717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025718 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025719
25720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025722 ------------------------------------------------------------------------*/
25723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25724 {
25725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25726 "WDI API call before module is initialized - Fail request");
25727
Jeff Johnsone7245742012-09-05 17:12:55 -070025728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 }
25730
25731 /*------------------------------------------------------------------------
25732 Fill in Event data and post to the Main FSM
25733 ------------------------------------------------------------------------*/
25734 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025735 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25736 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070025737 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25738 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025739 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025740 wdiEventData.pUserData = pUserData;
25741
25742
25743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25744}
25745
Jeff Johnsone7245742012-09-05 17:12:55 -070025746WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025747WDI_FilterMatchCountReq
25748(
25749 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25750 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25751 void* pUserData
25752)
25753{
25754 WDI_EventInfoType wdiEventData;
25755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25756
25757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025758 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025759
25760 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025761 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025762 ------------------------------------------------------------------------*/
25763 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25764 {
25765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25766 "WDI API call before module is initialized - Fail request");
25767
Jeff Johnsone7245742012-09-05 17:12:55 -070025768 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025769 }
25770
25771 /*------------------------------------------------------------------------
25772 Fill in Event data and post to the Main FSM
25773 ------------------------------------------------------------------------*/
25774 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025775 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025776 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025777 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025778 wdiEventData.pUserData = pUserData;
25779
25780
25781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25782}
25783
Jeff Johnsone7245742012-09-05 17:12:55 -070025784WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025785WDI_ReceiveFilterClearFilterReq
25786(
25787 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25788 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25789 void* pUserData
25790)
25791{
25792 WDI_EventInfoType wdiEventData;
25793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25794
25795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025796 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025797
25798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 ------------------------------------------------------------------------*/
25801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25802 {
25803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25804 "WDI API call before module is initialized - Fail request");
25805
Jeff Johnsone7245742012-09-05 17:12:55 -070025806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025807 }
25808
25809 /*------------------------------------------------------------------------
25810 Fill in Event data and post to the Main FSM
25811 ------------------------------------------------------------------------*/
25812 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025813 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025816 wdiEventData.pUserData = pUserData;
25817
25818
25819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25820}
25821
25822/**
25823 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025824
25825 @param pWDICtx: pointer to the WLAN DAL context
25826 pEventData: pointer to the event information structure
25827
Jeff Johnson295189b2012-06-20 16:38:30 -070025828 @see
25829 @return Result of the function call
25830*/
25831WDI_Status
25832WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025833(
Jeff Johnson295189b2012-06-20 16:38:30 -070025834 WDI_ControlBlockType* pWDICtx,
25835 WDI_EventInfoType* pEventData
25836)
25837{
25838 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25839 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025840 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025841 wpt_uint16 usDataOffset = 0;
25842 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025843 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025844 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025845 wpt_uint8 ucCurrentBSSSesIdx = 0;
25846 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025847
25848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025849 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025850
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025851 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25852 if( NULL == pRcvFltMcAddrListType )
25853 {
25854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25855 "Failed to alloc in WDI_Process8023MulticastListReq");
25856 return WDI_STATUS_E_FAILURE;
25857 }
25858
Jeff Johnson295189b2012-06-20 16:38:30 -070025859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 -------------------------------------------------------------------------*/
25862 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025863 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025864 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025865 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25867 {
25868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025869 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025870 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025872 return WDI_STATUS_E_FAILURE;
25873 }
25874
25875 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25876 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25877 &pBSSSes);
25878 if ( NULL == pBSSSes )
25879 {
25880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025881 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025882 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025884 }
25885
25886 /*-----------------------------------------------------------------------
25887 Get message buffer
25888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25890 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 sizeof(tHalRcvFltMcAddrListType),
25892 &pSendBuffer, &usDataOffset, &usSendSize))||
25893 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25894 {
25895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25896 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025897 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025898 pEventData, pwdiFltPktSetMcListReqParamsType,
25899 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070025900 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025903 }
25904
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025905 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025906 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025907 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025909 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25911 sizeof(tSirMacAddr));
25912 }
25913
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025914 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025915 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025916 pRcvFltMcAddrListType,
25917 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025918
25919 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025920 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025921
25922
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025923 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025925 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025929 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025930}
25931
25932/**
25933 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025934
25935 @param pWDICtx: pointer to the WLAN DAL context
25936 pEventData: pointer to the event information structure
25937
Jeff Johnson295189b2012-06-20 16:38:30 -070025938 @see
25939 @return Result of the function call
25940*/
25941WDI_Status
25942WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025943(
Jeff Johnson295189b2012-06-20 16:38:30 -070025944 WDI_ControlBlockType* pWDICtx,
25945 WDI_EventInfoType* pEventData
25946)
25947{
25948 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25949 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025950 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025951 wpt_uint16 usDataOffset = 0;
25952 wpt_uint16 usSendSize = 0;
25953 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025954 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025955 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025956 wpt_uint8 ucCurrentBSSSesIdx = 0;
25957 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025958 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25959 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025960
25961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025962 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025963
25964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 -------------------------------------------------------------------------*/
25967 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025968 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025970 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025971 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25972 {
25973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025976 return WDI_STATUS_E_FAILURE;
25977 }
25978
25979 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25980 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25981 &pBSSSes);
25982 if ( NULL == pBSSSes )
25983 {
25984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025985 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025987 }
25988
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025989 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25990 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025991
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025992 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25993 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25994 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25995
25996 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25997 usSessRcvPktFilterCfgSize);
25998
25999 if(NULL == pSessRcvPktFilterCfg)
26000 {
26001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26002 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026003 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026004 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026005 WDI_ASSERT(0);
26006 return WDI_STATUS_E_FAILURE;
26007 }
26008
26009 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26010
26011 /*-----------------------------------------------------------------------
26012 Get message buffer
26013 -----------------------------------------------------------------------*/
26014
26015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26016 usSessRcvPktFilterCfgSize,
26017 &pSendBuffer, &usDataOffset, &usSendSize))||
26018 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26019 {
26020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26021 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026022 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026023 pEventData, pwdiSetRcvPktFilterReqInfo,
26024 wdiReceiveFilterSetFilterCb);
26025 WDI_ASSERT(0);
26026 wpalMemoryFree(pSessRcvPktFilterCfg);
26027 return WDI_STATUS_E_FAILURE;
26028 }
26029
26030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026031 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026032 usSendSize,pSessRcvPktFilterCfg);
26033
26034 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26035 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26036 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26037 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26038
26039 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26040
26041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26042 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26043 pSessRcvPktFilterCfg->filterType);
26044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26045 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26046 pSessRcvPktFilterCfg->coleasceTime);
26047
26048 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26049 {
26050 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26051 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26052 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26053 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26054 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26055 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26056 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26057 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26058
26059 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26060 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26061 8);
26062 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26063 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26064 8);
26065
26066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026067 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026068 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26069 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26070
26071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026072 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026073 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26074 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26075
26076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026077 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026078 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26079 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26080 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26081 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26082 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26083 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26084
26085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026086 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026087 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26088 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26089 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26090 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26091 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26092 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26093 }
26094
26095 wpalMemoryCopy( pSendBuffer+usDataOffset,
26096 pSessRcvPktFilterCfg,
26097 usSessRcvPktFilterCfgSize);
26098
26099
26100 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26101 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26102
26103 wpalMemoryFree(pSessRcvPktFilterCfg);
26104
26105 }
26106 /*If SLM_SESSIONIZATION is not supported then do this */
26107 else
26108 {
26109 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26110 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26111 * sizeof(tHalRcvPktFilterParams));
26112
26113 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026114 usRcvPktFilterCfgSize);
26115
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026116 if(NULL == pRcvPktFilterCfg)
26117 {
26118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26119 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026120 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026121 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026122 WDI_ASSERT(0);
26123 return WDI_STATUS_E_FAILURE;
26124 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026125
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026126 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026127
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026128 /*-----------------------------------------------------------------------
26129 Get message buffer
26130 -----------------------------------------------------------------------*/
26131 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 usRcvPktFilterCfgSize,
26133 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026134 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26135 {
26136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026137 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026138 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 pEventData, pwdiSetRcvPktFilterReqInfo,
26140 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026141 WDI_ASSERT(0);
26142 wpalMemoryFree(pRcvPktFilterCfg);
26143 return WDI_STATUS_E_FAILURE;
26144 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026145
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 usSendSize,usRcvPktFilterCfgSize);
26149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026150 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26151 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26152 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26153 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026154
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026156 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026157 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026159 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026160 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026161
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026162 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26163 {
26164 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26165 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26166 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26167 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26168 pRcvPktFilterCfg->paramsData[i].dataOffset =
26169 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26170 pRcvPktFilterCfg->paramsData[i].dataLength =
26171 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026172
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026173 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026174 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26175 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026176 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26178 8);
26179
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026181 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026182 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026183 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26184
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026186 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026187 pRcvPktFilterCfg->paramsData[i].dataOffset,
26188 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026189
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026191 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026192 pRcvPktFilterCfg->paramsData[i].compareData[0],
26193 pRcvPktFilterCfg->paramsData[i].compareData[1],
26194 pRcvPktFilterCfg->paramsData[i].compareData[2],
26195 pRcvPktFilterCfg->paramsData[i].compareData[3],
26196 pRcvPktFilterCfg->paramsData[i].compareData[4],
26197 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026198
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026200 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026201 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26202 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26203 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26204 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26205 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26206 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26207 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026208
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026209 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026210 pRcvPktFilterCfg,
26211 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026212
26213
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026214 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26215 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026216
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026218 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026219 wpalMemoryFree(pRcvPktFilterCfg);
26220 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026222 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026224 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026225 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026226 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026227}
26228
26229/**
26230 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026231
26232 @param pWDICtx: pointer to the WLAN DAL context
26233 pEventData: pointer to the event information structure
26234
Jeff Johnson295189b2012-06-20 16:38:30 -070026235 @see
26236 @return Result of the function call
26237*/
26238WDI_Status
26239WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026240(
Jeff Johnson295189b2012-06-20 16:38:30 -070026241 WDI_ControlBlockType* pWDICtx,
26242 WDI_EventInfoType* pEventData
26243)
26244{
26245 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26246 NULL;
26247 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26248 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026249 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 wpt_uint16 usDataOffset = 0;
26251 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026252 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26253 wpt_uint8 ucCurrentBSSSesIdx = 0;
26254 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026255
26256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026257 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026258
26259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 -------------------------------------------------------------------------*/
26262 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026263 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026265 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026266 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26267 {
26268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 }
26273
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026274 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26275 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26276 &pBSSSes);
26277 if ( NULL == pBSSSes )
26278 {
26279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026280 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026281 return WDI_STATUS_E_FAILURE;
26282 }
26283
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 /*-----------------------------------------------------------------------
26285 Get message buffer
26286 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26288 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026289 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026291 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026292 {
26293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26294 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026295 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26297 wdiFilterMatchCountCb);
26298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026300 }
26301
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026302 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26303 wpalMemoryCopy( pSendBuffer+usDataOffset,
26304 &rcvFltPktMatchCntReqParam,
26305 sizeof(rcvFltPktMatchCntReqParam));
26306
Jeff Johnson295189b2012-06-20 16:38:30 -070026307 //
26308 // Don't need to fill send buffer other than header
26309 //
26310 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026311 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026312
26313
26314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026315 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26318 wdiFilterMatchCountCb,
26319 pEventData->pUserData,
26320 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026321}
26322
26323/**
26324 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026325
26326 @param pWDICtx: pointer to the WLAN DAL context
26327 pEventData: pointer to the event information structure
26328
Jeff Johnson295189b2012-06-20 16:38:30 -070026329 @see
26330 @return Result of the function call
26331*/
26332WDI_Status
26333WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026334(
Jeff Johnson295189b2012-06-20 16:38:30 -070026335 WDI_ControlBlockType* pWDICtx,
26336 WDI_EventInfoType* pEventData
26337)
Jeff Johnsone7245742012-09-05 17:12:55 -070026338{
Jeff Johnson295189b2012-06-20 16:38:30 -070026339 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26340 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026341 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026342 wpt_uint16 usDataOffset = 0;
26343 wpt_uint16 usSendSize = 0;
26344 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026345 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026346 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026347
26348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026349 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026350
26351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 -------------------------------------------------------------------------*/
26354 if (( NULL == pEventData ) ||
26355 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26356 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026357 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026358 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26359 {
26360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 return WDI_STATUS_E_FAILURE;
26364 }
26365
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026366 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026367 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26368 &pBSSSes);
26369 if ( NULL == pBSSSes )
26370 {
26371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026372 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026374 }
26375
26376 /*-----------------------------------------------------------------------
26377 Get message buffer
26378 -----------------------------------------------------------------------*/
26379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026380 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026381 sizeof(tHalRcvFltPktClearParam),
26382 &pSendBuffer, &usDataOffset, &usSendSize))||
26383 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26384 {
26385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26386 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026387 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026388 pEventData, pwdiRcvFltPktClearReqParamsType,
26389 wdiRcvFltPktClearFilterCb);
26390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026392 }
26393
26394
26395 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026396 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026397 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026398 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026399
Jeff Johnsone7245742012-09-05 17:12:55 -070026400 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26401 wpalMemoryCopy( pSendBuffer+usDataOffset,
26402 &rcvFltPktClearParam,
26403 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026404
26405 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026406 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026407
26408
26409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026410 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026412 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026413 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026414 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026415}
26416
26417/**
26418 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026419
26420 @param pWDICtx: pointer to the WLAN DAL context
26421 pEventData: pointer to the event information structure
26422
Jeff Johnson295189b2012-06-20 16:38:30 -070026423 @see
26424 @return Result of the function call
26425*/
26426WDI_Status
26427WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026428(
Jeff Johnson295189b2012-06-20 16:38:30 -070026429 WDI_ControlBlockType* pWDICtx,
26430 WDI_EventInfoType* pEventData
26431)
26432{
Jeff Johnson295189b2012-06-20 16:38:30 -070026433 eHalStatus halStatus;
26434 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026435 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26436 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26438
26439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026440 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026441
26442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026444 -------------------------------------------------------------------------*/
26445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26446 ( NULL == pEventData->pEventData ))
26447 {
26448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026452 }
26453
Jeff Johnsone7245742012-09-05 17:12:55 -070026454 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026455
26456 /*-------------------------------------------------------------------------
26457 Extract response and send it to UMAC
26458 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026459 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26460 {
26461 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26462 pEventData->pEventData,
26463 sizeof(halRcvFltPktSetMcListRsp));
26464
26465 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26466 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26467 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26468 halRcvFltPktSetMcListRsp.bssIdx;
26469 }
26470 else
26471 {
26472 halStatus = *((eHalStatus*)pEventData->pEventData);
26473 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26474 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026475
26476 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026477 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026478
Jeff Johnsone7245742012-09-05 17:12:55 -070026479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026480}
26481
26482/**
26483 @brief Process Set Rsp function (called when a
26484 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026485
26486 @param pWDICtx: pointer to the WLAN DAL context
26487 pEventData: pointer to the event information structure
26488
Jeff Johnson295189b2012-06-20 16:38:30 -070026489 @see
26490 @return Result of the function call
26491*/
26492WDI_Status
26493WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026494(
Jeff Johnson295189b2012-06-20 16:38:30 -070026495 WDI_ControlBlockType* pWDICtx,
26496 WDI_EventInfoType* pEventData
26497)
26498{
Jeff Johnson295189b2012-06-20 16:38:30 -070026499 eHalStatus halStatus;
26500 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026501 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26502 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26504
26505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026506 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026507
26508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026510 -------------------------------------------------------------------------*/
26511 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26512 ( NULL == pEventData->pEventData ))
26513 {
26514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026518 }
26519
26520 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026521 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026522
26523 /*-------------------------------------------------------------------------
26524 Extract response and send it to UMAC
26525 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026526 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26527 {
26528 wpalMemoryCopy( &halSetPktFilterRspParams,
26529 pEventData->pEventData,
26530 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026531
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026532 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26533 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26534 }
26535 else
26536 {
26537 halStatus = *((eHalStatus*)pEventData->pEventData);
26538 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26539 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026541 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026542
Jeff Johnsone7245742012-09-05 17:12:55 -070026543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026544}
26545
26546/**
26547 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026548
26549 @param pWDICtx: pointer to the WLAN DAL context
26550 pEventData: pointer to the event information structure
26551
Jeff Johnson295189b2012-06-20 16:38:30 -070026552 @see
26553 @return Result of the function call
26554*/
26555WDI_Status
26556WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026557(
Jeff Johnson295189b2012-06-20 16:38:30 -070026558 WDI_ControlBlockType* pWDICtx,
26559 WDI_EventInfoType* pEventData
26560)
26561{
Jeff Johnson295189b2012-06-20 16:38:30 -070026562 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026563 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026564 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26565 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026566
26567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26568
26569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026570 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026571
26572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026574 -------------------------------------------------------------------------*/
26575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26576 ( NULL == pEventData->pEventData ))
26577 {
26578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026582 }
26583
Jeff Johnsone7245742012-09-05 17:12:55 -070026584 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026585
26586 /*-------------------------------------------------------------------------
26587 Extract response and send it to UMAC
26588 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026589 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26590 {
26591 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26592 pEventData->pEventData,
26593 sizeof(halRcvFltrPktMatachRsp));
26594
26595 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26596 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26597 }
26598 else
26599 {
26600 halStatus = *((eHalStatus*)pEventData->pEventData);
26601 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26602 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026603
26604 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026605 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026606
Jeff Johnsone7245742012-09-05 17:12:55 -070026607 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026608}
26609
26610/**
26611 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026612
26613 @param pWDICtx: pointer to the WLAN DAL context
26614 pEventData: pointer to the event information structure
26615
Jeff Johnson295189b2012-06-20 16:38:30 -070026616 @see
26617 @return Result of the function call
26618*/
26619WDI_Status
26620WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026621(
Jeff Johnson295189b2012-06-20 16:38:30 -070026622 WDI_ControlBlockType* pWDICtx,
26623 WDI_EventInfoType* pEventData
26624)
26625{
Jeff Johnson295189b2012-06-20 16:38:30 -070026626 eHalStatus halStatus;
26627 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026628 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26629 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26631
26632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026633 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026634
26635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026637 -------------------------------------------------------------------------*/
26638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26639 ( NULL == pEventData->pEventData ))
26640 {
26641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026645 }
26646
26647 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026648 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026649
26650 /*-------------------------------------------------------------------------
26651 Extract response and send it to UMAC
26652 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026653 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26654 {
26655 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26656 pEventData->pEventData,
26657 sizeof(halRcvFltPktClearRspMsg));
26658
26659 wdiRcvFltPktClearRspParamsType.wdiStatus =
26660 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26661 wdiRcvFltPktClearRspParamsType.bssIdx =
26662 halRcvFltPktClearRspMsg.bssIdx;
26663 }
26664 else
26665 {
26666 halStatus = *((eHalStatus*)pEventData->pEventData);
26667 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26668 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026669
26670 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026671 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026672
Jeff Johnsone7245742012-09-05 17:12:55 -070026673 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026674}
26675#endif // WLAN_FEATURE_PACKET_FILTERING
26676
26677/**
26678 @brief Process Shutdown Rsp function
26679 There is no shutdown response comming from HAL
26680 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026681
Jeff Johnson295189b2012-06-20 16:38:30 -070026682 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026683 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026684
26685 @see
26686 @return Result of the function call
26687*/
26688WDI_Status
26689WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026690(
Jeff Johnson295189b2012-06-20 16:38:30 -070026691 WDI_ControlBlockType* pWDICtx,
26692 WDI_EventInfoType* pEventData
26693)
26694{
26695 /*There is no shutdown response comming from HAL - function just kept for
26696 simmetry */
26697 WDI_ASSERT(0);
26698 return WDI_STATUS_SUCCESS;
26699}/*WDI_ProcessShutdownRsp*/
26700
26701/**
26702 @brief WDI_SetPowerParamsReq
26703
Jeff Johnsone7245742012-09-05 17:12:55 -070026704 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026705 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026706
Jeff Johnson295189b2012-06-20 16:38:30 -070026707 wdiPowerParamsCb: callback for passing back the response
26708 of the Set Power Params operation received from the
26709 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026710
Jeff Johnson295189b2012-06-20 16:38:30 -070026711 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026712 callback
26713
Jeff Johnson295189b2012-06-20 16:38:30 -070026714 @return Result of the function call
26715*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026717WDI_SetPowerParamsReq
26718(
26719 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26720 WDI_SetPowerParamsCb wdiPowerParamsCb,
26721 void* pUserData
26722)
26723{
26724 WDI_EventInfoType wdiEventData;
26725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26726
26727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026729 ------------------------------------------------------------------------*/
26730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26731 {
26732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26733 "WDI API call before module is initialized - Fail request");
26734
Jeff Johnsone7245742012-09-05 17:12:55 -070026735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026736 }
26737
26738 /*------------------------------------------------------------------------
26739 Fill in Event data and post to the Main FSM
26740 ------------------------------------------------------------------------*/
26741 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026742 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026743 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026744 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026745 wdiEventData.pUserData = pUserData;
26746
26747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26748}/*WDI_SetPowerParamsReq*/
26749
26750/**
26751 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026752
26753 @param pWDICtx: pointer to the WLAN DAL context
26754 pEventData: pointer to the event information structure
26755
Jeff Johnson295189b2012-06-20 16:38:30 -070026756 @see
26757 @return Result of the function call
26758*/
26759WDI_Status
26760WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026761(
Jeff Johnson295189b2012-06-20 16:38:30 -070026762 WDI_ControlBlockType* pWDICtx,
26763 WDI_EventInfoType* pEventData
26764)
26765{
26766 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26767 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026768 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026769 wpt_uint16 usDataOffset = 0;
26770 wpt_uint16 usSendSize = 0;
26771 tSetPowerParamsType powerParams;
26772
26773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026775 -------------------------------------------------------------------------*/
26776 if (( NULL == pEventData ) ||
26777 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26778 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26779 {
26780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026784 }
26785
26786 /*-----------------------------------------------------------------------
26787 Get message buffer
26788 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026789 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026790 sizeof(powerParams),
26791 &pSendBuffer, &usDataOffset, &usSendSize))||
26792 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26793 {
26794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026795 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026799 }
26800
26801 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026802 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026803 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26804
26805 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026806 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026807 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26808
26809 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026810 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026811 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26812
26813 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026814 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026815 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26816
26817 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026818 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026819 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26820
26821 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026822 powerParams.uBETInterval =
26823 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026824
Yue Mac24062f2013-05-13 17:01:29 -070026825 /* MAX LI for modulated DTIM */
26826 powerParams.uMaxLIModulatedDTIM =
26827 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026828
26829 wpalMemoryCopy( pSendBuffer+usDataOffset,
26830 &powerParams,
26831 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026832
26833 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026834 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026835
26836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026837 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026838 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026839 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26840 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026841}
26842
26843/**
26844 @brief Process Power Params Rsp function (called when a
26845 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026846
26847 @param pWDICtx: pointer to the WLAN DAL context
26848 pEventData: pointer to the event information structure
26849
Jeff Johnson295189b2012-06-20 16:38:30 -070026850 @see
26851 @return Result of the function call
26852*/
26853WDI_Status
26854WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026855(
Jeff Johnson295189b2012-06-20 16:38:30 -070026856 WDI_ControlBlockType* pWDICtx,
26857 WDI_EventInfoType* pEventData
26858)
26859{
26860 WDI_Status wdiStatus;
26861 eHalStatus halStatus;
26862 WDI_SetPowerParamsCb wdiPowerParamsCb;
26863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26864
26865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026867 -------------------------------------------------------------------------*/
26868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26869 ( NULL == pEventData->pEventData ))
26870 {
26871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026875 }
26876
Jeff Johnsone7245742012-09-05 17:12:55 -070026877 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026878
26879 /*-------------------------------------------------------------------------
26880 Extract response and send it to UMAC
26881 -------------------------------------------------------------------------*/
26882 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026883 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026884
26885 /*Notify UMAC*/
26886 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26887
Jeff Johnsone7245742012-09-05 17:12:55 -070026888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026889}/*WDI_ProcessSetPowerParamsRsp*/
26890
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053026891/**
26892 @brief WDI_dhcpStartInd
26893 Host will send an event to the FW when DHCP is initiated
26894
26895 @param
26896 WDI_DHCPInd: DHCP Indication
26897 @see
26898 @return Result of the function call
26899*/
26900WDI_Status
26901WDI_dhcpStartInd
26902(
26903 WDI_DHCPInd *wdiDHCPInd
26904)
26905{
26906 WDI_EventInfoType wdiEventData;
26907
26908 /*------------------------------------------------------------------------
26909 Sanity Check
26910 ------------------------------------------------------------------------*/
26911 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26912 {
26913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26914 "WDI API call before module is initialized - Fail request");
26915
26916 return WDI_STATUS_E_NOT_ALLOWED;
26917 }
26918
26919 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26920 wdiEventData.pEventData = wdiDHCPInd;
26921 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26922 wdiEventData.pCBfnc = NULL;
26923 wdiEventData.pUserData = NULL;
26924
26925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26926}
26927
26928
26929/**
26930 @brief WDI_dhcpStopInd
26931 Host will send an event to the FW when DHCP is completed
26932
26933 @param
26934 WDI_DHCPInd: DHCP Indication
26935 @see
26936 @return Result of the function call
26937*/
26938WDI_Status
26939WDI_dhcpStopInd
26940(
26941 WDI_DHCPInd *wdiDHCPInd
26942)
26943{
26944 WDI_EventInfoType wdiEventData;
26945
26946 /*------------------------------------------------------------------------
26947 Sanity Check
26948 ------------------------------------------------------------------------*/
26949 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26950 {
26951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26952 "WDI API call before module is initialized - Fail request");
26953
26954 return WDI_STATUS_E_NOT_ALLOWED;
26955 }
26956
26957 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26958 wdiEventData.pEventData = wdiDHCPInd;
26959 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26960 wdiEventData.pCBfnc = NULL;
26961 wdiEventData.pUserData = NULL;
26962
26963 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26964}
26965
26966
26967/**
26968 @brief Process DHCP Start Indication message and post it to HAL
26969
26970 @param pWDICtx: pointer to the WLAN DAL context
26971 pEventData: pointer to the event information structure
26972
26973 @see
26974 @return Result of the function call
26975*/
26976WDI_Status
26977WDI_ProcessDHCPStartInd
26978(
26979 WDI_ControlBlockType* pWDICtx,
26980 WDI_EventInfoType* pEventData
26981)
26982{
26983 wpt_uint8* pSendBuffer = NULL;
26984 wpt_uint16 usDataOffset = 0;
26985 wpt_uint16 usSendSize = 0;
26986 wpt_uint16 usLen = 0;
26987 WDI_DHCPInd* pwdiDHCPInd = NULL;
26988 tDHCPInfo* pDHCPInfo;
26989
26990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26991
26992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26993 "%s", __func__);
26994
26995 /*-------------------------------------------------------------------------
26996 Sanity check
26997 -------------------------------------------------------------------------*/
26998 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26999 {
27000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27001 "%s: Invalid parameters", __func__);
27002 WDI_ASSERT(0);
27003 return WDI_STATUS_E_FAILURE;
27004 }
27005 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27006 /*-----------------------------------------------------------------------
27007 Get message buffer
27008 -----------------------------------------------------------------------*/
27009
27010 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27011 WDI_DHCP_START_IND,
27012 sizeof(tDHCPInfo),
27013 &pSendBuffer, &usDataOffset, &usSendSize))||
27014 ( usSendSize < (usDataOffset + usLen )))
27015 {
27016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27017 "Unable to get send buffer in DHCP Start req %p ",
27018 pEventData);
27019 WDI_ASSERT(0);
27020 return WDI_STATUS_E_FAILURE;
27021 }
27022
27023 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27024 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27025 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27026 WDI_MAC_ADDR_LEN);
27027
27028 pWDICtx->pReqStatusUserData = NULL;
27029 pWDICtx->pfncRspCB = NULL;
27030
27031 /*-------------------------------------------------------------------------
27032 Send DHCP Start Indication to HAL
27033 -------------------------------------------------------------------------*/
27034 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27035
27036}/*WDI_ProcessDHCPStartInd*/
27037
27038/**
27039 @brief Process DHCP Stop indication message and post it to HAL
27040
27041 @param pWDICtx: pointer to the WLAN DAL context
27042 pEventData: pointer to the event information structure
27043
27044 @see
27045 @return Result of the function call
27046*/
27047WDI_Status
27048WDI_ProcessDHCPStopInd
27049(
27050 WDI_ControlBlockType* pWDICtx,
27051 WDI_EventInfoType* pEventData
27052)
27053{
27054 wpt_uint8* pSendBuffer = NULL;
27055 wpt_uint16 usDataOffset = 0;
27056 wpt_uint16 usSendSize = 0;
27057 wpt_uint16 usLen = 0;
27058 WDI_DHCPInd* pwdiDHCPInd = NULL;
27059 tDHCPInfo* pDHCPInfo;
27060
27061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27062
27063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27064 "%s", __func__);
27065
27066 /*-------------------------------------------------------------------------
27067 Sanity check
27068 -------------------------------------------------------------------------*/
27069
27070 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27071 {
27072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27073 "%s: Invalid parameters", __func__);
27074 WDI_ASSERT(0);
27075 return WDI_STATUS_E_FAILURE;
27076 }
27077 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27078 /*-----------------------------------------------------------------------
27079 Get message buffer
27080 -----------------------------------------------------------------------*/
27081
27082 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27083 WDI_DHCP_STOP_IND,
27084 sizeof(tDHCPInfo),
27085 &pSendBuffer, &usDataOffset, &usSendSize))||
27086 ( usSendSize < (usDataOffset + usLen )))
27087 {
27088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27089 "Unable to get send buffer in DHCP Start req %p ",
27090 pEventData);
27091 WDI_ASSERT(0);
27092 return WDI_STATUS_E_FAILURE;
27093 }
27094
27095 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27096 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27097 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27098 WDI_MAC_ADDR_LEN);
27099
27100 pWDICtx->pReqStatusUserData = NULL;
27101 pWDICtx->pfncRspCB = NULL;
27102 /*-------------------------------------------------------------------------
27103 Send DHCP Stop indication to HAL
27104 -------------------------------------------------------------------------*/
27105 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27106
27107}/*WDI_ProcessDHCPStopInd*/
27108
27109
Jeff Johnson295189b2012-06-20 16:38:30 -070027110#ifdef WLAN_FEATURE_GTK_OFFLOAD
27111/**
27112 @brief WDI_GTKOffloadReq will be called when the upper MAC
27113 wants to set GTK Rekey Counter while in power save. Upon
27114 the call of this API the WLAN DAL will pack and send a
27115 HAL GTK offload request message to the lower RIVA
27116 sub-system if DAL is in state STARTED.
27117
27118 In state BUSY this request will be queued. Request won't
27119 be allowed in any other state.
27120
27121 WDI_PostAssocReq must have been called.
27122
27123 @param pwdiGtkOffloadParams: the GTK offload as specified
27124 by the Device Interface
27125
27126 wdiGtkOffloadCb: callback for passing back the response
27127 of the GTK offload operation received from the device
27128
27129 pUserData: user data will be passed back with the
27130 callback
27131
27132 @see WDI_PostAssocReq
27133 @return Result of the function call
27134*/
27135WDI_Status
27136WDI_GTKOffloadReq
27137(
27138 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27139 WDI_GtkOffloadCb wdiGtkOffloadCb,
27140 void* pUserData
27141)
27142{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027143 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27145
27146 /*------------------------------------------------------------------------
27147 Sanity Check
27148 ------------------------------------------------------------------------*/
27149 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27150 {
27151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27152 "WDI API call before module is initialized - Fail request");
27153
27154 return WDI_STATUS_E_NOT_ALLOWED;
27155 }
27156
27157 /*------------------------------------------------------------------------
27158 Fill in Event data and post to the Main FSM
27159 ------------------------------------------------------------------------*/
27160 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27161 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027162 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027163 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27164 wdiEventData.pUserData = pUserData;
27165
27166 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27167}
27168
27169
27170/**
27171 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27172 MAC wants to get GTK Rekey Counter while in power save.
27173 Upon the call of this API the WLAN DAL will pack and
27174 send a HAL GTK offload request message to the lower RIVA
27175 sub-system if DAL is in state STARTED.
27176
27177 In state BUSY this request will be queued. Request won't
27178 be allowed in any other state.
27179
27180 WDI_PostAssocReq must have been called.
27181
27182 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27183 Information Message as specified by the
27184 Device Interface
27185
27186 wdiGtkOffloadGetInfoCb: callback for passing back the
27187 response of the GTK offload operation received from the
27188 device
27189
27190 pUserData: user data will be passed back with the
27191 callback
27192
27193 @see WDI_PostAssocReq
27194 @return Result of the function call
27195*/
27196WDI_Status
27197WDI_GTKOffloadGetInfoReq
27198(
27199 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27200 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27201 void* pUserData
27202)
27203{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027204 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27206
27207 /*------------------------------------------------------------------------
27208 Sanity Check
27209 ------------------------------------------------------------------------*/
27210 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27211 {
27212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27213 "WDI API call before module is initialized - Fail request");
27214
27215 return WDI_STATUS_E_NOT_ALLOWED;
27216 }
27217
27218 /*------------------------------------------------------------------------
27219 Fill in Event data and post to the Main FSM
27220 ------------------------------------------------------------------------*/
27221 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27222 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27223 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27224 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27225 wdiEventData.pUserData = pUserData;
27226
27227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27228}
27229
27230
27231/**
27232 @brief Process set GTK Offload Request function
27233
27234 @param pWDICtx: pointer to the WLAN DAL context
27235 pEventData: pointer to the event information structure
27236
27237 @see
27238 @return Result of the function call
27239*/
27240WDI_Status
27241WDI_ProcessGTKOffloadReq
27242(
27243 WDI_ControlBlockType* pWDICtx,
27244 WDI_EventInfoType* pEventData
27245)
27246{
27247 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27248 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27249 wpt_uint8* pSendBuffer = NULL;
27250 wpt_uint16 usDataOffset = 0;
27251 wpt_uint16 usSendSize = 0;
27252 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027253 wpt_uint8 ucCurrentSessionId = 0;
27254 WDI_BSSSessionType* pBSSSes = NULL;
27255
Jeff Johnson295189b2012-06-20 16:38:30 -070027256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27257
27258 /*-------------------------------------------------------------------------
27259 Sanity check
27260 -------------------------------------------------------------------------*/
27261 if (( NULL == pEventData ) ||
27262 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27263 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27264 {
27265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027267 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027268 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027269 }
27270
27271 /*-----------------------------------------------------------------------
27272 Get message buffer
27273 -----------------------------------------------------------------------*/
27274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27275 sizeof(gtkOffloadReqParams),
27276 &pSendBuffer, &usDataOffset, &usSendSize))||
27277 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27278 {
27279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027280 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027281 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27282 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027283 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027284 }
27285
27286 //
27287 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27288 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027289 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27290 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27291 &pBSSSes);
27292 if ( NULL == pBSSSes )
27293 {
27294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027295 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027296 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027297 }
27298
27299 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27300
Jeff Johnson295189b2012-06-20 16:38:30 -070027301 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27302 // Copy KCK
27303 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27304 // Copy KEK
27305 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27306 // Copy KeyReplayCounter
27307 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27308
27309 wpalMemoryCopy( pSendBuffer+usDataOffset,
27310 &gtkOffloadReqParams,
27311 sizeof(gtkOffloadReqParams));
27312
27313 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27314 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27315
27316 /*-------------------------------------------------------------------------
27317 Send Get STA Request to HAL
27318 -------------------------------------------------------------------------*/
27319 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27320 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027321
27322fail:
27323 // Release the message buffer so we don't leak
27324 wpalMemoryFree(pSendBuffer);
27325
27326failRequest:
27327 //WDA should have failure check to avoid the memory leak
27328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027329}
27330
27331
27332/**
27333 @brief Process GTK Offload Get Information Request function
27334
27335 @param pWDICtx: pointer to the WLAN DAL context
27336 pEventData: pointer to the event information structure
27337
27338 @see
27339 @return Result of the function call
27340*/
27341WDI_Status
27342WDI_ProcessGTKOffloadGetInfoReq
27343(
27344 WDI_ControlBlockType* pWDICtx,
27345 WDI_EventInfoType* pEventData
27346)
27347{
27348 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27349 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27350 wpt_uint8* pSendBuffer = NULL;
27351 wpt_uint16 usDataOffset = 0;
27352 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027353 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27354 wpt_uint8 ucCurrentSessionId = 0;
27355 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027356
27357 /*-------------------------------------------------------------------------
27358 Sanity check
27359 -------------------------------------------------------------------------*/
27360 if (( NULL == pEventData ) ||
27361 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27362 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27363 {
27364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027366 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027367 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027368 }
27369
27370 /*-----------------------------------------------------------------------
27371 Get message buffer
27372 -----------------------------------------------------------------------*/
27373 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027374 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027375 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027376 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027377 {
27378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027379 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027380 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27381 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027382 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027383 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027384 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27385 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27386 &pBSSSes);
27387 if ( NULL == pBSSSes )
27388 {
27389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027390 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027391 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027392 }
27393 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027394
27395 //
27396 // Don't need to fill send buffer other than header
27397 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027398 wpalMemoryCopy( pSendBuffer+usDataOffset,
27399 &halGtkOffloadGetInfoReqParams,
27400 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027401
27402 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27403 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27404
27405 /*-------------------------------------------------------------------------
27406 Send Get STA Request to HAL
27407 -------------------------------------------------------------------------*/
27408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27409 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027410fail:
27411 // Release the message buffer so we don't leak
27412 wpalMemoryFree(pSendBuffer);
27413
27414failRequest:
27415 //WDA should have failure check to avoid the memory leak
27416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027417}
27418
27419/**
27420 @brief Process host offload Rsp function (called when a
27421 response is being received over the bus from HAL)
27422
27423 @param pWDICtx: pointer to the WLAN DAL context
27424 pEventData: pointer to the event information structure
27425
27426 @see
27427 @return Result of the function call
27428*/
27429WDI_Status
27430WDI_ProcessGtkOffloadRsp
27431(
27432 WDI_ControlBlockType* pWDICtx,
27433 WDI_EventInfoType* pEventData
27434)
27435{
Jeff Johnson295189b2012-06-20 16:38:30 -070027436 eHalStatus halStatus;
27437 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027438 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27439 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027440
27441 /*-------------------------------------------------------------------------
27442 Sanity check
27443 -------------------------------------------------------------------------*/
27444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27445 ( NULL == pEventData->pEventData))
27446 {
27447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027449 WDI_ASSERT(0);
27450 return WDI_STATUS_E_FAILURE;
27451 }
27452
Wilson Yang00256342013-10-10 23:13:38 -070027453 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27454
Jeff Johnson295189b2012-06-20 16:38:30 -070027455 /*-------------------------------------------------------------------------
27456 Extract response and send it to UMAC
27457 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027458 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27459 {
27460 wpalMemoryCopy( &halGtkOffloadRspParams,
27461 pEventData->pEventData,
27462 sizeof(halGtkOffloadRspParams));
27463
27464 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027465 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027466 wdiGtkOffloadRsparams.bssIdx =
27467 halGtkOffloadRspParams.bssIdx;
27468 }
27469 else
27470 {
27471 halStatus = *((eHalStatus*)pEventData->pEventData);
27472 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27473 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027474
27475 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027476 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027477
27478 return WDI_STATUS_SUCCESS;
27479}
27480
27481/**
27482 @brief Process GTK Offload Get Information Response function
27483
27484 @param pWDICtx: pointer to the WLAN DAL context
27485 pEventData: pointer to the event information structure
27486
27487 @see
27488 @return Result of the function call
27489*/
27490WDI_Status
27491WDI_ProcessGTKOffloadGetInfoRsp
27492(
27493 WDI_ControlBlockType* pWDICtx,
27494 WDI_EventInfoType* pEventData
27495)
27496{
Jeff Johnson295189b2012-06-20 16:38:30 -070027497 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027498 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027499 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27500 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027501 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027502
Jeff Johnson295189b2012-06-20 16:38:30 -070027503
27504 /*-------------------------------------------------------------------------
27505 Sanity check
27506 -------------------------------------------------------------------------*/
27507 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27508 ( NULL == pEventData->pEventData ))
27509 {
27510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027512 WDI_ASSERT(0);
27513 return WDI_STATUS_E_FAILURE;
27514 }
27515
Wilson Yang00256342013-10-10 23:13:38 -070027516 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27517
27518 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027519 Extract response and send it to UMAC
27520 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027521 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27522 {
27523 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27524 pEventData->pEventData,
27525 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027526
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027527 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027528 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027529 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27530 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27531 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27532 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27533 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27534 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27535 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27536 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027537
27538 wpalMutexAcquire(&pWDICtx->wptMutex);
27539 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27540 &pBSSSes);
27541
27542 if ( NULL == pBSSSes )
27543 {
27544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27545 "Association sequence for this BSS does not exist or "
27546 "association no longer in progress - mysterious HAL response");
27547 wpalMutexRelease(&pWDICtx->wptMutex);
27548 return WDI_STATUS_E_NOT_ALLOWED;
27549 }
27550
27551 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27552 sizeof (wpt_macAddr));
27553 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027554 }
27555 else
27556 {
27557 halStatus = *((eHalStatus*)pEventData->pEventData);
27558 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27559 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027560 /*Notify UMAC*/
27561 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27562 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027563 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027564
27565 return WDI_STATUS_SUCCESS;
27566}
27567#endif // WLAN_FEATURE_GTK_OFFLOAD
27568
27569#ifdef WLAN_WAKEUP_EVENTS
27570WDI_Status
27571WDI_ProcessWakeReasonInd
27572(
27573 WDI_ControlBlockType* pWDICtx,
27574 WDI_EventInfoType* pEventData
27575)
27576{
27577 WDI_LowLevelIndType *pWdiInd;
27578 tpWakeReasonParams pWakeReasonParams;
27579 wpt_uint32 allocSize = 0;
27580
27581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027582 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027583
27584 /*-------------------------------------------------------------------------
27585 Sanity check
27586 -------------------------------------------------------------------------*/
27587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27588 ( NULL == pEventData->pEventData ))
27589 {
27590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027592 WDI_ASSERT( 0 );
27593 return WDI_STATUS_E_FAILURE;
27594 }
27595
27596 /*-------------------------------------------------------------------------
27597 Extract indication and send it to UMAC
27598 -------------------------------------------------------------------------*/
27599 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27600
27601 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27602
27603 //Allocate memory for WDI_WakeReasonIndType structure
27604 pWdiInd = wpalMemoryAllocate(allocSize) ;
27605
27606 if(NULL == pWdiInd)
27607 {
27608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027609 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027610 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027611 WDI_ASSERT(0);
27612 return WDI_STATUS_E_FAILURE;
27613 }
27614
27615 wpalMemoryZero(pWdiInd, allocSize);
27616
27617 /* Fill in the indication parameters*/
27618 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27619 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27620 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27621 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27622 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27623 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27624 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27625 &(pWakeReasonParams->aDataStart[0]),
27626 pWakeReasonParams->ulStoredDataLen);
27627
ltimariub77f24b2013-01-24 18:54:33 -080027628
27629 if ( pWDICtx->wdiLowLevelIndCB )
27630 {
27631 /*Notify UMAC*/
27632 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27633 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027634
27635 //Free memory allocated for WDI_WakeReasonIndType structure
27636 wpalMemoryFree(pWdiInd);
27637
27638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027639 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027640
27641 return WDI_STATUS_SUCCESS;
27642}
27643#endif // WLAN_WAKEUP_EVENTS
27644
27645void WDI_GetWcnssCompiledApiVersion
27646(
27647 WDI_WlanVersionType *pWcnssApiVersion
27648)
27649{
27650 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27651 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27652 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27653 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27654}
27655
27656/**
27657 @brief Process Set TM Level Rsp function (called when a
27658 response is being received over the bus from HAL)
27659
27660 @param pWDICtx: pointer to the WLAN DAL context
27661 pEventData: pointer to the event information structure
27662
27663 @see
27664 @return Result of the function call
27665*/
27666WDI_Status
27667WDI_ProcessSetTmLevelRsp
27668(
27669 WDI_ControlBlockType* pWDICtx,
27670 WDI_EventInfoType* pEventData
27671)
27672{
27673 WDI_Status wdiStatus;
27674 eHalStatus halStatus;
27675 WDI_SetTmLevelCb wdiSetTmLevelCb;
27676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27677
27678 /*-------------------------------------------------------------------------
27679 Sanity check
27680 -------------------------------------------------------------------------*/
27681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27682 ( NULL == pEventData->pEventData ))
27683 {
27684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027686 WDI_ASSERT(0);
27687 return WDI_STATUS_E_FAILURE;
27688 }
27689
27690 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27691
27692 /*-------------------------------------------------------------------------
27693 Extract response and send it to UMAC
27694 -------------------------------------------------------------------------*/
27695 halStatus = *((eHalStatus*)pEventData->pEventData);
27696 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27697
27698 /*Notify UMAC*/
27699 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27700
27701 return WDI_STATUS_SUCCESS;
27702}/*WDI_ProcessSetTmLevelRsp*/
27703
27704/**
27705 @brief Process Set Thermal Mitigation level Changed request
27706
27707 @param pWDICtx: pointer to the WLAN DAL context
27708 pEventData: pointer to the event information structure
27709
27710 @see
27711 @return Result of the function call
27712*/
27713WDI_Status
27714WDI_ProcessSetTmLevelReq
27715(
27716 WDI_ControlBlockType* pWDICtx,
27717 WDI_EventInfoType* pEventData
27718)
27719{
27720 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27721 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27722 wpt_uint8* pSendBuffer = NULL;
27723 wpt_uint16 usDataOffset = 0;
27724 wpt_uint16 usSendSize = 0;
27725 tSetThermalMitgationType halTmMsg;
27726
27727 /*-------------------------------------------------------------------------
27728 Sanity check
27729 -------------------------------------------------------------------------*/
27730 if (( NULL == pEventData ) ||
27731 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27732 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27733 {
27734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027736 WDI_ASSERT(0);
27737 return WDI_STATUS_E_FAILURE;
27738 }
27739
27740 /*-----------------------------------------------------------------------
27741 Get message buffer
27742 -----------------------------------------------------------------------*/
27743 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27744 sizeof(halTmMsg),
27745 &pSendBuffer, &usDataOffset, &usSendSize))||
27746 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27747 {
27748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027749 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027750 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27751 WDI_ASSERT(0);
27752 return WDI_STATUS_E_FAILURE;
27753 }
27754
27755 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27756 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27757
27758 wpalMemoryCopy( pSendBuffer+usDataOffset,
27759 &halTmMsg,
27760 sizeof(halTmMsg));
27761
27762 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27763 pWDICtx->pfncRspCB = NULL;
27764 /*-------------------------------------------------------------------------
27765 Send Get STA Request to HAL
27766 -------------------------------------------------------------------------*/
27767 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27768 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27769}
27770
27771/* Fill the value from the global features enabled array to the global capabilities
27772 * bitmap struct
27773 */
27774static void
27775FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27776{
27777 wpt_int8 i;
27778 for (i=0; i<len; i++)
27779 {
27780 setFeatCaps(fCaps, enabledFeat[i]);
27781 }
27782}
27783
27784/**
27785 @brief WDI_featureCapsExchangeReq
27786 Post feature capability bitmap exchange event.
27787 Host will send its own capability to FW in this req and
27788 expect FW to send its capability back as a bitmap in Response
27789
27790 @param
27791
27792 wdiFeatureCapsExchangeCb: callback called on getting the response.
27793 It is kept to mantain similarity between WDI reqs and if needed, can
27794 be used in future. Currently, It is set to NULL
27795
27796 pUserData: user data will be passed back with the
27797 callback
27798
27799 @see
27800 @return Result of the function call
27801*/
27802WDI_Status
27803WDI_featureCapsExchangeReq
27804(
27805 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27806 void* pUserData
27807)
27808{
27809 WDI_EventInfoType wdiEventData;
27810 wpt_int32 fCapsStructSize;
27811
27812 /*------------------------------------------------------------------------
27813 Sanity Check
27814 ------------------------------------------------------------------------*/
27815 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27816 {
27817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27818 "WDI API call before module is initialized - Fail request");
27819
27820 return WDI_STATUS_E_NOT_ALLOWED;
27821 }
27822
27823 /* Allocate memory separately for global variable carrying FW caps */
27824 fCapsStructSize = sizeof(tWlanFeatCaps);
27825 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27826 if ( NULL == gpHostWlanFeatCaps )
27827 {
27828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027829 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027830 WDI_ASSERT(0);
27831 return WDI_STATUS_MEM_FAILURE;
27832 }
27833
27834 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27835
27836 /*------------------------------------------------------------------------
27837 Fill in Event data and post to the Main FSM
27838 ------------------------------------------------------------------------*/
27839 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27840 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027842 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027843 gpHostWlanFeatCaps->featCaps[0],
27844 gpHostWlanFeatCaps->featCaps[1],
27845 gpHostWlanFeatCaps->featCaps[2],
27846 gpHostWlanFeatCaps->featCaps[3]
27847 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27849 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027850 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27851 wdiEventData.pEventData = gpHostWlanFeatCaps;
27852 wdiEventData.uEventDataSize = fCapsStructSize;
27853 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27854 wdiEventData.pUserData = pUserData;
27855
27856 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27857}
27858
27859/**
Yathish9f22e662012-12-10 14:21:35 -080027860 @brief Disable Active mode offload in Host
27861
27862 @param void
27863 @see
27864 @return void
27865*/
27866void
27867WDI_disableCapablityFeature(wpt_uint8 feature_index)
27868{
27869 supportEnabledFeatures[feature_index] = 0;
27870 return;
27871}
27872
27873/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027874 @brief Process Host-FW Capability Exchange Request function
27875
27876 @param pWDICtx: pointer to the WLAN DAL context
27877 pEventData: pointer to the event information structure
27878
27879 @see
27880 @return Result of the function call
27881*/
27882WDI_Status
27883WDI_ProcessFeatureCapsExchangeReq
27884(
27885 WDI_ControlBlockType* pWDICtx,
27886 WDI_EventInfoType* pEventData
27887)
27888{
27889 wpt_uint8* pSendBuffer = NULL;
27890 wpt_uint16 usDataOffset = 0;
27891 wpt_uint16 usSendSize = 0;
27892 wpt_uint16 usLen = 0;
27893
27894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27895
27896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027897 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027898
27899 /*-------------------------------------------------------------------------
27900 Sanity check
27901 -------------------------------------------------------------------------*/
27902 /* Call back function is NULL since not required for cap exchange req */
27903 if (( NULL == pEventData ) ||
27904 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27905 {
27906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027908 WDI_ASSERT(0);
27909 return WDI_STATUS_E_FAILURE;
27910 }
27911
27912 /*-----------------------------------------------------------------------
27913 Get message buffer
27914 -----------------------------------------------------------------------*/
27915 usLen = sizeof(tWlanFeatCaps);
27916
27917 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27918 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27919 usLen,
27920 &pSendBuffer, &usDataOffset, &usSendSize))||
27921 ( usSendSize < (usDataOffset + usLen )))
27922 {
27923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027924 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027925 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27926 WDI_ASSERT(0);
27927 return WDI_STATUS_E_FAILURE;
27928 }
27929
27930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027931 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027932 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27933 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27934 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27935 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27936 );
27937
27938 /* Copy host caps after the offset in the send buffer */
27939 wpalMemoryCopy( pSendBuffer+usDataOffset,
27940 (tWlanFeatCaps *)pEventData->pEventData,
27941 usLen);
27942
27943 /*-------------------------------------------------------------------------
27944 Send Start Request to HAL
27945 -------------------------------------------------------------------------*/
27946 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27947 (WDI_StartRspCb)pEventData->pCBfnc,
27948 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27949
27950}/*WDI_ProcessFeatureCapsExchangeReq*/
27951
27952/**
27953 @brief Process Host-FW Capability Exchange Response function
27954
27955 @param pWDICtx: pointer to the WLAN DAL context
27956 pEventData: pointer to the event information structure
27957
27958 @see
27959 @return Result of the function call
27960*/
27961WDI_Status
27962WDI_ProcessFeatureCapsExchangeRsp
27963(
27964 WDI_ControlBlockType* pWDICtx,
27965 WDI_EventInfoType* pEventData
27966)
27967{
27968 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27969 wpt_int32 fCapsStructSize;
27970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27971
27972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027973 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027974
27975 /*-------------------------------------------------------------------------
27976 Sanity check
27977 -------------------------------------------------------------------------*/
27978 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27979 ( NULL == pEventData->pEventData ))
27980 {
27981 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027984 WDI_ASSERT(0);
27985 return WDI_STATUS_E_FAILURE;
27986 }
27987
27988 /* Allocate memory separately for global variable carrying FW caps */
27989 fCapsStructSize = sizeof(tWlanFeatCaps);
27990 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27991 if ( NULL == gpFwWlanFeatCaps )
27992 {
27993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027994 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027995 WDI_ASSERT(0);
27996 return WDI_STATUS_MEM_FAILURE;
27997 }
27998
27999 /*-------------------------------------------------------------------------
28000 Unpack HAL Response Message - the header was already extracted by the
28001 main Response Handling procedure
28002 -------------------------------------------------------------------------*/
28003 /*-------------------------------------------------------------------------
28004 Extract response and send it to UMAC
28005 -------------------------------------------------------------------------*/
28006
28007 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28008 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028010 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028011 gpFwWlanFeatCaps->featCaps[0],
28012 gpFwWlanFeatCaps->featCaps[1],
28013 gpFwWlanFeatCaps->featCaps[2],
28014 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028015 );
28016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28017 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028018 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28019
28020 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28021 if (wdiFeatureCapsExchangeCb != NULL)
28022 wdiFeatureCapsExchangeCb(NULL, NULL);
28023
28024 return WDI_STATUS_SUCCESS;
28025}
28026
Mohit Khanna4a70d262012-09-11 16:30:12 -070028027#ifdef WLAN_FEATURE_11AC
28028WDI_Status
28029WDI_ProcessUpdateVHTOpModeRsp
28030(
28031 WDI_ControlBlockType* pWDICtx,
28032 WDI_EventInfoType* pEventData
28033)
28034{
28035 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28036 WDI_Status wdiStatus;
28037 eHalStatus halStatus;
28038
28039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28040
28041 /*-------------------------------------------------------------------------
28042 Sanity check
28043 -------------------------------------------------------------------------*/
28044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28045 ( NULL == pEventData->pEventData))
28046 {
28047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028048 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028049 WDI_ASSERT(0);
28050 return WDI_STATUS_E_FAILURE;
28051 }
28052 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28053
28054 /*-------------------------------------------------------------------------
28055 Extract response and send it to UMAC
28056 -------------------------------------------------------------------------*/
28057 halStatus = *((eHalStatus*)pEventData->pEventData);
28058 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28059
28060 /*Notify UMAC*/
28061 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28062
28063 return WDI_STATUS_SUCCESS;
28064}
28065#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028066/**
28067 @brief WDI_getHostWlanFeatCaps
28068 WDI API that returns whether the feature passed to it as enum value in
28069 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28070 variable storing host capability bitmap to find this. This can be used by
28071 other moduels to decide certain things like call different APIs based on
28072 whether a particular feature is supported.
28073
28074 @param
28075
28076 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28077
28078 @see
28079 @return
28080 0 - if the feature is NOT supported in host
28081 any non-zero value - if the feature is SUPPORTED in host.
28082*/
28083wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28084{
28085 wpt_uint8 featSupported = 0;
28086 if (gpHostWlanFeatCaps != NULL)
28087 {
28088 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28089 }
28090 else
28091 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028093 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028094 }
28095 return featSupported;
28096}
28097
28098/**
28099 @brief WDI_getFwWlanFeatCaps
28100 WDI API that returns whether the feature passed to it as enum value in
28101 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28102 variable storing host capability bitmap to find this. This can be used by
28103 other moduels to decide certain things like call different APIs based on
28104 whether a particular feature is supported.
28105
28106 @param
28107
28108 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28109 in wlan_hal_msg.h.
28110
28111 @see
28112 @return
28113 0 - if the feature is NOT supported in FW
28114 any non-zero value - if the feature is SUPPORTED in FW.
28115*/
28116wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28117{
28118 wpt_uint8 featSupported = 0;
28119 if (gpFwWlanFeatCaps != NULL)
28120 {
28121 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28122 }
28123 else
28124 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028126 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028127 }
28128 return featSupported;
28129}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028130
28131#ifdef WLAN_FEATURE_11AC
28132WDI_Status
28133WDI_ProcessUpdateVHTOpModeReq
28134(
28135 WDI_ControlBlockType* pWDICtx,
28136 WDI_EventInfoType* pEventData
28137)
28138{
28139 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28140 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28141 wpt_uint8* pSendBuffer = NULL;
28142 wpt_uint16 usDataOffset = 0;
28143 wpt_uint16 usSendSize = 0;
28144
28145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28146
28147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028148 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028149
28150 /*-------------------------------------------------------------------------
28151 Sanity check
28152 -------------------------------------------------------------------------*/
28153 if (( NULL == pEventData ) ||
28154 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28155 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28156 {
28157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028158 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028159 WDI_ASSERT(0);
28160 return WDI_STATUS_E_FAILURE;
28161 }
28162
28163 /*-----------------------------------------------------------------------
28164 Get message buffer
28165 -----------------------------------------------------------------------*/
28166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28167 sizeof(WDI_UpdateVHTOpMode),
28168 &pSendBuffer, &usDataOffset, &usSendSize))||
28169 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28170 {
28171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28172 "Unable to get send buffer in update vht opMode req");
28173 WDI_ASSERT(0);
28174 return WDI_STATUS_E_FAILURE;
28175 }
28176
28177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028178 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028179
28180 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28181 sizeof(WDI_UpdateVHTOpMode));
28182
28183 /*-------------------------------------------------------------------------
28184 Send Start Request to HAL
28185 -------------------------------------------------------------------------*/
28186 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28187 wdiVHTOpModeCb,
28188 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28189
28190}
28191
28192WDI_Status
28193WDI_UpdateVHTOpModeReq
28194(
28195 WDI_UpdateVHTOpMode *pData,
28196 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28197 void* pUserData
28198)
28199{
28200 WDI_EventInfoType wdiEventData;
28201
28202 /*------------------------------------------------------------------------
28203 Sanity Check
28204 ------------------------------------------------------------------------*/
28205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28206 {
28207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28208 "WDI API call before module is initialized - Fail request");
28209
28210 return WDI_STATUS_E_NOT_ALLOWED;
28211 }
28212
28213 /*------------------------------------------------------------------------
28214 Fill in Event data and post to the Main FSM
28215 ------------------------------------------------------------------------*/
28216 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28217 wdiEventData.pEventData = pData;
28218 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28219 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28220 wdiEventData.pUserData = pUserData;
28221
28222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028223 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028224
28225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28226
28227}
28228#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028229
28230/**
28231 @brief WDI_TransportChannelDebug -
28232 Display DXE Channel debugging information
28233 User may request to display DXE channel snapshot
28234 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028235
Jeff Johnsonb88db982012-12-10 13:34:59 -080028236 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028237 @param enableStallDetect : Enable stall detect feature
28238 This feature will take effect to data performance
28239 Not integrate till fully verification
28240 @see
28241 @return none
28242*/
28243void WDI_TransportChannelDebug
28244(
28245 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028246 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028247)
28248{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028249 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028250 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028251}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028252/**
28253 @brief WDI_SsrTimerCB
28254 Callback function for SSR timer, if this is called then the graceful
28255 shutdown for Riva did not happen.
28256
28257 @param pUserData : user data to timer
28258
28259 @see
28260 @return none
28261*/
28262void
28263WDI_SsrTimerCB
28264(
28265 void *pUserData
28266)
28267{
28268 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28270
28271 if (NULL == pWDICtx )
28272 {
28273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028274 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028275 WDI_ASSERT(0);
28276 return;
28277 }
28278 wpalRivaSubystemRestart();
28279
28280 return;
28281
28282}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070028283
28284/**
28285 @brief WDI_SetEnableSSR -
28286 This API is called to enable/disable SSR on WDI timeout.
28287
28288 @param enableSSR : enable/disable SSR
28289
28290 @see
28291 @return none
28292*/
28293void WDI_SetEnableSSR(wpt_boolean enableSSR)
28294{
28295 gWDICb.bEnableSSR = enableSSR;
28296}
Leo Chang9056f462013-08-01 19:21:11 -070028297
28298
28299#ifdef FEATURE_WLAN_LPHB
28300/**
Leo Changd9df8aa2013-09-26 13:32:26 -070028301 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070028302 This function will be invoked when FW detects low power
28303 heart beat failure
28304
28305 @param pWDICtx : wdi context
28306 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070028307 @see
28308 @return Result of the function call
28309*/
28310WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070028311WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070028312(
28313 WDI_ControlBlockType* pWDICtx,
28314 WDI_EventInfoType* pEventData
28315)
28316{
28317 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070028318 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070028319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28320
28321 /*-------------------------------------------------------------------------
28322 Sanity check
28323 -------------------------------------------------------------------------*/
28324 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28325 (NULL == pEventData->pEventData))
28326 {
28327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28328 "%s: Invalid parameters", __func__);
28329 WDI_ASSERT(0);
28330 return WDI_STATUS_E_FAILURE;
28331 }
28332
28333 /*-------------------------------------------------------------------------
28334 Extract indication and send it to UMAC
28335 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070028336 wpalMemoryCopy(&lphbIndicationParam,
28337 pEventData->pEventData,
28338 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070028339
Leo Changd9df8aa2013-09-26 13:32:26 -070028340 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070028341 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028342 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028343 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028344 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028345 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070028346 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070028347 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070028348 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070028349 /*Notify UMAC*/
28350 if (pWDICtx->wdiLowLevelIndCB)
28351 {
28352 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28353 }
28354
28355 return WDI_STATUS_SUCCESS;
28356}
28357
28358/**
28359 @brief WDI_ProcessLphbCfgRsp -
28360 LPHB configuration response from FW
28361
28362 @param pWDICtx : wdi context
28363 pEventData : indication data
28364
28365 @see
28366 @return Result of the function call
28367*/
28368WDI_Status WDI_ProcessLphbCfgRsp
28369(
28370 WDI_ControlBlockType* pWDICtx,
28371 WDI_EventInfoType* pEventData
28372)
28373{
28374 WDI_Status wdiStatus;
28375 eHalStatus halStatus;
28376 WDI_LphbCfgCb wdiLphbCfgCb;
28377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28378
28379 /*-------------------------------------------------------------------------
28380 Sanity check
28381 -------------------------------------------------------------------------*/
28382 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28383 (NULL == pEventData->pEventData))
28384 {
28385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28386 "%s: Invalid parameters", __func__);
28387 WDI_ASSERT(0);
28388 return WDI_STATUS_E_FAILURE;
28389 }
28390
28391 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28392
28393 /*-------------------------------------------------------------------------
28394 Extract response and send it to UMAC
28395 -------------------------------------------------------------------------*/
28396 halStatus = *((eHalStatus*)pEventData->pEventData);
28397 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28398
28399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28400 "LPHB Cfg Rsp Return status %d", wdiStatus);
28401 /*Notify UMAC*/
28402 if (NULL != wdiLphbCfgCb)
28403 {
28404 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28405 }
28406
28407 return WDI_STATUS_SUCCESS;
28408}
28409
28410/**
28411 @brief WDI_ProcessLPHBConfReq -
28412 LPHB configuration request to FW
28413
28414 @param pWDICtx : wdi context
28415 pEventData : indication data
28416
28417 @see
28418 @return none
28419*/
28420WDI_Status WDI_ProcessLPHBConfReq
28421(
28422 WDI_ControlBlockType* pWDICtx,
28423 WDI_EventInfoType* pEventData
28424)
28425{
28426 WDI_LPHBReq *pLphbReqParams;
28427 WDI_Status wdiStatus;
28428 wpt_uint8* pSendBuffer = NULL;
28429 wpt_uint16 usDataOffset = 0;
28430 wpt_uint16 usSendSize = 0;
28431 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28433
28434 /*-------------------------------------------------------------------------
28435 Sanity check
28436 -------------------------------------------------------------------------*/
28437 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28438 {
28439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28440 "%s: Invalid parameters in Suspend ind",__func__);
28441 WDI_ASSERT(0);
28442 return WDI_STATUS_E_FAILURE;
28443 }
28444
28445 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28446
28447 /*-----------------------------------------------------------------------
28448 Get message buffer
28449 -----------------------------------------------------------------------*/
28450 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28451 WDI_LPHB_CFG_REQ,
28452 sizeof(tHalLowPowerHeartBeatReqMsg),
28453 &pSendBuffer, &usDataOffset, &usSendSize))||
28454 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28455 {
28456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28457 "Unable to get send buffer in LPHB Ind ");
28458 WDI_ASSERT(0);
28459 return WDI_STATUS_E_FAILURE;
28460 }
28461
28462 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28463 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28464
28465 halLphbReqRarams->lowPowerHeartBeatCmdType =
28466 (tANI_U16)(++pLphbReqParams->cmd);
28467 switch ((tANI_U16)pLphbReqParams->cmd)
28468 {
28469 case WDI_LPHB_SET_EN_PARAMS_INDID:
28470 halLphbReqRarams->sessionIdx =
28471 pLphbReqParams->params.lphbEnableReq.session;
28472 halLphbReqRarams->options.control.heartBeatEnable =
28473 pLphbReqParams->params.lphbEnableReq.enable;
28474 halLphbReqRarams->options.control.heartBeatType =
28475 pLphbReqParams->params.lphbEnableReq.item;
28476 break;
28477
28478 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28479 halLphbReqRarams->sessionIdx =
28480 pLphbReqParams->params.lphbTcpParamReq.session;
28481 halLphbReqRarams->options.tcpParams.timeOutSec =
28482 pLphbReqParams->params.lphbTcpParamReq.timeout;
28483 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28484 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28485 sizeof(v_U32_t));
28486 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28487 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28488 sizeof(v_U32_t));
28489
28490 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28491 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28492 WDI_MAC_ADDR_LEN);
28493
28494 halLphbReqRarams->options.tcpParams.hostPort =
28495 pLphbReqParams->params.lphbTcpParamReq.src_port;
28496 halLphbReqRarams->options.tcpParams.destPort =
28497 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070028498 halLphbReqRarams->options.tcpParams.timePeriodSec =
28499 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28500 halLphbReqRarams->options.tcpParams.tcpSn =
28501 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070028502 break;
28503
28504 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28505 halLphbReqRarams->sessionIdx =
28506 pLphbReqParams->params.lphbTcpFilterReq.session;
28507 halLphbReqRarams->options.tcpUdpFilter.offset =
28508 pLphbReqParams->params.lphbTcpFilterReq.offset;
28509 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28510 pLphbReqParams->params.lphbTcpFilterReq.length;
28511 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28512 pLphbReqParams->params.lphbTcpFilterReq.filter,
28513 WDI_LPHB_FILTER_LEN);
28514 break;
28515
28516 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28517 halLphbReqRarams->sessionIdx =
28518 pLphbReqParams->params.lphbUdpParamReq.session;
28519 halLphbReqRarams->options.udpParams.timeOutSec =
28520 pLphbReqParams->params.lphbUdpParamReq.timeout;
28521 halLphbReqRarams->options.udpParams.timePeriodSec =
28522 pLphbReqParams->params.lphbUdpParamReq.interval;
28523 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28524 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28525 sizeof(v_U32_t));
28526 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28527 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28528 sizeof(v_U32_t));
28529
28530 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28531 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28532 WDI_MAC_ADDR_LEN);
28533
28534 halLphbReqRarams->options.udpParams.hostPort =
28535 pLphbReqParams->params.lphbUdpParamReq.src_port;
28536 halLphbReqRarams->options.udpParams.destPort =
28537 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28538 break;
28539
28540 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28541 halLphbReqRarams->sessionIdx =
28542 pLphbReqParams->params.lphbUdpFilterReq.session;
28543 halLphbReqRarams->options.tcpUdpFilter.offset =
28544 pLphbReqParams->params.lphbUdpFilterReq.offset;
28545 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28546 pLphbReqParams->params.lphbUdpFilterReq.length;
28547 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28548 pLphbReqParams->params.lphbUdpFilterReq.filter,
28549 WDI_LPHB_FILTER_LEN);
28550 break;
28551
28552 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28553 /* NA */
28554 break;
28555
28556 default:
28557 break;
28558 }
28559
28560 /*-------------------------------------------------------------------------
28561 Send Suspend Request to HAL
28562 -------------------------------------------------------------------------*/
28563 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28564 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28565
28566 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28567 usSendSize, pWDICtx->pfncRspCB,
28568 pWDICtx->pReqStatusUserData,
28569 WDI_LPHB_CFG_RESP);
28570
28571 return wdiStatus;
28572}
28573
28574/**
28575 @brief WDI_LPHBConfReq -
28576 LPHB configuration request API
28577
28578 @param lphbconfParam : configuration parameter
28579 usrData : client context
28580 lphbCfgCb : callback function pointer
28581
28582 @see
28583 @return Success or fail status code
28584*/
28585WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28586 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28587{
28588 WDI_EventInfoType wdiEventData;
28589
28590 /*------------------------------------------------------------------------
28591 Sanity Check
28592 ------------------------------------------------------------------------*/
28593 if (eWLAN_PAL_FALSE == gWDIInitialized)
28594 {
28595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28596 "WDI API call before module is initialized - Fail request");
28597
28598 return WDI_STATUS_E_NOT_ALLOWED;
28599 }
28600
28601 /*------------------------------------------------------------------------
28602 Fill in Event data and post to the Main FSM
28603 ------------------------------------------------------------------------*/
28604 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28605 wdiEventData.pEventData = lphbconfParam;
28606 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28607 wdiEventData.pCBfnc = lphbCfgCb;
28608 wdiEventData.pUserData = usrData;
28609
28610 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28611}
28612#endif /* FEATURE_WLAN_LPHB */
28613
Ravi Joshid2ca7c42013-07-23 08:37:49 -070028614/**
28615 @brief WDI_ProcessIbssPeerInactivityInd
28616 Process peer inactivity indication coming from HAL
28617
28618 @param pWDICtx: pointer to the WLAN DAL context
28619 pEventData: pointer to the event information structure
28620 @see
28621 @return Result of the function call
28622*/
28623WDI_Status
28624WDI_ProcessIbssPeerInactivityInd
28625(
28626 WDI_ControlBlockType* pWDICtx,
28627 WDI_EventInfoType* pEventData
28628)
28629{
28630 WDI_LowLevelIndType wdiInd;
28631 tIbssPeerInactivityIndMsg halIbssIndMsg;
28632
28633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28634
28635 /*-------------------------------------------------------------------------
28636 Sanity check
28637 -------------------------------------------------------------------------*/
28638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28639 ( NULL == pEventData->pEventData ))
28640 {
28641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28642 "%s: Invalid parameters", __func__);
28643 WDI_ASSERT( 0 );
28644 return WDI_STATUS_E_FAILURE;
28645 }
28646
28647 /*-------------------------------------------------------------------------
28648 Extract indication and send it to UMAC
28649 -------------------------------------------------------------------------*/
28650 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28651 pEventData->pEventData,
28652 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28653
28654 /*Fill in the indication parameters*/
28655 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28656
28657 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28658 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28659
28660 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28661 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28662
28663 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28664 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28665 sizeof(tSirMacAddr));
28666
28667 /*Notify UMAC*/
28668 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28669
28670 return WDI_STATUS_SUCCESS;
28671
28672} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053028673
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028674/**
28675*@brief WDI_RateUpdateInd will be called when the upper MAC
28676 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053028677
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028678
28679 @param wdiRateUpdateIndParams:
28680
28681
28682 @see
28683 @return Result of the function call
28684*/
28685WDI_Status
28686WDI_RateUpdateInd
28687(
28688 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28689)
28690{
28691 WDI_EventInfoType wdiEventData;
28692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28693
28694 /*------------------------------------------------------------------------
28695 Sanity Check
28696 ------------------------------------------------------------------------*/
28697 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28698 {
28699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28700 "WDI API call before module is initialized - Fail request");
28701
28702 return WDI_STATUS_E_NOT_ALLOWED;
28703 }
28704
28705 /*------------------------------------------------------------------------
28706 Fill in Event data and post to the Main FSM
28707 ------------------------------------------------------------------------*/
28708 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28709 wdiEventData.pEventData = wdiRateUpdateIndParams;
28710 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28711 wdiEventData.pCBfnc = NULL;
28712 wdiEventData.pUserData = NULL;
28713
28714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28715
28716}/* WDI_RateUpdateInd */
28717
28718/**
28719 @brief Process Rate Update Indication and post it to HAL
28720
28721 @param pWDICtx: pointer to the WLAN DAL context
28722 pEventData: pointer to the event information structure
28723
28724 @see
28725 @return Result of the function call
28726*/
28727WDI_Status
28728WDI_ProcessRateUpdateInd
28729(
28730 WDI_ControlBlockType* pWDICtx,
28731 WDI_EventInfoType* pEventData
28732)
28733{
28734 wpt_uint8* pSendBuffer = NULL;
28735 wpt_uint16 usDataOffset = 0;
28736 wpt_uint16 usSendSize = 0;
28737 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28738 tHalRateUpdateInd *pRateUpdateInd;
28739 WDI_Status wdiStatus;
28740
28741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28742
28743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28744 "%s", __func__);
28745
28746 /*-------------------------------------------------------------------------
28747 Sanity check
28748 -------------------------------------------------------------------------*/
28749 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28750 {
28751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28752 "%s: Invalid parameters", __func__);
28753 WDI_ASSERT(0);
28754 return WDI_STATUS_E_FAILURE;
28755 }
28756 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28757 /*-----------------------------------------------------------------------
28758 Get message buffer
28759 -----------------------------------------------------------------------*/
28760
28761 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28762 WDI_RATE_UPDATE_IND,
28763 sizeof(tHalRateUpdateParams),
28764 &pSendBuffer, &usDataOffset, &usSendSize))||
28765 ( usSendSize < (usDataOffset +
28766 sizeof(tHalRateUpdateParams) )))
28767 {
28768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28769 "Unable to get send buffer in Rate Update Indication %p ",
28770 pEventData);
28771 WDI_ASSERT(0);
28772 return WDI_STATUS_E_FAILURE;
28773 }
28774
28775 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28776
28777 /* Copy the bssid */
28778 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28779 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28780
28781 /* Copy the tx flags */
28782 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28783 pwdiRateUpdateInd->ucastDataRateTxFlag;
28784 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28785 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28786 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28787 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28788 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28789 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28790
28791 /* Copy the tx rates */
28792 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28793 pwdiRateUpdateInd->ucastDataRate;
28794 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28795 pwdiRateUpdateInd->reliableMcastDataRate;
28796 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28797 pwdiRateUpdateInd->mcastDataRate24GHz;
28798 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28799 pwdiRateUpdateInd->mcastDataRate5GHz;
28800
28801 /*-------------------------------------------------------------------------
28802 Send Rate Update Indication to HAL
28803 -------------------------------------------------------------------------*/
28804 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28805 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28806
28807 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28808
28809 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28810 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28811
28812} /* WDI_ProcessRateUpdateInd */
28813
28814#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053028815/**
28816 @brief Process stop batch indication from WDA
28817
28818 @param pWDICtx: pointer to the WLAN DAL context
28819 pEventData: pointer to the event information structure
28820
28821 @see
28822 @return Result of the function call
28823*/
28824WDI_Status
28825WDI_ProcessStopBatchScanInd
28826(
28827 WDI_ControlBlockType* pWDICtx,
28828 WDI_EventInfoType* pEventData
28829)
28830{
28831 wpt_uint8* pSendBuffer = NULL;
28832 wpt_uint16 usDataOffset = 0;
28833 wpt_uint16 usSendSize = 0;
28834 WDI_Status wdiStatus;
28835 tHalBatchScanStopIndParam *pHalInd = NULL;
28836 WDI_StopBatchScanIndType *pWdiInd = NULL;
28837
28838
28839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28840
28841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28842 "%s", __func__);
28843
28844 /*-------------------------------------------------------------------------
28845 Sanity check
28846 -------------------------------------------------------------------------*/
28847
28848 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28849 {
28850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28851 "%s: Invalid parameters", __func__);
28852 WDI_ASSERT(0);
28853 return WDI_STATUS_E_FAILURE;
28854 }
28855 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28856 /*-----------------------------------------------------------------------
28857 Get message buffer
28858 -----------------------------------------------------------------------*/
28859
28860 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28861 WDI_STOP_BATCH_SCAN_IND,
28862 sizeof(tHalBatchScanStopIndParam),
28863 &pSendBuffer, &usDataOffset, &usSendSize))||
28864 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28865 {
28866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28867 "Unable to get send buffer in stop batch scan ind %p ",
28868 pEventData);
28869 WDI_ASSERT(0);
28870 return WDI_STATUS_E_FAILURE;
28871 }
28872
28873 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28874 pHalInd->param = pWdiInd->param;
28875
28876 pWDICtx->pReqStatusUserData = NULL;
28877 pWDICtx->pfncRspCB = NULL;
28878 /*-------------------------------------------------------------------------
28879 Send Stop batch scan indication to HAL
28880 -------------------------------------------------------------------------*/
28881 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28882 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28883}
28884
28885/**
28886 @brief This API is called to trigger batch scan results from FW
28887
28888 @param pWDICtx: pointer to the WLAN DAL context
28889 pEventData: pointer to the event information structure
28890
28891 @see
28892 @return Result of the function call
28893*/
28894WDI_Status
28895WDI_ProcessTriggerBatchScanResultInd
28896(
28897 WDI_ControlBlockType* pWDICtx,
28898 WDI_EventInfoType* pEventData
28899)
28900{
28901 WDI_Status wdiStatus;
28902 wpt_uint8* pSendBuffer = NULL;
28903 wpt_uint16 usDataOffset = 0;
28904 wpt_uint16 usSendSize = 0;
28905 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28906 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28907
28908
28909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28910
28911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28912 "%s", __func__);
28913
28914 /*-------------------------------------------------------------------------
28915 Sanity check
28916 -------------------------------------------------------------------------*/
28917
28918 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28919 {
28920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28921 "%s: Invalid parameters", __func__);
28922 WDI_ASSERT(0);
28923 return WDI_STATUS_E_FAILURE;
28924 }
28925 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28926 /*-----------------------------------------------------------------------
28927 Get message buffer
28928 -----------------------------------------------------------------------*/
28929
28930 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28931 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28932 sizeof(tHalBatchScanTriggerResultParam),
28933 &pSendBuffer, &usDataOffset, &usSendSize))||
28934 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28935 {
28936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28937 "Unable to get send buffer in stop batch scan ind %p ",
28938 pEventData);
28939 WDI_ASSERT(0);
28940 return WDI_STATUS_E_FAILURE;
28941 }
28942
28943 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28944 pHalInd->param = pWdiInd->param;
28945
28946 pWDICtx->pReqStatusUserData = NULL;
28947 pWDICtx->pfncRspCB = NULL;
28948 /*-------------------------------------------------------------------------
28949 Send trigger batch scan result indication to HAL
28950 -------------------------------------------------------------------------*/
28951 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28952 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28953}
28954
28955
28956/**
28957 @brief Process set batch scan response from FW
28958
28959 @param pWDICtx: pointer to the WLAN DAL context
28960 pEventData: pointer to the event information structure
28961
28962 @see
28963 @return Result of the function call
28964*/
28965WDI_Status
28966WDI_ProcessSetBatchScanRsp
28967(
28968 WDI_ControlBlockType* pWDICtx,
28969 WDI_EventInfoType* pEventData
28970)
28971{
28972 WDI_SetBatchScanCb wdiSetBatchScanCb;
28973 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28974
28975 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28977
28978 /*sanity check*/
28979 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28980 ( NULL == pEventData->pEventData))
28981 {
28982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28983 "%s: Invalid parameters", __func__);
28984 WDI_ASSERT(0);
28985 return WDI_STATUS_E_FAILURE;
28986 }
28987
28988 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28989 if ( NULL == wdiSetBatchScanCb)
28990 {
28991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28992 "%s: call back function is NULL", __func__);
28993 WDI_ASSERT(0);
28994 return WDI_STATUS_E_FAILURE;
28995 }
28996
28997 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28998
28999 if (NULL == pSetBatchScanRsp)
29000 {
29001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029002 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029003 pWDICtx, pEventData, pEventData->pEventData);
29004 WDI_ASSERT(0);
29005 return WDI_STATUS_E_FAILURE;
29006 }
29007
29008 /*extract response and send it to UMAC*/
29009 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29010
29011 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29012
29013 /*Notify UMAC*/
29014 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29015
29016 wpalMemoryFree(pSetBatchScanRsp);
29017
29018 return WDI_STATUS_SUCCESS;
29019}/*WDI_ProcessSetBatchScanRsp*/
29020
29021/**
29022 @brief Process batch scan result indication from FW
29023
29024 @param pWDICtx: pointer to the WLAN DAL context
29025 pEventData: pointer to the event information structure
29026
29027 @see
29028 @return Result of the function call
29029*/
29030WDI_Status
29031WDI_ProcessBatchScanResultInd
29032(
29033 WDI_ControlBlockType* pWDICtx,
29034 WDI_EventInfoType* pEventData
29035)
29036{
29037 void *pBatchScanResultInd;
29038 WDI_LowLevelIndType wdiInd;
29039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29040
29041 /*sanity check*/
29042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29043 ( NULL == pEventData->pEventData))
29044 {
29045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29046 "%s: Invalid parameters", __func__);
29047 WDI_ASSERT(0);
29048 return WDI_STATUS_E_FAILURE;
29049 }
29050
29051 /*extract response and send it to UMAC*/
29052 pBatchScanResultInd = (void *)pEventData->pEventData;
29053
29054 /*Fill in the indication parameters*/
29055 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29056
29057 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29058
29059 /*Notify UMAC*/
29060 if (pWDICtx->wdiLowLevelIndCB)
29061 {
29062 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29063 }
29064 else
29065 {
29066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29067 "%s: WDILowLevelIndCb is null", __func__);
29068 WDI_ASSERT(0);
29069 return WDI_STATUS_E_FAILURE;
29070 }
29071
29072 return WDI_STATUS_SUCCESS;
29073} /*End of WDI_ProcessBatchScanResultInd*/
29074
29075/**
29076 @brief WDI_ProcessSetBatchScanReq -
29077 Set batch scan request to FW
29078
29079 @param pWDICtx : wdi context
29080 pEventData : indication data
29081
29082 @see
29083 @return none
29084*/
29085WDI_Status WDI_ProcessSetBatchScanReq
29086(
29087 WDI_ControlBlockType* pWDICtx,
29088 WDI_EventInfoType* pEventData
29089)
29090{
29091 WDI_SetBatchScanReqType *pWdiReq;
29092 WDI_Status wdiStatus;
29093 wpt_uint8* pSendBuffer = NULL;
29094 wpt_uint16 usDataOffset = 0;
29095 wpt_uint16 usSendSize = 0;
29096 tHalBatchScanSetParams *pHalReq;
29097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29098
29099 /*sanity check*/
29100 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29101 {
29102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29103 "%s: Invalid parameters in set batch scan request", __func__);
29104 WDI_ASSERT(0);
29105 return WDI_STATUS_E_FAILURE;
29106 }
29107
29108
29109 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29110
29111
29112 /*get message buffer*/
29113 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29114 WDI_SET_BATCH_SCAN_REQ,
29115 sizeof(tHalBatchScanSetParams),
29116 &pSendBuffer, &usDataOffset, &usSendSize))||
29117 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29118 {
29119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29120 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29121 WDI_ASSERT(0);
29122 return WDI_STATUS_E_FAILURE;
29123 }
29124
29125 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29126
29127 pHalReq->rtt = pWdiReq->rtt;
29128 pHalReq->rfBand = pWdiReq->rfBand;
29129 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29130 pHalReq->scanInterval = pWdiReq->scanFrequency;
29131 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29132
29133 /*send set batch scan request to fw*/
29134 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29135 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29136
29137 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29138 usSendSize, pWDICtx->pfncRspCB,
29139 pWDICtx->pReqStatusUserData,
29140 WDI_SET_BATCH_SCAN_RESP);
29141
29142 return wdiStatus;
29143}
29144
29145/**
29146 @brief WDI_SetBatchScanReq
29147 This API is called to set batch scan request in FW
29148
29149 @param pBatchScanReqParam : pointer to set batch scan re param
29150 usrData : Client context
29151 setBatchScanRspCb : set batch scan resp callback
29152 @see
29153 @return SUCCESS or FAIL
29154*/
29155WDI_Status WDI_SetBatchScanReq
29156(
29157 void *pBatchScanReqParam,
29158 void *usrData,
29159 WDI_SetBatchScanCb setBatchScanRspCb
29160)
29161{
29162 WDI_EventInfoType wdiEventData;
29163
29164 /*sanity check*/
29165 if (eWLAN_PAL_FALSE == gWDIInitialized)
29166 {
29167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29168 "WDI API call before module is initialized - Fail request");
29169
29170 return WDI_STATUS_E_NOT_ALLOWED;
29171 }
29172
29173 /* fill in event data and post to the main FSM */
29174 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29175 wdiEventData.pEventData = pBatchScanReqParam;
29176 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29177 wdiEventData.pCBfnc = setBatchScanRspCb;
29178 wdiEventData.pUserData = usrData;
29179
29180 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29181}
29182
29183/**
29184 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29185
29186 @param None
29187
29188 @see
29189
29190 @return Status of the request
29191*/
29192WDI_Status
29193WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29194{
29195 WDI_EventInfoType wdiEventData;
29196
29197 /*-------------------------------------------------------------------------
29198 Sanity Check
29199 ------------------------------------------------------------------------*/
29200 if (eWLAN_PAL_FALSE == gWDIInitialized)
29201 {
29202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29203 "WDI API call before module is initialized - Fail request!");
29204
29205 return WDI_STATUS_E_NOT_ALLOWED;
29206 }
29207
29208 /*-------------------------------------------------------------------------
29209 Fill in Event data and post to the Main FSM
29210 ------------------------------------------------------------------------*/
29211 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29212 wdiEventData.pEventData = pWdiReq;
29213 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29214 wdiEventData.pCBfnc = NULL;
29215 wdiEventData.pUserData = NULL;
29216
29217 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29218}
29219
29220/**
29221 @brief WDI_TriggerBatchScanResultInd
29222 This API is called to pull batch scan result from FW
29223
29224 @param pWdiReq : pointer to get batch scan ind param
29225 @see
29226 @return SUCCESS or FAIL
29227*/
29228WDI_Status WDI_TriggerBatchScanResultInd
29229(
29230 WDI_TriggerBatchScanResultIndType *pWdiReq
29231)
29232{
29233 WDI_EventInfoType wdiEventData;
29234 /*-------------------------------------------------------------------------
29235 Sanity Check
29236 ------------------------------------------------------------------------*/
29237 if (eWLAN_PAL_FALSE == gWDIInitialized)
29238 {
29239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29240 "WDI API call before module is initialized - Fail request!");
29241
29242 return WDI_STATUS_E_NOT_ALLOWED;
29243 }
29244
29245 /*-------------------------------------------------------------------------
29246 Fill in Event data and post to the Main FSM
29247 ------------------------------------------------------------------------*/
29248 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29249 wdiEventData.pEventData = pWdiReq;
29250 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29251 wdiEventData.pCBfnc = NULL;
29252 wdiEventData.pUserData = NULL;
29253
29254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29255}
Rajeev79dbe4c2013-10-05 11:03:42 +053029256#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080029257
29258#ifdef FEATURE_WLAN_CH_AVOID
29259/**
29260 @brief v -WDI_ProcessChAvoidInd
29261
29262
29263 @param pWDICtx : wdi context
29264 pEventData : indication data
29265 @see
29266 @return Result of the function call
29267*/
29268WDI_Status
29269WDI_ProcessChAvoidInd
29270(
29271 WDI_ControlBlockType* pWDICtx,
29272 WDI_EventInfoType* pEventData
29273)
29274{
29275 WDI_LowLevelIndType wdiInd;
29276 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29277 wpt_uint16 rangeLoop;
29278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29279
29280 /*-------------------------------------------------------------------------
29281 Sanity check
29282 -------------------------------------------------------------------------*/
29283 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29284 (NULL == pEventData->pEventData))
29285 {
29286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29287 "%s: Invalid parameters", __func__);
29288 WDI_ASSERT(0);
29289 return WDI_STATUS_E_FAILURE;
29290 }
29291
29292 /*-------------------------------------------------------------------------
29293 Extract indication and send it to UMAC
29294 -------------------------------------------------------------------------*/
29295 wpalMemoryCopy(&chAvoidIndicationParam,
29296 pEventData->pEventData,
29297 sizeof(tHalAvoidFreqRangeIndParams));
29298
29299 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29300 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29301 chAvoidIndicationParam.avoidCnt;
29302 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29303 (void *)chAvoidIndicationParam.avoidRange,
29304 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29305 sizeof(WDI_ChAvoidFreqType));
29306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29307 "%s: band count %d", __func__,
29308 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29309 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29310 {
29311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29312 "%s: srart freq %d, end freq %d", __func__,
29313 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29314 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29315 }
29316
29317 /*Notify UMAC*/
29318 if (pWDICtx->wdiLowLevelIndCB)
29319 {
29320 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29321 }
29322
29323 return WDI_STATUS_SUCCESS;
29324}
29325#endif /* FEATURE_WLAN_CH_AVOID */
29326
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053029327/**
29328 @brief Process OBSS Start scan result indication
29329
29330 @param pWDICtx: pointer to the WLAN DAL context
29331 pEventData: pointer to the event information structure
29332
29333 @see
29334 @return Result of the function call
29335*/
29336WDI_Status
29337WDI_ProcessHT40OBSSScanInd
29338(
29339 WDI_ControlBlockType* pWDICtx,
29340 WDI_EventInfoType* pEventData
29341)
29342{
29343 wpt_uint8* pSendBuffer = NULL;
29344 wpt_uint16 usDataOffset = 0;
29345 wpt_uint16 usSendSize = 0;
29346 wpt_uint16 usLen = 0;
29347 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
29348 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
29349 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
29350 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29351
29352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29353
29354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29355 "%s", __func__);
29356
29357 /*-------------------------------------------------------------------------
29358 Sanity check
29359 -------------------------------------------------------------------------*/
29360 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29361 {
29362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29363 "%s: Invalid parameters", __func__);
29364 WDI_ASSERT(0);
29365 return WDI_STATUS_E_FAILURE;
29366 }
29367 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
29368
29369 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
29370 /*-----------------------------------------------------------------------
29371 Get message buffer
29372 -----------------------------------------------------------------------*/
29373
29374 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29375 WDI_START_HT40_OBSS_SCAN_IND,
29376 sizeof(tHT40ObssScanIndType),
29377 &pSendBuffer, &usDataOffset, &usSendSize))||
29378 ( usSendSize < (usDataOffset + usLen )))
29379 {
29380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29381 "Unable to get send buffer in HT40 OBSS Start req %p ",
29382 pEventData);
29383 WDI_ASSERT(0);
29384 return WDI_STATUS_E_FAILURE;
29385 }
29386 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
29387 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
29388 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
29389 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
29390 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
29391 pHT40ObssScanInd->OBSSScanActiveDwellTime =
29392 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
29393 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
29394 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
29395 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
29396 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
29397 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
29398 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
29399 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
29400 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
29401 pHT40ObssScanInd->OBSSScanActivityThreshold =
29402 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
29403 pHT40ObssScanInd->selfStaIdx =
29404 pwdiHT40OBSSScanInd->selfStaIdx;
29405 pHT40ObssScanInd->bssIdx =
29406 pwdiHT40OBSSScanInd->bssIdx;
29407 pHT40ObssScanInd->fortyMHZIntolerent =
29408 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
29409 pHT40ObssScanInd->channelCount =
29410 pwdiHT40OBSSScanInd->channelCount;
29411
29412 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
29413 WDI_ROAM_SCAN_MAX_CHANNELS);
29414 pHT40ObssScanInd->ieFieldLen =
29415 pwdiHT40OBSSScanInd->ieFieldLen;
29416
29417 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
29418 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
29419 pWDICtx->pReqStatusUserData = NULL;
29420 pWDICtx->pfncRspCB = NULL;
29421
29422 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
29423 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
29424
29425 /*-------------------------------------------------------------------------
29426 Send OBSS Start Indication to HAL
29427 -------------------------------------------------------------------------*/
29428 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29429 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29430
29431} /*End of WDI_ProcessHT40OBSSStartScanInd*/
29432
29433
29434/**
29435 @brief wdi_HT40OBSSScanInd
29436 This API is called to start OBSS scan
29437
29438 @param pWdiReq : pointer to get ind param
29439 @see
29440 @return SUCCESS or FAIL
29441*/
29442WDI_Status WDI_HT40OBSSScanInd
29443(
29444 WDI_HT40ObssScanParamsType *pWdiReq
29445)
29446{
29447 WDI_EventInfoType wdiEventData;
29448
29449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29450 "%s", __func__);
29451 /*-------------------------------------------------------------------------
29452 Sanity Check
29453 ------------------------------------------------------------------------*/
29454 if (eWLAN_PAL_FALSE == gWDIInitialized)
29455 {
29456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29457 "WDI API call before module is initialized - Fail request!");
29458
29459 return WDI_STATUS_E_NOT_ALLOWED;
29460 }
29461
29462 /*-------------------------------------------------------------------------
29463 Fill in Event data and post to the Main FSM
29464 ------------------------------------------------------------------------*/
29465 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
29466 wdiEventData.pEventData = pWdiReq;
29467 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
29468 wdiEventData.pCBfnc = NULL;
29469 wdiEventData.pUserData = NULL;
29470
29471
29472 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29473}
29474
29475/**
29476 @brief Process OBSS Stop scan result
29477
29478 @param pWDICtx: pointer to the WLAN DAL context
29479 pEventData: pointer to the event information structure
29480
29481 @see
29482 @return Result of the function call
29483*/
29484WDI_Status
29485WDI_ProcessHT40OBSSStopScanInd
29486(
29487 WDI_ControlBlockType* pWDICtx,
29488 WDI_EventInfoType* pEventData
29489)
29490{
29491 wpt_uint8* pSendBuffer = NULL;
29492 wpt_uint16 usDataOffset = 0;
29493 wpt_uint16 usSendSize = 0;
29494 wpt_uint16 usLen = 0;
29495 wpt_uint8 *wdiBssIdx = 0;
29496 tANI_U8 *bssIdx = 0;
29497 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29498
29499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29500
29501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29502 "%s", __func__);
29503
29504 /*-------------------------------------------------------------------------
29505 Sanity check
29506 -------------------------------------------------------------------------*/
29507 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29508 {
29509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29510 "%s: Invalid parameters", __func__);
29511 WDI_ASSERT(0);
29512 return WDI_STATUS_E_FAILURE;
29513 }
29514 bssIdx = (wpt_uint8*)pEventData->pEventData;
29515 /*-----------------------------------------------------------------------
29516 Get message buffer
29517 -----------------------------------------------------------------------*/
29518
29519 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29520 WDI_STOP_HT40_OBSS_SCAN_IND,
29521 sizeof(tANI_U8),
29522 &pSendBuffer, &usDataOffset, &usSendSize))||
29523 ( usSendSize < (usDataOffset + usLen )))
29524 {
29525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29526 "Unable to get send buffer in HT40 OBSS Start req %p ",
29527 pEventData);
29528 WDI_ASSERT(0);
29529 return WDI_STATUS_E_FAILURE;
29530 }
29531
29532 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
29533 bssIdx = wdiBssIdx;
29534
29535 pWDICtx->pReqStatusUserData = NULL;
29536 pWDICtx->pfncRspCB = NULL;
29537
29538 /*-------------------------------------------------------------------------
29539 Send DHCP Start Indication to HAL
29540 -------------------------------------------------------------------------*/
29541 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29542 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29543} /*End of WDI_ProcessHT40OBSSStopScanInd*/
29544
29545/**
29546 @brief WDI_HT40OBSSStopScanInd
29547 This API is called to start OBSS scan
29548 @param pWdiReq : pointer to get ind param
29549 @see
29550 @return SUCCESS or FAIL
29551*/
29552WDI_Status WDI_HT40OBSSStopScanInd
29553(
29554 wpt_uint8 bssIdx
29555)
29556{
29557 WDI_EventInfoType wdiEventData;
29558
29559 /*-------------------------------------------------------------------------
29560 Sanity Check
29561 ------------------------------------------------------------------------*/
29562 if (eWLAN_PAL_FALSE == gWDIInitialized)
29563 {
29564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29565 "WDI API call before module is initialized - Fail request!");
29566
29567 return WDI_STATUS_E_NOT_ALLOWED;
29568 }
29569
29570 /*-------------------------------------------------------------------------
29571 Fill in Event data and post to the Main FSM
29572 ------------------------------------------------------------------------*/
29573 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
29574 wdiEventData.pEventData = &bssIdx;
29575 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
29576 wdiEventData.pCBfnc = NULL;
29577 wdiEventData.pUserData = NULL;
29578
29579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29580}
29581