blob: 73efcf5942abc6ee1c06c708c8ea530143399bda [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*===========================================================================
23
24 W L A N _ Q C T _ W D I. C
25
26 OVERVIEW:
27
Jeff Johnsone7245742012-09-05 17:12:55 -070028 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070029 Layer Interface.
30
Jeff Johnsone7245742012-09-05 17:12:55 -070031 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070032 MAC implementation that wishes to use the WLAN Device.
33
34 DEPENDENCIES:
35
36 Are listed for each API below.
37
38
39 Copyright (c) 2008 QUALCOMM Incorporated.
40 All Rights Reserved.
41 Qualcomm Confidential and Proprietary
42===========================================================================*/
43
44/*===========================================================================
45
46 EDIT HISTORY FOR FILE
47
48
49 This section contains comments describing changes made to the module.
50 Notice that changes are listed in reverse chronological order.
51
52
53 $Header$$DateTime$$Author$
54
55
56 when who what, where, why
57---------- --- --------------------------------------------------------
5810/05/11 hap Adding support for Keep Alive
592010-08-09 lti Created module
60
61===========================================================================*/
62
63/*----------------------------------------------------------------------------
64 * Include Files
65 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070066#include "wlan_qct_wdi.h"
67#include "wlan_qct_wdi_i.h"
68#include "wlan_qct_wdi_sta.h"
69#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070070
Jeff Johnsone7245742012-09-05 17:12:55 -070071#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070072
73#include "wlan_qct_pal_api.h"
74#include "wlan_qct_pal_type.h"
75#include "wlan_qct_pal_status.h"
76#include "wlan_qct_pal_sync.h"
77#include "wlan_qct_pal_msg.h"
78#include "wlan_qct_pal_trace.h"
79#include "wlan_qct_pal_packet.h"
80
Jeff Johnsone7245742012-09-05 17:12:55 -070081#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070082
83#include "wlan_hal_msg.h"
84
85#ifdef ANI_MANF_DIAG
86#include "pttMsgApi.h"
87#endif /* ANI_MANF_DIAG */
88
89/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070090 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070091 ===========================================================================*/
92#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
93
Jeff Johnsone7245742012-09-05 17:12:55 -070094#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
95#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
96
Yathishd8713192012-12-10 14:21:35 -080097#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -070098
99#ifdef FEATURE_WLAN_SCAN_PNO
100#define WDI_PNO_VERSION_MASK 0x8000
101#endif
102
103/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700104static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700105/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700106static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700107/* array of features supported. Need to add a new feature
108 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
109 */
110static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800111 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800112#ifdef WLAN_SOFTAP_VSTA_FEATURE
113 ,SAP32STA
114#else
115 ,FEATURE_NOT_SUPPORTED
116#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800117#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800118 ,TDLS
119#else
120 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800121#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800122 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800123#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
124 ,WLANACTIVE_OFFLOAD
125#else
126 ,FEATURE_NOT_SUPPORTED
127#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800128 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700129
130/*--------------------------------------------------------------------------
131 WLAN DAL State Machine
132 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700133WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700134{
135 /*WDI_INIT_ST*/
136 {{
137 WDI_MainStart, /*WDI_START_EVENT*/
138 NULL, /*WDI_STOP_EVENT*/
139 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
140 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
141 WDI_MainClose, /*WDI_CLOSE_EVENT*/
142 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
143 }},
144
145 /*WDI_STARTED_ST*/
146 {{
147 WDI_MainStartStarted, /*WDI_START_EVENT*/
148 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
149 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
150 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
151 NULL, /*WDI_CLOSE_EVENT*/
152 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
153 }},
154
155 /*WDI_STOPPED_ST*/
156 {{
157 WDI_MainStart, /*WDI_START_EVENT*/
158 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
159 NULL, /*WDI_REQUEST_EVENT*/
160 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
161 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700162 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700163 }},
164
165 /*WDI_BUSY_ST*/
166 {{
167 WDI_MainStartBusy, /*WDI_START_EVENT*/
168 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
169 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
170 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
171 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
172 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
173 }}
174};
175
Jeff Johnsone7245742012-09-05 17:12:55 -0700176/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700177 DAL Request Processing Array - the functions in this table will only be
178 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700179 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700180 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700181WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700182{
183 /*INIT*/
184 WDI_ProcessStartReq, /* WDI_START_REQ */
185 WDI_ProcessStopReq, /* WDI_STOP_REQ */
186 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
187
188 /*SCAN*/
189 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
190 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
191 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
192 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
193
194 /*ASSOCIATION*/
195 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
196 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
197 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
198 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
199 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
200
201 /* Security */
202 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
203 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
204 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
205 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
206
207 /* QoS and BA APIs */
208 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
209 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
210 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
211 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
212 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
213
214 /* Miscellaneous Control APIs */
215 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
216 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
217 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
218 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
219 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
220
221 /*BA APIs*/
222 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
223 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
224
225 /*Beacon processing APIs*/
226 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
227 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
228
229 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
230 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
231 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
232 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
233#ifdef WLAN_FEATURE_P2P
234 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
235#else
236 NULL,
237#endif
238 /* PowerSave APIs */
239 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
240 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
241 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
242 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
243 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
244 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
245 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
246 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
247 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
248 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
249 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
250 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
251 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
252 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
253 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
254 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
255 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
256 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
257 /*NV Download APIs*/
258 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
259 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
260 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
261#ifdef WLAN_FEATURE_VOWIFI_11R
262 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
263#else
264 NULL,
265#endif /* WLAN_FEATURE_VOWIFI_11R */
266 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
267 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
268#ifdef ANI_MANF_DIAG
269 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
270#else
271 NULL,
272#endif /* ANI_MANF_DIAG */
Jeff Johnsone7245742012-09-05 17:12:55 -0700273
274#ifdef FEATURE_OEM_DATA_SUPPORT
275 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
276#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700277 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700278#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700279 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700280
281 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700282
283#ifdef FEATURE_WLAN_SCAN_PNO
284 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
285 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
286 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
287#else
288 NULL,
289 NULL,
290 NULL,
291#endif /* FEATURE_WLAN_SCAN_PNO */
292
293 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700294
Jeff Johnson295189b2012-06-20 16:38:30 -0700295#ifdef WLAN_FEATURE_PACKET_FILTERING
296 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700297 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700298 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700299 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700300 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700301 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700302 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700303 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700304#else
305 NULL,
306 NULL,
307 NULL,
308 NULL,
309#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700310 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
312 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
313
314 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
315#ifdef FEATURE_WLAN_CCX
316 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
317#else
318 NULL,
319#endif
320
321#ifdef WLAN_FEATURE_GTK_OFFLOAD
322 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
323 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
324#else
325 NULL,
326 NULL,
327#endif // WLAN_FEATURE_GTK_OFFLOAD
328
329 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
330 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700331#ifdef WLAN_FEATURE_11AC
332 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
333#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700334 /*-------------------------------------------------------------------------
335 Indications
336 -------------------------------------------------------------------------*/
337 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
338};
339
340
Jeff Johnsone7245742012-09-05 17:12:55 -0700341/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700342 DAL Request Processing Array - the functions in this table will only be
343 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700344 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700345 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700346WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700347{
348 /*INIT*/
349 WDI_ProcessStartRsp, /* WDI_START_RESP */
350 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
351 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
352
353 /*SCAN*/
354 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
355 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
356 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
357 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
358
359 /* ASSOCIATION*/
360 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
361 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
362 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
363 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
364 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
365
366 /* Security */
367 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
368 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
369 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
370 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
371
372 /* QoS and BA APIs */
373 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
374 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
375 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
376 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
377 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
378
379 /* Miscellaneous Control APIs */
380 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
381 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
382 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
383 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
384 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
385
386 /* BA APIs*/
387 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
388 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700389
Jeff Johnson295189b2012-06-20 16:38:30 -0700390 /* IBSS APIs*/
391 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
392 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
393
394 /*Soft AP APIs*/
395 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
396 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
397 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
398 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
399
400 /* PowerSave APIs */
401 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
402 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
403 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
404 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
405 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
406 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
407 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
408 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
409 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
410 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
411 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
412 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
413 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
414 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
415 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
416 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
417 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
418 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700419
Jeff Johnson295189b2012-06-20 16:38:30 -0700420
421 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
422
423 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
424 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
425#ifdef WLAN_FEATURE_VOWIFI_11R
426 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
427#else
428 NULL,
429#endif /* WLAN_FEATURE_VOWIFI_11R */
430 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
431 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700432#ifdef FEATURE_OEM_DATA_SUPPORT
433 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
434#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700435 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700436#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700437 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
438
439#ifdef WLAN_FEATURE_P2P
440 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
441#else
442 NULL,
443#endif
444
445#ifdef ANI_MANF_DIAG
446 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
447#else
448 NULL,
449#endif /* ANI_MANF_DIAG */
450
Jeff Johnsone7245742012-09-05 17:12:55 -0700451 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
452
Jeff Johnson295189b2012-06-20 16:38:30 -0700453#ifdef FEATURE_WLAN_SCAN_PNO
454 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
455 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
456 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
457#else
458 NULL,
459 NULL,
460 NULL,
461#endif // FEATURE_WLAN_SCAN_PNO
462
463 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
464
465 /*---------------------------------------------------------------------
466 Indications
467 ---------------------------------------------------------------------*/
468#ifdef WLAN_FEATURE_PACKET_FILTERING
469 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700470 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700471 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700472 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700473 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700474 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700475 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700476 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700477#else
478 NULL,
479 NULL,
480 NULL,
481 NULL,
482#endif // WLAN_FEATURE_PACKET_FILTERING
483
484 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
485 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
486
487 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
488#ifdef FEATURE_WLAN_CCX
489 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
490#else
491 NULL,
492#endif
493
494#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700495 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
496 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700497#else
498 NULL,
499 NULL,
500#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700501 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
502 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700503#ifdef WLAN_FEATURE_11AC
504 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
505#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700506
507 /*---------------------------------------------------------------------
508 Indications
509 ---------------------------------------------------------------------*/
510 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
511 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
512 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
513 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
514 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
515 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
516
517 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
518
519 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
520
521#ifdef WLAN_FEATURE_P2P
522 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
523#else
524 NULL,
525#endif
526
527#ifdef FEATURE_WLAN_SCAN_PNO
528 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
529#else
530 NULL,
531#endif // FEATURE_WLAN_SCAN_PNO
532
533#ifdef WLAN_WAKEUP_EVENTS
534 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
535#else // WLAN_WAKEUP_EVENTS
536 NULL,
537#endif // WLAN_WAKEUP_EVENTS
538
539 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800540
541#ifdef WLAN_FEATURE_P2P
542 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
543#else
544 NULL,
545#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700546};
547
548
Jeff Johnsone7245742012-09-05 17:12:55 -0700549/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700550 WLAN DAL Global Control Block
551 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700552WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700553static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
554
Jeff Johnsone7245742012-09-05 17:12:55 -0700555const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700556
557/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700558WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700559void* WDI_GET_PAL_CTX( void )
560{
Jeff Johnsone7245742012-09-05 17:12:55 -0700561 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700562}/*WDI_GET_PAL_CTX*/
563
Jeff Johnsone7245742012-09-05 17:12:55 -0700564/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700565 Helper inline converters
566 ============================================================================*/
567/*Convert WDI driver type into HAL driver type*/
568WPT_STATIC WPT_INLINE WDI_Status
569WDI_HAL_2_WDI_STATUS
570(
571 eHalStatus halStatus
572);
573
574/*Convert WDI request type into HAL request type*/
575WPT_STATIC WPT_INLINE tHalHostMsgType
576WDI_2_HAL_REQ_TYPE
577(
578 WDI_RequestEnumType wdiReqType
579);
580
581/*Convert WDI response type into HAL response type*/
582WPT_STATIC WPT_INLINE WDI_ResponseEnumType
583HAL_2_WDI_RSP_TYPE
584(
585 tHalHostMsgType halMsg
586);
587
588/*Convert WDI driver type into HAL driver type*/
589WPT_STATIC WPT_INLINE tDriverType
590WDI_2_HAL_DRV_TYPE
591(
592 WDI_DriverType wdiDriverType
593);
594
595/*Convert WDI stop reason into HAL stop reason*/
596WPT_STATIC WPT_INLINE tHalStopType
597WDI_2_HAL_STOP_REASON
598(
599 WDI_StopType wdiStopType
600);
601
602/*Convert WDI scan mode type into HAL scan mode type*/
603WPT_STATIC WPT_INLINE eHalSysMode
604WDI_2_HAL_SCAN_MODE
605(
606 WDI_ScanMode wdiScanMode
607);
608
609/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700610WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700611WDI_2_HAL_SEC_CH_OFFSET
612(
613 WDI_HTSecondaryChannelOffset wdiSecChOffset
614);
615
616/*Convert WDI BSS type into HAL BSS type*/
617WPT_STATIC WPT_INLINE tSirBssType
618WDI_2_HAL_BSS_TYPE
619(
620 WDI_BssType wdiBSSType
621);
622
623/*Convert WDI NW type into HAL NW type*/
624WPT_STATIC WPT_INLINE tSirNwType
625WDI_2_HAL_NW_TYPE
626(
627 WDI_NwType wdiNWType
628);
629
630/*Convert WDI chanel bonding type into HAL cb type*/
631WPT_STATIC WPT_INLINE ePhyChanBondState
632WDI_2_HAL_CB_STATE
633(
634 WDI_PhyChanBondState wdiCbState
635);
636
637/*Convert WDI chanel bonding type into HAL cb type*/
638WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
639WDI_2_HAL_HT_OPER_MODE
640(
641 WDI_HTOperatingMode wdiHTOperMode
642);
643
644/*Convert WDI mimo PS type into HAL mimo PS type*/
645WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
646WDI_2_HAL_MIMO_PS
647(
648 WDI_HTMIMOPowerSaveState wdiHTOperMode
649);
650
651/*Convert WDI ENC type into HAL ENC type*/
652WPT_STATIC WPT_INLINE tAniEdType
653WDI_2_HAL_ENC_TYPE
654(
655 WDI_EncryptType wdiEncType
656);
657
658/*Convert WDI WEP type into HAL WEP type*/
659WPT_STATIC WPT_INLINE tAniWepType
660WDI_2_HAL_WEP_TYPE
661(
662 WDI_WepType wdiWEPType
663);
664
665/*Convert WDI Link State into HAL Link State*/
666WPT_STATIC WPT_INLINE tSirLinkState
667WDI_2_HAL_LINK_STATE
668(
669 WDI_LinkStateType wdiLinkState
670);
671
Jeff Johnsone7245742012-09-05 17:12:55 -0700672/*Translate a STA Context from WDI into HAL*/
673WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700674void
675WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700676(
Jeff Johnson295189b2012-06-20 16:38:30 -0700677 tConfigStaParams* phalConfigSta,
678 WDI_ConfigStaReqInfoType* pwdiConfigSta
679);
Jeff Johnsone7245742012-09-05 17:12:55 -0700680
681/*Translate a Rate set info from WDI into HAL*/
682WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700683WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700684(
Jeff Johnson295189b2012-06-20 16:38:30 -0700685 tSirMacRateSet* pHalRateSet,
686 WDI_RateSet* pwdiRateSet
687);
688
689/*Translate an EDCA Parameter Record from WDI into HAL*/
690WPT_STATIC WPT_INLINE void
691WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700692(
Jeff Johnson295189b2012-06-20 16:38:30 -0700693 tSirMacEdcaParamRecord* phalEdcaParam,
694 WDI_EdcaParamRecord* pWDIEdcaParam
695);
696
697/*Copy a management frame header from WDI fmt into HAL fmt*/
698WPT_STATIC WPT_INLINE void
699WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
700(
701 tSirMacMgmtHdr* pmacMgmtHdr,
702 WDI_MacMgmtHdr* pwdiMacMgmtHdr
703);
704
705/*Copy config bss parameters from WDI fmt into HAL fmt*/
706WPT_STATIC WPT_INLINE void
707WDI_CopyWDIConfigBSSToHALConfigBSS
708(
709 tConfigBssParams* phalConfigBSS,
710 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
711);
712
Jeff Johnsone7245742012-09-05 17:12:55 -0700713/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700714 pointed to by user data */
715WPT_STATIC WPT_INLINE void
716WDI_ExtractRequestCBFromEvent
717(
718 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700719 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700720 void** ppUserData
721);
722
723wpt_uint8
724WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700725(
Jeff Johnson295189b2012-06-20 16:38:30 -0700726 WDI_ControlBlockType* pWDICtx,
727 WDI_BSSSessionType** ppSession
728);
729
730void
731WDI_AddBcastSTAtoSTATable
732(
733 WDI_ControlBlockType* pWDICtx,
734 WDI_AddStaParams * staParams,
735 wpt_uint16 usBcastStaIdx
736);
737
738WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700739(
Jeff Johnson295189b2012-06-20 16:38:30 -0700740 WDI_ControlBlockType* pWDICtx,
741 WDI_EventInfoType* pEventData
742);
743
744void
745WDI_SetPowerStateCb
746(
747 wpt_status status,
748 unsigned int dxePhyAddr,
749 void *pContext
750);
751
752#define CASE_RETURN_STRING( str ) \
753 case ( ( str ) ): return( #str ); break \
754
755/**
756 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700757
758 @param wdiReqMsgId: WDI Message request Id
759
760 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700761 @return Result of the function call
762*/
763static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
764{
765 switch (wdiReqMsgId)
766 {
767 CASE_RETURN_STRING( WDI_START_REQ );
768 CASE_RETURN_STRING( WDI_STOP_REQ );
769 CASE_RETURN_STRING( WDI_CLOSE_REQ );
770 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
771 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
772 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
773 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
774 CASE_RETURN_STRING( WDI_JOIN_REQ );
775 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
776 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
777 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
778 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
779 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
780 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
781 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
782 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
783 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
784 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
785 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
786 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
787 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
788 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
789 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
790 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
791 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
792 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
793 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
794 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
795 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
796 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
797 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
798 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
799 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
800 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
801 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
802 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
803 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
804 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
805 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
806 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
807 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
808 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
809 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
810 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
811 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
812 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
813 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
814 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
815 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
816 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
817 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
818 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
819 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
820 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
821 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
822 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
823 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
824 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
825 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
826 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700827 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700828 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
829 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
830 #ifdef FEATURE_WLAN_SCAN_PNO
831 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
832 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
833 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
834 #endif
835 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
836 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
837 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
838 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
839 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
840 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
841 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
842 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
843 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
844 default:
845 return "Unknown WDI MessageId";
846 }
847}
848
849
850
851/**
852 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700853
854 @param wdiRespMsgId: WDI Message response Id
855
856 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 @return Result of the function call
858*/
859static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
860{
861 switch (wdiRespMsgId)
862 {
863 CASE_RETURN_STRING( WDI_START_RESP );
864 CASE_RETURN_STRING( WDI_STOP_RESP );
865 CASE_RETURN_STRING( WDI_CLOSE_RESP );
866 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
867 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
868 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
869 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
870 CASE_RETURN_STRING( WDI_JOIN_RESP );
871 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
872 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
873 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
874 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
875 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
876 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
877 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
878 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
879 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
880 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
881 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
882 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
883 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
884 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
885 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
886 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
887 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
888 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
889 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
890 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
891 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
892 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
893 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
894 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
895 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
896 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
897 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
898 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
899 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
900 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
901 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
902 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
903 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
904 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
905 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
906 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
907 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
908 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
909 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
910 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
911 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
912 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
913 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
914 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
915 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
916 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
917 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
918 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
919 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
920 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
921 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
922 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700923 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700924 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
925 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
926 #ifdef FEATURE_WLAN_SCAN_PNO
927 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
928 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
929 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
930 #endif
931 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
932 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
933 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
934 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
935 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
936 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
937 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
938 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
939 default:
940 return "Unknown WDI MessageId";
941 }
942}
943
944/**
945 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700946
947 @param halStatusId: HAL status Id
948
949 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700950 @return Result of the function call
951*/
952static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
953{
954 switch (halStatusId)
955 {
956 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
957 CASE_RETURN_STRING( PAL_STATUS_INVAL );
958 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
959 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
960 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
961 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
962 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
963 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
964 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
965 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
966 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
967 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
968 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
969 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
970 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
971 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
972 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
973 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
974 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
975 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
976 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
977 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
978 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
979 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
980 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
981 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
982 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
983 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
984 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
985 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
986 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
987 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
988 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
989 default:
990 return "Unknown HAL status";
991 }
992}
993
Jeff Johnsone7245742012-09-05 17:12:55 -0700994/*========================================================================
995
Jeff Johnson295189b2012-06-20 16:38:30 -0700996 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -0700997
Jeff Johnson295189b2012-06-20 16:38:30 -0700998==========================================================================*/
999
1000/**
1001 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001002
Jeff Johnson295189b2012-06-20 16:38:30 -07001003 DAL will allocate all the resources it needs. It will open PAL, it will also
1004 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001005 DXE/SMD or any other drivers that they need.
1006
Jeff Johnson295189b2012-06-20 16:38:30 -07001007 @param pOSContext: pointer to the OS context provided by the UMAC
1008 will be passed on to PAL on Open
1009 ppWDIGlobalCtx: output pointer of Global Context
1010 pWdiDevCapability: output pointer of device capability
1011
1012 @return Result of the function call
1013*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001014WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001015WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001016(
Jeff Johnson295189b2012-06-20 16:38:30 -07001017 void* pOSContext,
1018 void** ppWDIGlobalCtx,
1019 WDI_DeviceCapabilityType* pWdiDevCapability,
1020 unsigned int driverType
1021)
1022{
1023 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001024 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001026 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1028
1029 /*---------------------------------------------------------------------
1030 Sanity check
1031 ---------------------------------------------------------------------*/
1032 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1033 {
1034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1035 "Invalid input parameters in WDI_Init");
1036
Jeff Johnsone7245742012-09-05 17:12:55 -07001037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001038 }
1039
1040 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001041 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001042 ---------------------------------------------------------------------*/
1043 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1044 {
1045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1046 "WDI module already initialized - return");
1047
Jeff Johnsone7245742012-09-05 17:12:55 -07001048 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001049 }
1050
1051 /*Module is now initialized - this flag is to ensure the fact that multiple
1052 init will not happen on WDI
1053 !! - potential race does exist because read and set are not atomic,
1054 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001055 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001056
1057 /*Setup the control block */
1058 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001059 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001060
1061 /*Setup the STA Table*/
1062 wdiStatus = WDI_STATableInit(&gWDICb);
1063 if ( WDI_STATUS_SUCCESS != wdiStatus )
1064 {
1065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1066 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001067 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001068 goto fail_STATableInit;
1069 }
1070
1071 /*------------------------------------------------------------------------
1072 Open the PAL
1073 ------------------------------------------------------------------------*/
1074 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1075 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1076 {
1077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1078 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001079 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001080 goto fail_wpalOpen;
1081 }
1082
1083 /*Initialize main synchro mutex - it will be used to ensure integrity of
1084 the main WDI Control Block*/
1085 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1086 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1087 {
1088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1089 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001090 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001091 goto fail_mutex;
1092 }
1093
1094 /*Initialize the response timer - it will be used to time all messages
1095 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001096 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1097 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001098 &gWDICb);
1099 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1100 {
1101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1102 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001103 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001104 goto fail_timer;
1105 }
1106
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001107 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1108 WDI_SsrTimerCB,
1109 &gWDICb);
1110 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1111 {
1112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1113 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001114 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001115 goto fail_timer2;
1116 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001117 /* Initialize the WDI Pending Request Queue*/
1118 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1119 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1120 {
1121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1122 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001123 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001124 goto fail_pend_queue;
1125 }
1126
1127 /*Init WDI Pending Assoc Id Queue */
1128 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1129 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1130 {
1131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1132 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001133 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001134 goto fail_assoc_queue;
1135 }
1136
1137 /*Initialize the BSS sessions pending Queue */
1138 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1139 {
1140 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1141 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1142 {
1143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1144 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001145 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 goto fail_bss_queue;
1147 }
1148 }
1149
1150 /*Indicate the control block is sufficiently initialized for callbacks*/
1151 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1152
1153 /*------------------------------------------------------------------------
1154 Initialize the Data Path Utility Module
1155 ------------------------------------------------------------------------*/
1156 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1157 if ( WDI_STATUS_SUCCESS != wdiStatus )
1158 {
1159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1160 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001161 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001162 goto fail_dp_util_init;
1163 }
1164
1165 /* Init Set power state event */
1166 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001167 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001168 {
1169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1170 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001171 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001172 goto fail_power_event;
1173 }
1174
1175 /* Init WCTS action event */
1176 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001177 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001178 {
1179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1180 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001181 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001182 goto fail_wcts_event;
1183 }
1184
1185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001186 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001187 ------------------------------------------------------------------------*/
1188 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1189 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001190 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001191 wctsCBs.wctsRxMsgCBData = &gWDICb;
1192
Jeff Johnsone7245742012-09-05 17:12:55 -07001193 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001195 WDI_CT_CHANNEL_SIZE,
1196 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001197
1198 if ( NULL == gWDICb.wctsHandle )
1199 {
1200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001201 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001202 goto fail_wcts_open;
1203 }
1204
1205 gWDICb.driverMode = (tDriverType)driverType;
1206 /* FTM mode not need to open Transport Driver */
1207 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001208 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001209 /*------------------------------------------------------------------------
1210 Open the Data Transport
1211 ------------------------------------------------------------------------*/
1212 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1213 {
1214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001215 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001216 goto fail_wdts_open;
1217 }
1218 }
1219
1220 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001221 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001222
1223 /*Send the context as a ptr to the global WDI Control Block*/
1224 *ppWDIGlobalCtx = &gWDICb;
1225
1226 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001227 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001228 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1229 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1230 return WDI_STATUS_SUCCESS;
1231
1232 /* ERROR handlers
1233 Undo everything that completed successfully */
1234
1235 fail_wdts_open:
1236 {
1237 wpt_status eventStatus;
1238
1239 /* Closing WCTS in this scenario is tricky since it has to close
1240 the SMD channel and then we get notified asynchronously when
1241 the channel has been closed. So we take some of the logic from
1242 the "normal" close procedure in WDI_Close()
1243 */
1244
1245 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001246 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001247 {
1248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001249 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001250 }
1251
1252 WCTS_CloseTransport(gWDICb.wctsHandle);
1253
1254 /* Wait for WCTS to close the control transport. If we were able
1255 to reset the event flag, then we'll wait for the event,
1256 otherwise we'll wait for a maximum amount of time required for
1257 the channel to be closed */
1258 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1259 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001260 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001261 WDI_WCTS_ACTION_TIMEOUT);
1262 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1263 {
1264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001265 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001266 }
1267 }
1268 else
1269 {
1270 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1271 }
1272 }
1273 fail_wcts_open:
1274 wpalEventDelete(&gWDICb.wctsActionEvent);
1275 fail_wcts_event:
1276 wpalEventDelete(&gWDICb.setPowerStateEvent);
1277 fail_power_event:
1278 WDI_DP_UtilsExit(&gWDICb);
1279 fail_dp_util_init:
1280 gWDICb.magic = 0;
1281 fail_bss_queue:
1282 /* entries 0 thru i-1 were successfully initialized */
1283 while (0 < i)
1284 {
1285 i--;
1286 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1287 }
1288 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1289 fail_assoc_queue:
1290 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1291 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001292 wpalTimerDelete(&gWDICb.ssrTimer);
1293 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001294 wpalTimerDelete(&gWDICb.wptResponseTimer);
1295 fail_timer:
1296 wpalMutexDelete(&gWDICb.wptMutex);
1297 fail_mutex:
1298 wpalClose(gWDICb.pPALContext);
1299 fail_wpalOpen:
1300 WDI_STATableClose(&gWDICb);
1301 fail_STATableInit:
1302 gWDIInitialized = eWLAN_PAL_FALSE;
1303
1304 return WDI_STATUS_E_FAILURE;
1305
1306}/*WDI_Init*/;
1307
1308/**
1309 @brief WDI_Start will be called when the upper MAC is ready to
1310 commence operation with the WLAN Device. Upon the call
1311 of this API the WLAN DAL will pack and send a HAL Start
1312 message to the lower RIVA sub-system if the SMD channel
1313 has been fully opened and the RIVA subsystem is up.
1314
1315 If the RIVA sub-system is not yet up and running DAL
1316 will queue the request for Open and will wait for the
1317 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001318 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001319
1320 WDI_Init must have been called.
1321
Jeff Johnsone7245742012-09-05 17:12:55 -07001322 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001323 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001324
Jeff Johnson295189b2012-06-20 16:38:30 -07001325 wdiStartRspCb: callback for passing back the response of
1326 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001327
Jeff Johnson295189b2012-06-20 16:38:30 -07001328 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001329 callback
1330
Jeff Johnson295189b2012-06-20 16:38:30 -07001331 @see WDI_Start
1332 @return Result of the function call
1333*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001334WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001335WDI_Start
1336(
1337 WDI_StartReqParamsType* pwdiStartParams,
1338 WDI_StartRspCb wdiStartRspCb,
1339 void* pUserData
1340)
1341{
1342 WDI_EventInfoType wdiEventData;
1343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1344
1345 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001346 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001347 ------------------------------------------------------------------------*/
1348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1349 {
1350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1351 "WDI API call before module is initialized - Fail request");
1352
Jeff Johnsone7245742012-09-05 17:12:55 -07001353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001354 }
1355
1356 /*------------------------------------------------------------------------
1357 Fill in Event data and post to the Main FSM
1358 ------------------------------------------------------------------------*/
1359 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001360 wdiEventData.pEventData = pwdiStartParams;
1361 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1362 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001363 wdiEventData.pUserData = pUserData;
1364
1365 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1366
1367}/*WDI_Start*/
1368
1369/**
1370 @brief WDI_Stop will be called when the upper MAC is ready to
1371 stop any operation with the WLAN Device. Upon the call
1372 of this API the WLAN DAL will pack and send a HAL Stop
1373 message to the lower RIVA sub-system if the DAL Core is
1374 in started state.
1375
1376 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001377
1378 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001379
1380 WDI_Start must have been called.
1381
Jeff Johnsone7245742012-09-05 17:12:55 -07001382 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001383 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001384
Jeff Johnson295189b2012-06-20 16:38:30 -07001385 wdiStopRspCb: callback for passing back the response of
1386 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001387
Jeff Johnson295189b2012-06-20 16:38:30 -07001388 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001389 callback
1390
Jeff Johnson295189b2012-06-20 16:38:30 -07001391 @see WDI_Start
1392 @return Result of the function call
1393*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001394WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001395WDI_Stop
1396(
1397 WDI_StopReqParamsType* pwdiStopParams,
1398 WDI_StopRspCb wdiStopRspCb,
1399 void* pUserData
1400)
1401{
1402 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001403 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1405
1406 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001407 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001408 ------------------------------------------------------------------------*/
1409 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1410 {
1411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1412 "WDI API call before module is initialized - Fail request");
1413
Jeff Johnsone7245742012-09-05 17:12:55 -07001414 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001415 }
1416
Jeff Johnson43971f52012-07-17 12:26:56 -07001417 /*Access to the global state must be locked before cleaning */
1418 wpalMutexAcquire(&pWDICtx->wptMutex);
1419
1420 /*Clear all pending request*/
1421 WDI_ClearPendingRequests(pWDICtx);
1422
1423 /*We have completed cleaning unlock now*/
1424 wpalMutexRelease(&pWDICtx->wptMutex);
1425
Jeff Johnson295189b2012-06-20 16:38:30 -07001426 /* Free the global variables */
1427 wpalMemoryFree(gpHostWlanFeatCaps);
1428 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001429 gpHostWlanFeatCaps = NULL;
1430 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001431
1432 /*------------------------------------------------------------------------
1433 Fill in Event data and post to the Main FSM
1434 ------------------------------------------------------------------------*/
1435 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001436 wdiEventData.pEventData = pwdiStopParams;
1437 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1438 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001439 wdiEventData.pUserData = pUserData;
1440
1441 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1442
1443}/*WDI_Stop*/
1444
1445
1446
1447/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001448 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 needs to interact with DAL. DAL will free its control
1450 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001451
1452 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001453
1454 WDI_Stop must have been called.
1455
1456 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001457
Jeff Johnson295189b2012-06-20 16:38:30 -07001458 @see WDI_Stop
1459 @return Result of the function call
1460*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001461WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001462WDI_Close
1463(
1464 void
1465)
1466{
1467 wpt_uint8 i;
1468 WDI_EventInfoType wdiEventData;
1469 wpt_status wptStatus;
1470 wpt_status eventStatus;
1471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1472
1473 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001474 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001475 ------------------------------------------------------------------------*/
1476 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1477 {
1478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1479 "WDI API call before module is initialized - Fail request");
1480
Jeff Johnsone7245742012-09-05 17:12:55 -07001481 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001482 }
1483
1484 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1485 (the control transport will be closed by the FSM and we'll want
1486 to wait until that completes)*/
1487 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001488 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001489 {
1490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001491 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001492 /* fall through and try to finish closing via the FSM */
1493 }
1494
1495 /*------------------------------------------------------------------------
1496 Fill in Event data and post to the Main FSM
1497 ------------------------------------------------------------------------*/
1498 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001499 wdiEventData.pEventData = NULL;
1500 wdiEventData.uEventDataSize = 0;
1501 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 wdiEventData.pUserData = NULL;
1503
1504 gWDIInitialized = eWLAN_PAL_FALSE;
1505
1506 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1507
1508 /*Wait for WCTS to close the control transport
1509 (but only if we were able to reset the event flag*/
1510 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1511 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001512 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001513 WDI_WCTS_ACTION_TIMEOUT);
1514 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1515 {
1516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001517 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001518 }
1519 }
1520
1521 /* Destroy the WCTS action event */
1522 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1523 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1524 {
1525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1526 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001527 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001528 }
1529
1530 /* Destroy the Set Power State event */
1531 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1532 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1533 {
1534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1535 "WDI Close failed to destroy an event");
1536
Jeff Johnsone7245742012-09-05 17:12:55 -07001537 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001538 }
1539
1540 /*------------------------------------------------------------------------
1541 Closes the Data Path Utility Module
1542 ------------------------------------------------------------------------*/
1543 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1544 {
1545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1546 "WDI Init failed to close the DP Util Module");
1547
Jeff Johnsone7245742012-09-05 17:12:55 -07001548 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001549 }
1550
1551 /*destroy the BSS sessions pending Queue */
1552 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1553 {
1554 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1555 }
1556
1557 /* destroy the WDI Pending Assoc Id Request Queue*/
1558 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1559
1560 /* destroy the WDI Pending Request Queue*/
1561 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001562
Jeff Johnson295189b2012-06-20 16:38:30 -07001563 /*destroy the response timer */
1564 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1565
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001566 /*destroy the SSR timer */
1567 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1568
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 /*invalidate the main synchro mutex */
1570 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1571 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1572 {
1573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1574 "Failed to delete mutex %d", wptStatus);
1575 WDI_ASSERT(0);
1576 }
1577
1578 /*Clear control block. note that this will clear the "magic"
1579 which will inhibit all asynchronous callbacks*/
1580 WDI_CleanCB(&gWDICb);
1581
1582 return wptStatus;
1583
1584}/*WDI_Close*/
1585
1586/**
1587 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1588 This will do most of the WDI stop & close
1589 operations without doing any handshake with Riva
1590
1591 This will also make sure that the control transport
1592 will NOT be closed.
1593
1594 This request will not be queued.
1595
1596
1597 WDI_Start must have been called.
1598
1599 @param closeTransport: Close control channel if this is set
1600
1601 @return Result of the function call
1602*/
1603WDI_Status
1604WDI_Shutdown
1605(
1606 wpt_boolean closeTransport
1607)
1608{
1609 WDI_EventInfoType wdiEventData;
1610 wpt_status wptStatus;
1611 int i = 0;
1612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1613
1614 /*------------------------------------------------------------------------
1615 Sanity Check
1616 ------------------------------------------------------------------------*/
1617 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1618 {
1619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1620 "WDI API call before module is initialized - Fail request");
1621
1622 return WDI_STATUS_E_NOT_ALLOWED;
1623 }
1624
1625 /*------------------------------------------------------------------------
1626 Fill in Event data and post to the Main FSM
1627 ------------------------------------------------------------------------*/
1628 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1629 wdiEventData.pEventData = NULL;
1630 wdiEventData.uEventDataSize = 0;
1631
1632 /* Shutdown will not be queued, if the state is busy timer will be
1633 * stopped & this message will be processed.*/
1634 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1635 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1636 {
1637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001638 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001639 }
1640 /* Destroy the Set Power State event */
1641 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1642 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1643 {
1644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1645 "WDI Close failed to destroy an event");
1646
1647 WDI_ASSERT(0);
1648 }
1649 /*------------------------------------------------------------------------
1650 Closes the Data Path Utility Module
1651 ------------------------------------------------------------------------*/
1652 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1653 {
1654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1655 "WDI Init failed to close the DP Util Module");
1656
1657 WDI_ASSERT(0);
1658 }
1659 if ( closeTransport )
1660 {
1661 /* Close control transport, called from module unload */
1662 WCTS_CloseTransport(gWDICb.wctsHandle);
1663 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001664 else
1665 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001666 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001667 the pending messages in the transport queue */
1668 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1669 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 /*destroy the BSS sessions pending Queue */
1671 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1672 {
1673 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1674 }
1675
1676 /* destroy the WDI Pending Assoc Id Request Queue*/
1677 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1678 /* destroy the WDI Pending Request Queue*/
1679 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1680 /*destroy the response timer */
1681 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001682 /*destroy the SSR timer */
1683 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001684
1685 /*invalidate the main synchro mutex */
1686 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1687 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1688 {
1689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001690 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001691 WDI_ASSERT(0);
1692 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001693 /* Free the global variables */
1694 wpalMemoryFree(gpHostWlanFeatCaps);
1695 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001696 gpHostWlanFeatCaps = NULL;
1697 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001698 /*Clear control block. note that this will clear the "magic"
1699 which will inhibit all asynchronous callbacks*/
1700 WDI_CleanCB(&gWDICb);
1701 return wptStatus;
1702
1703}/*WDI_Shutdown*/
1704
1705
Jeff Johnsone7245742012-09-05 17:12:55 -07001706/*========================================================================
1707
Jeff Johnson295189b2012-06-20 16:38:30 -07001708 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001709
Jeff Johnson295189b2012-06-20 16:38:30 -07001710==========================================================================*/
1711
1712/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001713 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001714 the WLAN Device to get ready for a scan procedure. Upon
1715 the call of this API the WLAN DAL will pack and send a
1716 HAL Init Scan request message to the lower RIVA
1717 sub-system if DAL is in state STARTED.
1718
1719 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001720 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001721
1722 WDI_Start must have been called.
1723
1724 @param wdiInitScanParams: the init scan parameters as specified
1725 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001726
Jeff Johnson295189b2012-06-20 16:38:30 -07001727 wdiInitScanRspCb: callback for passing back the response
1728 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001729
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001731 callback
1732
Jeff Johnson295189b2012-06-20 16:38:30 -07001733 @see WDI_Start
1734 @return Result of the function call
1735*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001736WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001737WDI_InitScanReq
1738(
1739 WDI_InitScanReqParamsType* pwdiInitScanParams,
1740 WDI_InitScanRspCb wdiInitScanRspCb,
1741 void* pUserData
1742)
1743{
1744 WDI_EventInfoType wdiEventData;
1745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1746
1747 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001748 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 ------------------------------------------------------------------------*/
1750 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1751 {
1752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1753 "WDI API call before module is initialized - Fail request");
1754
Jeff Johnsone7245742012-09-05 17:12:55 -07001755 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001756 }
1757
1758 /*------------------------------------------------------------------------
1759 Fill in Event data and post to the Main FSM
1760 ------------------------------------------------------------------------*/
1761 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001762 wdiEventData.pEventData = pwdiInitScanParams;
1763 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1764 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001765 wdiEventData.pUserData = pUserData;
1766
1767 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1768
1769}/*WDI_InitScanReq*/
1770
1771/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001772 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 wishes to change the Scan channel on the WLAN Device.
1774 Upon the call of this API the WLAN DAL will pack and
1775 send a HAL Start Scan request message to the lower RIVA
1776 sub-system if DAL is in state STARTED.
1777
1778 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001779 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001780
1781 WDI_InitScanReq must have been called.
1782
Jeff Johnsone7245742012-09-05 17:12:55 -07001783 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001784 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001785
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 wdiStartScanRspCb: callback for passing back the
1787 response of the start scan operation received from the
1788 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001789
Jeff Johnson295189b2012-06-20 16:38:30 -07001790 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001791 callback
1792
Jeff Johnson295189b2012-06-20 16:38:30 -07001793 @see WDI_InitScanReq
1794 @return Result of the function call
1795*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001796WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001797WDI_StartScanReq
1798(
1799 WDI_StartScanReqParamsType* pwdiStartScanParams,
1800 WDI_StartScanRspCb wdiStartScanRspCb,
1801 void* pUserData
1802)
1803{
1804 WDI_EventInfoType wdiEventData;
1805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1806
1807 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001808 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001809 ------------------------------------------------------------------------*/
1810 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1811 {
1812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1813 "WDI API call before module is initialized - Fail request");
1814
Jeff Johnsone7245742012-09-05 17:12:55 -07001815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001816 }
1817
1818 /*------------------------------------------------------------------------
1819 Fill in Event data and post to the Main FSM
1820 ------------------------------------------------------------------------*/
1821 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001822 wdiEventData.pEventData = pwdiStartScanParams;
1823 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1824 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 wdiEventData.pUserData = pUserData;
1826
1827 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1828
1829}/*WDI_StartScanReq*/
1830
1831
1832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001833 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001834 wants to end scanning for a particular channel that it
1835 had set before by calling Scan Start on the WLAN Device.
1836 Upon the call of this API the WLAN DAL will pack and
1837 send a HAL End Scan request message to the lower RIVA
1838 sub-system if DAL is in state STARTED.
1839
1840 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001841 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001842
1843 WDI_StartScanReq must have been called.
1844
Jeff Johnsone7245742012-09-05 17:12:55 -07001845 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001846 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001847
Jeff Johnson295189b2012-06-20 16:38:30 -07001848 wdiEndScanRspCb: callback for passing back the response
1849 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001850
Jeff Johnson295189b2012-06-20 16:38:30 -07001851 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001852 callback
1853
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 @see WDI_StartScanReq
1855 @return Result of the function call
1856*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001857WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001858WDI_EndScanReq
1859(
1860 WDI_EndScanReqParamsType* pwdiEndScanParams,
1861 WDI_EndScanRspCb wdiEndScanRspCb,
1862 void* pUserData
1863)
1864{
1865 WDI_EventInfoType wdiEventData;
1866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1867
1868 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001869 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001870 ------------------------------------------------------------------------*/
1871 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1872 {
1873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1874 "WDI API call before module is initialized - Fail request");
1875
Jeff Johnsone7245742012-09-05 17:12:55 -07001876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001877 }
1878
1879 /*------------------------------------------------------------------------
1880 Fill in Event data and post to the Main FSM
1881 ------------------------------------------------------------------------*/
1882 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001883 wdiEventData.pEventData = pwdiEndScanParams;
1884 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1885 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001886 wdiEventData.pUserData = pUserData;
1887
1888 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1889
1890}/*WDI_EndScanReq*/
1891
1892
1893/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001894 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001895 completed the scan process on the WLAN Device. Upon the
1896 call of this API the WLAN DAL will pack and send a HAL
1897 Finish Scan Request request message to the lower RIVA
1898 sub-system if DAL is in state STARTED.
1899
1900 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001901 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001902
1903 WDI_InitScanReq must have been called.
1904
Jeff Johnsone7245742012-09-05 17:12:55 -07001905 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001906 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001907
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 wdiFinishScanRspCb: callback for passing back the
1909 response of the finish scan operation received from the
1910 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001911
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 callback
1914
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 @see WDI_InitScanReq
1916 @return Result of the function call
1917*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001918WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001919WDI_FinishScanReq
1920(
1921 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1922 WDI_FinishScanRspCb wdiFinishScanRspCb,
1923 void* pUserData
1924)
1925{
1926 WDI_EventInfoType wdiEventData;
1927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1928
1929 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001930 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001931 ------------------------------------------------------------------------*/
1932 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1933 {
1934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1935 "WDI API call before module is initialized - Fail request");
1936
Jeff Johnsone7245742012-09-05 17:12:55 -07001937 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001938 }
1939
1940 /*------------------------------------------------------------------------
1941 Fill in Event data and post to the Main FSM
1942 ------------------------------------------------------------------------*/
1943 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001944 wdiEventData.pEventData = pwdiFinishScanParams;
1945 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1946 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001947 wdiEventData.pUserData = pUserData;
1948
1949 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1950
1951}/*WDI_FinishScanReq*/
1952
Jeff Johnsone7245742012-09-05 17:12:55 -07001953/*========================================================================
1954
Jeff Johnson295189b2012-06-20 16:38:30 -07001955 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001956
Jeff Johnson295189b2012-06-20 16:38:30 -07001957==========================================================================*/
1958
1959/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001960 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 to start an association procedure to a BSS. Upon the
1962 call of this API the WLAN DAL will pack and send a HAL
1963 Join request message to the lower RIVA sub-system if
1964 DAL is in state STARTED.
1965
1966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001968
1969 WDI_Start must have been called.
1970
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001973
Jeff Johnson295189b2012-06-20 16:38:30 -07001974 wdiJoinRspCb: callback for passing back the response of
1975 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001976
Jeff Johnson295189b2012-06-20 16:38:30 -07001977 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 callback
1979
Jeff Johnson295189b2012-06-20 16:38:30 -07001980 @see WDI_Start
1981 @return Result of the function call
1982*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001983WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001984WDI_JoinReq
1985(
1986 WDI_JoinReqParamsType* pwdiJoinParams,
1987 WDI_JoinRspCb wdiJoinRspCb,
1988 void* pUserData
1989)
1990{
1991 WDI_EventInfoType wdiEventData;
1992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1993
1994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001995 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 ------------------------------------------------------------------------*/
1997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1998 {
1999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2000 "WDI API call before module is initialized - Fail request");
2001
Jeff Johnsone7245742012-09-05 17:12:55 -07002002 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 }
2004
2005 /*------------------------------------------------------------------------
2006 Fill in Event data and post to the Main FSM
2007 ------------------------------------------------------------------------*/
2008 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 wdiEventData.pEventData = pwdiJoinParams;
2010 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2011 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002012 wdiEventData.pUserData = pUserData;
2013
2014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2015
2016}/*WDI_JoinReq*/
2017
2018/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002019 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002020 wishes to configure the newly acquired or in process of
2021 being acquired BSS to the HW . Upon the call of this API
2022 the WLAN DAL will pack and send a HAL Config BSS request
2023 message to the lower RIVA sub-system if DAL is in state
2024 STARTED.
2025
2026 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002028
2029 WDI_JoinReq must have been called.
2030
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002032 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002033
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 wdiConfigBSSRspCb: callback for passing back the
2035 response of the config BSS operation received from the
2036 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002037
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002039 callback
2040
Jeff Johnson295189b2012-06-20 16:38:30 -07002041 @see WDI_JoinReq
2042 @return Result of the function call
2043*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002044WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002045WDI_ConfigBSSReq
2046(
2047 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2048 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2049 void* pUserData
2050)
2051{
2052 WDI_EventInfoType wdiEventData;
2053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2054
2055 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 ------------------------------------------------------------------------*/
2058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2059 {
2060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2061 "WDI API call before module is initialized - Fail request");
2062
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002064 }
2065
2066 /*------------------------------------------------------------------------
2067 Fill in Event data and post to the Main FSM
2068 ------------------------------------------------------------------------*/
2069 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 wdiEventData.pEventData = pwdiConfigBSSParams;
2071 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2072 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 wdiEventData.pUserData = pUserData;
2074
2075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2076
2077}/*WDI_ConfigBSSReq*/
2078
2079/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 disassociating from the BSS and wishes to notify HW.
2082 Upon the call of this API the WLAN DAL will pack and
2083 send a HAL Del BSS request message to the lower RIVA
2084 sub-system if DAL is in state STARTED.
2085
2086 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002087 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002088
2089 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2090
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002093
Jeff Johnson295189b2012-06-20 16:38:30 -07002094 wdiDelBSSRspCb: callback for passing back the response
2095 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002096
Jeff Johnson295189b2012-06-20 16:38:30 -07002097 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002098 callback
2099
2100 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002101 @return Result of the function call
2102*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002103WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002104WDI_DelBSSReq
2105(
2106 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2107 WDI_DelBSSRspCb wdiDelBSSRspCb,
2108 void* pUserData
2109)
2110{
2111 WDI_EventInfoType wdiEventData;
2112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2113
2114 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002115 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 ------------------------------------------------------------------------*/
2117 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2118 {
2119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2120 "WDI API call before module is initialized - Fail request");
2121
Jeff Johnsone7245742012-09-05 17:12:55 -07002122 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 }
2124
2125 /*------------------------------------------------------------------------
2126 Fill in Event data and post to the Main FSM
2127 ------------------------------------------------------------------------*/
2128 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002129 wdiEventData.pEventData = pwdiDelBSSParams;
2130 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2131 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002132 wdiEventData.pUserData = pUserData;
2133
2134 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2135
2136}/*WDI_DelBSSReq*/
2137
2138/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002140 associated to a BSS and wishes to configure HW for
2141 associated state. Upon the call of this API the WLAN DAL
2142 will pack and send a HAL Post Assoc request message to
2143 the lower RIVA sub-system if DAL is in state STARTED.
2144
2145 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002147
2148 WDI_JoinReq must have been called.
2149
2150 @param wdiPostAssocReqParams: the assoc parameters as specified
2151 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002152
Jeff Johnson295189b2012-06-20 16:38:30 -07002153 wdiPostAssocRspCb: callback for passing back the
2154 response of the post assoc operation received from the
2155 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002156
Jeff Johnson295189b2012-06-20 16:38:30 -07002157 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 callback
2159
Jeff Johnson295189b2012-06-20 16:38:30 -07002160 @see WDI_JoinReq
2161 @return Result of the function call
2162*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002163WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002164WDI_PostAssocReq
2165(
2166 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2167 WDI_PostAssocRspCb wdiPostAssocRspCb,
2168 void* pUserData
2169)
2170{
2171 WDI_EventInfoType wdiEventData;
2172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2173
2174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002175 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002176 ------------------------------------------------------------------------*/
2177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2178 {
2179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2180 "WDI API call before module is initialized - Fail request");
2181
Jeff Johnsone7245742012-09-05 17:12:55 -07002182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002183 }
2184
2185 /*------------------------------------------------------------------------
2186 Fill in Event data and post to the Main FSM
2187 ------------------------------------------------------------------------*/
2188 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002189 wdiEventData.pEventData = pwdiPostAssocReqParams;
2190 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2191 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002192 wdiEventData.pUserData = pUserData;
2193
2194 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2195
2196}/*WDI_PostAssocReq*/
2197
2198/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002199 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002200 association with another STA has ended and the station
2201 must be deleted from HW. Upon the call of this API the
2202 WLAN DAL will pack and send a HAL Del STA request
2203 message to the lower RIVA sub-system if DAL is in state
2204 STARTED.
2205
2206 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002207 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002208
2209 WDI_PostAssocReq must have been called.
2210
Jeff Johnsone7245742012-09-05 17:12:55 -07002211 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002212 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002213
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 wdiDelSTARspCb: callback for passing back the response
2215 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002216
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002218 callback
2219
Jeff Johnson295189b2012-06-20 16:38:30 -07002220 @see WDI_PostAssocReq
2221 @return Result of the function call
2222*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002223WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002224WDI_DelSTAReq
2225(
2226 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2227 WDI_DelSTARspCb wdiDelSTARspCb,
2228 void* pUserData
2229)
2230{
2231 WDI_EventInfoType wdiEventData;
2232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2233
2234 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002235 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 ------------------------------------------------------------------------*/
2237 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2238 {
2239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2240 "WDI API call before module is initialized - Fail request");
2241
Jeff Johnsone7245742012-09-05 17:12:55 -07002242 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002243 }
2244
2245 /*------------------------------------------------------------------------
2246 Fill in Event data and post to the Main FSM
2247 ------------------------------------------------------------------------*/
2248 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002249 wdiEventData.pEventData = pwdiDelSTAParams;
2250 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2251 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002252 wdiEventData.pUserData = pUserData;
2253
2254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2255
2256}/*WDI_DelSTAReq*/
2257
Jeff Johnsone7245742012-09-05 17:12:55 -07002258/*========================================================================
2259
Jeff Johnson295189b2012-06-20 16:38:30 -07002260 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002261
Jeff Johnson295189b2012-06-20 16:38:30 -07002262==========================================================================*/
2263
2264/**
2265 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2266 install a BSS encryption key on the HW. Upon the call of this
2267 API the WLAN DAL will pack and send a Set BSS Key request
2268 message to the lower RIVA sub-system if DAL is in state
2269 STARTED.
2270
2271 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002272 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002273
2274 WDI_PostAssocReq must have been called.
2275
Jeff Johnsone7245742012-09-05 17:12:55 -07002276 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002277 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002278
Jeff Johnson295189b2012-06-20 16:38:30 -07002279 wdiSetBSSKeyRspCb: callback for passing back the
2280 response of the set BSS Key operation received from the
2281 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 callback
2285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 @see WDI_PostAssocReq
2287 @return Result of the function call
2288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002290WDI_SetBSSKeyReq
2291(
2292 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2293 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2294 void* pUserData
2295)
2296{
2297 WDI_EventInfoType wdiEventData;
2298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2299
2300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 ------------------------------------------------------------------------*/
2303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2304 {
2305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2306 "WDI API call before module is initialized - Fail request");
2307
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 }
2310
2311 /*------------------------------------------------------------------------
2312 Fill in Event data and post to the Main FSM
2313 ------------------------------------------------------------------------*/
2314 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2316 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2317 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 wdiEventData.pUserData = pUserData;
2319
2320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2321
2322}/*WDI_SetBSSKeyReq*/
2323
2324/**
2325 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2326 uninstall a BSS key from HW. Upon the call of this API the
2327 WLAN DAL will pack and send a HAL Remove BSS Key request
2328 message to the lower RIVA sub-system if DAL is in state
2329 STARTED.
2330
2331 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002333
2334 WDI_SetBSSKeyReq must have been called.
2335
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002338
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 wdiRemoveBSSKeyRspCb: callback for passing back the
2340 response of the remove BSS key operation received from
2341 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002344 callback
2345
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 @see WDI_SetBSSKeyReq
2347 @return Result of the function call
2348*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002349WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002350WDI_RemoveBSSKeyReq
2351(
2352 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2353 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2354 void* pUserData
2355)
2356{
2357 WDI_EventInfoType wdiEventData;
2358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2359
2360 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002361 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002362 ------------------------------------------------------------------------*/
2363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2364 {
2365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2366 "WDI API call before module is initialized - Fail request");
2367
Jeff Johnsone7245742012-09-05 17:12:55 -07002368 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002369 }
2370
2371 /*------------------------------------------------------------------------
2372 Fill in Event data and post to the Main FSM
2373 ------------------------------------------------------------------------*/
2374 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2376 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2377 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002378 wdiEventData.pUserData = pUserData;
2379
2380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2381
2382}/*WDI_RemoveBSSKeyReq*/
2383
2384
2385/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 ready to install a STA(ast) encryption key in HW. Upon
2388 the call of this API the WLAN DAL will pack and send a
2389 HAL Set STA Key request message to the lower RIVA
2390 sub-system if DAL is in state STARTED.
2391
2392 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002393 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002394
2395 WDI_PostAssocReq must have been called.
2396
Jeff Johnsone7245742012-09-05 17:12:55 -07002397 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002399
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 wdiSetSTAKeyRspCb: callback for passing back the
2401 response of the set STA key operation received from the
2402 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002403
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 callback
2406
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 @see WDI_PostAssocReq
2408 @return Result of the function call
2409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002411WDI_SetSTAKeyReq
2412(
2413 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2414 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2415 void* pUserData
2416)
2417{
2418 WDI_EventInfoType wdiEventData;
2419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2420
2421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002423 ------------------------------------------------------------------------*/
2424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2425 {
2426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2427 "WDI API call before module is initialized - Fail request");
2428
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 }
2431
2432 /*------------------------------------------------------------------------
2433 Fill in Event data and post to the Main FSM
2434 ------------------------------------------------------------------------*/
2435 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2437 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2438 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 wdiEventData.pUserData = pUserData;
2440
2441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2442
2443}/*WDI_SetSTAKeyReq*/
2444
2445
2446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 wants to uninstall a previously set STA key in HW. Upon
2449 the call of this API the WLAN DAL will pack and send a
2450 HAL Remove STA Key request message to the lower RIVA
2451 sub-system if DAL is in state STARTED.
2452
2453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002455
2456 WDI_SetSTAKeyReq must have been called.
2457
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 wdiRemoveSTAKeyRspCb: callback for passing back the
2462 response of the remove STA key operation received from
2463 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 callback
2467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 @see WDI_SetSTAKeyReq
2469 @return Result of the function call
2470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002472WDI_RemoveSTAKeyReq
2473(
2474 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2475 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2476 void* pUserData
2477)
2478{
2479 WDI_EventInfoType wdiEventData;
2480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2481
2482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 ------------------------------------------------------------------------*/
2485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2486 {
2487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2488 "WDI API call before module is initialized - Fail request");
2489
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 }
2492
2493 /*------------------------------------------------------------------------
2494 Fill in Event data and post to the Main FSM
2495 ------------------------------------------------------------------------*/
2496 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2498 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2499 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002500 wdiEventData.pUserData = pUserData;
2501
2502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2503
2504}/*WDI_RemoveSTAKeyReq*/
2505
2506
2507/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002509 wants to install a STA Bcast encryption key on the HW.
2510 Upon the call of this API the WLAN DAL will pack and
2511 send a HAL Start request message to the lower RIVA
2512 sub-system if DAL is in state STARTED.
2513
2514 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002515 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002516
2517 WDI_PostAssocReq must have been called.
2518
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002520 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002521
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 wdiSetSTABcastKeyRspCb: callback for passing back the
2523 response of the set BSS Key operation received from the
2524 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002525
Jeff Johnson295189b2012-06-20 16:38:30 -07002526 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002527 callback
2528
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 @see WDI_PostAssocReq
2530 @return Result of the function call
2531*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002532WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002533WDI_SetSTABcastKeyReq
2534(
2535 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2536 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2537 void* pUserData
2538)
2539
2540{
2541 WDI_EventInfoType wdiEventData;
2542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2543
2544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 ------------------------------------------------------------------------*/
2547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2548 {
2549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2550 "WDI API call before module is initialized - Fail request");
2551
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 }
2554
2555 /*------------------------------------------------------------------------
2556 Fill in Event data and post to the Main FSM
2557 ------------------------------------------------------------------------*/
2558 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2560 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2561 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 wdiEventData.pUserData = pUserData;
2563
2564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2565
2566}/*WDI_SetSTABcastKeyReq*/
2567
2568/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002570 MAC wants to uninstall a STA Bcast key from HW. Upon the
2571 call of this API the WLAN DAL will pack and send a HAL
2572 Remove STA Bcast Key request message to the lower RIVA
2573 sub-system if DAL is in state STARTED.
2574
2575 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002577
2578 WDI_SetSTABcastKeyReq must have been called.
2579
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002581 parameters as specified by the Device
2582 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002583
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2585 response of the remove STA Bcast key operation received
2586 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002587
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 callback
2590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 @see WDI_SetSTABcastKeyReq
2592 @return Result of the function call
2593*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002594WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002595WDI_RemoveSTABcastKeyReq
2596(
2597 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2598 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2599 void* pUserData
2600)
2601{
2602 WDI_EventInfoType wdiEventData;
2603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2604
2605 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 ------------------------------------------------------------------------*/
2608 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2609 {
2610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2611 "WDI API call before module is initialized - Fail request");
2612
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 }
2615
2616 /*------------------------------------------------------------------------
2617 Fill in Event data and post to the Main FSM
2618 ------------------------------------------------------------------------*/
2619 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2621 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2622 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 wdiEventData.pUserData = pUserData;
2624
2625 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2626
2627}/*WDI_RemoveSTABcastKeyReq*/
2628
2629/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002631 MAC wants to set Max Tx Power to HW. Upon the
2632 call of this API the WLAN DAL will pack and send a HAL
2633 Remove STA Bcast Key request message to the lower RIVA
2634 sub-system if DAL is in state STARTED.
2635
2636 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002638
2639 WDI_SetSTABcastKeyReq must have been called.
2640
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 parameters as specified by the Device
2643 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002644
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2646 response of the remove STA Bcast key operation received
2647 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002648
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002650 callback
2651
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 @see WDI_SetMaxTxPowerReq
2653 @return Result of the function call
2654*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002655WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002656WDI_SetMaxTxPowerReq
2657(
2658 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2659 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2660 void* pUserData
2661)
2662{
2663 WDI_EventInfoType wdiEventData;
2664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2665
2666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 ------------------------------------------------------------------------*/
2669 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2670 {
2671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2672 "WDI API call before module is initialized - Fail request");
2673
Jeff Johnsone7245742012-09-05 17:12:55 -07002674 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002675 }
2676
2677 /*------------------------------------------------------------------------
2678 Fill in Event data and post to the Main FSM
2679 ------------------------------------------------------------------------*/
2680 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002681 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2682 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2683 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002684 wdiEventData.pUserData = pUserData;
2685
2686 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2687}
2688
2689#ifdef FEATURE_WLAN_CCX
2690WDI_Status
2691WDI_TSMStatsReq
2692(
2693 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2694 WDI_TsmRspCb wdiReqStatusCb,
2695 void* pUserData
2696)
2697{
2698 WDI_EventInfoType wdiEventData;
2699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 /*------------------------------------------------------------------------
2701 Sanity Check
2702 ------------------------------------------------------------------------*/
2703 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2704 {
2705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2706 "WDI API call before module is initialized - Fail request");
2707
2708 return WDI_STATUS_E_NOT_ALLOWED;
2709 }
2710
2711 /*------------------------------------------------------------------------
2712 Fill in Event data and post to the Main FSM
2713 ------------------------------------------------------------------------*/
2714 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2715 wdiEventData.pEventData = pwdiTsmReqParams;
2716 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2717 wdiEventData.pCBfnc = wdiReqStatusCb;
2718 wdiEventData.pUserData = pUserData;
2719
2720 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2721
2722}
2723#endif
2724
2725/*========================================================================
2726
2727 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002728
Jeff Johnson295189b2012-06-20 16:38:30 -07002729==========================================================================*/
2730
2731/**
2732 @brief WDI_AddTSReq will be called when the upper MAC to inform
2733 the device of a successful add TSpec negotiation. HW
2734 needs to receive the TSpec Info from the UMAC in order
2735 to configure properly the QoS data traffic. Upon the
2736 call of this API the WLAN DAL will pack and send a HAL
2737 Add TS request message to the lower RIVA sub-system if
2738 DAL is in state STARTED.
2739
2740 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002741 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002742
2743 WDI_PostAssocReq must have been called.
2744
2745 @param wdiAddTsReqParams: the add TS parameters as specified by
2746 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002747
Jeff Johnson295189b2012-06-20 16:38:30 -07002748 wdiAddTsRspCb: callback for passing back the response of
2749 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002750
Jeff Johnson295189b2012-06-20 16:38:30 -07002751 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 callback
2753
Jeff Johnson295189b2012-06-20 16:38:30 -07002754 @see WDI_PostAssocReq
2755 @return Result of the function call
2756*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002757WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002758WDI_AddTSReq
2759(
2760 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2761 WDI_AddTsRspCb wdiAddTsRspCb,
2762 void* pUserData
2763)
2764{
2765 WDI_EventInfoType wdiEventData;
2766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2767
2768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002769 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 ------------------------------------------------------------------------*/
2771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2772 {
2773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2774 "WDI API call before module is initialized - Fail request");
2775
Jeff Johnsone7245742012-09-05 17:12:55 -07002776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 }
2778
2779 /*------------------------------------------------------------------------
2780 Fill in Event data and post to the Main FSM
2781 ------------------------------------------------------------------------*/
2782 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002783 wdiEventData.pEventData = pwdiAddTsReqParams;
2784 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2785 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002786 wdiEventData.pUserData = pUserData;
2787
2788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2789
2790}/*WDI_AddTSReq*/
2791
2792
2793
2794/**
2795 @brief WDI_DelTSReq will be called when the upper MAC has ended
2796 admission on a specific AC. This is to inform HW that
2797 QoS traffic parameters must be rest. Upon the call of
2798 this API the WLAN DAL will pack and send a HAL Del TS
2799 request message to the lower RIVA sub-system if DAL is
2800 in state STARTED.
2801
2802 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002803 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002804
2805 WDI_AddTSReq must have been called.
2806
2807 @param wdiDelTsReqParams: the del TS parameters as specified by
2808 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002809
Jeff Johnson295189b2012-06-20 16:38:30 -07002810 wdiDelTsRspCb: callback for passing back the response of
2811 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002812
Jeff Johnson295189b2012-06-20 16:38:30 -07002813 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 callback
2815
Jeff Johnson295189b2012-06-20 16:38:30 -07002816 @see WDI_AddTSReq
2817 @return Result of the function call
2818*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002819WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002820WDI_DelTSReq
2821(
2822 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2823 WDI_DelTsRspCb wdiDelTsRspCb,
2824 void* pUserData
2825)
2826{
2827 WDI_EventInfoType wdiEventData;
2828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2829
2830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002831 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 ------------------------------------------------------------------------*/
2833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2834 {
2835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2836 "WDI API call before module is initialized - Fail request");
2837
Jeff Johnsone7245742012-09-05 17:12:55 -07002838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 }
2840
2841 /*------------------------------------------------------------------------
2842 Fill in Event data and post to the Main FSM
2843 ------------------------------------------------------------------------*/
2844 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 wdiEventData.pEventData = pwdiDelTsReqParams;
2846 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2847 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 wdiEventData.pUserData = pUserData;
2849
2850 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2851
2852}/*WDI_DelTSReq*/
2853
2854
2855
2856/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002857 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002858 wishes to update the EDCA parameters used by HW for QoS
2859 data traffic. Upon the call of this API the WLAN DAL
2860 will pack and send a HAL Update EDCA Params request
2861 message to the lower RIVA sub-system if DAL is in state
2862 STARTED.
2863
2864 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002865 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002866
2867 WDI_PostAssocReq must have been called.
2868
Jeff Johnsone7245742012-09-05 17:12:55 -07002869 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002871
Jeff Johnson295189b2012-06-20 16:38:30 -07002872 wdiUpdateEDCAParamsRspCb: callback for passing back the
2873 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002874
Jeff Johnson295189b2012-06-20 16:38:30 -07002875 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 callback
2877
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 @see WDI_PostAssocReq
2879 @return Result of the function call
2880*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002881WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002882WDI_UpdateEDCAParams
2883(
2884 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2885 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2886 void* pUserData
2887)
2888{
2889 WDI_EventInfoType wdiEventData;
2890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2891
2892 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 ------------------------------------------------------------------------*/
2895 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2896 {
2897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2898 "WDI API call before module is initialized - Fail request");
2899
Jeff Johnsone7245742012-09-05 17:12:55 -07002900 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 }
2902
2903 /*------------------------------------------------------------------------
2904 Fill in Event data and post to the Main FSM
2905 ------------------------------------------------------------------------*/
2906 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002907 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2908 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2909 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002910 wdiEventData.pUserData = pUserData;
2911
2912 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2913
2914}/*WDI_UpdateEDCAParams*/
2915
2916
2917/**
2918 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2919 successfully a BA session and needs to notify the HW for
2920 the appropriate settings to take place. Upon the call of
2921 this API the WLAN DAL will pack and send a HAL Add BA
2922 request message to the lower RIVA sub-system if DAL is
2923 in state STARTED.
2924
2925 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002926 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002927
2928 WDI_PostAssocReq must have been called.
2929
2930 @param wdiAddBAReqParams: the add BA parameters as specified by
2931 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002932
Jeff Johnson295189b2012-06-20 16:38:30 -07002933 wdiAddBARspCb: callback for passing back the response of
2934 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002935
Jeff Johnson295189b2012-06-20 16:38:30 -07002936 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002937 callback
2938
Jeff Johnson295189b2012-06-20 16:38:30 -07002939 @see WDI_PostAssocReq
2940 @return Result of the function call
2941*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002942WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002943WDI_AddBASessionReq
2944(
2945 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2946 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
2947 void* pUserData
2948)
2949{
2950 WDI_EventInfoType wdiEventData;
2951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2952
2953 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 ------------------------------------------------------------------------*/
2956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2957 {
2958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2959 "WDI API call before module is initialized - Fail request");
2960
Jeff Johnsone7245742012-09-05 17:12:55 -07002961 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002962 }
2963
2964 /*------------------------------------------------------------------------
2965 Fill in Event data and post to the Main FSM
2966 ------------------------------------------------------------------------*/
2967 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002968 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2969 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2970 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002971 wdiEventData.pUserData = pUserData;
2972
2973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2974
2975}/*WDI_AddBASessionReq*/
2976
2977/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002978 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07002979 inform HW that it has deleted a previously created BA
2980 session. Upon the call of this API the WLAN DAL will
2981 pack and send a HAL Del BA request message to the lower
2982 RIVA sub-system if DAL is in state STARTED.
2983
2984 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002985 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002986
2987 WDI_AddBAReq must have been called.
2988
2989 @param wdiDelBAReqParams: the del BA parameters as specified by
2990 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002991
Jeff Johnson295189b2012-06-20 16:38:30 -07002992 wdiDelBARspCb: callback for passing back the response of
2993 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002994
Jeff Johnson295189b2012-06-20 16:38:30 -07002995 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002996 callback
2997
Jeff Johnson295189b2012-06-20 16:38:30 -07002998 @see WDI_AddBAReq
2999 @return Result of the function call
3000*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003002WDI_DelBAReq
3003(
3004 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3005 WDI_DelBARspCb wdiDelBARspCb,
3006 void* pUserData
3007)
3008{
3009 WDI_EventInfoType wdiEventData;
3010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3011
3012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 ------------------------------------------------------------------------*/
3015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3016 {
3017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3018 "WDI API call before module is initialized - Fail request");
3019
Jeff Johnsone7245742012-09-05 17:12:55 -07003020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 }
3022
3023 /*------------------------------------------------------------------------
3024 Fill in Event data and post to the Main FSM
3025 ------------------------------------------------------------------------*/
3026 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003027 wdiEventData.pEventData = pwdiDelBAReqParams;
3028 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3029 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003030 wdiEventData.pUserData = pUserData;
3031
3032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3033
3034}/*WDI_DelBAReq*/
3035
Jeff Johnsone7245742012-09-05 17:12:55 -07003036/*========================================================================
3037
Jeff Johnson295189b2012-06-20 16:38:30 -07003038 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003039
Jeff Johnson295189b2012-06-20 16:38:30 -07003040==========================================================================*/
3041
3042/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 wants to set the power save related configurations of
3045 the WLAN Device. Upon the call of this API the WLAN DAL
3046 will pack and send a HAL Update CFG request message to
3047 the lower RIVA sub-system if DAL is in state STARTED.
3048
3049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003051
3052 WDI_Start must have been called.
3053
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003055 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003056
Jeff Johnson295189b2012-06-20 16:38:30 -07003057 wdiSetPwrSaveCfgCb: callback for passing back the
3058 response of the set power save cfg operation received
3059 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003060
Jeff Johnson295189b2012-06-20 16:38:30 -07003061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003062 callback
3063
Jeff Johnson295189b2012-06-20 16:38:30 -07003064 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003065 @return Result of the function call
3066*/
3067WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003068WDI_SetPwrSaveCfgReq
3069(
3070 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3071 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3072 void* pUserData
3073)
3074{
3075 WDI_EventInfoType wdiEventData;
3076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3077
3078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003080 ------------------------------------------------------------------------*/
3081 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3082 {
3083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3084 "WDI API call before module is initialized - Fail request");
3085
Jeff Johnsone7245742012-09-05 17:12:55 -07003086 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003087 }
3088
3089 /*------------------------------------------------------------------------
3090 Fill in Event data and post to the Main FSM
3091 ------------------------------------------------------------------------*/
3092 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003093 wdiEventData.pEventData = pwdiPowerSaveCfg;
3094 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3095 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003096 wdiEventData.pUserData = pUserData;
3097
3098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3099
3100}/*WDI_SetPwrSaveCfgReq*/
3101
3102/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003103 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 request the device to get into IMPS power state. Upon
3105 the call of this API the WLAN DAL will send a HAL Enter
3106 IMPS request message to the lower RIVA sub-system if DAL
3107 is in state STARTED.
3108
3109 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003111
Jeff Johnsone7245742012-09-05 17:12:55 -07003112
3113 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 response of the Enter IMPS operation received from the
3115 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003116
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003118 callback
3119
Jeff Johnson295189b2012-06-20 16:38:30 -07003120 @see WDI_Start
3121 @return Result of the function call
3122*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003123WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003124WDI_EnterImpsReq
3125(
3126 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3127 void* pUserData
3128)
3129{
3130 WDI_EventInfoType wdiEventData;
3131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3132
3133 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003134 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003135 ------------------------------------------------------------------------*/
3136 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3137 {
3138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3139 "WDI API call before module is initialized - Fail request");
3140
Jeff Johnsone7245742012-09-05 17:12:55 -07003141 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003142 }
3143
3144 /*------------------------------------------------------------------------
3145 Fill in Event data and post to the Main FSM
3146 ------------------------------------------------------------------------*/
3147 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003148 wdiEventData.pEventData = NULL;
3149 wdiEventData.uEventDataSize = 0;
3150 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003151 wdiEventData.pUserData = pUserData;
3152
3153 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3154
3155}/*WDI_EnterImpsReq*/
3156
3157/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003159 request the device to get out of IMPS power state. Upon
3160 the call of this API the WLAN DAL will send a HAL Exit
3161 IMPS request message to the lower RIVA sub-system if DAL
3162 is in state STARTED.
3163
3164 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003165 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003166
Jeff Johnson295189b2012-06-20 16:38:30 -07003167
Jeff Johnsone7245742012-09-05 17:12:55 -07003168
3169 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003170 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003171
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 callback
3174
Jeff Johnson295189b2012-06-20 16:38:30 -07003175 @see WDI_Start
3176 @return Result of the function call
3177*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003178WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003179WDI_ExitImpsReq
3180(
3181 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3182 void* pUserData
3183)
3184{
3185 WDI_EventInfoType wdiEventData;
3186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3187
3188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 ------------------------------------------------------------------------*/
3191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3192 {
3193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3194 "WDI API call before module is initialized - Fail request");
3195
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 }
3198
3199 /*------------------------------------------------------------------------
3200 Fill in Event data and post to the Main FSM
3201 ------------------------------------------------------------------------*/
3202 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 wdiEventData.pEventData = NULL;
3204 wdiEventData.uEventDataSize = 0;
3205 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 wdiEventData.pUserData = pUserData;
3207
3208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3209
3210}/*WDI_ExitImpsReq*/
3211
3212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003213 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003214 request the device to get into BMPS power state. Upon
3215 the call of this API the WLAN DAL will pack and send a
3216 HAL Enter BMPS request message to the lower RIVA
3217 sub-system if DAL is in state STARTED.
3218
3219 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003221
3222 WDI_PostAssocReq must have been called.
3223
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003225 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003226
Jeff Johnson295189b2012-06-20 16:38:30 -07003227 wdiEnterBmpsRspCb: callback for passing back the
3228 response of the Enter BMPS operation received from the
3229 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003230
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 callback
3233
Jeff Johnson295189b2012-06-20 16:38:30 -07003234 @see WDI_PostAssocReq
3235 @return Result of the function call
3236*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003237WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003238WDI_EnterBmpsReq
3239(
3240 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3241 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3242 void* pUserData
3243)
3244{
3245 WDI_EventInfoType wdiEventData;
3246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3247
3248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003250 ------------------------------------------------------------------------*/
3251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3252 {
3253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3254 "WDI API call before module is initialized - Fail request");
3255
Jeff Johnsone7245742012-09-05 17:12:55 -07003256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003257 }
3258
3259 /*------------------------------------------------------------------------
3260 Fill in Event data and post to the Main FSM
3261 ------------------------------------------------------------------------*/
3262 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003263 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3264 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3265 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 wdiEventData.pUserData = pUserData;
3267
3268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3269
3270}/*WDI_EnterBmpsReq*/
3271
3272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 request the device to get out of BMPS power state. Upon
3275 the call of this API the WLAN DAL will pack and send a
3276 HAL Exit BMPS request message to the lower RIVA
3277 sub-system if DAL is in state STARTED.
3278
3279 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003280 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003281
3282 WDI_PostAssocReq must have been called.
3283
Jeff Johnsone7245742012-09-05 17:12:55 -07003284 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003286
Jeff Johnson295189b2012-06-20 16:38:30 -07003287 wdiExitBmpsRspCb: callback for passing back the response
3288 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003289
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003291 callback
3292
Jeff Johnson295189b2012-06-20 16:38:30 -07003293 @see WDI_PostAssocReq
3294 @return Result of the function call
3295*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003296WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003297WDI_ExitBmpsReq
3298(
3299 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3300 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3301 void* pUserData
3302)
3303{
3304 WDI_EventInfoType wdiEventData;
3305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3306
3307 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003308 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 ------------------------------------------------------------------------*/
3310 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3311 {
3312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3313 "WDI API call before module is initialized - Fail request");
3314
Jeff Johnsone7245742012-09-05 17:12:55 -07003315 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003316 }
3317
3318 /*------------------------------------------------------------------------
3319 Fill in Event data and post to the Main FSM
3320 ------------------------------------------------------------------------*/
3321 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003322 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3323 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3324 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003325 wdiEventData.pUserData = pUserData;
3326
3327 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3328
3329}/*WDI_ExitBmpsReq*/
3330
3331/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003332 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003333 request the device to get into UAPSD power state. Upon
3334 the call of this API the WLAN DAL will pack and send a
3335 HAL Enter UAPSD request message to the lower RIVA
3336 sub-system if DAL is in state STARTED.
3337
3338 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003340
3341 WDI_PostAssocReq must have been called.
3342 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003343
3344 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003345 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003346
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 wdiEnterUapsdRspCb: callback for passing back the
3348 response of the Enter UAPSD operation received from the
3349 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003350
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003352 callback
3353
Jeff Johnson295189b2012-06-20 16:38:30 -07003354 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3355 @return Result of the function call
3356*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003357WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003358WDI_EnterUapsdReq
3359(
3360 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3361 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3362 void* pUserData
3363)
3364{
3365 WDI_EventInfoType wdiEventData;
3366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3367
3368 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003370 ------------------------------------------------------------------------*/
3371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3372 {
3373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3374 "WDI API call before module is initialized - Fail request");
3375
Jeff Johnsone7245742012-09-05 17:12:55 -07003376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 }
3378
3379 /*------------------------------------------------------------------------
3380 Fill in Event data and post to the Main FSM
3381 ------------------------------------------------------------------------*/
3382 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003383 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3384 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3385 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003386 wdiEventData.pUserData = pUserData;
3387
3388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3389
3390}/*WDI_EnterUapsdReq*/
3391
3392/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003393 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 request the device to get out of UAPSD power state. Upon
3395 the call of this API the WLAN DAL will send a HAL Exit
3396 UAPSD request message to the lower RIVA sub-system if
3397 DAL is in state STARTED.
3398
3399 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003400 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003401
3402 WDI_PostAssocReq must have been called.
3403
Jeff Johnsone7245742012-09-05 17:12:55 -07003404 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 response of the Exit UAPSD operation received from the
3406 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 callback
3410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 @see WDI_PostAssocReq
3412 @return Result of the function call
3413*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003415WDI_ExitUapsdReq
3416(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003417 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003418 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3419 void* pUserData
3420)
3421{
3422 WDI_EventInfoType wdiEventData;
3423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3424
3425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 ------------------------------------------------------------------------*/
3428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3429 {
3430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3431 "WDI API call before module is initialized - Fail request");
3432
Jeff Johnsone7245742012-09-05 17:12:55 -07003433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 }
3435
3436 /*------------------------------------------------------------------------
3437 Fill in Event data and post to the Main FSM
3438 ------------------------------------------------------------------------*/
3439 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003440 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3441 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003442 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003443 wdiEventData.pUserData = pUserData;
3444
3445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3446
3447}/*WDI_ExitUapsdReq*/
3448
3449/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003450 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 MAC wants to set the UAPSD related configurations
3452 of an associated STA (while acting as an AP) to the WLAN
3453 Device. Upon the call of this API the WLAN DAL will pack
3454 and send a HAL Update UAPSD params request message to
3455 the lower RIVA sub-system if DAL is in state STARTED.
3456
3457 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003459
3460 WDI_ConfigBSSReq must have been called.
3461
Jeff Johnsone7245742012-09-05 17:12:55 -07003462 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003463 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003464
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 wdiUpdateUapsdParamsCb: callback for passing back the
3466 response of the update UAPSD params operation received
3467 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003468
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003470 callback
3471
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 @see WDI_ConfigBSSReq
3473 @return Result of the function call
3474*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003475WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003476WDI_UpdateUapsdParamsReq
3477(
3478 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3479 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3480 void* pUserData
3481)
3482{
3483 WDI_EventInfoType wdiEventData;
3484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3485
3486 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003487 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003488 ------------------------------------------------------------------------*/
3489 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3490 {
3491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3492 "WDI API call before module is initialized - Fail request");
3493
Jeff Johnsone7245742012-09-05 17:12:55 -07003494 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003495 }
3496
3497 /*------------------------------------------------------------------------
3498 Fill in Event data and post to the Main FSM
3499 ------------------------------------------------------------------------*/
3500 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003501 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003502 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003503 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 wdiEventData.pUserData = pUserData;
3505
3506 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3507
3508}/*WDI_UpdateUapsdParamsReq*/
3509
3510/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003511 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003512 MAC wants to set the UAPSD related configurations before
3513 requesting for enter UAPSD power state to the WLAN
3514 Device. Upon the call of this API the WLAN DAL will pack
3515 and send a HAL Set UAPSD params request message to
3516 the lower RIVA sub-system if DAL is in state STARTED.
3517
3518 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003520
3521 WDI_PostAssocReq must have been called.
3522
3523 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3524 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003525
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 wdiSetUapsdAcParamsCb: callback for passing back the
3527 response of the set UAPSD params operation received from
3528 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 callback
3532
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 @see WDI_PostAssocReq
3534 @return Result of the function call
3535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003537WDI_SetUapsdAcParamsReq
3538(
3539 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3540 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3541 void* pUserData
3542)
3543{
3544 WDI_EventInfoType wdiEventData;
3545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3546
3547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003549 ------------------------------------------------------------------------*/
3550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3551 {
3552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3553 "WDI API call before module is initialized - Fail request");
3554
Jeff Johnsone7245742012-09-05 17:12:55 -07003555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003556 }
3557
3558 /*------------------------------------------------------------------------
3559 Fill in Event data and post to the Main FSM
3560 ------------------------------------------------------------------------*/
3561 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003562 wdiEventData.pEventData = pwdiUapsdInfo;
3563 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3564 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003565 wdiEventData.pUserData = pUserData;
3566
3567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3568
3569}/*WDI_SetUapsdAcParamsReq*/
3570
3571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003572 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003573 MAC wants to set/reset the RXP filters for received pkts
3574 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3575 and send a HAL configure RXP filter request message to
3576 the lower RIVA sub-system.
3577
3578 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003580
Jeff Johnsone7245742012-09-05 17:12:55 -07003581
3582 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003583 filter as specified by the Device
3584 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 wdiConfigureRxpFilterCb: callback for passing back the
3587 response of the configure RXP filter operation received
3588 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003589
Jeff Johnson295189b2012-06-20 16:38:30 -07003590 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003591 callback
3592
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 @return Result of the function call
3594*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003595WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003596WDI_ConfigureRxpFilterReq
3597(
3598 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3599 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3600 void* pUserData
3601)
3602{
3603 WDI_EventInfoType wdiEventData;
3604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3605
3606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 ------------------------------------------------------------------------*/
3609 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3610 {
3611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3612 "WDI API call before module is initialized - Fail request");
3613
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 }
3616
3617 /*------------------------------------------------------------------------
3618 Fill in Event data and post to the Main FSM
3619 ------------------------------------------------------------------------*/
3620 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3622 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3623 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 wdiEventData.pUserData = pUserData;
3625
3626 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3627}/*WDI_ConfigureRxpFilterReq*/
3628
3629/**
3630 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3631 wants to set the beacon filters while in power save.
3632 Upon the call of this API the WLAN DAL will pack and
3633 send a Beacon filter request message to the
3634 lower RIVA sub-system.
3635
3636 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003637 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003638
Jeff Johnsone7245742012-09-05 17:12:55 -07003639
3640 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 filter as specified by the Device
3642 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003643
Jeff Johnson295189b2012-06-20 16:38:30 -07003644 wdiBeaconFilterCb: callback for passing back the
3645 response of the set beacon filter operation received
3646 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 callback
3650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 @return Result of the function call
3652*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003653WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003654WDI_SetBeaconFilterReq
3655(
3656 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3657 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3658 void* pUserData
3659)
3660{
3661 WDI_EventInfoType wdiEventData;
3662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3663
3664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 ------------------------------------------------------------------------*/
3667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3668 {
3669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3670 "WDI API call before module is initialized - Fail request");
3671
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 }
3674
3675 /*------------------------------------------------------------------------
3676 Fill in Event data and post to the Main FSM
3677 ------------------------------------------------------------------------*/
3678 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003680 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003681 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 wdiEventData.pUserData = pUserData;
3683
3684 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3685}/*WDI_SetBeaconFilterReq*/
3686
3687/**
3688 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3689 wants to remove the beacon filter for particular IE
3690 while in power save. Upon the call of this API the WLAN
3691 DAL will pack and send a remove Beacon filter request
3692 message to the lower RIVA sub-system.
3693
3694 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003696
Jeff Johnsone7245742012-09-05 17:12:55 -07003697
3698 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003699 filter as specified by the Device
3700 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003701
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 wdiBeaconFilterCb: callback for passing back the
3703 response of the remove beacon filter operation received
3704 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003705
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 callback
3708
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 @return Result of the function call
3710*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003711WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003712WDI_RemBeaconFilterReq
3713(
3714 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3715 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3716 void* pUserData
3717)
3718{
3719 WDI_EventInfoType wdiEventData;
3720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3721
3722 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003723 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 ------------------------------------------------------------------------*/
3725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3726 {
3727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3728 "WDI API call before module is initialized - Fail request");
3729
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 }
3732
3733 /*------------------------------------------------------------------------
3734 Fill in Event data and post to the Main FSM
3735 ------------------------------------------------------------------------*/
3736 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003738 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 wdiEventData.pUserData = pUserData;
3741
3742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3743}/*WDI_RemBeaconFilterReq*/
3744
3745/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 MAC wants to set the RSSI thresholds related
3748 configurations while in power save. Upon the call of
3749 this API the WLAN DAL will pack and send a HAL Set RSSI
3750 thresholds request message to the lower RIVA
3751 sub-system if DAL is in state STARTED.
3752
3753 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003754 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003755
3756 WDI_PostAssocReq must have been called.
3757
3758 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3759 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003760
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 wdiSetUapsdAcParamsCb: callback for passing back the
3762 response of the set UAPSD params operation received from
3763 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003764
Jeff Johnson295189b2012-06-20 16:38:30 -07003765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 callback
3767
Jeff Johnson295189b2012-06-20 16:38:30 -07003768 @see WDI_PostAssocReq
3769 @return Result of the function call
3770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003772WDI_SetRSSIThresholdsReq
3773(
3774 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3775 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3776 void* pUserData
3777)
3778{
3779 WDI_EventInfoType wdiEventData;
3780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3781
3782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 ------------------------------------------------------------------------*/
3785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3786 {
3787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3788 "WDI API call before module is initialized - Fail request");
3789
Jeff Johnsone7245742012-09-05 17:12:55 -07003790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 }
3792
3793 /*------------------------------------------------------------------------
3794 Fill in Event data and post to the Main FSM
3795 ------------------------------------------------------------------------*/
3796 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003798 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 wdiEventData.pUserData = pUserData;
3801
3802 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3803}/* WDI_SetRSSIThresholdsReq*/
3804
3805/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 wants to set the filter to minimize unnecessary host
3808 wakeup due to broadcast traffic while in power save.
3809 Upon the call of this API the WLAN DAL will pack and
3810 send a HAL host offload request message to the
3811 lower RIVA sub-system if DAL is in state STARTED.
3812
3813 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003814 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003815
3816 WDI_PostAssocReq must have been called.
3817
Jeff Johnsone7245742012-09-05 17:12:55 -07003818 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003819 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003820
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 wdiHostOffloadCb: callback for passing back the response
3822 of the host offload operation received from the
3823 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003824
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 callback
3827
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 @see WDI_PostAssocReq
3829 @return Result of the function call
3830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003832WDI_HostOffloadReq
3833(
3834 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3835 WDI_HostOffloadCb wdiHostOffloadCb,
3836 void* pUserData
3837)
3838{
3839 WDI_EventInfoType wdiEventData;
3840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3841
3842 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 ------------------------------------------------------------------------*/
3845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3846 {
3847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3848 "WDI API call before module is initialized - Fail request");
3849
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003851 }
3852
3853 /*------------------------------------------------------------------------
3854 Fill in Event data and post to the Main FSM
3855 ------------------------------------------------------------------------*/
3856 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003857 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003858 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 wdiEventData.pUserData = pUserData;
3861
3862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3863}/*WDI_HostOffloadReq*/
3864
3865/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 @brief WDI_KeepAliveReq will be called when the upper MAC
3867 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 and minimize unnecessary host wakeups due to while in power save.
3869 Upon the call of this API the WLAN DAL will pack and
3870 send a HAL Keep Alive request message to the
3871 lower RIVA sub-system if DAL is in state STARTED.
3872
3873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003875
3876 WDI_PostAssocReq must have been called.
3877
Jeff Johnsone7245742012-09-05 17:12:55 -07003878 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003879 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003880
Jeff Johnson295189b2012-06-20 16:38:30 -07003881 wdiKeepAliveCb: callback for passing back the response
3882 of the Keep Alive operation received from the
3883 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 callback
3887
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 @see WDI_PostAssocReq
3889 @return Result of the function call
3890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003892WDI_KeepAliveReq
3893(
3894 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3895 WDI_KeepAliveCb wdiKeepAliveCb,
3896 void* pUserData
3897)
3898{
3899 WDI_EventInfoType wdiEventData;
3900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3901
3902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003904 ------------------------------------------------------------------------*/
3905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3906 {
3907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3908 "WDI_KeepAliveReq: WDI API call before module "
3909 "is initialized - Fail request");
3910
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 }
3913
3914 /*------------------------------------------------------------------------
3915 Fill in Event data and post to the Main FSM
3916 ------------------------------------------------------------------------*/
3917 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 wdiEventData.pEventData = pwdiKeepAliveParams;
3919 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3920 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 wdiEventData.pUserData = pUserData;
3922
3923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3924}/*WDI_KeepAliveReq*/
3925
3926/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003927 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003928 wants to set the Wowl Bcast ptrn to minimize unnecessary
3929 host wakeup due to broadcast traffic while in power
3930 save. Upon the call of this API the WLAN DAL will pack
3931 and send a HAL Wowl Bcast ptrn request message to the
3932 lower RIVA sub-system if DAL is in state STARTED.
3933
3934 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003936
3937 WDI_PostAssocReq must have been called.
3938
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003941
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 wdiWowlAddBcPtrnCb: callback for passing back the
3943 response of the add Wowl bcast ptrn operation received
3944 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 callback
3948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 @see WDI_PostAssocReq
3950 @return Result of the function call
3951*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003952WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003953WDI_WowlAddBcPtrnReq
3954(
3955 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3956 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
3957 void* pUserData
3958)
3959{
3960 WDI_EventInfoType wdiEventData;
3961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3962
3963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003965 ------------------------------------------------------------------------*/
3966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3967 {
3968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3969 "WDI API call before module is initialized - Fail request");
3970
Jeff Johnsone7245742012-09-05 17:12:55 -07003971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003972 }
3973
3974 /*------------------------------------------------------------------------
3975 Fill in Event data and post to the Main FSM
3976 ------------------------------------------------------------------------*/
3977 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003978 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003979 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003980 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 wdiEventData.pUserData = pUserData;
3982
3983 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3984}/*WDI_WowlAddBcPtrnReq*/
3985
3986/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 wants to clear the Wowl Bcast ptrn. Upon the call of
3989 this API the WLAN DAL will pack and send a HAL delete
3990 Wowl Bcast ptrn request message to the lower RIVA
3991 sub-system if DAL is in state STARTED.
3992
3993 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003995
3996 WDI_WowlAddBcPtrnReq must have been called.
3997
Jeff Johnsone7245742012-09-05 17:12:55 -07003998 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003999 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004000
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 wdiWowlDelBcPtrnCb: callback for passing back the
4002 response of the del Wowl bcast ptrn operation received
4003 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004004
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004006 callback
4007
Jeff Johnson295189b2012-06-20 16:38:30 -07004008 @see WDI_WowlAddBcPtrnReq
4009 @return Result of the function call
4010*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004012WDI_WowlDelBcPtrnReq
4013(
4014 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4015 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4016 void* pUserData
4017)
4018{
4019 WDI_EventInfoType wdiEventData;
4020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4021
4022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004023 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 ------------------------------------------------------------------------*/
4025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4026 {
4027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4028 "WDI API call before module is initialized - Fail request");
4029
Jeff Johnsone7245742012-09-05 17:12:55 -07004030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004031 }
4032
4033 /*------------------------------------------------------------------------
4034 Fill in Event data and post to the Main FSM
4035 ------------------------------------------------------------------------*/
4036 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004037 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004038 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004039 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004040 wdiEventData.pUserData = pUserData;
4041
4042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4043}/*WDI_WowlDelBcPtrnReq*/
4044
4045/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004046 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004047 wants to enter the Wowl state to minimize unnecessary
4048 host wakeup while in power save. Upon the call of this
4049 API the WLAN DAL will pack and send a HAL Wowl enter
4050 request message to the lower RIVA sub-system if DAL is
4051 in state STARTED.
4052
4053 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004055
4056 WDI_PostAssocReq must have been called.
4057
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004059 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004060
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 wdiWowlEnterReqCb: callback for passing back the
4062 response of the enter Wowl operation received from the
4063 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004064
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 callback
4067
Jeff Johnson295189b2012-06-20 16:38:30 -07004068 @see WDI_PostAssocReq
4069 @return Result of the function call
4070*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004071WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004072WDI_WowlEnterReq
4073(
4074 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4075 WDI_WowlEnterReqCb wdiWowlEnterCb,
4076 void* pUserData
4077)
4078{
4079 WDI_EventInfoType wdiEventData;
4080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4081
4082 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004083 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004084 ------------------------------------------------------------------------*/
4085 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4086 {
4087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4088 "WDI API call before module is initialized - Fail request");
4089
Jeff Johnsone7245742012-09-05 17:12:55 -07004090 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004091 }
4092
4093 /*------------------------------------------------------------------------
4094 Fill in Event data and post to the Main FSM
4095 ------------------------------------------------------------------------*/
4096 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004098 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004099 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004100 wdiEventData.pUserData = pUserData;
4101
4102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4103}/*WDI_WowlEnterReq*/
4104
4105/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004106 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004107 wants to exit the Wowl state. Upon the call of this API
4108 the WLAN DAL will pack and send a HAL Wowl exit request
4109 message to the lower RIVA sub-system if DAL is in state
4110 STARTED.
4111
4112 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004114
4115 WDI_WowlEnterReq must have been called.
4116
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 wdiWowlExitReqCb: callback for passing back the response
4121 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 callback
4125
Jeff Johnson295189b2012-06-20 16:38:30 -07004126 @see WDI_WowlEnterReq
4127 @return Result of the function call
4128*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004129WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004130WDI_WowlExitReq
4131(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004132 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 WDI_WowlExitReqCb wdiWowlExitCb,
4134 void* pUserData
4135)
4136{
4137 WDI_EventInfoType wdiEventData;
4138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4139
4140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004142 ------------------------------------------------------------------------*/
4143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4144 {
4145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4146 "WDI API call before module is initialized - Fail request");
4147
Jeff Johnsone7245742012-09-05 17:12:55 -07004148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 }
4150
4151 /*------------------------------------------------------------------------
4152 Fill in Event data and post to the Main FSM
4153 ------------------------------------------------------------------------*/
4154 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004155 wdiEventData.pEventData = pwdiWowlExitParams;
4156 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004157 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004158 wdiEventData.pUserData = pUserData;
4159
4160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4161}/*WDI_WowlExitReq*/
4162
4163/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004164 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004165 the upper MAC wants to dynamically adjusts the listen
4166 interval based on the WLAN/MSM activity. Upon the call
4167 of this API the WLAN DAL will pack and send a HAL
4168 configure Apps Cpu Wakeup State request message to the
4169 lower RIVA sub-system.
4170
4171 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004173
Jeff Johnsone7245742012-09-05 17:12:55 -07004174
4175 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 Apps Cpu Wakeup State as specified by the
4177 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004178
Jeff Johnson295189b2012-06-20 16:38:30 -07004179 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4180 back the response of the configure Apps Cpu Wakeup State
4181 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 callback
4185
Jeff Johnson295189b2012-06-20 16:38:30 -07004186 @return Result of the function call
4187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004189WDI_ConfigureAppsCpuWakeupStateReq
4190(
4191 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4192 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4193 void* pUserData
4194)
4195{
4196 WDI_EventInfoType wdiEventData;
4197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4198
4199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 ------------------------------------------------------------------------*/
4202 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4203 {
4204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4205 "WDI API call before module is initialized - Fail request");
4206
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 }
4209
4210 /*------------------------------------------------------------------------
4211 Fill in Event data and post to the Main FSM
4212 ------------------------------------------------------------------------*/
4213 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4215 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4216 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 wdiEventData.pUserData = pUserData;
4218
4219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4220}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 to to perform a flush operation on a given AC. Upon the
4224 call of this API the WLAN DAL will pack and send a HAL
4225 Flush AC request message to the lower RIVA sub-system if
4226 DAL is in state STARTED.
4227
4228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004230
4231 WDI_AddBAReq must have been called.
4232
Jeff Johnsone7245742012-09-05 17:12:55 -07004233 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004234 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004235
Jeff Johnson295189b2012-06-20 16:38:30 -07004236 wdiFlushAcRspCb: callback for passing back the response
4237 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004238
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004240 callback
4241
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 @see WDI_AddBAReq
4243 @return Result of the function call
4244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004246WDI_FlushAcReq
4247(
4248 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4249 WDI_FlushAcRspCb wdiFlushAcRspCb,
4250 void* pUserData
4251)
4252{
4253 WDI_EventInfoType wdiEventData;
4254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4255
4256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 ------------------------------------------------------------------------*/
4259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4260 {
4261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4262 "WDI API call before module is initialized - Fail request");
4263
Jeff Johnsone7245742012-09-05 17:12:55 -07004264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004265 }
4266
4267 /*------------------------------------------------------------------------
4268 Fill in Event data and post to the Main FSM
4269 ------------------------------------------------------------------------*/
4270 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004271 wdiEventData.pEventData = pwdiFlushAcReqParams;
4272 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4273 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004274 wdiEventData.pUserData = pUserData;
4275
4276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4277
4278}/*WDI_FlushAcReq*/
4279
4280/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 wants to notify the lower mac on a BT AMP event. This is
4283 to inform BTC-SLM that some BT AMP event occurred. Upon
4284 the call of this API the WLAN DAL will pack and send a
4285 HAL BT AMP event request message to the lower RIVA
4286 sub-system if DAL is in state STARTED.
4287
4288 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004290
Jeff Johnsone7245742012-09-05 17:12:55 -07004291
4292 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004293 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004294
Jeff Johnson295189b2012-06-20 16:38:30 -07004295 wdiBtAmpEventRspCb: callback for passing back the
4296 response of the BT AMP event operation received from the
4297 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004298
Jeff Johnson295189b2012-06-20 16:38:30 -07004299 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004300 callback
4301
Jeff Johnson295189b2012-06-20 16:38:30 -07004302 @return Result of the function call
4303*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004304WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004305WDI_BtAmpEventReq
4306(
4307 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4308 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4309 void* pUserData
4310)
4311{
4312 WDI_EventInfoType wdiEventData;
4313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4314
4315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004316 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004317 ------------------------------------------------------------------------*/
4318 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4319 {
4320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4321 "WDI API call before module is initialized - Fail request");
4322
Jeff Johnsone7245742012-09-05 17:12:55 -07004323 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004324 }
4325
4326 /*------------------------------------------------------------------------
4327 Fill in Event data and post to the Main FSM
4328 ------------------------------------------------------------------------*/
4329 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004330 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4331 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4332 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004333 wdiEventData.pUserData = pUserData;
4334
4335 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4336
4337}/*WDI_BtAmpEventReq*/
4338
Jeff Johnsone7245742012-09-05 17:12:55 -07004339#ifdef FEATURE_OEM_DATA_SUPPORT
4340/**
4341 @brief WDI_Start Oem Data Req will be called when the upper MAC
4342 wants to notify the lower mac on a oem data Req event.Upon
4343 the call of this API the WLAN DAL will pack and send a
4344 HAL OEM Data Req event request message to the lower RIVA
4345 sub-system if DAL is in state STARTED.
4346
4347 In state BUSY this request will be queued. Request won't
4348 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004349
4350
Jeff Johnsone7245742012-09-05 17:12:55 -07004351
4352 @param pwdiOemDataReqParams: the Oem Data Req as
4353 specified by the Device Interface
4354
4355 wdiStartOemDataRspCb: callback for passing back the
4356 response of the Oem Data Req received from the
4357 device
4358
4359 pUserData: user data will be passed back with the
4360 callback
4361
4362 @return Result of the function call
4363*/
4364WDI_Status
4365WDI_StartOemDataReq
4366(
4367 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4368 WDI_oemDataRspCb wdiOemDataRspCb,
4369 void* pUserData
4370)
4371{
4372 WDI_EventInfoType wdiEventData;
4373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4374
4375 /*------------------------------------------------------------------------
4376 Sanity Check
4377 ------------------------------------------------------------------------*/
4378 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4379 {
4380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4381 "WDI API call before module is initialized - Fail request");
4382
4383 return WDI_STATUS_E_NOT_ALLOWED;
4384 }
4385
4386 /*------------------------------------------------------------------------
4387 Fill in Event data and post to the Main FSM
4388 ------------------------------------------------------------------------*/
4389 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4390 wdiEventData.pEventData = pwdiOemDataReqParams;
4391 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4392 wdiEventData.pCBfnc = wdiOemDataRspCb;
4393 wdiEventData.pUserData = pUserData;
4394
4395 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4396
4397
4398}
4399
4400#endif
4401
4402
4403/*========================================================================
4404
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004406
Jeff Johnson295189b2012-06-20 16:38:30 -07004407==========================================================================*/
4408/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 the WLAN HW to change the current channel of operation.
4411 Upon the call of this API the WLAN DAL will pack and
4412 send a HAL Start request message to the lower RIVA
4413 sub-system if DAL is in state STARTED.
4414
4415 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004417
4418 WDI_Start must have been called.
4419
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004422
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 wdiSwitchChRspCb: callback for passing back the response
4424 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004425
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 callback
4428
Jeff Johnson295189b2012-06-20 16:38:30 -07004429 @see WDI_Start
4430 @return Result of the function call
4431*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004432WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004433WDI_SwitchChReq
4434(
4435 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4436 WDI_SwitchChRspCb wdiSwitchChRspCb,
4437 void* pUserData
4438)
4439{
4440 WDI_EventInfoType wdiEventData;
4441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4442
4443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004444 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 ------------------------------------------------------------------------*/
4446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4447 {
4448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4449 "WDI API call before module is initialized - Fail request");
4450
Jeff Johnsone7245742012-09-05 17:12:55 -07004451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004452 }
4453
4454 /*------------------------------------------------------------------------
4455 Fill in Event data and post to the Main FSM
4456 ------------------------------------------------------------------------*/
4457 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004458 wdiEventData.pEventData = pwdiSwitchChReqParams;
4459 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4460 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 wdiEventData.pUserData = pUserData;
4462
4463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4464
4465}/*WDI_SwitchChReq*/
4466
4467
4468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004469 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 wishes to add or update a STA in HW. Upon the call of
4471 this API the WLAN DAL will pack and send a HAL Start
4472 message request message to the lower RIVA sub-system if
4473 DAL is in state STARTED.
4474
4475 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004476 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004477
4478 WDI_Start must have been called.
4479
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004482
Jeff Johnson295189b2012-06-20 16:38:30 -07004483 wdiConfigSTARspCb: callback for passing back the
4484 response of the config STA operation received from the
4485 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004486
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004488 callback
4489
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 @see WDI_Start
4491 @return Result of the function call
4492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004494WDI_ConfigSTAReq
4495(
4496 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4497 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4498 void* pUserData
4499)
4500{
4501 WDI_EventInfoType wdiEventData;
4502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4503
4504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 ------------------------------------------------------------------------*/
4507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4508 {
4509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4510 "WDI API call before module is initialized - Fail request");
4511
Jeff Johnsone7245742012-09-05 17:12:55 -07004512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004513 }
4514
4515 /*------------------------------------------------------------------------
4516 Fill in Event data and post to the Main FSM
4517 ------------------------------------------------------------------------*/
4518 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004519 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4520 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4521 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 wdiEventData.pUserData = pUserData;
4523
4524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4525
4526}/*WDI_ConfigSTAReq*/
4527
4528/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004529 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004530 wants to change the state of an ongoing link. Upon the
4531 call of this API the WLAN DAL will pack and send a HAL
4532 Start message request message to the lower RIVA
4533 sub-system if DAL is in state STARTED.
4534
4535 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004537
4538 WDI_JoinStartReq must have been called.
4539
Jeff Johnsone7245742012-09-05 17:12:55 -07004540 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004541 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004542
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 wdiSetLinkStateRspCb: callback for passing back the
4544 response of the set link state operation received from
4545 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004546
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004548 callback
4549
Jeff Johnson295189b2012-06-20 16:38:30 -07004550 @see WDI_JoinStartReq
4551 @return Result of the function call
4552*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004553WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004554WDI_SetLinkStateReq
4555(
4556 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4557 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4558 void* pUserData
4559)
4560{
4561 WDI_EventInfoType wdiEventData;
4562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4563
4564 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004565 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004566 ------------------------------------------------------------------------*/
4567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4568 {
4569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4570 "WDI API call before module is initialized - Fail request");
4571
Jeff Johnsone7245742012-09-05 17:12:55 -07004572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004573 }
4574
4575 /*------------------------------------------------------------------------
4576 Fill in Event data and post to the Main FSM
4577 ------------------------------------------------------------------------*/
4578 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004579 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4580 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4581 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004582 wdiEventData.pUserData = pUserData;
4583
4584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4585
4586}/*WDI_SetLinkStateReq*/
4587
4588
4589/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004590 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004591 to get statistics (MIB counters) from the device. Upon
4592 the call of this API the WLAN DAL will pack and send a
4593 HAL Start request message to the lower RIVA sub-system
4594 if DAL is in state STARTED.
4595
4596 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004597 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004598
4599 WDI_Start must have been called.
4600
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004602 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004603
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 wdiGetStatsRspCb: callback for passing back the response
4605 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004606
Jeff Johnson295189b2012-06-20 16:38:30 -07004607 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004608 callback
4609
Jeff Johnson295189b2012-06-20 16:38:30 -07004610 @see WDI_Start
4611 @return Result of the function call
4612*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004613WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004614WDI_GetStatsReq
4615(
4616 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4617 WDI_GetStatsRspCb wdiGetStatsRspCb,
4618 void* pUserData
4619)
4620{
4621 WDI_EventInfoType wdiEventData;
4622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4623
4624 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004626 ------------------------------------------------------------------------*/
4627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4628 {
4629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4630 "WDI API call before module is initialized - Fail request");
4631
Jeff Johnsone7245742012-09-05 17:12:55 -07004632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004633 }
4634
4635 /*------------------------------------------------------------------------
4636 Fill in Event data and post to the Main FSM
4637 ------------------------------------------------------------------------*/
4638 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004639 wdiEventData.pEventData = pwdiGetStatsReqParams;
4640 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4641 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004642 wdiEventData.pUserData = pUserData;
4643
4644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4645
4646}/*WDI_GetStatsReq*/
4647
4648
4649/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004650 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004651 it wishes to change the configuration of the WLAN
4652 Device. Upon the call of this API the WLAN DAL will pack
4653 and send a HAL Update CFG request message to the lower
4654 RIVA sub-system if DAL is in state STARTED.
4655
4656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004658
4659 WDI_Start must have been called.
4660
Jeff Johnsone7245742012-09-05 17:12:55 -07004661 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004663
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 wdiUpdateCfgsRspCb: callback for passing back the
4665 response of the update cfg operation received from the
4666 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004667
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004669 callback
4670
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 @see WDI_Start
4672 @return Result of the function call
4673*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004674WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004675WDI_UpdateCfgReq
4676(
4677 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4678 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4679 void* pUserData
4680)
4681{
4682 WDI_EventInfoType wdiEventData;
4683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4684
4685 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004686 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004687 ------------------------------------------------------------------------*/
4688 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4689 {
4690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4691 "WDI API call before module is initialized - Fail request");
4692
Jeff Johnsone7245742012-09-05 17:12:55 -07004693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004694 }
4695
4696 /*------------------------------------------------------------------------
4697 Fill in Event data and post to the Main FSM
4698 ------------------------------------------------------------------------*/
4699 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004700 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4701 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4702 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 wdiEventData.pUserData = pUserData;
4704
4705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4706
4707}/*WDI_UpdateCfgReq*/
4708
4709
4710
4711/**
4712 @brief WDI_AddBAReq will be called when the upper MAC has setup
4713 successfully a BA session and needs to notify the HW for
4714 the appropriate settings to take place. Upon the call of
4715 this API the WLAN DAL will pack and send a HAL Add BA
4716 request message to the lower RIVA sub-system if DAL is
4717 in state STARTED.
4718
4719 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004720 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004721
4722 WDI_PostAssocReq must have been called.
4723
4724 @param wdiAddBAReqParams: the add BA parameters as specified by
4725 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004726
Jeff Johnson295189b2012-06-20 16:38:30 -07004727 wdiAddBARspCb: callback for passing back the response of
4728 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004729
Jeff Johnson295189b2012-06-20 16:38:30 -07004730 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 callback
4732
Jeff Johnson295189b2012-06-20 16:38:30 -07004733 @see WDI_PostAssocReq
4734 @return Result of the function call
4735*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004736WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004737WDI_AddBAReq
4738(
4739 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4740 WDI_AddBARspCb wdiAddBARspCb,
4741 void* pUserData
4742)
4743{
4744 WDI_EventInfoType wdiEventData;
4745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4746
4747 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004748 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004749 ------------------------------------------------------------------------*/
4750 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4751 {
4752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4753 "WDI API call before module is initialized - Fail request");
4754
Jeff Johnsone7245742012-09-05 17:12:55 -07004755 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004756 }
4757
4758 /*------------------------------------------------------------------------
4759 Fill in Event data and post to the Main FSM
4760 ------------------------------------------------------------------------*/
4761 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004762 wdiEventData.pEventData = pwdiAddBAReqParams;
4763 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4764 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 wdiEventData.pUserData = pUserData;
4766
4767 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4768
4769}/*WDI_AddBAReq*/
4770
4771
4772/**
4773 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4774 successfully a BA session and needs to notify the HW for
4775 the appropriate settings to take place. Upon the call of
4776 this API the WLAN DAL will pack and send a HAL Add BA
4777 request message to the lower RIVA sub-system if DAL is
4778 in state STARTED.
4779
4780 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004781 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004782
4783 WDI_PostAssocReq must have been called.
4784
4785 @param wdiAddBAReqParams: the add BA parameters as specified by
4786 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004787
Jeff Johnson295189b2012-06-20 16:38:30 -07004788 wdiAddBARspCb: callback for passing back the response of
4789 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004790
Jeff Johnson295189b2012-06-20 16:38:30 -07004791 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004792 callback
4793
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 @see WDI_PostAssocReq
4795 @return Result of the function call
4796*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004797WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004798WDI_TriggerBAReq
4799(
4800 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4801 WDI_TriggerBARspCb wdiTriggerBARspCb,
4802 void* pUserData
4803)
4804{
4805 WDI_EventInfoType wdiEventData;
4806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4807
4808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004809 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 ------------------------------------------------------------------------*/
4811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4812 {
4813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4814 "WDI API call before module is initialized - Fail request");
4815
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 }
4818
4819 /*------------------------------------------------------------------------
4820 Fill in Event data and post to the Main FSM
4821 ------------------------------------------------------------------------*/
4822 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004823 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4824 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4825 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 wdiEventData.pUserData = pUserData;
4827
4828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4829
4830}/*WDI_AddBAReq*/
4831
4832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004833 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wishes to update any of the Beacon parameters used by HW.
4835 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4836 message to the lower RIVA sub-system if DAL is in state
4837 STARTED.
4838
4839 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004840 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004841
4842 WDI_PostAssocReq must have been called.
4843
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004846
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 wdiUpdateBeaconParamsRspCb: callback for passing back the
4848 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004849
Jeff Johnson295189b2012-06-20 16:38:30 -07004850 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004851 callback
4852
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 @see WDI_PostAssocReq
4854 @return Result of the function call
4855*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004856WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004857WDI_UpdateBeaconParamsReq
4858(
4859 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4860 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4861 void* pUserData
4862)
4863{
4864 WDI_EventInfoType wdiEventData;
4865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4866
4867 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 ------------------------------------------------------------------------*/
4870 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4871 {
4872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4873 "WDI API call before module is initialized - Fail request");
4874
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004876 }
4877
4878 /*------------------------------------------------------------------------
4879 Fill in Event data and post to the Main FSM
4880 ------------------------------------------------------------------------*/
4881 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004882 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4883 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4884 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 wdiEventData.pUserData = pUserData;
4886
4887 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4888
4889}/*WDI_UpdateBeaconParamsReq*/
4890
4891/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004892 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004893 wishes to update the Beacon template used by HW.
4894 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4895 message to the lower RIVA sub-system if DAL is in state
4896 STARTED.
4897
4898 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004899 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004900
4901 WDI_PostAssocReq must have been called.
4902
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004905
Jeff Johnson295189b2012-06-20 16:38:30 -07004906 wdiSendBeaconParamsRspCb: callback for passing back the
4907 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004908
Jeff Johnson295189b2012-06-20 16:38:30 -07004909 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 callback
4911
Jeff Johnson295189b2012-06-20 16:38:30 -07004912 @see WDI_PostAssocReq
4913 @return Result of the function call
4914*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004915WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004916WDI_SendBeaconParamsReq
4917(
4918 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4919 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4920 void* pUserData
4921)
4922{
4923 WDI_EventInfoType wdiEventData;
4924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4925
4926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004927 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004928 ------------------------------------------------------------------------*/
4929 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4930 {
4931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4932 "WDI API call before module is initialized - Fail request");
4933
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004935 }
4936
4937 /*------------------------------------------------------------------------
4938 Fill in Event data and post to the Main FSM
4939 ------------------------------------------------------------------------*/
4940 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004941 wdiEventData.pEventData = pwdiSendBeaconParams;
4942 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
4943 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004944 wdiEventData.pUserData = pUserData;
4945
4946 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4947
4948}/*WDI_SendBeaconParamsReq*/
4949
4950/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004951 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07004952 upper MAC wants to update the probe response template to
4953 be transmitted as Soft AP
4954 Upon the call of this API the WLAN DAL will
4955 pack and send the probe rsp template message to the
4956 lower RIVA sub-system if DAL is in state STARTED.
4957
4958 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004959 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004960
4961
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004964
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 wdiSendBeaconParamsRspCb: callback for passing back the
4966 response of the Send Beacon Params operation received
4967 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004968
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 callback
4971
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 @see WDI_AddBAReq
4973 @return Result of the function call
4974*/
4975
Jeff Johnsone7245742012-09-05 17:12:55 -07004976WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004977WDI_UpdateProbeRspTemplateReq
4978(
4979 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
4980 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
4981 void* pUserData
4982)
4983{
4984 WDI_EventInfoType wdiEventData;
4985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4986
4987 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004988 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 ------------------------------------------------------------------------*/
4990 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4991 {
4992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4993 "WDI API call before module is initialized - Fail request");
4994
Jeff Johnsone7245742012-09-05 17:12:55 -07004995 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004996 }
4997
4998 /*------------------------------------------------------------------------
4999 Fill in Event data and post to the Main FSM
5000 ------------------------------------------------------------------------*/
5001 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005002 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5003 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5004 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005005 wdiEventData.pUserData = pUserData;
5006
5007 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5008
5009}/*WDI_UpdateProbeRspTemplateReq*/
5010
5011/**
5012 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5013 to the NV memory.
5014
5015
5016 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5017 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005018
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 wdiNvDownloadRspCb: callback for passing back the response of
5020 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005021
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005023 callback
5024
Jeff Johnson295189b2012-06-20 16:38:30 -07005025 @see WDI_PostAssocReq
5026 @return Result of the function call
5027*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005029WDI_NvDownloadReq
5030(
5031 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5032 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5033 void* pUserData
5034)
5035{
5036 WDI_EventInfoType wdiEventData;
5037
5038 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005039 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005040 ------------------------------------------------------------------------*/
5041 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5042 {
5043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5044 "WDI API call before module is initialized - Fail request");
5045
Jeff Johnsone7245742012-09-05 17:12:55 -07005046 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 }
5048
5049 /*------------------------------------------------------------------------
5050 Fill in Event data and post to the Main FSM
5051 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005052 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5053 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5054 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5055 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005056 wdiEventData.pUserData = pUserData;
5057
5058 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5059
5060}/*WDI_NVDownloadReq*/
5061
5062#ifdef WLAN_FEATURE_P2P
5063/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005064 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005065 upper MAC wants to send Notice of Absence
5066 Upon the call of this API the WLAN DAL will
5067 pack and send the probe rsp template message to the
5068 lower RIVA sub-system if DAL is in state STARTED.
5069
5070 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005071 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005072
5073
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005075 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005076
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 wdiSendBeaconParamsRspCb: callback for passing back the
5078 response of the Send Beacon Params operation received
5079 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005080
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005082 callback
5083
Jeff Johnson295189b2012-06-20 16:38:30 -07005084 @see WDI_AddBAReq
5085 @return Result of the function call
5086*/
5087WDI_Status
5088WDI_SetP2PGONOAReq
5089(
5090 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5091 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5092 void* pUserData
5093)
5094{
5095 WDI_EventInfoType wdiEventData;
5096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5097
5098 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005099 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005100 ------------------------------------------------------------------------*/
5101 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5102 {
5103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5104 "WDI API call before module is initialized - Fail request");
5105
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005107 }
5108
5109 /*------------------------------------------------------------------------
5110 Fill in Event data and post to the Main FSM
5111 ------------------------------------------------------------------------*/
5112 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5114 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5115 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 wdiEventData.pUserData = pUserData;
5117
5118 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5119
5120}/*WDI_SetP2PGONOAReq*/
5121#endif
5122
5123/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005124 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005125 UMAC wanted to add STA self while opening any new session
5126 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005128
5129
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005132
Jeff Johnson295189b2012-06-20 16:38:30 -07005133 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 callback
5135
5136 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 @return Result of the function call
5138*/
5139WDI_Status
5140WDI_AddSTASelfReq
5141(
5142 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5143 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5144 void* pUserData
5145)
5146{
5147 WDI_EventInfoType wdiEventData;
5148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5149
5150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 ------------------------------------------------------------------------*/
5153 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5154 {
5155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5156 "WDI API call before module is initialized - Fail request");
5157
Jeff Johnsone7245742012-09-05 17:12:55 -07005158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 }
5160
5161 /*------------------------------------------------------------------------
5162 Fill in Event data and post to the Main FSM
5163 ------------------------------------------------------------------------*/
5164 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5166 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5167 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005168 wdiEventData.pUserData = pUserData;
5169
5170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5171
5172}/*WDI_AddSTASelfReq*/
5173
5174
Jeff Johnsone7245742012-09-05 17:12:55 -07005175#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005176/**
5177 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5178 the device of a successful add TSpec negotiation. HW
5179 needs to receive the TSpec Info from the UMAC in order
5180 to configure properly the QoS data traffic. Upon the
5181 call of this API the WLAN DAL will pack and send a HAL
5182 Add TS request message to the lower RIVA sub-system if
5183 DAL is in state STARTED.
5184
5185 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005186 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005187
5188 WDI_PostAssocReq must have been called.
5189
5190 @param wdiAddTsReqParams: the add TS parameters as specified by
5191 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005192
Jeff Johnson295189b2012-06-20 16:38:30 -07005193 wdiAddTsRspCb: callback for passing back the response of
5194 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005195
Jeff Johnson295189b2012-06-20 16:38:30 -07005196 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005197 callback
5198
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 @see WDI_PostAssocReq
5200 @return Result of the function call
5201*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005202WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005203WDI_AggrAddTSReq
5204(
5205 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5206 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5207 void* pUserData
5208)
5209{
5210 WDI_EventInfoType wdiEventData;
5211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5212
5213 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005214 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 ------------------------------------------------------------------------*/
5216 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5217 {
5218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5219 "WDI API call before module is initialized - Fail request");
5220
Jeff Johnsone7245742012-09-05 17:12:55 -07005221 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 }
5223
5224 /*------------------------------------------------------------------------
5225 Fill in Event data and post to the Main FSM
5226 ------------------------------------------------------------------------*/
5227 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005228 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5229 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5230 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 wdiEventData.pUserData = pUserData;
5232
5233 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5234
5235}/*WDI_AggrAddTSReq*/
5236
5237#endif /* WLAN_FEATURE_VOWIFI_11R */
5238
5239#ifdef ANI_MANF_DIAG
5240/**
5241 @brief WDI_FTMCommandReq
5242 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005243
5244 @param ftmCommandReq: FTM Command Body
5245 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005246 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005247
Jeff Johnson295189b2012-06-20 16:38:30 -07005248 @see
5249 @return Result of the function call
5250*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005251WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005252WDI_FTMCommandReq
5253(
5254 WDI_FTMCommandReqType *ftmCommandReq,
5255 WDI_FTMCommandRspCb ftmCommandRspCb,
5256 void *pUserData
5257)
5258{
5259 WDI_EventInfoType wdiEventData;
5260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5261
5262 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005263 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005264 ------------------------------------------------------------------------*/
5265 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5266 {
5267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5268 "WDI API call before module is initialized - Fail request");
5269
Jeff Johnsone7245742012-09-05 17:12:55 -07005270 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005271 }
5272
5273 /*------------------------------------------------------------------------
5274 Fill in Event data and post to the Main FSM
5275 ------------------------------------------------------------------------*/
5276 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5277 wdiEventData.pEventData = (void *)ftmCommandReq;
5278 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5279 wdiEventData.pCBfnc = ftmCommandRspCb;
5280 wdiEventData.pUserData = pUserData;
5281
5282 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5283}
Jeff Johnsone7245742012-09-05 17:12:55 -07005284#endif /* ANI_MANF_DIAG */
Jeff Johnson295189b2012-06-20 16:38:30 -07005285/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005286 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005287
5288 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005290
5291
5292 @param pwdiResumeReqParams: as specified by
5293 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005294
Jeff Johnson295189b2012-06-20 16:38:30 -07005295 wdiResumeReqRspCb: callback for passing back the response of
5296 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005297
Jeff Johnson295189b2012-06-20 16:38:30 -07005298 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005299 callback
5300
5301 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005302 @return Result of the function call
5303*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005304WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005305WDI_HostResumeReq
5306(
5307 WDI_ResumeParamsType* pwdiResumeReqParams,
5308 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5309 void* pUserData
5310)
5311{
5312 WDI_EventInfoType wdiEventData;
5313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5314
5315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 ------------------------------------------------------------------------*/
5318 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5319 {
5320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5321 "WDI API call before module is initialized - Fail request");
5322
Jeff Johnsone7245742012-09-05 17:12:55 -07005323 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 }
5325
5326 /*------------------------------------------------------------------------
5327 Fill in Event data and post to the Main FSM
5328 ------------------------------------------------------------------------*/
5329 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005330 wdiEventData.pEventData = pwdiResumeReqParams;
5331 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5332 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005333 wdiEventData.pUserData = pUserData;
5334
5335 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5336
5337}/*WDI_HostResumeReq*/
5338
5339/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005340 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005341
5342 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005343 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005344
5345
5346 @param pwdiDelStaSelfReqParams: as specified by
5347 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005348
Jeff Johnson295189b2012-06-20 16:38:30 -07005349 wdiDelStaSelfRspCb: callback for passing back the response of
5350 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005351
Jeff Johnson295189b2012-06-20 16:38:30 -07005352 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005353 callback
5354
Jeff Johnson295189b2012-06-20 16:38:30 -07005355 @see WDI_PostAssocReq
5356 @return Result of the function call
5357*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005358WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005359WDI_DelSTASelfReq
5360(
5361 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5362 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5363 void* pUserData
5364)
5365{
5366 WDI_EventInfoType wdiEventData;
5367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5368
5369 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005370 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005371 ------------------------------------------------------------------------*/
5372 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5373 {
5374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5375 "WDI API call before module is initialized - Fail request");
5376
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 }
5379
5380 /*------------------------------------------------------------------------
5381 Fill in Event data and post to the Main FSM
5382 ------------------------------------------------------------------------*/
5383 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005384 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5385 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5386 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 wdiEventData.pUserData = pUserData;
5388
5389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5390
5391}/*WDI_AggrAddTSReq*/
5392
5393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5395 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 Upon the call of this API the WLAN DAL will pack
5397 and send a HAL Set Tx Per Tracking request message to the
5398 lower RIVA sub-system if DAL is in state STARTED.
5399
5400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005402
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005404 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005405
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 pwdiSetTxPerTrackingRspCb: callback for passing back the
5407 response of the set Tx PER Tracking configurations operation received
5408 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005409
Jeff Johnson295189b2012-06-20 16:38:30 -07005410 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005411 callback
5412
Jeff Johnson295189b2012-06-20 16:38:30 -07005413 @return Result of the function call
5414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005416WDI_SetTxPerTrackingReq
5417(
5418 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5419 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5420 void* pUserData
5421)
5422{
5423 WDI_EventInfoType wdiEventData;
5424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5425
5426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005428 ------------------------------------------------------------------------*/
5429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5430 {
5431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5432 "WDI API call before module is initialized - Fail request");
5433
Jeff Johnsone7245742012-09-05 17:12:55 -07005434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 }
5436
5437 /*------------------------------------------------------------------------
5438 Fill in Event data and post to the Main FSM
5439 ------------------------------------------------------------------------*/
5440 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005441 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005442 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005443 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005444 wdiEventData.pUserData = pUserData;
5445
5446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5447
5448}/*WDI_SetTxPerTrackingReq*/
5449
5450/**
5451 @brief WDI_SetTmLevelReq
5452 If HW Thermal condition changed, driver should react based on new
5453 HW thermal condition.
5454
5455 @param pwdiSetTmLevelReq: New thermal condition information
5456
5457 pwdiSetTmLevelRspCb: callback
5458
5459 usrData: user data will be passed back with the
5460 callback
5461
5462 @return Result of the function call
5463*/
5464WDI_Status
5465WDI_SetTmLevelReq
5466(
5467 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5468 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5469 void *usrData
5470)
5471{
5472 WDI_EventInfoType wdiEventData;
5473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5474
5475 /*------------------------------------------------------------------------
5476 Sanity Check
5477 ------------------------------------------------------------------------*/
5478 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5479 {
5480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5481 "WDI API call before module is initialized - Fail request");
5482
5483 return WDI_STATUS_E_NOT_ALLOWED;
5484 }
5485
5486 /*------------------------------------------------------------------------
5487 Fill in Event data and post to the Main FSM
5488 ------------------------------------------------------------------------*/
5489 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5490 wdiEventData.pEventData = pwdiSetTmLevelReq;
5491 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5492 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5493 wdiEventData.pUserData = usrData;
5494
5495 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5496}
5497
5498/**
5499 @brief WDI_HostSuspendInd
5500
5501 Suspend Indication from the upper layer will be sent
5502 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005503
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005505
5506 @see
5507
Jeff Johnson295189b2012-06-20 16:38:30 -07005508 @return Status of the request
5509*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005510WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005511WDI_HostSuspendInd
5512(
5513 WDI_SuspendParamsType* pwdiSuspendIndParams
5514)
5515{
5516
5517 WDI_EventInfoType wdiEventData;
5518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5519
5520 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 ------------------------------------------------------------------------*/
5523 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5524 {
5525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5526 "WDI API call before module is initialized - Fail request");
5527
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005529 }
5530
5531 /*------------------------------------------------------------------------
5532 Fill in Event data and post to the Main FSM
5533 ------------------------------------------------------------------------*/
5534 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 wdiEventData.pEventData = pwdiSuspendIndParams;
5536 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5537 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 wdiEventData.pUserData = NULL;
5539
5540 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5541
5542}/*WDI_HostSuspendInd*/
5543
5544/**
5545 @brief WDI_HALDumpCmdReq
5546 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005547
5548 @param halDumpCmdReqParams: Hal Dump Command Body
5549 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005550 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005551
Jeff Johnson295189b2012-06-20 16:38:30 -07005552 @see
5553 @return Result of the function call
5554*/
5555WDI_Status WDI_HALDumpCmdReq
5556(
5557 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5558 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5559 void *pUserData
5560)
5561{
5562 WDI_EventInfoType wdiEventData;
5563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5564
5565 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005566 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 ------------------------------------------------------------------------*/
5568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5569 {
5570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5571 "WDI API call before module is initialized - Fail request");
5572
Jeff Johnsone7245742012-09-05 17:12:55 -07005573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005574 }
5575
5576 /*------------------------------------------------------------------------
5577 Fill in Event data and post to the Main FSM
5578 ------------------------------------------------------------------------*/
5579 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5580 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5581 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5582 wdiEventData.pCBfnc = halDumpCmdRspCb;
5583 wdiEventData.pUserData = pUserData;
5584
5585 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5586}
5587
Jeff Johnsone7245742012-09-05 17:12:55 -07005588/*============================================================================
5589
Jeff Johnson295189b2012-06-20 16:38:30 -07005590 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005591
Jeff Johnson295189b2012-06-20 16:38:30 -07005592 ============================================================================*/
5593
5594/**
5595 @brief Main FSM Start function for all states except BUSY
5596
Jeff Johnsone7245742012-09-05 17:12:55 -07005597
5598 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005599 wdiEV: event posted to the main DAL FSM
5600 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 structure
5602
Jeff Johnson295189b2012-06-20 16:38:30 -07005603 @see
5604 @return Result of the function call
5605*/
5606WDI_Status
5607WDI_PostMainEvent
5608(
Jeff Johnsone7245742012-09-05 17:12:55 -07005609 WDI_ControlBlockType* pWDICtx,
5610 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005612
Jeff Johnson295189b2012-06-20 16:38:30 -07005613)
5614{
Jeff Johnsone7245742012-09-05 17:12:55 -07005615 WDI_Status wdiStatus;
5616 WDI_MainFuncType pfnWDIMainEvHdlr;
5617 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5619
5620 /*-------------------------------------------------------------------------
5621 Sanity check
5622 -------------------------------------------------------------------------*/
5623 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5624 ( wdiEV >= WDI_MAX_EVENT ))
5625 {
5626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5627 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5628 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005630 }
5631
5632 /*Access to the global state must be locked */
5633 wpalMutexAcquire(&pWDICtx->wptMutex);
5634
5635 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005636 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005637
5638 wdiOldState = pWDICtx->uGlobalState;
5639
5640 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005641 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5642 response comes from CCPU for the request sent by host:
5643 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 -07005644 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 -07005645 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005646 CCPU:
5647 don't change the state */
5648 if ( WDI_RESPONSE_EVENT != wdiEV)
5649 {
5650 /*Transition to BUSY State - the request is now being processed by the FSM,
5651 if the request fails we shall transition back to the old state, if not
5652 the request will manage its own state transition*/
5653 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5654 }
5655 /* If the state function associated with the EV is NULL it means that this
5656 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005658 {
5659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005660 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005661 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005662 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005663 }
5664 else
5665 {
5666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005667 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005668 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005669 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 }
5671
5672 /* If a request handles itself well it will end up in a success or in a
5673 pending
5674 Success - means that the request was processed and the proper state
5675 transition already occurred or will occur when the resp is received
5676 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005677
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 Pending - means the request could not be processed at this moment in time
5679 because the FSM was already busy so no state transition or dequeueing
5680 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005681
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 Success for synchronous case means that the transition may occur and
5683 processing of pending requests may continue - so it should go through
5684 and restores the state and continue processing queued requests*/
5685 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5686 ( WDI_STATUS_PENDING != wdiStatus ))
5687 {
5688 if ( WDI_RESPONSE_EVENT != wdiEV)
5689 {
5690 /*The request has failed or could not be processed - transition back to
5691 the old state - check to see if anything was queued and try to execute
5692 The dequeue logic should post a message to a thread and return - no
5693 actual processing can occur */
5694 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5695 }
5696 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005697
Jeff Johnson295189b2012-06-20 16:38:30 -07005698 }
5699
5700 /* we have completed processing the event */
5701 wpalMutexRelease(&pWDICtx->wptMutex);
5702
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005704
5705}/*WDI_PostMainEvent*/
5706
5707
5708/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005709 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005710--------------------------------------------------------------------------*/
5711/**
5712 @brief Main FSM Start function for all states except BUSY
5713
Jeff Johnsone7245742012-09-05 17:12:55 -07005714
5715 @param pWDICtx: pointer to the WLAN DAL context
5716 pEventData: pointer to the event information structure
5717
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 @see
5719 @return Result of the function call
5720*/
5721WDI_Status
5722WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005723(
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 WDI_ControlBlockType* pWDICtx,
5725 WDI_EventInfoType* pEventData
5726)
5727{
5728
5729 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005730 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005731 ----------------------------------------------------------------------*/
5732 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5733 {
5734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005735 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005736 pWDICtx, pEventData);
5737 return WDI_STATUS_E_FAILURE;
5738 }
5739
5740 wpalMutexAcquire(&pWDICtx->wptMutex);
5741
5742 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005743 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 ----------------------------------------------------------------------*/
5745 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5746 {
5747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5748 "Control Transport not yet Open - queueing the request");
5749
5750 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005752
5753 wpalMutexRelease(&pWDICtx->wptMutex);
5754 return WDI_STATUS_PENDING;
5755 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005756
Jeff Johnson295189b2012-06-20 16:38:30 -07005757 wpalMutexRelease(&pWDICtx->wptMutex);
5758
5759 /*Return Success*/
5760 return WDI_ProcessRequest( pWDICtx, pEventData );
5761
5762}/*WDI_MainStart*/
5763
5764/**
5765 @brief Main FSM Response function for state INIT
5766
Jeff Johnsone7245742012-09-05 17:12:55 -07005767
5768 @param pWDICtx: pointer to the WLAN DAL context
5769 pEventData: pointer to the event information structure
5770
Jeff Johnson295189b2012-06-20 16:38:30 -07005771 @see
5772 @return Result of the function call
5773*/
5774WDI_Status
5775WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005776(
Jeff Johnson295189b2012-06-20 16:38:30 -07005777 WDI_ControlBlockType* pWDICtx,
5778 WDI_EventInfoType* pEventData
5779)
5780{
5781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005782 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005783 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005784 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005785
5786 /*Return Success*/
5787 return WDI_STATUS_E_NOT_ALLOWED;
5788}/* WDI_MainRspInit */
5789
5790/**
5791 @brief Main FSM Close function for all states except BUSY
5792
Jeff Johnsone7245742012-09-05 17:12:55 -07005793
5794 @param pWDICtx: pointer to the WLAN DAL context
5795 pEventData: pointer to the event information structure
5796
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 @see
5798 @return Result of the function call
5799*/
5800WDI_Status
5801WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005802(
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 WDI_ControlBlockType* pWDICtx,
5804 WDI_EventInfoType* pEventData
5805)
5806{
5807
5808 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005809 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005810 ----------------------------------------------------------------------*/
5811 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5812 {
5813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005815 pWDICtx, pEventData);
5816 return WDI_STATUS_E_FAILURE;
5817 }
5818
5819 /*Return Success*/
5820 return WDI_ProcessRequest( pWDICtx, pEventData );
5821
5822}/*WDI_MainClose*/
5823/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005824 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005825--------------------------------------------------------------------------*/
5826/**
5827 @brief Main FSM Start function for state STARTED
5828
Jeff Johnsone7245742012-09-05 17:12:55 -07005829
5830 @param pWDICtx: pointer to the WLAN DAL context
5831 pEventData: pointer to the event information structure
5832
Jeff Johnson295189b2012-06-20 16:38:30 -07005833 @see
5834 @return Result of the function call
5835*/
5836WDI_Status
5837WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005838(
Jeff Johnson295189b2012-06-20 16:38:30 -07005839 WDI_ControlBlockType* pWDICtx,
5840 WDI_EventInfoType* pEventData
5841)
5842{
5843 WDI_StartRspCb wdiStartRspCb = NULL;
5844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5845
5846 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005847 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 ----------------------------------------------------------------------*/
5849 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5850 {
5851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005852 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005853 pWDICtx, pEventData);
5854 return WDI_STATUS_E_FAILURE;
5855 }
5856
5857 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005858 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 ----------------------------------------------------------------------*/
5860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005861 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005862
5863 wpalMutexAcquire(&pWDICtx->wptMutex);
5864
5865 /*Transition back to started because the post function transitioned us to
5866 busy*/
5867 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5868
5869 /*Check to see if any request is pending*/
5870 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005871
Jeff Johnson295189b2012-06-20 16:38:30 -07005872 wpalMutexRelease(&pWDICtx->wptMutex);
5873
5874 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5876
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 /*Notify UMAC*/
5878 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5879
5880 /*Return Success*/
5881 return WDI_STATUS_SUCCESS;
5882
5883}/*WDI_MainStartStarted*/
5884
5885/**
5886 @brief Main FSM Stop function for state STARTED
5887
Jeff Johnsone7245742012-09-05 17:12:55 -07005888
5889 @param pWDICtx: pointer to the WLAN DAL context
5890 pEventData: pointer to the event information structure
5891
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 @see
5893 @return Result of the function call
5894*/
5895WDI_Status
5896WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005897(
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 WDI_ControlBlockType* pWDICtx,
5899 WDI_EventInfoType* pEventData
5900)
5901{
5902 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005904 ----------------------------------------------------------------------*/
5905 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5906 {
5907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005908 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005909 pWDICtx, pEventData);
5910 return WDI_STATUS_E_FAILURE;
5911 }
5912
5913 /*State at this point is BUSY - because we enter this state before posting
5914 an event to the FSM in order to prevent potential race conditions*/
5915
5916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5917 "Processing stop request in FSM");
5918
5919 /*Return Success*/
5920 return WDI_ProcessRequest( pWDICtx, pEventData );
5921
5922}/*WDI_MainStopStarted*/
5923/**
5924 @brief Main FSM Request function for state started
5925
Jeff Johnsone7245742012-09-05 17:12:55 -07005926
5927 @param pWDICtx: pointer to the WLAN DAL context
5928 pEventData: pointer to the event information structure
5929
Jeff Johnson295189b2012-06-20 16:38:30 -07005930 @see
5931 @return Result of the function call
5932*/
5933WDI_Status
5934WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005935(
Jeff Johnson295189b2012-06-20 16:38:30 -07005936 WDI_ControlBlockType* pWDICtx,
5937 WDI_EventInfoType* pEventData
5938)
5939{
5940
5941 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 ----------------------------------------------------------------------*/
5944 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5945 {
5946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005947 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005948 pWDICtx, pEventData);
5949 return WDI_STATUS_E_FAILURE;
5950 }
5951
5952 /*State at this point is BUSY - because we enter this state before posting
5953 an event to the FSM in order to prevent potential race conditions*/
5954
5955 /*Return Success*/
5956 return WDI_ProcessRequest( pWDICtx, pEventData );
5957
5958}/*WDI_MainReqStarted*/
5959
5960/**
5961 @brief Main FSM Response function for all states except INIT
5962
Jeff Johnsone7245742012-09-05 17:12:55 -07005963
5964 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005965 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07005966
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 @see
5968 @return Result of the function call
5969*/
5970WDI_Status
5971WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07005972(
Jeff Johnson295189b2012-06-20 16:38:30 -07005973 WDI_ControlBlockType* pWDICtx,
5974 WDI_EventInfoType* pEventData
5975)
5976{
Jeff Johnsone7245742012-09-05 17:12:55 -07005977 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005978 wpt_boolean expectedResponse;
5979
5980 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005981 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005982 ----------------------------------------------------------------------*/
5983 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5984 {
5985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 pWDICtx, pEventData);
5988 return WDI_STATUS_E_FAILURE;
5989 }
5990
5991 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
5992 {
5993 /* we received an expected response */
5994 expectedResponse = eWLAN_PAL_TRUE;
5995
5996 /*We expect that we will transition to started after this processing*/
5997 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
5998
5999 /* we are no longer expecting a response */
6000 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6001 }
6002 else
6003 {
6004 /* we received an indication or unexpected response */
6005 expectedResponse = eWLAN_PAL_FALSE;
6006 /* for indications no need to update state from what it is right
6007 now, unless it explicitly does it in the indication handler (say
6008 for device failure ind) */
6009 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6010 }
6011
6012 /*Process the response and indication */
6013 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6014
6015 /*Lock the CB as we are about to do a state transition*/
6016 wpalMutexAcquire(&pWDICtx->wptMutex);
6017
6018 /*Transition to the expected state after the response processing
6019 - this should always be started state with the following exceptions:
6020 1. processing of a failed start response
6021 2. device failure detected while processing response
6022 3. stop response received*/
6023 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006024
Jeff Johnson295189b2012-06-20 16:38:30 -07006025 /*Dequeue request that may have been queued while we were waiting for the
6026 response */
6027 if ( expectedResponse )
6028 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006029 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006030 }
6031
6032 wpalMutexRelease(&pWDICtx->wptMutex);
6033
6034 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006035 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006036
6037}/*WDI_MainRsp*/
6038
6039/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006040 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006041--------------------------------------------------------------------------*/
6042/**
6043 @brief Main FSM Stop function for state STOPPED
6044
Jeff Johnsone7245742012-09-05 17:12:55 -07006045
6046 @param pWDICtx: pointer to the WLAN DAL context
6047 pEventData: pointer to the event information structure
6048
Jeff Johnson295189b2012-06-20 16:38:30 -07006049 @see
6050 @return Result of the function call
6051*/
6052WDI_Status
6053WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006054(
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 WDI_ControlBlockType* pWDICtx,
6056 WDI_EventInfoType* pEventData
6057)
6058{
6059 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006060 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006061 ----------------------------------------------------------------------*/
6062 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6063 {
6064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006065 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006066 pWDICtx, pEventData);
6067 return WDI_STATUS_E_FAILURE;
6068 }
6069
6070 /*We should normally not get a STOP request if we are already stopped
6071 since we should normally be stopped by the UMAC. However in some
6072 error situations we put ourselves in the stopped state without the
6073 UMAC knowing, so when we get a STOP request in this state we still
6074 process it since we need to clean up the underlying state */
6075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6076 "Processing stop request while stopped in FSM");
6077
6078 /*Return Success*/
6079 return WDI_ProcessRequest( pWDICtx, pEventData );
6080
6081}/*WDI_MainStopStopped*/
6082
6083/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006084 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006085--------------------------------------------------------------------------*/
6086/**
6087 @brief Main FSM Start function for state BUSY
6088
Jeff Johnsone7245742012-09-05 17:12:55 -07006089
6090 @param pWDICtx: pointer to the WLAN DAL context
6091 pEventData: pointer to the event information structure
6092
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 @see
6094 @return Result of the function call
6095*/
6096WDI_Status
6097WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006098(
Jeff Johnson295189b2012-06-20 16:38:30 -07006099 WDI_ControlBlockType* pWDICtx,
6100 WDI_EventInfoType* pEventData
6101)
6102{
6103 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006104 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006105 ----------------------------------------------------------------------*/
6106 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6107 {
6108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006109 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006110 pWDICtx, pEventData);
6111 return WDI_STATUS_E_FAILURE;
6112 }
6113
6114 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 ----------------------------------------------------------------------*/
6117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6118 "WDI Busy state - queue start request");
6119
6120 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006121 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006122
6123 /*Return Success*/
6124 return WDI_STATUS_PENDING;
6125}/*WDI_MainStartBusy*/
6126
6127/**
6128 @brief Main FSM Stop function for state BUSY
6129
Jeff Johnsone7245742012-09-05 17:12:55 -07006130
6131 @param pWDICtx: pointer to the WLAN DAL context
6132 pEventData: pointer to the event information structure
6133
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 @see
6135 @return Result of the function call
6136*/
6137WDI_Status
6138WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006139(
Jeff Johnson295189b2012-06-20 16:38:30 -07006140 WDI_ControlBlockType* pWDICtx,
6141 WDI_EventInfoType* pEventData
6142)
6143{
6144 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006145 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006146 ----------------------------------------------------------------------*/
6147 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6148 {
6149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006150 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 pWDICtx, pEventData);
6152 return WDI_STATUS_E_FAILURE;
6153 }
6154
6155 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006156 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006157 ----------------------------------------------------------------------*/
6158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6159 "WDI Busy state - queue stop request");
6160
Jeff Johnsone7245742012-09-05 17:12:55 -07006161 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006162 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006163
Jeff Johnson295189b2012-06-20 16:38:30 -07006164}/*WDI_MainStopBusy*/
6165
6166/**
6167 @brief Main FSM Request function for state BUSY
6168
Jeff Johnsone7245742012-09-05 17:12:55 -07006169
6170 @param pWDICtx: pointer to the WLAN DAL context
6171 pEventData: pointer to the event information structure
6172
Jeff Johnson295189b2012-06-20 16:38:30 -07006173 @see
6174 @return Result of the function call
6175*/
6176WDI_Status
6177WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006178(
Jeff Johnson295189b2012-06-20 16:38:30 -07006179 WDI_ControlBlockType* pWDICtx,
6180 WDI_EventInfoType* pEventData
6181)
6182{
6183 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006185 ----------------------------------------------------------------------*/
6186 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6187 {
6188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006189 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006190 pWDICtx, pEventData);
6191 return WDI_STATUS_E_FAILURE;
6192 }
6193
6194 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006195 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006196 ----------------------------------------------------------------------*/
6197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6198 "WDI Busy state - queue request %d because waiting for response %d",
6199 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6200
Jeff Johnsone7245742012-09-05 17:12:55 -07006201 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006203
Jeff Johnson295189b2012-06-20 16:38:30 -07006204}/*WDI_MainReqBusy*/
6205/**
6206 @brief Main FSM Close function for state BUSY
6207
Jeff Johnsone7245742012-09-05 17:12:55 -07006208
6209 @param pWDICtx: pointer to the WLAN DAL context
6210 pEventData: pointer to the event information structure
6211
Jeff Johnson295189b2012-06-20 16:38:30 -07006212 @see
6213 @return Result of the function call
6214*/
6215WDI_Status
6216WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006217(
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 WDI_ControlBlockType* pWDICtx,
6219 WDI_EventInfoType* pEventData
6220)
6221{
6222 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 ----------------------------------------------------------------------*/
6225 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6226 {
6227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 pWDICtx, pEventData);
6230 return WDI_STATUS_E_FAILURE;
6231 }
6232
6233 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006234 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006235 ----------------------------------------------------------------------*/
6236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6237 "WDI Busy state - queue close request");
6238
Jeff Johnsone7245742012-09-05 17:12:55 -07006239 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006241
Jeff Johnson295189b2012-06-20 16:38:30 -07006242}/*WDI_MainCloseBusy*/
6243
6244/**
6245 @brief Main FSM Shutdown function for INIT & STARTED states
6246
6247
6248 @param pWDICtx: pointer to the WLAN DAL context
6249 pEventData: pointer to the event information structure
6250
6251 @see
6252 @return Result of the function call
6253*/
6254WDI_Status
6255WDI_MainShutdown
6256(
6257 WDI_ControlBlockType* pWDICtx,
6258 WDI_EventInfoType* pEventData
6259)
6260{
6261 /*--------------------------------------------------------------------
6262 Sanity Check
6263 ----------------------------------------------------------------------*/
6264 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6265 {
6266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6267 "Invalid parameters on Main Start %x %x",
6268 pWDICtx, pEventData);
6269 return WDI_STATUS_E_FAILURE;
6270 }
6271
6272 /*State at this point is BUSY - because we enter this state before posting
6273 an event to the FSM in order to prevent potential race conditions*/
6274
6275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6276 "Processing shutdown request in FSM");
6277
6278 /*Return Success*/
6279 return WDI_ProcessRequest( pWDICtx, pEventData );
6280
6281}/*WDI_MainShutdown*/
6282
6283/**
6284 @brief Main FSM Shutdown function for BUSY state
6285
6286
6287 @param pWDICtx: pointer to the WLAN DAL context
6288 pEventData: pointer to the event information structure
6289
6290 @see
6291 @return Result of the function call
6292*/
6293WDI_Status
6294WDI_MainShutdownBusy
6295(
6296 WDI_ControlBlockType* pWDICtx,
6297 WDI_EventInfoType* pEventData
6298)
6299{
6300 /*--------------------------------------------------------------------
6301 Sanity Check
6302 ----------------------------------------------------------------------*/
6303 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6304 {
6305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6306 "Invalid parameters on Main Start %x %x",
6307 pWDICtx, pEventData);
6308 return WDI_STATUS_E_FAILURE;
6309 }
6310
6311 /* If you are waiting for a HAL response at this stage, you are not
6312 * going to get it. Riva is already shutdown/crashed.
6313 */
6314 wpalTimerStop(&gWDICb.wptResponseTimer);
6315
6316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6317 "Processing shutdown request in FSM: Busy state ");
6318
6319 return WDI_ProcessRequest( pWDICtx, pEventData );
6320
6321}/*WDI_MainShutdownBusy*/
6322
6323
Jeff Johnsone7245742012-09-05 17:12:55 -07006324/*=======================================================================
6325
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006327
Jeff Johnson295189b2012-06-20 16:38:30 -07006328*=======================================================================*/
6329
6330/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006331 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006332========================================================================*/
6333/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006334 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006335 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006336
6337 @param pWDICtx: pointer to the WLAN DAL context
6338 pEventData: pointer to the event information structure
6339
Jeff Johnson295189b2012-06-20 16:38:30 -07006340 @see
6341 @return Result of the function call
6342*/
6343WDI_Status
6344WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006345(
Jeff Johnson295189b2012-06-20 16:38:30 -07006346 WDI_ControlBlockType* pWDICtx,
6347 WDI_EventInfoType* pEventData
6348)
6349{
6350 WDI_StartReqParamsType* pwdiStartParams = NULL;
6351 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 wpt_uint16 usDataOffset = 0;
6354 wpt_uint16 usSendSize = 0;
6355
Jeff Johnsone7245742012-09-05 17:12:55 -07006356 tHalMacStartReqMsg halStartReq;
6357 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6359
6360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 -------------------------------------------------------------------------*/
6363 if (( NULL == pEventData ) ||
6364 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6365 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6366 {
6367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006371 }
6372
6373 /*-----------------------------------------------------------------------
6374 Get message buffer
6375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006377 pwdiStartParams->usConfigBufferLen;
6378
Jeff Johnsone7245742012-09-05 17:12:55 -07006379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006380 usLen,
6381 &pSendBuffer, &usDataOffset, &usSendSize))||
6382 ( usSendSize < (usDataOffset + usLen )))
6383 {
6384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6385 "Unable to get send buffer in start req %x %x %x",
6386 pEventData, pwdiStartParams, wdiStartRspCb);
6387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 }
6390
6391 /*-----------------------------------------------------------------------
6392 Fill in the message
6393 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 halStartReq.startReqParams.driverType =
6395 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006396
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 halStartReq.startReqParams.uConfigBufferLen =
6398 pwdiStartParams->usConfigBufferLen;
6399 wpalMemoryCopy( pSendBuffer+usDataOffset,
6400 &halStartReq.startReqParams,
6401 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006402
Jeff Johnsone7245742012-09-05 17:12:55 -07006403 usDataOffset += sizeof(halStartReq.startReqParams);
6404 wpalMemoryCopy( pSendBuffer+usDataOffset,
6405 pwdiStartParams->pConfigBuffer,
6406 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006407
6408 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006409 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006410
6411 /*Save Low Level Ind CB and associated user data - it will be used further
6412 on when an indication is coming from the lower MAC*/
6413 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006414 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006415
Jeff Johnsone7245742012-09-05 17:12:55 -07006416 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006418 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006419 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006420 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006421 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6422
Jeff Johnsone7245742012-09-05 17:12:55 -07006423
Jeff Johnson295189b2012-06-20 16:38:30 -07006424}/*WDI_ProcessStartReq*/
6425
6426/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006427 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006428 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006429
6430 @param pWDICtx: pointer to the WLAN DAL context
6431 pEventData: pointer to the event information structure
6432
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 @see
6434 @return Result of the function call
6435*/
6436WDI_Status
6437WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006438(
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 WDI_ControlBlockType* pWDICtx,
6440 WDI_EventInfoType* pEventData
6441)
6442{
6443 WDI_StopReqParamsType* pwdiStopParams = NULL;
6444 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006445 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 wpt_uint16 usDataOffset = 0;
6447 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006448 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006449 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6451
6452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006454 -------------------------------------------------------------------------*/
6455 if (( NULL == pEventData ) ||
6456 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6457 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6458 {
6459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006463 }
6464
6465 /*-----------------------------------------------------------------------
6466 Get message buffer
6467 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006468 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 sizeof(halStopReq.stopReqParams),
6470 &pSendBuffer, &usDataOffset, &usSendSize))||
6471 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6472 {
6473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6474 "Unable to get send buffer in stop req %x %x %x",
6475 pEventData, pwdiStopParams, wdiStopRspCb);
6476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006478 }
6479
6480 /*-----------------------------------------------------------------------
6481 Fill in the message
6482 -----------------------------------------------------------------------*/
6483 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6484 pwdiStopParams->wdiStopReason);
6485
Jeff Johnsone7245742012-09-05 17:12:55 -07006486 wpalMemoryCopy( pSendBuffer+usDataOffset,
6487 &halStopReq.stopReqParams,
6488 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006489
6490 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006491 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006492
6493 /*! TO DO: stop the data services */
6494 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6495 {
6496 /*Stop the STA Table !UT- check this logic again
6497 It is safer to do it here than on the response - because a stop is imminent*/
6498 WDI_STATableStop(pWDICtx);
6499
6500 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006501 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6502 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006503 {
6504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6505 "WDI Init failed to reset power state event");
6506
Jeff Johnsone7245742012-09-05 17:12:55 -07006507 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006508 return VOS_STATUS_E_FAILURE;
6509 }
6510 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006511 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6512 if( eWLAN_PAL_STATUS_SUCCESS != status )
6513 {
6514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6515 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6516 WDI_ASSERT(0);
6517 return WDI_STATUS_E_FAILURE;
6518 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006522 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6523 WDI_SET_POWER_STATE_TIMEOUT);
6524 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006525 {
6526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6527 "WDI Init failed to wait on an event");
6528
Jeff Johnsone7245742012-09-05 17:12:55 -07006529 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006530 return VOS_STATUS_E_FAILURE;
6531 }
6532 }
6533
6534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006535 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006536 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006537 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006538 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6539
6540}/*WDI_ProcessStopReq*/
6541
6542/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006543 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006545
6546 @param pWDICtx: pointer to the WLAN DAL context
6547 pEventData: pointer to the event information structure
6548
Jeff Johnson295189b2012-06-20 16:38:30 -07006549 @see
6550 @return Result of the function call
6551*/
6552WDI_Status
6553WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006554(
Jeff Johnson295189b2012-06-20 16:38:30 -07006555 WDI_ControlBlockType* pWDICtx,
6556 WDI_EventInfoType* pEventData
6557)
6558{
Jeff Johnsone7245742012-09-05 17:12:55 -07006559 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6561
6562 /*Lock control block for cleanup*/
6563 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006564
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 /*Clear all pending request*/
6566 WDI_ClearPendingRequests(pWDICtx);
6567
6568 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006569 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006570
6571 /* Close Data transport*/
6572 /* FTM mode does not open Data Path */
6573 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6574 {
6575 WDTS_Close(pWDICtx);
6576 }
6577
6578 /*Close the STA Table !UT- check this logic again*/
6579 WDI_STATableClose(pWDICtx);
6580
6581 /*close the PAL */
6582 wptStatus = wpalClose(pWDICtx->pPALContext);
6583 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6584 {
6585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6586 "Failed to wpal Close %d", wptStatus);
6587 WDI_ASSERT(0);
6588 }
6589
6590 /*Transition back to init state*/
6591 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6592
6593 wpalMutexRelease(&pWDICtx->wptMutex);
6594
6595 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006597
Jeff Johnsone7245742012-09-05 17:12:55 -07006598 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006599}/*WDI_ProcessCloseReq*/
6600
6601
6602/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006603 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006604===========================================================================*/
6605
6606/**
6607 @brief Process Init Scan Request function (called when Main FSM
6608 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006609
6610 @param pWDICtx: pointer to the WLAN DAL context
6611 pEventData: pointer to the event information structure
6612
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 @see
6614 @return Result of the function call
6615*/
6616WDI_Status
6617WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006618(
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 WDI_ControlBlockType* pWDICtx,
6620 WDI_EventInfoType* pEventData
6621)
6622{
6623 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6624 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006625 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006626 wpt_uint16 usDataOffset = 0;
6627 wpt_uint16 usSendSize = 0;
6628 wpt_uint8 i = 0;
6629
6630 tHalInitScanReqMsg halInitScanReqMsg;
6631
Jeff Johnsone7245742012-09-05 17:12:55 -07006632 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 * It shold be removed once host and riva changes are in sync*/
6634 tHalInitScanConReqMsg halInitScanConReqMsg;
6635
6636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6637
6638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006640 -------------------------------------------------------------------------*/
6641 if (( NULL == pEventData ) ||
6642 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6643 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6644 {
6645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006649 }
6650
6651#if 0
6652 wpalMutexAcquire(&pWDICtx->wptMutex);
6653 /*-----------------------------------------------------------------------
6654 Check to see if SCAN is already in progress - if so reject the req
6655 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006656 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 -----------------------------------------------------------------------*/
6658 if ( pWDICtx->bScanInProgress )
6659 {
6660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6661 "Scan is already in progress - subsequent scan is not allowed"
6662 " until the first scan completes");
6663
6664 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006666 }
6667
Jeff Johnsone7245742012-09-05 17:12:55 -07006668 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6669 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006670
6671 wpalMutexRelease(&pWDICtx->wptMutex);
6672#endif
6673
Viral Modi9dc288a2012-12-10 13:09:21 -08006674 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006675 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006676 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 * It shold be removed once host and riva changes are in sync*/
6678 /*-----------------------------------------------------------------------
6679 Get message buffer
6680 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 sizeof(halInitScanConReqMsg.initScanParams),
6683 &pSendBuffer, &usDataOffset, &usSendSize))||
6684 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6685 {
6686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6687 "Unable to get send buffer in init scan req %x %x %x",
6688 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6689 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006691 }
6692
6693
6694 /*-----------------------------------------------------------------------
6695 Fill in the message
6696 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006697 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6699
6700 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6701 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6702
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006705 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006706 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006707 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006708 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6709
6710 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6711 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6712
6713#ifdef WLAN_FEATURE_P2P
6714 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6715 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6716#endif
6717
Jeff Johnsone7245742012-09-05 17:12:55 -07006718 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006719 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6720
6721 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6722 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006723 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6725 }
6726
Jeff Johnsone7245742012-09-05 17:12:55 -07006727 wpalMemoryCopy( pSendBuffer+usDataOffset,
6728 &halInitScanConReqMsg.initScanParams,
6729 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006730 }
6731 else
6732 {
6733 /*-----------------------------------------------------------------------
6734 Get message buffer
6735 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006737 sizeof(halInitScanReqMsg.initScanParams),
6738 &pSendBuffer, &usDataOffset, &usSendSize))||
6739 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6740 {
6741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6742 "Unable to get send buffer in init scan req %x %x %x",
6743 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006746 }
6747
6748
6749 /*-----------------------------------------------------------------------
6750 Fill in the message
6751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006752 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6754
6755 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6756 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6757
Jeff Johnsone7245742012-09-05 17:12:55 -07006758 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006760 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006761 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006762 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6764
6765 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6766 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6767
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6770
6771 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6772 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6775 }
6776
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 wpalMemoryCopy( pSendBuffer+usDataOffset,
6778 &halInitScanReqMsg.initScanParams,
6779 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 }
6781
6782 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006783 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006784
6785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006786 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006789 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6790
6791}/*WDI_ProcessInitScanReq*/
6792
6793/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006794 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006796
6797 @param pWDICtx: pointer to the WLAN DAL context
6798 pEventData: pointer to the event information structure
6799
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 @see
6801 @return Result of the function call
6802*/
6803WDI_Status
6804WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006805(
Jeff Johnson295189b2012-06-20 16:38:30 -07006806 WDI_ControlBlockType* pWDICtx,
6807 WDI_EventInfoType* pEventData
6808)
6809{
6810 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6811 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006812 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 wpt_uint16 usDataOffset = 0;
6814 wpt_uint16 usSendSize = 0;
6815
Jeff Johnsone7245742012-09-05 17:12:55 -07006816 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6818
6819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006821 -------------------------------------------------------------------------*/
6822 if (( NULL == pEventData ) ||
6823 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6824 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6825 {
6826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006830 }
6831
6832#if 0
6833 wpalMutexAcquire(&pWDICtx->wptMutex);
6834 /*-----------------------------------------------------------------------
6835 Check to see if SCAN is already in progress - start scan is only
6836 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006837 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006838 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6841 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6842 {
6843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6844 "Scan start not allowed in this state %d %d",
6845 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006846
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006849 }
6850
Jeff Johnsone7245742012-09-05 17:12:55 -07006851 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006852
6853 wpalMutexRelease(&pWDICtx->wptMutex);
6854#endif
6855
6856 /*-----------------------------------------------------------------------
6857 Get message buffer
6858 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006859 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006860 sizeof(halStartScanReqMsg.startScanParams),
6861 &pSendBuffer, &usDataOffset, &usSendSize))||
6862 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6863 {
6864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6865 "Unable to get send buffer in start scan req %x %x %x",
6866 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006869 }
6870
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 wpalMemoryCopy( pSendBuffer+usDataOffset,
6874 &halStartScanReqMsg.startScanParams,
6875 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006876
6877 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006879
6880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006881 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006884 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6885}/*WDI_ProcessStartScanReq*/
6886
6887
6888/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006891
6892 @param pWDICtx: pointer to the WLAN DAL context
6893 pEventData: pointer to the event information structure
6894
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 @see
6896 @return Result of the function call
6897*/
6898WDI_Status
6899WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006900(
Jeff Johnson295189b2012-06-20 16:38:30 -07006901 WDI_ControlBlockType* pWDICtx,
6902 WDI_EventInfoType* pEventData
6903)
6904{
6905 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6906 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 wpt_uint16 usDataOffset = 0;
6909 wpt_uint16 usSendSize = 0;
6910
Jeff Johnsone7245742012-09-05 17:12:55 -07006911 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6913
6914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 -------------------------------------------------------------------------*/
6917 if (( NULL == pEventData ) ||
6918 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6919 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6920 {
6921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006925 }
6926
Jeff Johnsone7245742012-09-05 17:12:55 -07006927 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6928 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 * forwarded to HAL and result in hang*/
6930#if 0
6931 wpalMutexAcquire(&pWDICtx->wptMutex);
6932 /*-----------------------------------------------------------------------
6933 Check to see if SCAN is already in progress - end scan is only
6934 allowed when a scan is ongoing and the state of the scan procedure
6935 is started
6936 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
6939 {
6940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6941 "End start not allowed in this state %d %d",
6942 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006943
Jeff Johnson295189b2012-06-20 16:38:30 -07006944 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 }
6947
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006949
6950 wpalMutexRelease(&pWDICtx->wptMutex);
6951#endif
6952
6953 /*-----------------------------------------------------------------------
6954 Get message buffer
6955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 sizeof(halEndScanReqMsg.endScanParams),
6958 &pSendBuffer, &usDataOffset, &usSendSize))||
6959 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
6960 {
6961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6962 "Unable to get send buffer in start scan req %x %x %x",
6963 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
6964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 }
6967
6968 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
6969
Jeff Johnsone7245742012-09-05 17:12:55 -07006970 wpalMemoryCopy( pSendBuffer+usDataOffset,
6971 &halEndScanReqMsg.endScanParams,
6972 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006973
6974 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006975 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006976
6977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006978 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006979 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006980 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006981 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
6982}/*WDI_ProcessEndScanReq*/
6983
6984
6985/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006986 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006987 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006988
6989 @param pWDICtx: pointer to the WLAN DAL context
6990 pEventData: pointer to the event information structure
6991
Jeff Johnson295189b2012-06-20 16:38:30 -07006992 @see
6993 @return Result of the function call
6994*/
6995WDI_Status
6996WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006997(
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 WDI_ControlBlockType* pWDICtx,
6999 WDI_EventInfoType* pEventData
7000)
7001{
7002 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7003 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 wpt_uint16 usDataOffset = 0;
7006 wpt_uint16 usSendSize = 0;
7007 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007008 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007009 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7011
7012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 -------------------------------------------------------------------------*/
7015 if (( NULL == pEventData ) ||
7016 ( NULL == pEventData->pEventData) ||
7017 ( NULL == pEventData->pCBfnc))
7018 {
7019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 }
7024
7025 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7026 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007027 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7028 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 * forwarded to HAL and result in hang*/
7030#if 0
7031 wpalMutexAcquire(&pWDICtx->wptMutex);
7032 /*-----------------------------------------------------------------------
7033 Check to see if SCAN is already in progress
7034 Finish scan gets invoked any scan states. ie. abort scan
7035 It should be allowed in any states.
7036 -----------------------------------------------------------------------*/
7037 if ( !pWDICtx->bScanInProgress )
7038 {
7039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7040 "Finish start not allowed in this state %d",
7041 pWDICtx->bScanInProgress );
7042
7043 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 }
7046
7047 /*-----------------------------------------------------------------------
7048 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007051 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7052 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 wpalMutexRelease(&pWDICtx->wptMutex);
7054#endif
7055
7056 if ( pWDICtx->bInBmps )
7057 {
7058 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007059 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7060 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7061 {
7062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7063 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7064 WDI_ASSERT(0);
7065 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 }
7067
7068 /*-----------------------------------------------------------------------
7069 Get message buffer
7070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 sizeof(halFinishScanReqMsg.finishScanParams),
7073 &pSendBuffer, &usDataOffset, &usSendSize))||
7074 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7075 {
7076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7077 "Unable to get send buffer in start scan req %x %x %x",
7078 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007081 }
7082
Jeff Johnsone7245742012-09-05 17:12:55 -07007083 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007084 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7085
Jeff Johnsone7245742012-09-05 17:12:55 -07007086 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7088
Jeff Johnsone7245742012-09-05 17:12:55 -07007089 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007090 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7091
7092 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7093 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7094
Jeff Johnsone7245742012-09-05 17:12:55 -07007095 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007096 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007097 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007098 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007099 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7101
Jeff Johnsone7245742012-09-05 17:12:55 -07007102 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7104
7105 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7106 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007107 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7109 }
7110
7111 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7112 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7113
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 wpalMemoryCopy( pSendBuffer+usDataOffset,
7115 &halFinishScanReqMsg.finishScanParams,
7116 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007117
7118 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007120
7121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007122 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007125 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7126}/*WDI_ProcessFinishScanReq*/
7127
7128
7129/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007130 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007131==========================================================================*/
7132/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007133 @brief Process BSS Join for a given Session
7134
7135 @param pWDICtx: pointer to the WLAN DAL context
7136 pEventData: pointer to the event information structure
7137
Jeff Johnson295189b2012-06-20 16:38:30 -07007138 @see
7139 @return Result of the function call
7140*/
7141WDI_Status
7142WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007143(
Jeff Johnson295189b2012-06-20 16:38:30 -07007144 WDI_ControlBlockType* pWDICtx,
7145 WDI_JoinReqParamsType* pwdiJoinParams,
7146 WDI_JoinRspCb wdiJoinRspCb,
7147 void* pUserData
7148)
7149{
7150 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 wpt_uint16 usDataOffset = 0;
7153 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007154 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007155
Jeff Johnsone7245742012-09-05 17:12:55 -07007156 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7158
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007159 wpalMutexAcquire(&pWDICtx->wptMutex);
7160
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 /*------------------------------------------------------------------------
7162 Check to see if we have any session with this BSSID already stored, we
7163 should not
7164 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7166 pwdiJoinParams->wdiReqInfo.macBSSID,
7167 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007168
7169 if ( NULL != pBSSSes )
7170 {
7171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007172 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7173 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007174
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007175 /*reset the bAssociationInProgress otherwise the next
7176 *join request will be queued*/
7177 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7178 wpalMutexRelease(&pWDICtx->wptMutex);
7179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 }
7181
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 if ( NULL == pBSSSes )
7187 {
7188
7189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7190 "DAL has no free sessions - cannot run another join");
7191
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007192 /*reset the bAssociationInProgress otherwise the next
7193 *join request will be queued*/
7194 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 }
7198
7199 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007200 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7201 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 WDI_MAC_ADDR_LEN);
7203
7204 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007205 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007207
Jeff Johnson295189b2012-06-20 16:38:30 -07007208 wpalMutexRelease(&pWDICtx->wptMutex);
7209
7210 /*-----------------------------------------------------------------------
7211 Get message buffer
7212 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007213 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 sizeof(halJoinReqMsg.joinReqParams),
7215 &pSendBuffer, &usDataOffset, &usSendSize))||
7216 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7217 {
7218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7219 "Unable to get send buffer in join req %x %x %x",
7220 pUserData, pwdiJoinParams, wdiJoinRspCb);
7221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 }
7224
7225 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007226 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007227
7228 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007229 pwdiJoinParams->wdiReqInfo.macSTASelf,
7230 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007231
Jeff Johnsone7245742012-09-05 17:12:55 -07007232 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007233 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7234
7235 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7236
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007237#ifdef WLAN_FEATURE_VOWIFI
7238 halJoinReqMsg.joinReqParams.maxTxPower =
7239 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7240#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007241 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007242 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7243#endif
7244
Jeff Johnsone7245742012-09-05 17:12:55 -07007245 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007246 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7247 wdiSecondaryChannelOffset);
7248
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 wpalMemoryCopy( pSendBuffer+usDataOffset,
7250 &halJoinReqMsg.joinReqParams,
7251 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007252
7253 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007255
7256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7260 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007261
7262}/*WDI_ProcessBSSSessionJoinReq*/
7263
7264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007267
7268 @param pWDICtx: pointer to the WLAN DAL context
7269 pEventData: pointer to the event information structure
7270
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 @see
7272 @return Result of the function call
7273*/
7274WDI_Status
7275WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007276(
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 WDI_ControlBlockType* pWDICtx,
7278 WDI_EventInfoType* pEventData
7279)
7280{
7281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7282 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7283 WDI_JoinRspCb wdiJoinRspCb = NULL;
7284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7285
7286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 -------------------------------------------------------------------------*/
7289 if (( NULL == pEventData ) ||
7290 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7291 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7292 {
7293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007298
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 /*-------------------------------------------------------------------------
7300 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007301 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007302 -------------------------------------------------------------------------*/
7303 wpalMutexAcquire(&pWDICtx->wptMutex);
7304
7305 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7306 {
7307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7308 "Association is currently in progress, queueing new join req");
7309
7310 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 pwdiJoinParams->wdiReqInfo.macBSSID);
7313
7314 wpalMutexRelease(&pWDICtx->wptMutex);
7315
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 }
7318
7319 /*Starting a new association */
7320 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7321 wpalMutexRelease(&pWDICtx->wptMutex);
7322
7323 /*Process the Join Request*/
7324 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7325 wdiJoinRspCb,pEventData->pUserData);
7326
7327}/*WDI_ProcessJoinReq*/
7328
7329
7330/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007333
7334 @param pWDICtx: pointer to the WLAN DAL context
7335 pEventData: pointer to the event information structure
7336
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 @see
7338 @return Result of the function call
7339*/
7340WDI_Status
7341WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007342(
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 WDI_ControlBlockType* pWDICtx,
7344 WDI_EventInfoType* pEventData
7345)
7346{
7347 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7348 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007351 wpt_uint16 uMsgSize = 0;
7352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 wpt_uint16 usDataOffset = 0;
7354 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007356
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7359
7360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 -------------------------------------------------------------------------*/
7363 if (( NULL == pEventData ) ||
7364 ( NULL == pEventData->pEventData ) ||
7365 ( NULL == pEventData->pCBfnc ))
7366 {
7367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 }
7372
7373 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7374 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7375 /*-------------------------------------------------------------------------
7376 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 -------------------------------------------------------------------------*/
7379 wpalMutexAcquire(&pWDICtx->wptMutex);
7380
7381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7385 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7386 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007387
Jeff Johnsone7245742012-09-05 17:12:55 -07007388 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 {
7390#ifdef WLAN_FEATURE_VOWIFI_11R
7391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007392 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007394 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 if ( NULL == pBSSSes )
7396 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007397
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7399 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007400
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007402 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007404
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7407 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007409
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7413#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007414 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 * Request in case of IBSS*/
7416 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7417 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7418 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7419 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7420 {
7421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007422 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007423 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007424 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007425 if ( NULL == pBSSSes )
7426 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007427
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7429 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007430
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007432 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007434
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7437 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007439
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007441 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7443 }
7444 else
7445 {
7446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7448 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7449 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7450
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 /* for IBSS testing */
7452 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007453 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 }
7455#endif
7456 }
7457
7458 /*------------------------------------------------------------------------
7459 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 ------------------------------------------------------------------------*/
7462 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7463 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7465 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7466 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7467 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007468
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007470
7471 wpalMutexRelease(&pWDICtx->wptMutex);
7472
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 }
7475
7476 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7478 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 sizeof(pWDICtx->wdiCachedConfigBssReq));
7480
7481 wpalMutexRelease(&pWDICtx->wptMutex);
7482
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7484#ifdef WLAN_FEATURE_11AC
7485 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007486 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007487 else
7488#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007489 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007490
7491 /*-----------------------------------------------------------------------
7492 Get message buffer
7493 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7496 ( usSendSize < (usDataOffset + uMsgSize )))
7497 {
7498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7499 "Unable to get send buffer in config bss req %x %x %x",
7500 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
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
7505 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007506#ifdef WLAN_FEATURE_11AC
7507 if (WDI_getFwWlanFeatCaps(DOT11AC))
7508 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7509 &pwdiConfigBSSParams->wdiReqInfo);
7510 else
7511#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007512 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 &pwdiConfigBSSParams->wdiReqInfo);
7514
7515 /* Need to fill in the STA Index to invalid, since at this point we have not
7516 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007518
7519 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007520 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7521
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007522#ifdef WLAN_FEATURE_11AC
7523 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7524 wpalMemoryCopy( pSendBuffer+usDataOffset,
7525 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7526 uMsgSize);
7527 }else
7528#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007529 wpalMemoryCopy( pSendBuffer+usDataOffset,
7530 &halConfigBssReqMsg.uBssParams.configBssParams,
7531 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007532
7533 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007535
7536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7540 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 WDI_CONFIG_BSS_RESP);
7542
7543}/*WDI_ProcessConfigBSSReq*/
7544
7545
7546/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007548 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007549
7550 @param pWDICtx: pointer to the WLAN DAL context
7551 pEventData: pointer to the event information structure
7552
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 @see
7554 @return Result of the function call
7555*/
7556WDI_Status
7557WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007558(
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 WDI_ControlBlockType* pWDICtx,
7560 WDI_EventInfoType* pEventData
7561)
7562{
7563 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7564 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007565 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007566 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 wpt_uint16 usDataOffset = 0;
7569 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007570 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007571
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7574
7575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 -------------------------------------------------------------------------*/
7578 if (( NULL == pEventData ) ||
7579 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7580 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7581 {
7582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 }
7587
7588 /*-------------------------------------------------------------------------
7589 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007591 -------------------------------------------------------------------------*/
7592 wpalMutexAcquire(&pWDICtx->wptMutex);
7593
7594 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007597 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7598 pwdiDelBSSParams->ucBssIdx,
7599 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007600
Jeff Johnsone7245742012-09-05 17:12:55 -07007601 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 {
7603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 "%s: BSS does not yet exist. ucBssIdx %d",
7605 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007606
7607 wpalMutexRelease(&pWDICtx->wptMutex);
7608
7609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007611
7612 /*------------------------------------------------------------------------
7613 Check if this BSS is being currently processed or queued,
7614 if queued - queue the new request as well
7615 ------------------------------------------------------------------------*/
7616 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7619 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7620 __func__, pwdiDelBSSParams->ucBssIdx);
7621
7622 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7623
7624 wpalMutexRelease(&pWDICtx->wptMutex);
7625
7626 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007628
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 /*-----------------------------------------------------------------------
7630 If we receive a Del BSS request for an association that is already in
7631 progress, it indicates that the assoc has failed => we no longer have
7632 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 -----------------------------------------------------------------------*/
7635 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7636 {
7637 /*We can switch to false here because even if a subsequent Join comes in
7638 it will only be processed when DAL transitions out of BUSY state which
7639 happens when the Del BSS request comes */
7640 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7641
7642 /*Former association is complete - prepare next pending assoc for
7643 processing */
7644 WDI_DequeueAssocRequest(pWDICtx);
7645 }
7646
7647 wpalMutexRelease(&pWDICtx->wptMutex);
7648 /*-----------------------------------------------------------------------
7649 Get message buffer
7650 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007652 sizeof(halBssReqMsg.deleteBssParams),
7653 &pSendBuffer, &usDataOffset, &usSendSize))||
7654 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7655 {
7656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7657 "Unable to get send buffer in start req %x %x %x",
7658 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007661 }
7662
7663 /*Fill in the message request structure*/
7664
7665 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007666 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007667
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 wpalMemoryCopy( pSendBuffer+usDataOffset,
7669 &halBssReqMsg.deleteBssParams,
7670 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007671
7672 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007673 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007674
Jeff Johnsone7245742012-09-05 17:12:55 -07007675
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7681
Jeff Johnsone7245742012-09-05 17:12:55 -07007682
Jeff Johnson295189b2012-06-20 16:38:30 -07007683}/*WDI_ProcessDelBSSReq*/
7684
7685/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007688
7689 @param pWDICtx: pointer to the WLAN DAL context
7690 pEventData: pointer to the event information structure
7691
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 @see
7693 @return Result of the function call
7694*/
7695WDI_Status
7696WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007697(
Jeff Johnson295189b2012-06-20 16:38:30 -07007698 WDI_ControlBlockType* pWDICtx,
7699 WDI_EventInfoType* pEventData
7700)
7701{
7702 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7703 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007704 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007705 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 wpt_uint16 usDataOffset = 0;
7708 wpt_uint16 usSendSize = 0;
7709 wpt_uint16 uMsgSize = 0;
7710 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007712
Jeff Johnsone7245742012-09-05 17:12:55 -07007713 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7715
7716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 -------------------------------------------------------------------------*/
7719 if (( NULL == pEventData ) ||
7720 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7721 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7722 {
7723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 }
7728
7729 /*-------------------------------------------------------------------------
7730 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 -------------------------------------------------------------------------*/
7733 wpalMutexAcquire(&pWDICtx->wptMutex);
7734
7735 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007738 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7739 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7740 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007741
7742 if ( NULL == pBSSSes )
7743 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7745 "%s: Association sequence for this BSS does not yet exist - "
7746 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7747 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007748
7749 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 }
7752
7753 /*------------------------------------------------------------------------
7754 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 ------------------------------------------------------------------------*/
7757 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7758 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7760 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7761 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007762
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007764
7765 wpalMutexRelease(&pWDICtx->wptMutex);
7766
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 }
7769
7770 /*-----------------------------------------------------------------------
7771 If Post Assoc was not yet received - the current association must
7772 be in progress
7773 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7776 {
7777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7778 "Association sequence for this BSS association no longer in "
7779 "progress - not allowed");
7780
7781 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007782 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007783 }
7784
7785 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007786 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 -----------------------------------------------------------------------*/
7788 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7789 {
7790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7791 "Post Assoc not allowed before JOIN - failing request");
7792
7793 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 }
7796
7797 wpalMutexRelease(&pWDICtx->wptMutex);
7798
7799 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7800 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7801 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007805 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7806 ( usSendSize < (usDataOffset + uMsgSize )))
7807 {
7808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7809 "Unable to get send buffer in start req %x %x %x",
7810 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 }
7814
7815 /*Copy the STA parameters */
7816 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7817 &pwdiPostAssocParams->wdiSTAParams );
7818
7819 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007820 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 WDI_STATableFindStaidByAddr(pWDICtx,
7822 pwdiPostAssocParams->wdiSTAParams.macSTA,
7823 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7824 {
7825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7826 "This station does not exist in the WDI Station Table %d");
7827 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007828 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 }
7831
7832 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 pBSSSes->ucBSSIdx;
7835
7836 /*Copy the BSS parameters */
7837 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7838 &pwdiPostAssocParams->wdiBSSParams);
7839
7840 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 WDI_STATableFindStaidByAddr(pWDICtx,
7843 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 {
7846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7847 "This station does not exist in the WDI Station Table %d");
7848 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 }
7851
7852 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 pBSSSes->ucBSSIdx;
7855
Jeff Johnsone7245742012-09-05 17:12:55 -07007856
7857 wpalMemoryCopy( pSendBuffer+usDataOffset,
7858 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7859 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007860
7861 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7862
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7864 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7865 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007866
Jeff Johnsone7245742012-09-05 17:12:55 -07007867
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007869 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007870
Jeff Johnsone7245742012-09-05 17:12:55 -07007871
7872 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007875
7876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007877 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007879 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7881
Jeff Johnsone7245742012-09-05 17:12:55 -07007882
Jeff Johnson295189b2012-06-20 16:38:30 -07007883}/*WDI_ProcessPostAssocReq*/
7884
7885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007888
7889 @param pWDICtx: pointer to the WLAN DAL context
7890 pEventData: pointer to the event information structure
7891
Jeff Johnson295189b2012-06-20 16:38:30 -07007892 @see
7893 @return Result of the function call
7894*/
7895WDI_Status
7896WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007897(
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 WDI_ControlBlockType* pWDICtx,
7899 WDI_EventInfoType* pEventData
7900)
7901{
7902 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7903 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 wpt_uint16 usDataOffset = 0;
7908 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7911
Jeff Johnsone7245742012-09-05 17:12:55 -07007912 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7914
7915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 -------------------------------------------------------------------------*/
7918 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7919 ( NULL == pEventData->pCBfnc ))
7920 {
7921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 }
7926
7927 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
7928 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
7929 /*-------------------------------------------------------------------------
7930 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 -------------------------------------------------------------------------*/
7933 wpalMutexAcquire(&pWDICtx->wptMutex);
7934
7935 /*------------------------------------------------------------------------
7936 Find the BSS for which the request is made and identify WDI session
7937 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
7939 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07007940 &macBSSID))
7941 {
7942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7943 "This station does not exist in the WDI Station Table %d");
7944 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 }
7947
Jeff Johnsone7245742012-09-05 17:12:55 -07007948 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
7949 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7952 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
7953 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007954
7955 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 }
7958
7959 /*------------------------------------------------------------------------
7960 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 ------------------------------------------------------------------------*/
7963 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7964 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7966 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7967 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007968
Jeff Johnsone7245742012-09-05 17:12:55 -07007969 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 }
7973
7974 wpalMutexRelease(&pWDICtx->wptMutex);
7975 /*-----------------------------------------------------------------------
7976 Get message buffer
7977 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007978 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007979 sizeof(halDelStaReqMsg.delStaParams),
7980 &pSendBuffer, &usDataOffset, &usSendSize))||
7981 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
7982 {
7983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7984 "Unable to get send buffer in start req %x %x %x",
7985 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
7986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 }
7989
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
7991 wpalMemoryCopy( pSendBuffer+usDataOffset,
7992 &halDelStaReqMsg.delStaParams,
7993 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007994
7995 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007997
7998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008001 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8003
8004}/*WDI_ProcessDelSTAReq*/
8005
8006
8007/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008009==========================================================================*/
8010/**
8011 @brief Process Set BSS Key Request function (called when Main FSM
8012 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008013
8014 @param pWDICtx: pointer to the WLAN DAL context
8015 pEventData: pointer to the event information structure
8016
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 @see
8018 @return Result of the function call
8019*/
8020WDI_Status
8021WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008022(
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 WDI_ControlBlockType* pWDICtx,
8024 WDI_EventInfoType* pEventData
8025)
8026{
8027 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8028 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 wpt_uint16 usDataOffset = 0;
8033 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8036 wpt_uint8 keyIndex = 0;
8037
8038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8039
8040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 -------------------------------------------------------------------------*/
8043 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8044 ( NULL == pEventData->pCBfnc ))
8045 {
8046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 }
8051
8052 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8053 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8054 /*-------------------------------------------------------------------------
8055 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 -------------------------------------------------------------------------*/
8058 wpalMutexAcquire(&pWDICtx->wptMutex);
8059
8060 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8064 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8065 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008066
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 {
8069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8071 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008072
8073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 }
8076
8077 /*------------------------------------------------------------------------
8078 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 ------------------------------------------------------------------------*/
8081 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8082 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8084 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8085 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008086
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 }
8091
8092
8093 wpalMutexRelease(&pWDICtx->wptMutex);
8094 /*-----------------------------------------------------------------------
8095 Get message buffer
8096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8099 &pSendBuffer, &usDataOffset, &usSendSize))||
8100 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8101 {
8102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8103 "Unable to get send buffer in set bss key req %x %x %x",
8104 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008107 }
8108
8109 /*-----------------------------------------------------------------------
8110 Copy the Key parameters into the HAL message
8111 -----------------------------------------------------------------------*/
8112
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008114
Jeff Johnsone7245742012-09-05 17:12:55 -07008115 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008116 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8117
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8120
8121 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8122 keyIndex++)
8123 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8126 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8127 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8128 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8129 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8130 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008132 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8137 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 WDI_MAX_KEY_LENGTH);
8140 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008141
8142 wpalMemoryCopy( pSendBuffer+usDataOffset,
8143 &halSetBssKeyReqMsg.setBssKeyParams,
8144 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008145
8146 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008147 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008148
8149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8153 wdiSetBSSKeyRspCb, pEventData->pUserData,
8154 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008155
8156}/*WDI_ProcessSetBssKeyReq*/
8157
8158/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008161
8162 @param pWDICtx: pointer to the WLAN DAL context
8163 pEventData: pointer to the event information structure
8164
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 @see
8166 @return Result of the function call
8167*/
8168WDI_Status
8169WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008170(
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 WDI_ControlBlockType* pWDICtx,
8172 WDI_EventInfoType* pEventData
8173)
8174{
8175 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8176 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008178 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 wpt_uint16 usDataOffset = 0;
8181 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8185
8186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 -------------------------------------------------------------------------*/
8189 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8190 ( NULL == pEventData->pCBfnc ))
8191 {
8192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 }
8197
8198 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8199 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8200 /*-------------------------------------------------------------------------
8201 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 -------------------------------------------------------------------------*/
8204 wpalMutexAcquire(&pWDICtx->wptMutex);
8205
8206 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008209 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8210 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8211 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008212
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 {
8215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8217 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008218
8219 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008221 }
8222
8223 /*------------------------------------------------------------------------
8224 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 ------------------------------------------------------------------------*/
8227 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8228 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8230 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8231 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008232
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 }
8237
8238
8239 wpalMutexRelease(&pWDICtx->wptMutex);
8240
8241 /*-----------------------------------------------------------------------
8242 Get message buffer
8243 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8246 &pSendBuffer, &usDataOffset, &usSendSize))||
8247 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8248 {
8249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8250 "Unable to get send buffer in set bss key req %x %x %x",
8251 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 }
8255 /*-----------------------------------------------------------------------
8256 Copy the Key parameters into the HAL message
8257 -----------------------------------------------------------------------*/
8258 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8259
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8262
8263 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8264
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8267
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 wpalMemoryCopy( pSendBuffer+usDataOffset,
8269 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8270 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008271
8272 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008274
8275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008280 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008281}/*WDI_ProcessRemoveBssKeyReq*/
8282
8283/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008286
8287 @param pWDICtx: pointer to the WLAN DAL context
8288 pEventData: pointer to the event information structure
8289
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 @see
8291 @return Result of the function call
8292*/
8293WDI_Status
8294WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008295(
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 WDI_ControlBlockType* pWDICtx,
8297 WDI_EventInfoType* pEventData
8298)
8299{
8300 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8301 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8302 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 wpt_uint16 usDataOffset = 0;
8305 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008307 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8310 wpt_uint8 keyIndex = 0;
8311
8312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8313
8314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 -------------------------------------------------------------------------*/
8317 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8318 ( NULL == pEventData->pCBfnc ))
8319 {
8320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 }
8325
8326 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8327 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8328 /*-------------------------------------------------------------------------
8329 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 -------------------------------------------------------------------------*/
8332 wpalMutexAcquire(&pWDICtx->wptMutex);
8333
8334 /*------------------------------------------------------------------------
8335 Find the BSS for which the request is made and identify WDI session
8336 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8338 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 &macBSSID))
8340 {
8341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8342 "This station does not exist in the WDI Station Table %d");
8343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 }
8346
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8348 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8351 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8352 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008353
8354 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008357
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 /*------------------------------------------------------------------------
8359 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 ------------------------------------------------------------------------*/
8362 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8363 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8365 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8366 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008367
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 }
8372
8373
8374 wpalMutexRelease(&pWDICtx->wptMutex);
8375 /*-----------------------------------------------------------------------
8376 Get message buffer
8377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8380 &pSendBuffer, &usDataOffset, &usSendSize))||
8381 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8382 {
8383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8384 "Unable to get send buffer in set bss key req %x %x %x",
8385 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 }
8389 /*-----------------------------------------------------------------------
8390 Copy the STA Key parameters into the HAL message
8391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8394
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008396 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8397
8398 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8399
8400 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8401
8402 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8403
8404#ifdef WLAN_SOFTAP_FEATURE
8405 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8406 keyIndex++)
8407 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008409 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8410 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8411 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8412 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8413 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8414 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8421 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 WDI_MAX_KEY_LENGTH);
8424 }
8425#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8428 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8429 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8430 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8431 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8432 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8439 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 WDI_MAX_KEY_LENGTH);
8442#endif
8443
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 wpalMemoryCopy( pSendBuffer+usDataOffset,
8445 &halSetStaKeyReqMsg.setStaKeyParams,
8446 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008447
8448 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008450
8451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8455 wdiSetSTAKeyRspCb, pEventData->pUserData,
8456 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008457
8458}/*WDI_ProcessSetSTAKeyReq*/
8459
8460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008463
8464 @param pWDICtx: pointer to the WLAN DAL context
8465 pEventData: pointer to the event information structure
8466
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 @see
8468 @return Result of the function call
8469*/
8470WDI_Status
8471WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008472(
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 WDI_ControlBlockType* pWDICtx,
8474 WDI_EventInfoType* pEventData
8475)
8476{
8477 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8478 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8479 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 wpt_uint16 usDataOffset = 0;
8482 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 wpt_macAddr macBSSID;
8485 wpt_uint8 ucCurrentBSSSesIdx;
8486 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8488
8489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 -------------------------------------------------------------------------*/
8492 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8493 ( NULL == pEventData->pCBfnc ))
8494 {
8495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 }
8500
8501 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8502 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8503 /*-------------------------------------------------------------------------
8504 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 -------------------------------------------------------------------------*/
8507 wpalMutexAcquire(&pWDICtx->wptMutex);
8508
8509 /*------------------------------------------------------------------------
8510 Find the BSS for which the request is made and identify WDI session
8511 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8513 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 &macBSSID))
8515 {
8516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8517 "This station does not exist in the WDI Station Table %d");
8518 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 }
8521
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8523 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8526 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8527 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008528
8529 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008530 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008532
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 /*------------------------------------------------------------------------
8534 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 ------------------------------------------------------------------------*/
8537 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8538 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8540 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8541 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008542
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 }
8547
8548
8549
8550 wpalMutexRelease(&pWDICtx->wptMutex);
8551 /*-----------------------------------------------------------------------
8552 Get message buffer
8553 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8556 &pSendBuffer, &usDataOffset, &usSendSize))||
8557 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8558 {
8559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8560 "Unable to get send buffer in set bss key req %x %x %x",
8561 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 }
8565
8566 /*-----------------------------------------------------------------------
8567 Copy the Key parameters into the HAL message
8568 -----------------------------------------------------------------------*/
8569
Jeff Johnsone7245742012-09-05 17:12:55 -07008570 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8572
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8575
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8578
Jeff Johnsone7245742012-09-05 17:12:55 -07008579 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8581
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 wpalMemoryCopy( pSendBuffer+usDataOffset,
8583 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8584 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008585
8586 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008588
8589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008590 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008591 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008595
8596}/*WDI_ProcessRemoveSTAKeyReq*/
8597
8598/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008601
8602 @param pWDICtx: pointer to the WLAN DAL context
8603 pEventData: pointer to the event information structure
8604
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 @see
8606 @return Result of the function call
8607*/
8608WDI_Status
8609WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008610(
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 WDI_ControlBlockType* pWDICtx,
8612 WDI_EventInfoType* pEventData
8613)
8614{
8615 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8616 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8617 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 wpt_uint16 usDataOffset = 0;
8620 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008621 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8625 wpt_uint8 keyIndex = 0;
8626
8627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8628
8629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008630 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 -------------------------------------------------------------------------*/
8632 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8633 ( NULL == pEventData->pCBfnc ))
8634 {
8635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 }
8640
8641 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8642 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8643 /*-------------------------------------------------------------------------
8644 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 -------------------------------------------------------------------------*/
8647 wpalMutexAcquire(&pWDICtx->wptMutex);
8648
8649 /*------------------------------------------------------------------------
8650 Find the BSS for which the request is made and identify WDI session
8651 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8653 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 &macBSSID))
8655 {
8656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8657 "This station does not exist in the WDI Station Table %d");
8658 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 }
8661
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8663 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 {
8665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008666 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8667 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008668
8669 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008672
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 /*------------------------------------------------------------------------
8674 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 ------------------------------------------------------------------------*/
8677 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8678 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8680 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8681 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008682
Jeff Johnsone7245742012-09-05 17:12:55 -07008683 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 }
8687
8688
8689 wpalMutexRelease(&pWDICtx->wptMutex);
8690 /*-----------------------------------------------------------------------
8691 Get message buffer
8692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8695 &pSendBuffer, &usDataOffset, &usSendSize))||
8696 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8697 {
8698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8699 "Unable to get send buffer in set bss key req %x %x %x",
8700 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 }
8704 /*-----------------------------------------------------------------------
8705 Copy the STA Key parameters into the HAL message
8706 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8709
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8712
8713 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8714
8715 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8716
8717 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8718
8719#ifdef WLAN_SOFTAP_FEATURE
8720 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8721 keyIndex++)
8722 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8725 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8726 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8727 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8728 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8729 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8736 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 WDI_MAX_KEY_LENGTH);
8739 }
8740#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8743 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8744 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8745 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8746 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8747 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8754 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 WDI_MAX_KEY_LENGTH);
8757#endif
8758
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 wpalMemoryCopy( pSendBuffer+usDataOffset,
8760 &halSetStaKeyReqMsg.setStaKeyParams,
8761 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008762
8763 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008765
8766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8770 wdiSetSTAKeyRspCb, pEventData->pUserData,
8771 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008772
8773}/*WDI_ProcessSetSTABcastKeyReq*/
8774
8775/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008778
8779 @param pWDICtx: pointer to the WLAN DAL context
8780 pEventData: pointer to the event information structure
8781
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 @see
8783 @return Result of the function call
8784*/
8785WDI_Status
8786WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008787(
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 WDI_ControlBlockType* pWDICtx,
8789 WDI_EventInfoType* pEventData
8790)
8791{
8792 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8793 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8794 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008795 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008796 wpt_uint16 usDataOffset = 0;
8797 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 wpt_macAddr macBSSID;
8800 wpt_uint8 ucCurrentBSSSesIdx;
8801 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8803
8804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 -------------------------------------------------------------------------*/
8807 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8808 ( NULL == pEventData->pCBfnc ))
8809 {
8810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008814 }
8815
8816 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8817 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8818 /*-------------------------------------------------------------------------
8819 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 -------------------------------------------------------------------------*/
8822 wpalMutexAcquire(&pWDICtx->wptMutex);
8823
8824 /*------------------------------------------------------------------------
8825 Find the BSS for which the request is made and identify WDI session
8826 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8828 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 &macBSSID))
8830 {
8831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8832 "This station does not exist in the WDI Station Table %d");
8833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 }
8836
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8838 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8841 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8842 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008843
8844 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008847
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 /*------------------------------------------------------------------------
8849 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 ------------------------------------------------------------------------*/
8852 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8853 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8855 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8856 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008857
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 }
8862
8863
8864
8865 wpalMutexRelease(&pWDICtx->wptMutex);
8866 /*-----------------------------------------------------------------------
8867 Get message buffer
8868 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8871 &pSendBuffer, &usDataOffset, &usSendSize))||
8872 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8873 {
8874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8875 "Unable to get send buffer in set bss key req %x %x %x",
8876 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 }
8880
8881 /*-----------------------------------------------------------------------
8882 Copy the Key parameters into the HAL message
8883 -----------------------------------------------------------------------*/
8884
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8887
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8890
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8893
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8896
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 wpalMemoryCopy( pSendBuffer+usDataOffset,
8898 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8899 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008900
8901 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008903
8904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008910
8911}/*WDI_ProcessRemoveSTABcastKeyReq*/
8912
8913/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008915==========================================================================*/
8916/**
8917 @brief Process Add TSpec Request function (called when Main FSM
8918 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008919
8920 @param pWDICtx: pointer to the WLAN DAL context
8921 pEventData: pointer to the event information structure
8922
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 @see
8924 @return Result of the function call
8925*/
8926WDI_Status
8927WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008928(
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 WDI_ControlBlockType* pWDICtx,
8930 WDI_EventInfoType* pEventData
8931)
8932{
8933 WDI_AddTSReqParamsType* pwdiAddTSParams;
8934 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 wpt_uint16 usDataOffset = 0;
8939 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 wpt_macAddr macBSSID;
8942 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07008943
Jeff Johnson295189b2012-06-20 16:38:30 -07008944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8945
8946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 -------------------------------------------------------------------------*/
8949 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8950 ( NULL == pEventData->pCBfnc ))
8951 {
8952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 }
8957
8958 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
8959 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
8960 /*-------------------------------------------------------------------------
8961 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 -------------------------------------------------------------------------*/
8964 wpalMutexAcquire(&pWDICtx->wptMutex);
8965
8966 /*------------------------------------------------------------------------
8967 Find the BSS for which the request is made and identify WDI session
8968 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8970 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 &macBSSID))
8972 {
8973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8974 "This station does not exist in the WDI Station Table %d");
8975 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 }
8978
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8980 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8983 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8984 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008985
8986 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008989
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 /*------------------------------------------------------------------------
8991 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 ------------------------------------------------------------------------*/
8994 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8995 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8997 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8998 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008999
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 }
9004
9005 wpalMutexRelease(&pWDICtx->wptMutex);
9006 /*-----------------------------------------------------------------------
9007 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9011 sizeof(halAddTsParams),
9012 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 &usSendSize))||
9014 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9015 {
9016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9017 "Unable to get send buffer in set bss key req %x %x %x",
9018 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 }
9022
9023 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9024 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9025
9026 //TSPEC IE
9027 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9028 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009049 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9059
9060 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009063 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9075
9076 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9081
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 wpalMemoryCopy( pSendBuffer+usDataOffset,
9083 &halAddTsParams,
9084 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009085
9086 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009088
9089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009095}/*WDI_ProcessAddTSpecReq*/
9096
9097
9098/**
9099 @brief Process Del TSpec Request function (called when Main FSM
9100 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009101
9102 @param pWDICtx: pointer to the WLAN DAL context
9103 pEventData: pointer to the event information structure
9104
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 @see
9106 @return Result of the function call
9107*/
9108WDI_Status
9109WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009110(
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 WDI_ControlBlockType* pWDICtx,
9112 WDI_EventInfoType* pEventData
9113)
9114{
9115 WDI_DelTSReqParamsType* pwdiDelTSParams;
9116 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 wpt_uint16 usDataOffset = 0;
9121 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9124
9125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 -------------------------------------------------------------------------*/
9128 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9129 ( NULL == pEventData->pCBfnc ))
9130 {
9131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 }
9136
9137 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9138 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9139
9140 /*-------------------------------------------------------------------------
9141 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 -------------------------------------------------------------------------*/
9144 wpalMutexAcquire(&pWDICtx->wptMutex);
9145
9146 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009149 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9150 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9151 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009152
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9156 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9157 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9158
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 }
9162
9163 /*------------------------------------------------------------------------
9164 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 ------------------------------------------------------------------------*/
9167 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9168 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9170 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9171 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009172
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009176 }
9177
9178
9179 wpalMutexRelease(&pWDICtx->wptMutex);
9180 /*-----------------------------------------------------------------------
9181 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9186 &pSendBuffer, &usDataOffset, &usSendSize))||
9187 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9188 {
9189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9190 "Unable to get send buffer in set bss key req %x %x %x",
9191 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 }
9195
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 wpalMemoryCopy( pSendBuffer+usDataOffset,
9197 &pwdiDelTSParams->wdiDelTSInfo,
9198 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009199
9200 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
9203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9207 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009208}/*WDI_ProcessDelTSpecReq*/
9209
9210/**
9211 @brief Process Update EDCA Params Request function (called when
9212 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009213
9214 @param pWDICtx: pointer to the WLAN DAL context
9215 pEventData: pointer to the event information structure
9216
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 @see
9218 @return Result of the function call
9219*/
9220WDI_Status
9221WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009222(
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 WDI_ControlBlockType* pWDICtx,
9224 WDI_EventInfoType* pEventData
9225)
9226{
9227 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9228 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 wpt_uint16 usDataOffset = 0;
9233 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9236
9237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 -------------------------------------------------------------------------*/
9240 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9241 ( NULL == pEventData->pCBfnc ))
9242 {
9243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009244 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 }
9248
9249 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9250 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9251 /*-------------------------------------------------------------------------
9252 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 -------------------------------------------------------------------------*/
9255 wpalMutexAcquire(&pWDICtx->wptMutex);
9256
9257 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9261 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9262 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009263
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 {
9266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9268 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009269
9270 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 }
9273
9274 /*------------------------------------------------------------------------
9275 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 ------------------------------------------------------------------------*/
9278 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9279 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9281 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9282 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009283
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 }
9288
9289
9290 wpalMutexRelease(&pWDICtx->wptMutex);
9291 /*-----------------------------------------------------------------------
9292 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009295 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9297 &pSendBuffer, &usDataOffset, &usSendSize))||
9298 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9299 {
9300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9301 "Unable to get send buffer in set bss key req %x %x %x",
9302 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 }
9306
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 wpalMemoryCopy( pSendBuffer+usDataOffset,
9308 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9309 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009310
9311 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009313
9314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9318 wdiUpdateEDCARspCb, pEventData->pUserData,
9319 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009320}/*WDI_ProcessUpdateEDCAParamsReq*/
9321
9322/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009325
9326 @param pWDICtx: pointer to the WLAN DAL context
9327 pEventData: pointer to the event information structure
9328
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 @see
9330 @return Result of the function call
9331*/
9332WDI_Status
9333WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009334(
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 WDI_ControlBlockType* pWDICtx,
9336 WDI_EventInfoType* pEventData
9337)
9338{
9339 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9340 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 wpt_uint16 usDataOffset = 0;
9345 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 wpt_macAddr macBSSID;
9348
9349 tAddBASessionReqMsg halAddBASessionReq;
9350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9351
9352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 -------------------------------------------------------------------------*/
9355 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9356 ( NULL == pEventData->pCBfnc ))
9357 {
9358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 }
9363
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9368 /*-------------------------------------------------------------------------
9369 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 -------------------------------------------------------------------------*/
9372 wpalMutexAcquire(&pWDICtx->wptMutex);
9373
9374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9378 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009379 &macBSSID))
9380 {
9381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9382 "This station does not exist in the WDI Station Table %d");
9383 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 }
9386
9387
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9393 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9394 __func__, MAC_ADDR_ARRAY(macBSSID));
9395
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 }
9399
9400 /*------------------------------------------------------------------------
9401 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 ------------------------------------------------------------------------*/
9404 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9405 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9407 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9408 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009409
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 }
9414
9415
9416 wpalMutexRelease(&pWDICtx->wptMutex);
9417 /*-----------------------------------------------------------------------
9418 Get message buffer
9419 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9421 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 sizeof(halAddBASessionReq.addBASessionParams),
9423 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9426 {
9427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9428 "Unable to get send buffer in Add BA session req %x %x %x",
9429 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 }
9433
9434 halAddBASessionReq.addBASessionParams.staIdx =
9435 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9436 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9437 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9438 WDI_MAC_ADDR_LEN);
9439 halAddBASessionReq.addBASessionParams.baTID =
9440 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9441 halAddBASessionReq.addBASessionParams.baPolicy =
9442 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9443 halAddBASessionReq.addBASessionParams.baBufferSize =
9444 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9445 halAddBASessionReq.addBASessionParams.baTimeout =
9446 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9447 halAddBASessionReq.addBASessionParams.baSSN =
9448 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9449 halAddBASessionReq.addBASessionParams.baDirection =
9450 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9451
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 wpalMemoryCopy( pSendBuffer+usDataOffset,
9453 &halAddBASessionReq.addBASessionParams,
9454 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009455
9456 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009458
9459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9463 wdiAddBASessionRspCb, pEventData->pUserData,
9464 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009465}/*WDI_ProcessAddBASessionReq*/
9466
9467/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009470
9471 @param pWDICtx: pointer to the WLAN DAL context
9472 pEventData: pointer to the event information structure
9473
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 @see
9475 @return Result of the function call
9476*/
9477WDI_Status
9478WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009479(
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 WDI_ControlBlockType* pWDICtx,
9481 WDI_EventInfoType* pEventData
9482)
9483{
9484 WDI_DelBAReqParamsType* pwdiDelBAParams;
9485 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 wpt_uint16 usDataOffset = 0;
9490 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 wpt_macAddr macBSSID;
9493 tDelBAParams halDelBAparam;
9494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9495
9496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 -------------------------------------------------------------------------*/
9499 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9500 ( NULL == pEventData->pCBfnc ))
9501 {
9502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 }
9507
9508 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9509 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9510 /*-------------------------------------------------------------------------
9511 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 -------------------------------------------------------------------------*/
9514 wpalMutexAcquire(&pWDICtx->wptMutex);
9515
9516 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9520 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 &macBSSID))
9522 {
9523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9524 "This station does not exist in the WDI Station Table %d");
9525 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 }
9528
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009530
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9534 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9535 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009536
9537 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 }
9540
9541 /*------------------------------------------------------------------------
9542 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 ------------------------------------------------------------------------*/
9545 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9546 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9548 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9549 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009550
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 }
9555
9556 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 sizeof(halDelBAparam),
9559 &pSendBuffer, &usDataOffset, &usSendSize))||
9560 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9561 {
9562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9563 "Unable to get send buffer for DEL BA req %x %x %x",
9564 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 }
9568
9569 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9570 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9571 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9572
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 wpalMemoryCopy( pSendBuffer+usDataOffset,
9574 &halDelBAparam,
9575 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009576
9577 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009579
9580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9584 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009585}/*WDI_ProcessDelBAReq*/
9586
9587#ifdef FEATURE_WLAN_CCX
9588
9589WDI_Status
9590WDI_ProcessTSMStatsReq
9591(
9592 WDI_ControlBlockType* pWDICtx,
9593 WDI_EventInfoType* pEventData
9594)
9595{
9596 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9597 WDI_TsmRspCb wdiTSMRspCb;
9598 wpt_uint8 ucCurrentBSSSesIdx = 0;
9599 WDI_BSSSessionType* pBSSSes = NULL;
9600 wpt_uint8* pSendBuffer = NULL;
9601 wpt_uint16 usDataOffset = 0;
9602 wpt_uint16 usSendSize = 0;
9603 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9604 tTsmStatsParams halTsmStatsReqParams = {0};
9605
9606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9607
9608 /*-------------------------------------------------------------------------
9609 Sanity check
9610 -------------------------------------------------------------------------*/
9611 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9612 ( NULL == pEventData->pCBfnc ))
9613 {
9614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 WDI_ASSERT(0);
9617 return WDI_STATUS_E_FAILURE;
9618 }
9619
9620 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9621 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9622 /*-------------------------------------------------------------------------
9623 Check to see if we are in the middle of an association, if so queue, if
9624 not it means it is free to process request
9625 -------------------------------------------------------------------------*/
9626 wpalMutexAcquire(&pWDICtx->wptMutex);
9627
9628 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9629 if ( NULL == pBSSSes )
9630 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9632 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9633 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009634
9635 wpalMutexRelease(&pWDICtx->wptMutex);
9636 return WDI_STATUS_E_NOT_ALLOWED;
9637 }
9638
9639 /*------------------------------------------------------------------------
9640 Check if this BSS is being currently processed or queued,
9641 if queued - queue the new request as well
9642 ------------------------------------------------------------------------*/
9643 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9644 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9646 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9647 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009648
9649 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9650 wpalMutexRelease(&pWDICtx->wptMutex);
9651 return wdiStatus;
9652 }
9653
9654 wpalMutexRelease(&pWDICtx->wptMutex);
9655 /*-----------------------------------------------------------------------
9656 Get message buffer
9657 ! TO DO : proper conversion into the HAL Message Request Format
9658 -----------------------------------------------------------------------*/
9659 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9660 sizeof(halTsmStatsReqParams),
9661 &pSendBuffer, &usDataOffset, &usSendSize))||
9662 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9663 {
9664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9665 "Unable to get send buffer in set bss key req %x %x %x",
9666 pEventData, pwdiTSMParams, wdiTSMRspCb);
9667 WDI_ASSERT(0);
9668 return WDI_STATUS_E_FAILURE;
9669 }
9670
9671 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9672 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9673 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9674 WDI_MAC_ADDR_LEN);
9675 wpalMemoryCopy( pSendBuffer+usDataOffset,
9676 &halTsmStatsReqParams,
9677 sizeof(halTsmStatsReqParams));
9678
9679 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9680 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9681
9682 /*-------------------------------------------------------------------------
9683 Send TSM Stats Request to HAL
9684 -------------------------------------------------------------------------*/
9685 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9686 wdiTSMRspCb, pEventData->pUserData,
9687 WDI_TSM_STATS_RESP);
9688}/*WDI_ProcessTSMStatsReq*/
9689
9690#endif
9691
9692
9693/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009696
9697 @param pWDICtx: pointer to the WLAN DAL context
9698 pEventData: pointer to the event information structure
9699
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 @see
9701 @return Result of the function call
9702*/
9703WDI_Status
9704WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009705(
Jeff Johnson295189b2012-06-20 16:38:30 -07009706 WDI_ControlBlockType* pWDICtx,
9707 WDI_EventInfoType* pEventData
9708)
9709{
9710 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9711 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 wpt_uint16 usDataOffset = 0;
9714 wpt_uint16 usSendSize = 0;
9715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9716
9717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 -------------------------------------------------------------------------*/
9720 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9721 ( NULL == pEventData->pCBfnc ))
9722 {
9723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 }
9728
9729 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9730 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9731 /*-----------------------------------------------------------------------
9732 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9737 &pSendBuffer, &usDataOffset, &usSendSize))||
9738 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9739 {
9740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9741 "Unable to get send buffer in set bss key req %x %x %x",
9742 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009745 }
9746
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 wpalMemoryCopy( pSendBuffer+usDataOffset,
9748 &pwdiFlushAcParams->wdiFlushAcInfo,
9749 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009750
9751 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009753
9754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9758 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009759}/*WDI_ProcessFlushAcReq*/
9760
9761/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009764
9765 @param pWDICtx: pointer to the WLAN DAL context
9766 pEventData: pointer to the event information structure
9767
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 @see
9769 @return Result of the function call
9770*/
9771WDI_Status
9772WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009773(
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 WDI_ControlBlockType* pWDICtx,
9775 WDI_EventInfoType* pEventData
9776)
9777{
9778 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9779 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 wpt_uint16 usDataOffset = 0;
9782 wpt_uint16 usSendSize = 0;
9783
9784 tBtAmpEventMsg haltBtAmpEventMsg;
9785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9786
9787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 -------------------------------------------------------------------------*/
9790 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9791 ( NULL == pEventData->pCBfnc ))
9792 {
9793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009797 }
9798
9799 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9800 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9801 /*-----------------------------------------------------------------------
9802 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9807 &pSendBuffer, &usDataOffset, &usSendSize))||
9808 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9809 {
9810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9811 "Unable to get send buffer in BT AMP event req %x %x %x",
9812 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 }
9816
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 wpalMemoryCopy( pSendBuffer+usDataOffset,
9820 &haltBtAmpEventMsg.btAmpEventParams,
9821 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009822
9823 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009825
9826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009828 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9830 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009831}/*WDI_ProcessBtAmpEventReq*/
9832
9833/**
9834 @brief Process Add STA self Request function (called when Main FSM
9835 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009836
9837 @param pWDICtx: pointer to the WLAN DAL context
9838 pEventData: pointer to the event information structure
9839
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 @see
9841 @return Result of the function call
9842*/
9843WDI_Status
9844WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009845(
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 WDI_ControlBlockType* pWDICtx,
9847 WDI_EventInfoType* pEventData
9848)
9849{
9850 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9851 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 wpt_uint16 usDataOffset = 0;
9854 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9857
9858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 -------------------------------------------------------------------------*/
9861 if (( NULL == pEventData ) ||
9862 ( NULL == pEventData->pEventData) ||
9863 ( NULL == pEventData->pCBfnc))
9864 {
9865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009866 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 }
9870
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9875 /*-----------------------------------------------------------------------
9876 Get message buffer
9877 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9879 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 sizeof(tAddStaSelfParams),
9881 &pSendBuffer, &usDataOffset, &usSendSize))||
9882 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9883 {
9884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9885 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9886 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 }
9890
9891 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9894
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9897
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9899 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009900
9901 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009903
9904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9908 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9909 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009910}/*WDI_ProcessAddSTASelfReq*/
9911
9912
9913
9914/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009917
9918 @param pWDICtx: pointer to the WLAN DAL context
9919 pEventData: pointer to the event information structure
9920
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 @see
9922 @return Result of the function call
9923*/
9924WDI_Status
9925WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009926(
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 WDI_ControlBlockType* pWDICtx,
9928 WDI_EventInfoType* pEventData
9929)
9930{
9931 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
9932 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 wpt_uint16 usDataOffset = 0;
9935 wpt_uint16 usSendSize = 0;
9936 tDelStaSelfParams halSetDelSelfSTAParams;
9937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9938
9939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 -------------------------------------------------------------------------*/
9942 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9943 ( NULL == pEventData->pCBfnc ))
9944 {
9945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 }
9950
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
9953 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
9954
9955 /*-----------------------------------------------------------------------
9956 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
9961 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
9964 {
9965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9966 "Unable to get send buffer in Del Sta Self req %x %x %x",
9967 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
9968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 }
9971
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
9974
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
9976 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009977
9978 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009980
9981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9985 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 WDI_DEL_STA_SELF_RESP);
9987
9988}
9989
Jeff Johnsone7245742012-09-05 17:12:55 -07009990#ifdef FEATURE_OEM_DATA_SUPPORT
9991/**
9992 @brief Process Start Oem Data Request function (called when Main
9993 FSM allows it)
9994
9995 @param pWDICtx: pointer to the WLAN DAL context
9996 pEventData: pointer to the event information structure
9997
9998 @see
9999 @return Result of the function call
10000*/
10001WDI_Status
10002WDI_ProcessStartOemDataReq
10003(
10004 WDI_ControlBlockType* pWDICtx,
10005 WDI_EventInfoType* pEventData
10006)
10007{
10008 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10009 WDI_oemDataRspCb wdiOemDataRspCb;
10010 wpt_uint8* pSendBuffer = NULL;
10011 wpt_uint16 usDataOffset = 0;
10012 wpt_uint16 usSendSize = 0;
10013 wpt_uint16 reqLen;
10014 tStartOemDataReqParams* halStartOemDataReqParams;
10015
10016 /*-------------------------------------------------------------------------
10017 Sanity check
10018 -------------------------------------------------------------------------*/
10019 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10020 ( NULL == pEventData->pCBfnc ))
10021 {
10022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010023 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 WDI_ASSERT(0);
10025 return WDI_STATUS_E_FAILURE;
10026 }
10027
10028 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10029 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10030
10031 /*-----------------------------------------------------------------------
10032 Get message buffer
10033 -----------------------------------------------------------------------*/
10034
10035 reqLen = sizeof(tStartOemDataReqParams);
10036
10037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10038 WDI_START_OEM_DATA_REQ, reqLen,
10039 &pSendBuffer, &usDataOffset, &usSendSize))||
10040 (usSendSize < (usDataOffset + reqLen)))
10041 {
10042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10043 "Unable to get send buffer in Start Oem Data req %x %x %x",
10044 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10045 WDI_ASSERT(0);
10046 return WDI_STATUS_E_FAILURE;
10047 }
10048
10049 //copying WDI OEM DATA REQ PARAMS to shared memory
10050 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10051
10052 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10053 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10054
10055 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10056 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10057
10058 /*-------------------------------------------------------------------------
10059 Send Start Request to HAL
10060 -------------------------------------------------------------------------*/
10061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10062 wdiOemDataRspCb, pEventData->pUserData,
10063 WDI_START_OEM_DATA_RESP);
10064}/*WDI_ProcessStartOemDataReq*/
10065#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010066
10067/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010070
10071 @param pWDICtx: pointer to the WLAN DAL context
10072 pEventData: pointer to the event information structure
10073
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 @see
10075 @return Result of the function call
10076*/
10077WDI_Status
10078WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010079(
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 WDI_ControlBlockType* pWDICtx,
10081 WDI_EventInfoType* pEventData
10082)
10083{
10084 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10085 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010087 wpt_uint16 usDataOffset = 0;
10088 wpt_uint16 usSendSize = 0;
10089 tHalWlanHostResumeReqParam halResumeReqParams;
10090
10091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10092
10093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 -------------------------------------------------------------------------*/
10096 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10097 ( NULL == pEventData->pCBfnc ))
10098 {
10099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010100 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 }
10104
10105 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10106 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10107
10108 /*-----------------------------------------------------------------------
10109 Get message buffer
10110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10113 &pSendBuffer, &usDataOffset, &usSendSize))||
10114 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10115 {
10116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 }
10122
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010125
10126 wpalMemoryCopy( pSendBuffer+usDataOffset,
10127 &halResumeReqParams,
10128 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010129
10130 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010131 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010132
10133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10137 wdiHostResumeRspCb, pEventData->pUserData,
10138 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010139}/*WDI_ProcessHostResumeReq*/
10140
10141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010144
10145 @param pWDICtx: pointer to the WLAN DAL context
10146 pEventData: pointer to the event information structure
10147
Jeff Johnson295189b2012-06-20 16:38:30 -070010148 @see
10149 @return Result of the function call
10150*/
10151WDI_Status
10152WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010153(
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 WDI_ControlBlockType* pWDICtx,
10155 WDI_EventInfoType* pEventData
10156)
10157{
10158 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10159 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 wpt_uint16 usDataOffset = 0;
10162 wpt_uint16 usSendSize = 0;
10163 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10165
10166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 -------------------------------------------------------------------------*/
10169 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10170 ( NULL == pEventData->pCBfnc ))
10171 {
10172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010173 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 }
10177
10178 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10179 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010180
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 /*-----------------------------------------------------------------------
10182 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 sizeof(halTxPerTrackingReqParam),
10187 &pSendBuffer, &usDataOffset, &usSendSize))||
10188 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10189 {
10190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10191 "Unable to get send buffer in set tx per tracking req %x %x %x",
10192 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010196
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10198 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10199 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10200 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010201
10202 wpalMemoryCopy( pSendBuffer+usDataOffset,
10203 &halTxPerTrackingReqParam,
10204 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010205
10206 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010208
10209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10213 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010214}/*WDI_ProcessSetTxPerTrackingReq*/
10215
10216/*=========================================================================
10217 Indications
10218=========================================================================*/
10219
10220/**
10221 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010222
10223 @param pWDICtx: pointer to the WLAN DAL context
10224 pEventData: pointer to the event information structure
10225
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 @see
10227 @return Result of the function call
10228*/
10229WDI_Status
10230WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010231(
Jeff Johnson295189b2012-06-20 16:38:30 -070010232 WDI_ControlBlockType* pWDICtx,
10233 WDI_EventInfoType* pEventData
10234)
10235{
10236 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010237 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 wpt_uint16 usDataOffset = 0;
10239 wpt_uint16 usSendSize = 0;
10240 WDI_Status wdiStatus;
10241 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10243
10244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 -------------------------------------------------------------------------*/
10247 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10248 {
10249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010250 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 }
10254
10255 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10256
10257 /*-----------------------------------------------------------------------
10258 Get message buffer
10259 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10261 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 sizeof(halWlanSuspendIndparams),
10263 &pSendBuffer, &usDataOffset, &usSendSize))||
10264 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10265 {
10266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10267 "Unable to get send buffer in Suspend Ind ");
10268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 }
10271
10272 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10273 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10274
Jeff Johnsone7245742012-09-05 17:12:55 -070010275 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 WDI_GetActiveSessionsCount(pWDICtx);
10277
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10279 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010280
10281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 -------------------------------------------------------------------------*/
10284 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010286
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10289}/*WDI_ProcessHostSuspendInd*/
10290
10291/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010293==========================================================================*/
10294/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010296 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010297
10298 @param pWDICtx: pointer to the WLAN DAL context
10299 pEventData: pointer to the event information structure
10300
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 @see
10302 @return Result of the function call
10303*/
10304WDI_Status
10305WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010306(
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 WDI_ControlBlockType* pWDICtx,
10308 WDI_EventInfoType* pEventData
10309)
10310{
10311 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10312 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 wpt_uint16 usDataOffset = 0;
10315 wpt_uint16 usSendSize = 0;
10316 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10318
10319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 -------------------------------------------------------------------------*/
10322 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10323 ( NULL == pEventData->pCBfnc ))
10324 {
10325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010326 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 }
10330
10331 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10332 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10333 /*-----------------------------------------------------------------------
10334 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 sizeof(halSwitchChannelReq.switchChannelParams),
10339 &pSendBuffer, &usDataOffset, &usSendSize))||
10340 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10341 {
10342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10343 "Unable to get send buffer in channel switch req %x %x %x",
10344 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 }
10348
Jeff Johnsone7245742012-09-05 17:12:55 -070010349 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010351#ifndef WLAN_FEATURE_VOWIFI
10352 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10354#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10357
10358#ifdef WLAN_FEATURE_VOWIFI
10359 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010361 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10362 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10363 WDI_MAC_ADDR_LEN);
10364 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10365 pwdiSwitchChParams->wdiChInfo.macBSSId,
10366 WDI_MAC_ADDR_LEN);
10367#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 wpalMemoryCopy( pSendBuffer+usDataOffset,
10369 &halSwitchChannelReq.switchChannelParams,
10370 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010371
10372 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010374
10375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10379 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010380}/*WDI_ProcessChannelSwitchReq*/
10381
10382/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010385
10386 @param pWDICtx: pointer to the WLAN DAL context
10387 pEventData: pointer to the event information structure
10388
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 @see
10390 @return Result of the function call
10391*/
10392WDI_Status
10393WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010394(
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 WDI_ControlBlockType* pWDICtx,
10396 WDI_EventInfoType* pEventData
10397)
10398{
10399 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10400 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010401 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 wpt_uint16 usDataOffset = 0;
10405 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010407
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 tConfigStaReqMsg halConfigStaReqMsg;
10409 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10411
10412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 -------------------------------------------------------------------------*/
10415 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10416 ( NULL == pEventData->pCBfnc ))
10417 {
10418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 }
10423
10424 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10425 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10426 /*-------------------------------------------------------------------------
10427 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 -------------------------------------------------------------------------*/
10430 wpalMutexAcquire(&pWDICtx->wptMutex);
10431
10432 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10436 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10437 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010438
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10442 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10443 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010444
10445 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 }
10448
10449 /*------------------------------------------------------------------------
10450 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 ------------------------------------------------------------------------*/
10453 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10454 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10456 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10457 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010458
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 }
10463
10464 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010465
10466 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10467#ifdef WLAN_FEATURE_11AC
10468 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010469 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 else
10471#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010472 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010473
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 /*-----------------------------------------------------------------------
10475 Get message buffer
10476 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10478 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 {
10482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10483 "Unable to get send buffer in config sta req %x %x %x",
10484 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10485 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
10489 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 &pwdiConfigSTAParams->wdiReqInfo);
10492
10493 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10494 {
10495 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 WDI_STATableFindStaidByAddr(pWDICtx,
10498 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 {
10501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10502 "This station does not exist in the WDI Station Table %d");
10503 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010504 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 }
10507 }
10508 else
10509 {
10510 /* Need to fill in the STA Index to invalid, since at this point we have not
10511 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 }
10514
10515 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010517
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 wpalMemoryCopy( pSendBuffer+usDataOffset,
10519 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010520 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010521
10522 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010524
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10526 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 sizeof(pWDICtx->wdiCachedConfigStaReq));
10528
10529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10533 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010534}/*WDI_ProcessConfigStaReq*/
10535
10536
10537/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010540
10541 @param pWDICtx: pointer to the WLAN DAL context
10542 pEventData: pointer to the event information structure
10543
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 @see
10545 @return Result of the function call
10546*/
10547WDI_Status
10548WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010549(
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 WDI_ControlBlockType* pWDICtx,
10551 WDI_EventInfoType* pEventData
10552)
10553{
10554 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10555 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 wpt_uint16 usDataOffset = 0;
10560 wpt_uint16 usSendSize = 0;
10561 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010562 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10564
10565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 -------------------------------------------------------------------------*/
10568 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10569 ( NULL == pEventData->pCBfnc ))
10570 {
10571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 }
10576
10577 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10578 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10579 /*-------------------------------------------------------------------------
10580 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 -------------------------------------------------------------------------*/
10583 wpalMutexAcquire(&pWDICtx->wptMutex);
10584
10585 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10589 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10590 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010591
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10596 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010597 }
10598 else
10599 {
10600 /*------------------------------------------------------------------------
10601 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 ------------------------------------------------------------------------*/
10604 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10605 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10607 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10608 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10609
10610 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 }
10614 }
10615 /* If the link is set to enter IDLE - the Session allocated for this BSS
10616 will be deleted on the Set Link State response coming from HAL
10617 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10620
10621 wpalMutexRelease(&pWDICtx->wptMutex);
10622 /*-----------------------------------------------------------------------
10623 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010626
10627 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 sizeof(halLinkStateReqMsg),
10629 &pSendBuffer, &usDataOffset, &usSendSize))||
10630 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10631 {
10632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10633 "Unable to get send buffer in set bss key req %x %x %x",
10634 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 }
10638
10639 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10640 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10641
10642 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10643 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10644
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10647
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 wpalMemoryCopy( pSendBuffer+usDataOffset,
10649 &halLinkStateReqMsg,
10650 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010651
10652 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010654
10655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10659 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010660}/*WDI_ProcessSetLinkStateReq*/
10661
10662
10663/**
10664 @brief Process Get Stats Request function (called when Main FSM
10665 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010666
10667 @param pWDICtx: pointer to the WLAN DAL context
10668 pEventData: pointer to the event information structure
10669
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 @see
10671 @return Result of the function call
10672*/
10673WDI_Status
10674WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010675(
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 WDI_ControlBlockType* pWDICtx,
10677 WDI_EventInfoType* pEventData
10678)
10679{
10680 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10681 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 wpt_uint16 usDataOffset = 0;
10684 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 WDI_BSSSessionType* pBSSSes = NULL;
10687 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 tHalStatsReqMsg halStatsReqMsg;
10690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10691
10692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 -------------------------------------------------------------------------*/
10695 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10696 ( NULL == pEventData->pCBfnc ) )
10697 {
10698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 }
10703
10704 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10705 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10706
10707 /*-------------------------------------------------------------------------
10708 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 -------------------------------------------------------------------------*/
10711 wpalMutexAcquire(&pWDICtx->wptMutex);
10712
10713 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010714 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010716 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10717 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 &macBSSID))
10719 {
10720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10721 "This station does not exist in the WDI Station Table %d");
10722 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 }
10725
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10727 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10730 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10731 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010732
10733 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 }
10736
10737 /*------------------------------------------------------------------------
10738 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010740 ------------------------------------------------------------------------*/
10741 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10742 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10744 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10745 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010746
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 }
10751
10752
10753 wpalMutexRelease(&pWDICtx->wptMutex);
10754
10755 /*-----------------------------------------------------------------------
10756 Get message buffer
10757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 sizeof(halStatsReqMsg.statsReqParams),
10760 &pSendBuffer, &usDataOffset, &usSendSize))||
10761 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10762 {
10763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10764 "Unable to get send buffer in set bss key req %x %x %x",
10765 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 }
10769
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 wpalMemoryCopy( pSendBuffer+usDataOffset,
10775 &halStatsReqMsg.statsReqParams,
10776 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010777
10778 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010780
10781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10785 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010786}/*WDI_ProcessGetStatsReq*/
10787
10788/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010791
10792 @param pWDICtx: pointer to the WLAN DAL context
10793 pEventData: pointer to the event information structure
10794
Jeff Johnson295189b2012-06-20 16:38:30 -070010795 @see
10796 @return Result of the function call
10797*/
10798WDI_Status
10799WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010800(
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 WDI_ControlBlockType* pWDICtx,
10802 WDI_EventInfoType* pEventData
10803)
10804{
10805 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10806 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10807
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 wpt_uint16 usDataOffset = 0;
10810 wpt_uint16 usSendSize = 0;
10811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10812
10813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 -------------------------------------------------------------------------*/
10816 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10817 ( NULL == pEventData->pCBfnc))
10818 {
10819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 }
10824
10825 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10826 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10827
10828 /*-----------------------------------------------------------------------
10829 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010831 -----------------------------------------------------------------------*/
10832
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10835 &pSendBuffer, &usDataOffset, &usSendSize))||
10836 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10837 {
10838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10839 "Unable to get send buffer in set bss key req %x %x %x",
10840 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 }
10844
Jeff Johnsone7245742012-09-05 17:12:55 -070010845 wpalMemoryCopy( pSendBuffer+usDataOffset,
10846 &pwdiUpdateCfgParams->uConfigBufferLen,
10847 sizeof(wpt_uint32));
10848 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
10849 pwdiUpdateCfgParams->pConfigBuffer,
10850 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070010851
10852 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010854
10855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010856 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010857 -------------------------------------------------------------------------*/
10858
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10860 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010861
10862}/*WDI_ProcessUpdateCfgReq*/
10863
10864
10865/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010868
10869 @param pWDICtx: pointer to the WLAN DAL context
10870 pEventData: pointer to the event information structure
10871
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 @see
10873 @return Result of the function call
10874*/
10875WDI_Status
10876WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010877(
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 WDI_ControlBlockType* pWDICtx,
10879 WDI_EventInfoType* pEventData
10880)
10881{
10882 WDI_AddBAReqParamsType* pwdiAddBAParams;
10883 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 wpt_uint16 usDataOffset = 0;
10888 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 wpt_macAddr macBSSID;
10891
10892 tAddBAReqMsg halAddBAReq;
10893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10894
10895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 -------------------------------------------------------------------------*/
10898 if (( NULL == pEventData ) ||
10899 ( NULL == pEventData->pEventData) ||
10900 ( NULL == pEventData->pCBfnc ))
10901 {
10902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010903 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 }
10907
10908 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
10909 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
10910
10911 /*-------------------------------------------------------------------------
10912 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 -------------------------------------------------------------------------*/
10915 wpalMutexAcquire(&pWDICtx->wptMutex);
10916
10917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010919 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10921 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010922 &macBSSID))
10923 {
10924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10925 "This station does not exist in the WDI Station Table %d");
10926 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 }
10929
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10931 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10934 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10935 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010936
10937 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 }
10940
10941 /*------------------------------------------------------------------------
10942 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010944 ------------------------------------------------------------------------*/
10945 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10946 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10948 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10949 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010950
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010954 }
10955
10956
10957 wpalMutexRelease(&pWDICtx->wptMutex);
10958 /*-----------------------------------------------------------------------
10959 Get message buffer
10960 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 sizeof(halAddBAReq.addBAParams),
10963 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
10966 {
10967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10968 "Unable to get send buffer in Add BA req %x %x %x",
10969 pEventData, pwdiAddBAParams, wdiAddBARspCb);
10970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 }
10973
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
10976 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
10977#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070010978 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070010979 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
10980#endif
10981
Jeff Johnsone7245742012-09-05 17:12:55 -070010982 wpalMemoryCopy( pSendBuffer+usDataOffset,
10983 &halAddBAReq.addBAParams,
10984 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010985
10986 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010987 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010988
10989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10993 wdiAddBARspCb, pEventData->pUserData,
10994 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010995}/*WDI_ProcessAddBAReq*/
10996
10997
10998
10999/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011000 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011001 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011002
11003 @param pWDICtx: pointer to the WLAN DAL context
11004 pEventData: pointer to the event information structure
11005
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 @see
11007 @return Result of the function call
11008*/
11009WDI_Status
11010WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011011(
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 WDI_ControlBlockType* pWDICtx,
11013 WDI_EventInfoType* pEventData
11014)
11015{
11016 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11017 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011020 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011021 wpt_uint16 usDataOffset = 0;
11022 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 wpt_uint16 index;
11025 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011026
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 tTriggerBAReqMsg halTriggerBAReq;
11028 tTriggerBaReqCandidate* halTriggerBACandidate;
11029 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11031
11032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011034 -------------------------------------------------------------------------*/
11035 if (( NULL == pEventData ) ||
11036 ( NULL == pEventData->pEventData ) ||
11037 ( NULL == pEventData->pCBfnc ))
11038 {
11039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 }
11044
11045 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11046 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11047 /*-------------------------------------------------------------------------
11048 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011049 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 -------------------------------------------------------------------------*/
11051 wpalMutexAcquire(&pWDICtx->wptMutex);
11052
11053 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11057 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 &macBSSID))
11059 {
11060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11061 "This station does not exist in the WDI Station Table %d");
11062 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 }
11065
Jeff Johnsone7245742012-09-05 17:12:55 -070011066 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11067 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11070 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11071 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011072
11073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 }
11076
11077 /*------------------------------------------------------------------------
11078 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 ------------------------------------------------------------------------*/
11081 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11082 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11084 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11085 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011086
Jeff Johnsone7245742012-09-05 17:12:55 -070011087 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 }
11091
11092
11093 wpalMutexRelease(&pWDICtx->wptMutex);
11094 /*-----------------------------------------------------------------------
11095 Get message buffer
11096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11098 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011101 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11102 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011105 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011106 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11107 {
11108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11109 "Unable to get send buffer in Trigger BA req %x %x %x",
11110 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011113 }
11114
Jeff Johnsone7245742012-09-05 17:12:55 -070011115 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011116 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011117 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11119
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpalMemoryCopy( pSendBuffer+usDataOffset,
11121 &halTriggerBAReq.triggerBAParams,
11122 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011123
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11126 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11127 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011128
11129 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 index++)
11131 {
11132 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11133 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11134 halTriggerBACandidate++;
11135 wdiTriggerBACandidate++;
11136 }
11137
11138 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011140
11141 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011142 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011143 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11145 wdiTriggerBARspCb, pEventData->pUserData,
11146 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011147}/*WDI_ProcessTriggerBAReq*/
11148
11149
11150
11151/**
11152 @brief Process Update Beacon Params Request function (called when Main FSM
11153 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011154
11155 @param pWDICtx: pointer to the WLAN DAL context
11156 pEventData: pointer to the event information structure
11157
Jeff Johnson295189b2012-06-20 16:38:30 -070011158 @see
11159 @return Result of the function call
11160*/
11161WDI_Status
11162WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011163(
Jeff Johnson295189b2012-06-20 16:38:30 -070011164 WDI_ControlBlockType* pWDICtx,
11165 WDI_EventInfoType* pEventData
11166)
11167{
11168 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11169 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011170 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011171 wpt_uint16 usDataOffset = 0;
11172 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11175
11176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011178 -------------------------------------------------------------------------*/
11179 if (( NULL == pEventData ) ||
11180 ( NULL == pEventData->pEventData) ||
11181 ( NULL == pEventData->pCBfnc))
11182 {
11183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 }
11188
11189 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11190 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11191 /*-----------------------------------------------------------------------
11192 Get message buffer
11193 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 sizeof(halUpdateBeaconParams),
11196 &pSendBuffer, &usDataOffset, &usSendSize))||
11197 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11198 {
11199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11200 "Unable to get send buffer in set bss key req %x %x %x",
11201 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 }
11205
11206 /*BSS Index of the BSS*/
11207 halUpdateBeaconParams.bssIdx =
11208 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11209 /*shortPreamble mode. HAL should update all the STA rates when it
11210 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11213 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11216 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011217 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11219
11220 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011221 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011222 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11233 halUpdateBeaconParams.fRIFSMode =
11234 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11237
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11239 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011240
11241 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011243
11244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011245 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11248 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011249}/*WDI_ProcessUpdateBeaconParamsReq*/
11250
11251
11252
11253/**
11254 @brief Process Send Beacon template Request function (called when Main FSM
11255 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_ProcessSendBeaconParamsReq
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_SendBeaconParamsType* pwdiSendBeaconParams;
11271 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
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 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11276
11277 tSendBeaconReqMsg halSendBeaconReq;
11278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 -------------------------------------------------------------------------*/
11281 if (( NULL == pEventData ) ||
11282 ( NULL == pEventData->pEventData ) ||
11283 ( NULL == pEventData->pCBfnc ))
11284 {
11285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 }
11290
11291 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11292 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11293 /*-----------------------------------------------------------------------
11294 Get message buffer
11295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 sizeof(halSendBeaconReq.sendBeaconParam),
11298 &pSendBuffer, &usDataOffset, &usSendSize))||
11299 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11300 {
11301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11302 "Unable to get send buffer in send beacon req %x %x %x",
11303 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
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
11308 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11309 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11310 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11313 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11314 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11315 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
11316#ifdef WLAN_SOFTAP_FEATURE
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
11319#endif
11320#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011321 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11323#endif
11324
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 wpalMemoryCopy( pSendBuffer+usDataOffset,
11326 &halSendBeaconReq.sendBeaconParam,
11327 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011328
11329 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011331
11332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011334 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11336 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011337}/*WDI_ProcessSendBeaconParamsReq*/
11338
11339/**
11340 @brief Process Update Beacon Params Request function (called when Main FSM
11341 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011342
11343 @param pWDICtx: pointer to the WLAN DAL context
11344 pEventData: pointer to the event information structure
11345
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 @see
11347 @return Result of the function call
11348*/
11349WDI_Status
11350WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011351(
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 WDI_ControlBlockType* pWDICtx,
11353 WDI_EventInfoType* pEventData
11354)
11355{
11356 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11357 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 wpt_uint16 usDataOffset = 0;
11360 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011361 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11363
11364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 -------------------------------------------------------------------------*/
11367 if (( NULL == pEventData ) ||
11368 ( NULL == pEventData->pEventData) ||
11369 ( NULL == pEventData->pCBfnc))
11370 {
11371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 }
11376
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11381 /*-----------------------------------------------------------------------
11382 Get message buffer
11383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 sizeof(halUpdateProbeRspTmplParams),
11386 &pSendBuffer, &usDataOffset, &usSendSize))||
11387 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11388 {
11389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11390 "Unable to get send buffer in set bss key req %x %x %x",
11391 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 }
11395
11396 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 WDI_MAC_ADDR_LEN);
11399
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11402
11403 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11404 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011405 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011406
11407
11408 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11409 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11410 WDI_PROBE_REQ_BITMAP_IE_LEN);
11411
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 wpalMemoryCopy( pSendBuffer+usDataOffset,
11413 &halUpdateProbeRspTmplParams,
11414 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011415
11416 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011418
11419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11423 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11424 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011425}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11426
11427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011430
11431 @param pWDICtx: pointer to the WLAN DAL context
11432 pEventData: pointer to the event information structure
11433
Jeff Johnson295189b2012-06-20 16:38:30 -070011434 @see
11435 @return Result of the function call
11436*/
11437WDI_Status
11438WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011439(
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 WDI_ControlBlockType* pWDICtx,
11441 WDI_EventInfoType* pEventData
11442)
11443{
11444
11445 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11446 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11447
11448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 -------------------------------------------------------------------------*/
11451 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011452 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11456 {
11457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011461 }
11462
11463 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11466
11467 /*cache the wdi nv request message here if the the first fragment
11468 * To issue the request to HAL for the next fragment */
11469 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11470 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11472 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11474
11475 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11476 pWDICtx->pRspCBUserData = pEventData->pUserData;
11477 }
11478
11479 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11480}
11481
11482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011483 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011485
11486 @param pWDICtx: pointer to the WLAN DAL context
11487 pEventData: pointer to the event information structure
11488
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 @see
11490 @return Result of the function call
11491*/
11492WDI_Status WDI_ProcessSetMaxTxPowerReq
11493(
11494 WDI_ControlBlockType* pWDICtx,
11495 WDI_EventInfoType* pEventData
11496)
11497{
11498 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11499 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 wpt_uint16 usDataOffset = 0;
11502 wpt_uint16 usSendSize = 0;
11503 tSetMaxTxPwrReq halSetMaxTxPower;
11504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11505
11506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 -------------------------------------------------------------------------*/
11509 if (( NULL == pEventData ) ||
11510 ( NULL == pEventData->pEventData ) ||
11511 ( NULL == pEventData->pCBfnc ))
11512 {
11513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011518 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11522
11523 /*-----------------------------------------------------------------------
11524 Get message buffer
11525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011526if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11528 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011529 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011530)))
11531 {
11532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11533 "Unable to get Set Max Tx Power req %x %x %x",
11534 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 }
11538
11539 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11540 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11541 WDI_MAC_ADDR_LEN);
11542
11543 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11544 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11545 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011548
11549 wpalMemoryCopy( pSendBuffer+usDataOffset,
11550 &halSetMaxTxPower.setMaxTxPwrParams,
11551 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011552
11553 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011555
11556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11560 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11561 WDI_SET_MAX_TX_POWER_RESP);
11562
Jeff Johnson295189b2012-06-20 16:38:30 -070011563}
11564
11565#ifdef WLAN_FEATURE_P2P
11566
11567/**
11568 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11569 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011570
11571 @param pWDICtx: pointer to the WLAN DAL context
11572 pEventData: pointer to the event information structure
11573
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 @see
11575 @return Result of the function call
11576*/
11577WDI_Status
11578WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011579(
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 WDI_ControlBlockType* pWDICtx,
11581 WDI_EventInfoType* pEventData
11582)
11583{
11584 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11585 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 wpt_uint16 usDataOffset = 0;
11588 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11591
11592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 -------------------------------------------------------------------------*/
11595 if (( NULL == pEventData ) ||
11596 ( NULL == pEventData->pEventData) ||
11597 ( NULL == pEventData->pCBfnc))
11598 {
11599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 }
11604
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11609 /*-----------------------------------------------------------------------
11610 Get message buffer
11611 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11613 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 sizeof(halSetP2PGONOAParams),
11615 &pSendBuffer, &usDataOffset, &usSendSize))||
11616 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11617 {
11618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11619 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11620 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011623 }
11624
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011627 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011628 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11629 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011636 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011637 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11638
Jeff Johnsone7245742012-09-05 17:12:55 -070011639 wpalMemoryCopy( pSendBuffer+usDataOffset,
11640 &halSetP2PGONOAParams,
11641 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011642
11643 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011645
11646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011647 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011648 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11650 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11651 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011652}/*WDI_ProcessP2PGONOAReq*/
11653
11654#endif
11655
11656
11657/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011659 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 @param None
11661
11662 @see
11663 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011664*/
11665void
11666WDI_SetPowerStateCb
11667(
11668 wpt_status status,
11669 unsigned int dxePhyAddr,
11670 void *pContext
11671)
11672{
11673 wpt_status wptStatus;
11674 WDI_ControlBlockType *pCB = NULL;
11675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11676 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11677 {
11678 //it shouldn't happen, put an error msg
11679 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 /*
11681 * Trigger the event to bring the Enter BMPS req function to come
11682 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011683*/
11684 if( NULL != pContext )
11685 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 }
11688 else
11689 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011690 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011691 pCB = &gWDICb;
11692 }
11693 pCB->dxePhyAddr = dxePhyAddr;
11694 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11695 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11696 {
11697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11698 "Failed to set an event");
11699
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011701 }
11702 return;
11703}
11704
11705
11706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011709
11710 @param pWDICtx: pointer to the WLAN DAL context
11711 pEventData: pointer to the event information structure
11712
Jeff Johnson295189b2012-06-20 16:38:30 -070011713 @see
11714 @return Result of the function call
11715*/
11716WDI_Status
11717WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011718(
Jeff Johnson295189b2012-06-20 16:38:30 -070011719 WDI_ControlBlockType* pWDICtx,
11720 WDI_EventInfoType* pEventData
11721)
11722{
Jeff Johnson43971f52012-07-17 12:26:56 -070011723 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011725 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 wpt_uint16 usDataOffset = 0;
11727 wpt_uint16 usSendSize = 0;
11728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11729
11730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011731 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011732 -------------------------------------------------------------------------*/
11733 if (( NULL == pEventData ) ||
11734 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11735 {
11736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 }
11741
11742 /*-----------------------------------------------------------------------
11743 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011744 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 0,
11748 &pSendBuffer, &usDataOffset, &usSendSize))||
11749 ( usSendSize < (usDataOffset )))
11750 {
11751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11752 "Unable to get send buffer in Enter IMPS req %x %x",
11753 pEventData, wdiEnterImpsRspCb);
11754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 }
11757
11758 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011759 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11760 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 {
11762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11763 "WDI Init failed to reset an event");
11764
Jeff Johnsone7245742012-09-05 17:12:55 -070011765 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 return VOS_STATUS_E_FAILURE;
11767 }
11768
11769 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011770 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11771 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
11772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11773 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
11774 WDI_ASSERT(0);
11775 return WDI_STATUS_E_FAILURE;
11776 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011777
11778 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011779 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011780 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011781 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11782 WDI_SET_POWER_STATE_TIMEOUT);
11783 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011784 {
11785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11786 "WDI Init failed to wait on an event");
11787
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011789 return VOS_STATUS_E_FAILURE;
11790 }
11791
11792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11796 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011797}/*WDI_ProcessEnterImpsReq*/
11798
11799/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011800 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011802
11803 @param pWDICtx: pointer to the WLAN DAL context
11804 pEventData: pointer to the event information structure
11805
Jeff Johnson295189b2012-06-20 16:38:30 -070011806 @see
11807 @return Result of the function call
11808*/
11809WDI_Status
11810WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011811(
Jeff Johnson295189b2012-06-20 16:38:30 -070011812 WDI_ControlBlockType* pWDICtx,
11813 WDI_EventInfoType* pEventData
11814)
11815{
11816 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011818 wpt_uint16 usDataOffset = 0;
11819 wpt_uint16 usSendSize = 0;
11820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11821
11822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 -------------------------------------------------------------------------*/
11825 if (( NULL == pEventData ) ||
11826 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11827 {
11828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011832 }
11833
11834 /*-----------------------------------------------------------------------
11835 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011837 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 0,
11840 &pSendBuffer, &usDataOffset, &usSendSize))||
11841 ( usSendSize < (usDataOffset )))
11842 {
11843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11844 "Unable to get send buffer in Exit IMPS req %x %x",
11845 pEventData, wdiExitImpsRspCb);
11846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 }
11849
11850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011851 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11854 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011855}/*WDI_ProcessExitImpsReq*/
11856
11857/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011860
11861 @param pWDICtx: pointer to the WLAN DAL context
11862 pEventData: pointer to the event information structure
11863
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 @see
11865 @return Result of the function call
11866*/
11867WDI_Status
11868WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011869(
Jeff Johnson295189b2012-06-20 16:38:30 -070011870 WDI_ControlBlockType* pWDICtx,
11871 WDI_EventInfoType* pEventData
11872)
11873{
11874 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
11875 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011876 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011877 wpt_uint16 usDataOffset = 0;
11878 wpt_uint16 usSendSize = 0;
11879 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070011880 wpt_status wptStatus;
11881
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11883
11884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011886 -------------------------------------------------------------------------*/
11887 if (( NULL == pEventData ) ||
11888 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
11889 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
11890 {
11891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011895 }
11896
11897 /*-----------------------------------------------------------------------
11898 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 sizeof(enterBmpsReq),
11903 &pSendBuffer, &usDataOffset, &usSendSize))||
11904 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
11905 {
11906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11907 "Unable to get send buffer in Enter BMPS req %x %x %x",
11908 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
11909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 }
11912
11913 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011914 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11915 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011916 {
11917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11918 "WDI Init failed to reset an event");
11919
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 return VOS_STATUS_E_FAILURE;
11922 }
11923
11924 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011925 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
11926 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11927 {
11928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11929 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
11930 WDI_ASSERT(0);
11931 return WDI_STATUS_E_FAILURE;
11932 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011933
11934/*
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011937 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11938 WDI_SET_POWER_STATE_TIMEOUT);
11939 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 {
11941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11942 "WDI Init failed to wait on an event");
11943
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 WDI_ASSERT(0);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011945 return VOS_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 }
11947
11948 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
11949
11950 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
11951 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
11952 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
11953 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
11954
11955 // For CCX and 11R Roaming
11956 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
11957 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
11958 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
11959
11960 wpalMemoryCopy( pSendBuffer+usDataOffset,
11961 &enterBmpsReq,
11962 sizeof(enterBmpsReq));
11963
11964 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011966
11967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11971 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011972}/*WDI_ProcessEnterBmpsReq*/
11973
11974/**
11975 @brief Process Exit BMPS Request function (called when Main FSM
11976 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011977
11978 @param pWDICtx: pointer to the WLAN DAL context
11979 pEventData: pointer to the event information structure
11980
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 @see
11982 @return Result of the function call
11983*/
11984WDI_Status
11985WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011986(
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 WDI_ControlBlockType* pWDICtx,
11988 WDI_EventInfoType* pEventData
11989)
11990{
11991 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
11992 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 wpt_uint16 usDataOffset = 0;
11995 wpt_uint16 usSendSize = 0;
11996 tHalExitBmpsReqParams exitBmpsReq;
11997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11998
11999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 -------------------------------------------------------------------------*/
12002 if (( NULL == pEventData ) ||
12003 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12004 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12005 {
12006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012010 }
12011
12012 /*-----------------------------------------------------------------------
12013 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 sizeof(exitBmpsReq),
12018 &pSendBuffer, &usDataOffset, &usSendSize))||
12019 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12020 {
12021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12022 "Unable to get send buffer in Exit BMPS req %x %x %x",
12023 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012026 }
12027 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12028
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12030
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 wpalMemoryCopy( pSendBuffer+usDataOffset,
12032 &exitBmpsReq,
12033 sizeof(exitBmpsReq));
12034
12035 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012037
12038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012039 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12042 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012043}/*WDI_ProcessExitBmpsReq*/
12044
12045/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012048
12049 @param pWDICtx: pointer to the WLAN DAL context
12050 pEventData: pointer to the event information structure
12051
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 @see
12053 @return Result of the function call
12054*/
12055WDI_Status
12056WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012057(
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 WDI_ControlBlockType* pWDICtx,
12059 WDI_EventInfoType* pEventData
12060)
12061{
12062 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12063 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012065 wpt_uint16 usDataOffset = 0;
12066 wpt_uint16 usSendSize = 0;
12067 tUapsdReqParams enterUapsdReq;
12068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12069
12070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 -------------------------------------------------------------------------*/
12073 if (( NULL == pEventData ) ||
12074 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12075 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12076 {
12077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 }
12082
12083 /*-----------------------------------------------------------------------
12084 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 sizeof(enterUapsdReq),
12089 &pSendBuffer, &usDataOffset, &usSendSize))||
12090 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12091 {
12092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12093 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12094 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 }
12098
12099 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12100 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12101 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12102 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12103 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12104 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12105 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12106 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012107 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012108
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 wpalMemoryCopy( pSendBuffer+usDataOffset,
12110 &enterUapsdReq,
12111 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012112
12113 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012114 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012115
12116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012117 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12120 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012121}/*WDI_ProcessEnterUapsdReq*/
12122
12123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012126
12127 @param pWDICtx: pointer to the WLAN DAL context
12128 pEventData: pointer to the event information structure
12129
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 @see
12131 @return Result of the function call
12132*/
12133WDI_Status
12134WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012135(
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 WDI_ControlBlockType* pWDICtx,
12137 WDI_EventInfoType* pEventData
12138)
12139{
12140 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012141 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 wpt_uint16 usDataOffset = 0;
12143 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012144 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12145 wpt_uint8 bssIdx = 0;
12146
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12148
12149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 -------------------------------------------------------------------------*/
12152 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012153 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12155 {
12156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 }
12161
12162 /*-----------------------------------------------------------------------
12163 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012167 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012168 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012169 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 {
12171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12172 "Unable to get send buffer in Exit UAPSD req %x %x",
12173 pEventData, wdiExitUapsdRspCb);
12174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 }
12177
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012178 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12179
12180 wpalMemoryCopy( pSendBuffer+usDataOffset,
12181 &bssIdx,
12182 sizeof(wpt_uint8));
12183
12184 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12185 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12186
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012188 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12191 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012192}/*WDI_ProcessExitUapsdReq*/
12193
12194/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012197
12198 @param pWDICtx: pointer to the WLAN DAL context
12199 pEventData: pointer to the event information structure
12200
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 @see
12202 @return Result of the function call
12203*/
12204WDI_Status
12205WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012206(
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 WDI_ControlBlockType* pWDICtx,
12208 WDI_EventInfoType* pEventData
12209)
12210{
12211 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12212 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012214 wpt_uint16 usDataOffset = 0;
12215 wpt_uint16 usSendSize = 0;
12216 tUapsdInfo uapsdAcParamsReq;
12217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12218
12219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 -------------------------------------------------------------------------*/
12222 if (( NULL == pEventData ) ||
12223 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12224 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12225 {
12226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012230 }
12231
12232 /*-----------------------------------------------------------------------
12233 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012234 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012235 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012236 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 sizeof(uapsdAcParamsReq),
12238 &pSendBuffer, &usDataOffset, &usSendSize))||
12239 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12240 {
12241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12242 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12243 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 }
12247
12248 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12249 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12250 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12251 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12252 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12253 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12254
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 wpalMemoryCopy( pSendBuffer+usDataOffset,
12256 &uapsdAcParamsReq,
12257 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012258
12259 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012261
12262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012263 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12266 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012267}/*WDI_ProcessSetUapsdAcParamsReq*/
12268
12269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012272
12273 @param pWDICtx: pointer to the WLAN DAL context
12274 pEventData: pointer to the event information structure
12275
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 @see
12277 @return Result of the function call
12278*/
12279WDI_Status
12280WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012281(
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 WDI_ControlBlockType* pWDICtx,
12283 WDI_EventInfoType* pEventData
12284)
12285{
12286 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12287 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 wpt_uint16 usDataOffset = 0;
12290 wpt_uint16 usSendSize = 0;
12291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12292
12293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 -------------------------------------------------------------------------*/
12296 if (( NULL == pEventData ) ||
12297 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12298 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12299 {
12300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 }
12305
12306 /*-----------------------------------------------------------------------
12307 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12312 &pSendBuffer, &usDataOffset, &usSendSize))||
12313 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12314 {
12315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12316 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12317 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 }
12321
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 wpalMemoryCopy( pSendBuffer+usDataOffset,
12323 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12324 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012325
12326 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012327 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012328
12329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12333 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012334}/*WDI_ProcessUpdateUapsdParamsReq*/
12335
12336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012339
12340 @param pWDICtx: pointer to the WLAN DAL context
12341 pEventData: pointer to the event information structure
12342
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 @see
12344 @return Result of the function call
12345*/
12346WDI_Status
12347WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012348(
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 WDI_ControlBlockType* pWDICtx,
12350 WDI_EventInfoType* pEventData
12351)
12352{
12353 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12354 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 wpt_uint16 usDataOffset = 0;
12357 wpt_uint16 usSendSize = 0;
12358 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12359
12360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12361
12362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 -------------------------------------------------------------------------*/
12365 if (( NULL == pEventData ) ||
12366 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12367 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12368 {
12369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012373 }
12374
12375 /*-----------------------------------------------------------------------
12376 Get message buffer
12377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012379 sizeof(halRxpFilterParams),
12380 &pSendBuffer, &usDataOffset, &usSendSize))||
12381 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12382 {
12383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12384 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12385 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012388 }
12389
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012393 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12394
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 wpalMemoryCopy( pSendBuffer+usDataOffset,
12396 &halRxpFilterParams,
12397 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012398
12399 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012400 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012401
12402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012403 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012404 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12406 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012407}/*WDI_ProcessConfigureRxpFilterReq*/
12408
12409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012412
12413 @param pWDICtx: pointer to the WLAN DAL context
12414 pEventData: pointer to the event information structure
12415
Jeff Johnson295189b2012-06-20 16:38:30 -070012416 @see
12417 @return Result of the function call
12418*/
12419WDI_Status
12420WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012421(
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 WDI_ControlBlockType* pWDICtx,
12423 WDI_EventInfoType* pEventData
12424)
12425{
12426 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12427 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012428 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012429 wpt_uint16 usDataOffset = 0;
12430 wpt_uint16 usSendSize = 0;
12431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12432
12433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 -------------------------------------------------------------------------*/
12436 if (( NULL == pEventData ) ||
12437 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12438 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12439 {
12440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 }
12445
12446 /*-----------------------------------------------------------------------
12447 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12452 &pSendBuffer, &usDataOffset, &usSendSize))||
12453 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12454 {
12455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12456 "Unable to get send buffer in Set beacon filter req %x %x %x",
12457 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 }
12461
Jeff Johnsone7245742012-09-05 17:12:55 -070012462 wpalMemoryCopy( pSendBuffer+usDataOffset,
12463 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12464 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12465 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12466 &pwdiBeaconFilterParams->aFilters[0],
12467 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012468
12469 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012470 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012471
12472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12476 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012477}/*WDI_ProcessSetBeaconFilterReq*/
12478
12479/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012480 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012482
12483 @param pWDICtx: pointer to the WLAN DAL context
12484 pEventData: pointer to the event information structure
12485
Jeff Johnson295189b2012-06-20 16:38:30 -070012486 @see
12487 @return Result of the function call
12488*/
12489WDI_Status
12490WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012491(
Jeff Johnson295189b2012-06-20 16:38:30 -070012492 WDI_ControlBlockType* pWDICtx,
12493 WDI_EventInfoType* pEventData
12494)
12495{
12496 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12497 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 wpt_uint16 usDataOffset = 0;
12500 wpt_uint16 usSendSize = 0;
12501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12502
12503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012505 -------------------------------------------------------------------------*/
12506 if (( NULL == pEventData ) ||
12507 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12508 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12509 {
12510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 }
12515
12516 /*-----------------------------------------------------------------------
12517 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012520 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012521 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12522 &pSendBuffer, &usDataOffset, &usSendSize))||
12523 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12524 {
12525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12526 "Unable to get send buffer in remove beacon filter req %x %x %x",
12527 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 }
12531
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 wpalMemoryCopy( pSendBuffer+usDataOffset,
12533 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12534 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012535
12536 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012538
12539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12543 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012544}
12545
12546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012549
12550 @param pWDICtx: pointer to the WLAN DAL context
12551 pEventData: pointer to the event information structure
12552
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 @see
12554 @return Result of the function call
12555*/
12556WDI_Status
12557WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012558(
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 WDI_ControlBlockType* pWDICtx,
12560 WDI_EventInfoType* pEventData
12561)
12562{
12563 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12564 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012565 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 wpt_uint16 usDataOffset = 0;
12567 wpt_uint16 usSendSize = 0;
12568 tHalRSSIThresholds rssiThresholdsReq;
12569 WDI_Status ret_status = 0;
12570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12571
12572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 -------------------------------------------------------------------------*/
12575 if (( NULL == pEventData ) ||
12576 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12577 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12578 {
12579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 }
12584
12585 /*-----------------------------------------------------------------------
12586 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012587 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 sizeof(rssiThresholdsReq),
12591 &pSendBuffer, &usDataOffset, &usSendSize))||
12592 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12593 {
12594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12595 "Unable to get send buffer in remove beacon filter req %x %x %x",
12596 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 }
12600
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012603 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012613 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012615 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12621
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 wpalMemoryCopy( pSendBuffer+usDataOffset,
12623 &rssiThresholdsReq,
12624 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012625
12626 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012628
12629 /*-------------------------------------------------------------------------
12630 Send Set threshold req to HAL
12631 -------------------------------------------------------------------------*/
12632 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12633 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12634 {
12635 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12636 // req. Then as a result of processing the threshold cross ind, we trigger
12637 // a Set threshold req, then we need to indicate to WDI that it needs to
12638 // go to busy state as a result of the indication as we sent a req in the
12639 // same WDI context.
12640 // Hence expected state transition is to busy.
12641 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12642 }
12643
12644 return ret_status;
12645}
12646
12647/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012650
12651 @param pWDICtx: pointer to the WLAN DAL context
12652 pEventData: pointer to the event information structure
12653
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 @see
12655 @return Result of the function call
12656*/
12657WDI_Status
12658WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012659(
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 WDI_ControlBlockType* pWDICtx,
12661 WDI_EventInfoType* pEventData
12662)
12663{
12664 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12665 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 wpt_uint16 usDataOffset = 0;
12668 wpt_uint16 usSendSize = 0;
12669 tHalHostOffloadReq hostOffloadParams;
12670 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012671 wpt_uint8 ucCurrentBSSSesIdx = 0;
12672 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012673
12674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12675
12676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012678 -------------------------------------------------------------------------*/
12679 if (( NULL == pEventData ) ||
12680 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12681 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12682 {
12683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 }
12688
12689 /*-----------------------------------------------------------------------
12690 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012691 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12695 &pSendBuffer, &usDataOffset, &usSendSize))||
12696 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12697 {
12698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12699 "Unable to get send buffer in host offload req %x %x %x",
12700 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 }
12704
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012705 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12706 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12707 &pBSSSes);
12708 if ( NULL == pBSSSes )
12709 {
12710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012711 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012712 return WDI_STATUS_E_FAILURE;
12713 }
12714
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12716 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012717
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12719 {
12720 // ARP Offload
12721 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12722 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12723 4);
12724 }
12725 else
12726 {
12727 // NS Offload
12728 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12729 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12730 16);
12731
12732#ifdef WLAN_NS_OFFLOAD
12733 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12734 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12735 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12736 16);
12737 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12738 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12739 16);
12740 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12741 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12742 16);
12743 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12744 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12745 16);
12746 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12747 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12748 6);
12749 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12750 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12751 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012752
Jeff Johnson295189b2012-06-20 16:38:30 -070012753#endif // WLAN_NS_OFFLOAD
12754 }
12755
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012756 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12757
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 // copy hostOffloadParams into pSendBuffer
12759 wpalMemoryCopy( pSendBuffer+usDataOffset,
12760 &hostOffloadParams,
12761 sizeof(hostOffloadParams));
12762
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012763 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012765 // copy nsOffloadParams into pSendBuffer
12766 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012767 &nsOffloadParams,
12768 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012769 }
12770 else
12771 {
12772#ifdef WLAN_NS_OFFLOAD
12773 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12774 {
12775 // copy nsOffloadParams into pSendBuffer
12776 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12777 &nsOffloadParams,
12778 sizeof(nsOffloadParams));
12779 }
12780#endif
12781 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012782
12783 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012784 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012785
12786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012787 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012788 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012789 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12790 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012791}/*WDI_ProcessHostOffloadReq*/
12792
12793/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012794 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012796
12797 @param pWDICtx: pointer to the WLAN DAL context
12798 pEventData: pointer to the event information structure
12799
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 @see
12801 @return Result of the function call
12802*/
12803WDI_Status
12804WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012805(
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 WDI_ControlBlockType* pWDICtx,
12807 WDI_EventInfoType* pEventData
12808)
12809{
12810 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12811 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 wpt_uint16 usDataOffset = 0;
12814 wpt_uint16 usSendSize = 0;
12815 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012816 wpt_uint8 ucCurrentBSSSesIdx = 0;
12817 WDI_BSSSessionType* pBSSSes = NULL;
12818
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12820
12821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 -------------------------------------------------------------------------*/
12824 if (( NULL == pEventData ) ||
12825 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
12826 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
12827 {
12828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12829 "Invalid parameters in Keep Alive req");
12830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 }
12833
12834 /*-----------------------------------------------------------------------
12835 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012836 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012838 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 sizeof(keepAliveReq),
12840 &pSendBuffer, &usDataOffset, &usSendSize))||
12841 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
12842 {
12843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12844 "Unable to get send buffer in keep alive req %x %x %x",
12845 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
12846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 }
12849
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012850 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12851 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
12852 &pBSSSes);
12853 if ( NULL == pBSSSes )
12854 {
12855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012856 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012857 return WDI_STATUS_E_FAILURE;
12858 }
12859
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
12861 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
12862
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012863 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012864
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
12866 {
12867 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
12868 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
12869 HAL_IPV4_ADDR_LEN);
12870 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
12871 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070012872 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070012873 wpalMemoryCopy(keepAliveReq.destMacAddr,
12874 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
12875 HAL_MAC_ADDR_LEN);
12876 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012877
12878 wpalMemoryCopy( pSendBuffer+usDataOffset,
12879 &keepAliveReq,
12880 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012881
12882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12883 "Process keep alive req %d",sizeof(keepAliveReq));
12884
12885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12886 "Process keep alive req time period %d",keepAliveReq.timePeriod);
12887
12888 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012890
12891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12892 "Sending keep alive req to HAL");
12893
12894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12898 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012899}/*WDI_ProcessKeepAliveReq*/
12900
12901
12902/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012905
12906 @param pWDICtx: pointer to the WLAN DAL context
12907 pEventData: pointer to the event information structure
12908
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 @see
12910 @return Result of the function call
12911*/
12912WDI_Status
12913WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012914(
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 WDI_ControlBlockType* pWDICtx,
12916 WDI_EventInfoType* pEventData
12917)
12918{
12919 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
12920 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 wpt_uint16 usDataOffset = 0;
12923 wpt_uint16 usSendSize = 0;
12924 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012925 wpt_uint8 ucCurrentBSSSesIdx = 0;
12926 WDI_BSSSessionType* pBSSSes = NULL;
12927
Jeff Johnson295189b2012-06-20 16:38:30 -070012928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12929
12930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012932 -------------------------------------------------------------------------*/
12933 if (( NULL == pEventData ) ||
12934 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
12935 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
12936 {
12937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 }
12942
12943 /*-----------------------------------------------------------------------
12944 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012945 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 sizeof(wowlAddBcPtrnReq),
12949 &pSendBuffer, &usDataOffset, &usSendSize))||
12950 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
12951 {
12952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12953 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
12954 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
12955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 }
12958
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012959 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12960 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
12961 &pBSSSes);
12962 if ( NULL == pBSSSes )
12963 {
12964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012965 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012966 return WDI_STATUS_E_FAILURE;
12967 }
12968
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070012975 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
12977
12978 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
12979 {
12980 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12981 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12982 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
12983 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
12984 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
12985 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
12986 }
12987 else
12988 {
12989 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12990 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12991 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12992 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
12993 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
12994 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12995
12996 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12997 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12998 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12999 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13000 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13001 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13002 }
13003
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013004 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13005
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 wpalMemoryCopy( pSendBuffer+usDataOffset,
13007 &wowlAddBcPtrnReq,
13008 sizeof(wowlAddBcPtrnReq));
13009
13010 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013011 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013012
13013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13017 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013018}/*WDI_ProcessWowlAddBcPtrnReq*/
13019
13020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013022 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013023
13024 @param pWDICtx: pointer to the WLAN DAL context
13025 pEventData: pointer to the event information structure
13026
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 @see
13028 @return Result of the function call
13029*/
13030WDI_Status
13031WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013032(
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 WDI_ControlBlockType* pWDICtx,
13034 WDI_EventInfoType* pEventData
13035)
13036{
13037 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13038 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 wpt_uint16 usDataOffset = 0;
13041 wpt_uint16 usSendSize = 0;
13042 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013043 wpt_uint8 ucCurrentBSSSesIdx = 0;
13044 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13046
13047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013049 -------------------------------------------------------------------------*/
13050 if (( NULL == pEventData ) ||
13051 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13052 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13053 {
13054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 }
13059
13060 /*-----------------------------------------------------------------------
13061 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 sizeof(wowlDelBcPtrnReq),
13066 &pSendBuffer, &usDataOffset, &usSendSize))||
13067 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13068 {
13069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13070 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13071 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 }
13075
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013076 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13077 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13078 &pBSSSes);
13079 if ( NULL == pBSSSes )
13080 {
13081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013082 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013083 return WDI_STATUS_E_FAILURE;
13084 }
13085
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013088
13089 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13090
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 wpalMemoryCopy( pSendBuffer+usDataOffset,
13092 &wowlDelBcPtrnReq,
13093 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013094
13095 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013097
13098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013101 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13102 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013103}/*WDI_ProcessWowlDelBcPtrnReq*/
13104
13105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013108
13109 @param pWDICtx: pointer to the WLAN DAL context
13110 pEventData: pointer to the event information structure
13111
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 @see
13113 @return Result of the function call
13114*/
13115WDI_Status
13116WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013117(
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 WDI_ControlBlockType* pWDICtx,
13119 WDI_EventInfoType* pEventData
13120)
13121{
13122 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13123 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013125 wpt_uint16 usDataOffset = 0;
13126 wpt_uint16 usSendSize = 0;
13127 tHalWowlEnterParams wowlEnterReq;
13128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13129
13130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 -------------------------------------------------------------------------*/
13133 if (( NULL == pEventData ) ||
13134 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13135 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13136 {
13137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013141 }
13142
13143 /*-----------------------------------------------------------------------
13144 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013147 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013148 sizeof(wowlEnterReq),
13149 &pSendBuffer, &usDataOffset, &usSendSize))||
13150 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13151 {
13152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13153 "Unable to get send buffer in Wowl enter req %x %x %x",
13154 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 }
13158
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013161 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013162 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013164 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013165 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013166 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13175
13176#ifdef WLAN_WAKEUP_EVENTS
13177 wowlEnterReq.ucWoWEAPIDRequestEnable =
13178 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13179
13180 wowlEnterReq.ucWoWEAPOL4WayEnable =
13181 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13182
13183 wowlEnterReq.ucWowNetScanOffloadMatch =
13184 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13185
13186 wowlEnterReq.ucWowGTKRekeyError =
13187 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13188
13189 wowlEnterReq.ucWoWBSSConnLoss =
13190 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13191#endif // WLAN_WAKEUP_EVENTS
13192
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013193 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13194
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13196 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13197 sizeof(tSirMacAddr));
13198
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 wpalMemoryCopy( pSendBuffer+usDataOffset,
13200 &wowlEnterReq,
13201 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013202
13203 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013205
13206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13210 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013211}/*WDI_ProcessWowlEnterReq*/
13212
13213/**
13214 @brief Process Wowl exit Request function (called when Main FSM
13215 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013216
13217 @param pWDICtx: pointer to the WLAN DAL context
13218 pEventData: pointer to the event information structure
13219
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 @see
13221 @return Result of the function call
13222*/
13223WDI_Status
13224WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013225(
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 WDI_ControlBlockType* pWDICtx,
13227 WDI_EventInfoType* pEventData
13228)
13229{
13230 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013231 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 wpt_uint16 usDataOffset = 0;
13234 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013235 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13237
13238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013240 -------------------------------------------------------------------------*/
13241 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013242 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13244 {
13245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013249 }
13250
13251 /*-----------------------------------------------------------------------
13252 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013256 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013258 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 {
13260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13261 "Unable to get send buffer in Wowl Exit req %x %x",
13262 pEventData, wdiWowlExitCb);
13263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013265 }
13266
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013267 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13268
13269 wpalMemoryCopy( pSendBuffer+usDataOffset,
13270 &wowlExitparams,
13271 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013275 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13276 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013277}/*WDI_ProcessWowlExitReq*/
13278
13279/**
13280 @brief Process Configure Apps Cpu Wakeup State Request function
13281 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013282
13283 @param pWDICtx: pointer to the WLAN DAL context
13284 pEventData: pointer to the event information structure
13285
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 @see
13287 @return Result of the function call
13288*/
13289WDI_Status
13290WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013291(
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 WDI_ControlBlockType* pWDICtx,
13293 WDI_EventInfoType* pEventData
13294)
13295{
13296 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13297 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 wpt_uint16 usDataOffset = 0;
13300 wpt_uint16 usSendSize = 0;
13301 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13303
13304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 -------------------------------------------------------------------------*/
13307 if (( NULL == pEventData ) ||
13308 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13309 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13310 {
13311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 }
13316
13317 /*-----------------------------------------------------------------------
13318 Get message buffer
13319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 sizeof(halCfgAppsCpuWakeupStateReqParams),
13322 &pSendBuffer, &usDataOffset, &usSendSize))||
13323 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13324 {
13325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13326 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13327 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013330 }
13331
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13334
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 wpalMemoryCopy( pSendBuffer+usDataOffset,
13336 &halCfgAppsCpuWakeupStateReqParams,
13337 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013338
13339 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013341
13342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013343 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013344 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13346 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13347 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013348}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13349
13350#ifdef WLAN_FEATURE_VOWIFI_11R
13351/**
13352 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13353 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013354
13355 @param pWDICtx: pointer to the WLAN DAL context
13356 pEventData: pointer to the event information structure
13357
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 @see
13359 @return Result of the function call
13360*/
13361WDI_Status
13362WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013363(
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 WDI_ControlBlockType* pWDICtx,
13365 WDI_EventInfoType* pEventData
13366)
13367{
13368 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13369 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 wpt_uint16 usDataOffset = 0;
13374 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013375 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 wpt_macAddr macBSSID;
13377 tAggrAddTsReq halAggrAddTsReq;
13378 int i;
13379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13380
13381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 -------------------------------------------------------------------------*/
13384 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13385 ( NULL == pEventData->pCBfnc ))
13386 {
13387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 }
13392 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13393 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13394 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13395 /*-------------------------------------------------------------------------
13396 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013397 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013398 -------------------------------------------------------------------------*/
13399 wpalMutexAcquire(&pWDICtx->wptMutex);
13400
13401 /*------------------------------------------------------------------------
13402 Find the BSS for which the request is made and identify WDI session
13403 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013404 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13405 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 &macBSSID))
13407 {
13408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13409 "This station does not exist in the WDI Station Table %d");
13410 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 }
13413
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13415 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13418 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13419 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013420
13421 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013424
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 /*------------------------------------------------------------------------
13426 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013427 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 ------------------------------------------------------------------------*/
13429 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13430 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13432 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13433 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013434
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 }
13439
13440 wpalMutexRelease(&pWDICtx->wptMutex);
13441 /*-----------------------------------------------------------------------
13442 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 sizeof(tAggrAddTsParams),
13447 &pSendBuffer, &usDataOffset, &usSendSize))||
13448 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13449 {
13450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13451 "Unable to get send buffer in set bss key req %x %x %x",
13452 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 }
13456
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13461
13462 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13463 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013468 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13470 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13473 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13476 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13479 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13482 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13485 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13488 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13491 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496
13497
13498 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013505 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013508 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013510 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013512 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013513 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013514 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013518 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013520 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13528 }
13529
Jeff Johnsone7245742012-09-05 17:12:55 -070013530 wpalMemoryCopy( pSendBuffer+usDataOffset,
13531 &halAggrAddTsReq,
13532 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013533
13534 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536
13537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013543}/*WDI_ProcessAggrAddTSpecReq*/
13544#endif /* WLAN_FEATURE_VOWIFI_11R */
13545
13546/**
13547 @brief Process Shutdown Request function (called when Main FSM
13548 allows it)
13549
13550 @param pWDICtx: pointer to the WLAN DAL context
13551 pEventData: pointer to the event information structure
13552
13553 @see
13554 @return Result of the function call
13555*/
13556WDI_Status
13557WDI_ProcessShutdownReq
13558(
13559 WDI_ControlBlockType* pWDICtx,
13560 WDI_EventInfoType* pEventData
13561 )
13562{
13563 wpt_status wptStatus;
13564
13565
13566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13567
13568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013569 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 -------------------------------------------------------------------------*/
13571 if ( NULL == pEventData )
13572 {
13573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013575 WDI_ASSERT(0);
13576 return WDI_STATUS_E_FAILURE;
13577 }
13578
13579 wpalMutexAcquire(&pWDICtx->wptMutex);
13580
13581
13582 gWDIInitialized = eWLAN_PAL_FALSE;
13583 /*! TO DO: stop the data services */
13584 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13585 {
13586 /*Stop the STA Table !UT- check this logic again
13587 It is safer to do it here than on the response - because a stop is imminent*/
13588 WDI_STATableStop(pWDICtx);
13589
13590 /* Stop Transport Driver, DXE */
13591 WDTS_Stop(pWDICtx);
13592 }
13593
13594 /*Clear all pending request*/
13595 WDI_ClearPendingRequests(pWDICtx);
13596 /* Close Data transport*/
13597 /* FTM mode does not open Data Path */
13598 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13599 {
13600 WDTS_Close(pWDICtx);
13601 }
13602 /*Close the STA Table !UT- check this logic again*/
13603 WDI_STATableClose(pWDICtx);
13604 /*close the PAL */
13605 wptStatus = wpalClose(pWDICtx->pPALContext);
13606 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13607 {
13608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13609 "Failed to wpal Close %d", wptStatus);
13610 WDI_ASSERT(0);
13611 }
13612
13613 /*Transition back to init state*/
13614 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13615
13616 wpalMutexRelease(&pWDICtx->wptMutex);
13617
13618 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013620
13621
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013623}/*WDI_ProcessShutdownReq*/
13624
13625/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013627========================================================================*/
13628
13629/**
13630 @brief Process Start Response function (called when a response
13631 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013632
13633 @param pWDICtx: pointer to the WLAN DAL context
13634 pEventData: pointer to the event information structure
13635
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 @see
13637 @return Result of the function call
13638*/
13639WDI_Status
13640WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013641(
Jeff Johnson295189b2012-06-20 16:38:30 -070013642 WDI_ControlBlockType* pWDICtx,
13643 WDI_EventInfoType* pEventData
13644)
13645{
13646 WDI_StartRspParamsType wdiRspParams;
13647 WDI_StartRspCb wdiStartRspCb = NULL;
13648
13649 tHalMacStartRspParams* startRspParams;
13650
13651#ifndef HAL_SELF_STA_PER_BSS
13652 WDI_AddStaParams wdiAddSTAParam = {0};
13653#endif
13654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13655
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 -------------------------------------------------------------------------*/
13660 if (( NULL == pEventData ) ||
13661 ( NULL == pEventData->pEventData) ||
13662 ( NULL == wdiStartRspCb ))
13663 {
13664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013668 }
13669
13670 /*-------------------------------------------------------------------------
13671 Extract response and send it to UMAC
13672 -------------------------------------------------------------------------*/
13673 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13674 {
13675 // not enough data was received
13676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13677 "Invalid response length in Start Resp Expect %x Rcvd %x",
13678 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 }
13682
13683 /*-------------------------------------------------------------------------
13684 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 -------------------------------------------------------------------------*/
13687 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13688
13689 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13690 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13691 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13692 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13693 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13694 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13695 wdiRspParams.wlanReportedVersion.major =
13696 startRspParams->wcnssWlanVersion.major;
13697 wdiRspParams.wlanReportedVersion.minor =
13698 startRspParams->wcnssWlanVersion.minor;
13699 wdiRspParams.wlanReportedVersion.version =
13700 startRspParams->wcnssWlanVersion.version;
13701 wdiRspParams.wlanReportedVersion.revision =
13702 startRspParams->wcnssWlanVersion.revision;
13703 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13704 startRspParams->wcnssCrmVersionString,
13705 sizeof(wdiRspParams.wcnssSoftwareVersion));
13706 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13707 startRspParams->wcnssWlanVersionString,
13708 sizeof(wdiRspParams.wcnssHardwareVersion));
13709 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13710
Pratik Bhalgatd4404592012-11-22 17:49:14 +053013711 /*Save the HAL Version*/
13712 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
13713
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 wpalMutexAcquire(&pWDICtx->wptMutex);
13715 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13716 {
13717 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13718
13719 /*Cache the start response for further use*/
13720 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 sizeof(pWDICtx->wdiCachedStartRspParams));
13723
13724 }
13725 else
13726 {
13727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13728 "Failed to start device with status %s(%d)",
13729 WDI_getHALStatusMsgString(startRspParams->status),
13730 startRspParams->status);
13731
13732 /*Set the expected state transition to stopped - because the start has
13733 failed*/
13734 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13735
13736 wpalMutexRelease(&pWDICtx->wptMutex);
13737
13738 /*Notify UMAC*/
13739 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013740
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13742
13743 /*Although the response is an error - it was processed by our function
13744 so as far as the caller is concerned this is a succesful reponse processing*/
13745 return WDI_STATUS_SUCCESS;
13746 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013747
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 wpalMutexRelease(&pWDICtx->wptMutex);
13749
13750 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13751 {
13752 /* FTM mode does not need to execute below */
13753 /* Notify UMAC */
13754 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13755 return WDI_STATUS_SUCCESS;
13756 }
13757
13758 /* START the Data transport */
13759 WDTS_startTransport(pWDICtx);
13760
13761 /*Start the STA Table !- check this logic again*/
13762 WDI_STATableStart(pWDICtx);
13763
13764#ifndef HAL_SELF_STA_PER_BSS
13765 /* Store the Self STA Index */
13766 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13767
13768 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13769 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13770 WDI_MAC_ADDR_LEN);
13771
13772 /* At this point add the self-STA */
13773
13774 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13775 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13776 /*! TO DO: wdiAddSTAParam.dpuSig */
13777 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13778 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13779 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13780
13781 //all DPU indices are the same for self STA
13782 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13783 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013784 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13786 WDI_MAC_ADDR_LEN);
13787 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13788 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13789
13790 /* Note: Since we don't get an explicit config STA request for self STA, we
13791 add the self STA upon receiving the Start response message. But the
13792 self STA entry in the table is deleted when WDI gets an explicit delete STA
13793 request */
13794 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13795#endif
13796
13797 /*Notify UMAC*/
13798 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13799
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013801}/*WDI_ProcessStartRsp*/
13802
13803
13804/**
13805 @brief Process Stop Response function (called when a response
13806 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013807
13808 @param pWDICtx: pointer to the WLAN DAL context
13809 pEventData: pointer to the event information structure
13810
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 @see
13812 @return Result of the function call
13813*/
13814WDI_Status
13815WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013816(
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 WDI_ControlBlockType* pWDICtx,
13818 WDI_EventInfoType* pEventData
13819)
13820{
13821 WDI_Status wdiStatus;
13822 WDI_StopRspCb wdiStopRspCb = NULL;
13823
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13826
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 -------------------------------------------------------------------------*/
13831 if (( NULL == pEventData ) ||
13832 ( NULL == pEventData->pEventData) ||
13833 ( NULL == wdiStopRspCb ))
13834 {
13835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 }
13840
13841 /*-------------------------------------------------------------------------
13842 Extract response and send it to UMAC
13843 -------------------------------------------------------------------------*/
13844 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
13845 {
13846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13847 "Invalid response length in Stop Resp %x %x",
13848 pEventData->uEventDataSize);
13849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 }
13852
13853 /*-------------------------------------------------------------------------
13854 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
13858 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013859 sizeof(halMacStopRspMsg.stopRspParams));
13860
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013862
13863 wpalMutexAcquire(&pWDICtx->wptMutex);
13864
13865 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070013867 --------------------------------------------------------------------------*/
13868 if ( WDI_STATUS_SUCCESS != wdiStatus )
13869 {
13870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13871 "Failed to stop the device with status %s (%d)",
13872 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
13873 halMacStopRspMsg.stopRspParams.status);
13874
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
13876
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013880
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13882
13883 /*Transition now as WDI may get preempted imediately after it sends
13884 up the Stop Response and it will not get to process the state transition
13885 from Main Rsp function*/
13886 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
13887 wpalMutexRelease(&pWDICtx->wptMutex);
13888
13889 /*! TO DO: - STOP the Data transport */
13890
13891 /*Notify UMAC*/
13892 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
13893
Jeff Johnsone7245742012-09-05 17:12:55 -070013894 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013895}/*WDI_ProcessStopRsp*/
13896
13897/**
13898 @brief Process Close Rsp function (called when a response
13899 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013900
13901 @param pWDICtx: pointer to the WLAN DAL context
13902 pEventData: pointer to the event information structure
13903
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 @see
13905 @return Result of the function call
13906*/
13907WDI_Status
13908WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013909(
Jeff Johnson295189b2012-06-20 16:38:30 -070013910 WDI_ControlBlockType* pWDICtx,
13911 WDI_EventInfoType* pEventData
13912)
13913{
13914 /*There is no close response comming from HAL - function just kept for
13915 simmetry */
13916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013917 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013918}/*WDI_ProcessCloseRsp*/
13919
13920
13921/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013922 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070013923============================================================================*/
13924
13925/**
13926 @brief Process Init Scan Rsp function (called when a response
13927 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013928
13929 @param pWDICtx: pointer to the WLAN DAL context
13930 pEventData: pointer to the event information structure
13931
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 @see
13933 @return Result of the function call
13934*/
13935WDI_Status
13936WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013937(
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 WDI_ControlBlockType* pWDICtx,
13939 WDI_EventInfoType* pEventData
13940)
13941{
13942 WDI_Status wdiStatus;
13943 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013945 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13947
13948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 -------------------------------------------------------------------------*/
13951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
13952 ( NULL == pEventData->pEventData))
13953 {
13954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 }
13959
13960 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
13961 if( NULL == wdiInitScanRspCb)
13962 {
13963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013964 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 }
13968
13969 /*-------------------------------------------------------------------------
13970 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
13974 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 sizeof(halInitScanRspMsg.initScanRspParams));
13976
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013978
13979 if ( pWDICtx->bInBmps )
13980 {
13981 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013982 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
13983 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13985 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
13986 WDI_ASSERT(0);
13987 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 }
13989
13990 /*Notify UMAC*/
13991 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
13992
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994}/*WDI_ProcessInitScanRsp*/
13995
13996
13997/**
13998 @brief Process Start Scan Rsp function (called when a response
13999 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014000
14001 @param pWDICtx: pointer to the WLAN DAL context
14002 pEventData: pointer to the event information structure
14003
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 @see
14005 @return Result of the function call
14006*/
14007WDI_Status
14008WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014009(
Jeff Johnson295189b2012-06-20 16:38:30 -070014010 WDI_ControlBlockType* pWDICtx,
14011 WDI_EventInfoType* pEventData
14012)
14013{
14014 WDI_StartScanRspParamsType wdiStartScanParams;
14015 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014016
14017 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14019
14020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 -------------------------------------------------------------------------*/
14023 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14024 ( NULL == pEventData->pEventData))
14025 {
14026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 }
14031
14032 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14033 if( NULL == wdiStartScanRspCb)
14034 {
14035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014036 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 }
14040
14041 /*-------------------------------------------------------------------------
14042 Extract response and send it to UMAC
14043 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14045 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 sizeof(halStartScanRspMsg.startScanRspParams));
14047
14048 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14049 halStartScanRspMsg.startScanRspParams.status);
14050#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 halStartScanRspMsg.startScanRspParams.startTSF,
14055 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014056#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014057
14058 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14059 {
14060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14061 "Start scan failed with status %s (%d)",
14062 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14063 halStartScanRspMsg.startScanRspParams.status);
14064 /* send the status to UMAC, don't return from here*/
14065 }
14066
14067 /*Notify UMAC*/
14068 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14069
Jeff Johnsone7245742012-09-05 17:12:55 -070014070 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014071
14072}/*WDI_ProcessStartScanRsp*/
14073
14074
14075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014078
14079 @param pWDICtx: pointer to the WLAN DAL context
14080 pEventData: pointer to the event information structure
14081
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 @see
14083 @return Result of the function call
14084*/
14085WDI_Status
14086WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014087(
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 WDI_ControlBlockType* pWDICtx,
14089 WDI_EventInfoType* pEventData
14090)
14091{
14092 WDI_Status wdiStatus;
14093 tHalEndScanRspMsg halEndScanRspMsg;
14094 WDI_EndScanRspCb wdiEndScanRspCb;
14095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14096
14097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 -------------------------------------------------------------------------*/
14100 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14101 ( NULL == pEventData->pEventData))
14102 {
14103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 }
14108
14109 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14110
14111 /*-------------------------------------------------------------------------
14112 Extract response and send it to UMAC
14113 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14115 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 sizeof(halEndScanRspMsg.endScanRspParams));
14117
Jeff Johnsone7245742012-09-05 17:12:55 -070014118 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014119
14120 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14121 {
14122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14123 "End Scan failed with status %s (%d )",
14124 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14125 halEndScanRspMsg.endScanRspParams.status);
14126 /* send the status to UMAC, don't return from here*/
14127 }
14128
14129 /*Notify UMAC*/
14130 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14131
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014133}/*WDI_ProcessEndScanRsp*/
14134
14135
14136/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014139
14140 @param pWDICtx: pointer to the WLAN DAL context
14141 pEventData: pointer to the event information structure
14142
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 @see
14144 @return Result of the function call
14145*/
14146WDI_Status
14147WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014148(
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 WDI_ControlBlockType* pWDICtx,
14150 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014151)
Jeff Johnson295189b2012-06-20 16:38:30 -070014152{
14153 WDI_Status wdiStatus;
14154 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014155
14156 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14158
14159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014161 -------------------------------------------------------------------------*/
14162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14163 ( NULL == pEventData->pEventData))
14164 {
14165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 }
14170
14171 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14172
14173 /*-------------------------------------------------------------------------
14174 Extract response and send it to UMAC
14175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014176 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14177 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14179
Jeff Johnsone7245742012-09-05 17:12:55 -070014180 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014181
14182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014183 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014184 halFinishScanRspMsg.finishScanRspParams.status);
14185
14186 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14187 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14188 {
14189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14190 "Finish Scan failed with status %s (%d)",
14191 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14192 halFinishScanRspMsg.finishScanRspParams.status);
14193 /* send the status to UMAC, don't return from here*/
14194 }
14195
14196 /*Notify UMAC*/
14197 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14198
Jeff Johnsone7245742012-09-05 17:12:55 -070014199 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014200}/*WDI_ProcessFinishScanRsp*/
14201
14202/**
14203 @brief Process Join Response function (called when a response
14204 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014205
14206 @param pWDICtx: pointer to the WLAN DAL context
14207 pEventData: pointer to the event information structure
14208
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 @see
14210 @return Result of the function call
14211*/
14212WDI_Status
14213WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014214(
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 WDI_ControlBlockType* pWDICtx,
14216 WDI_EventInfoType* pEventData
14217)
14218{
14219 WDI_Status wdiStatus;
14220 WDI_JoinRspCb wdiJoinRspCb;
14221 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014222
14223 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14225
14226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 -------------------------------------------------------------------------*/
14229 if (( NULL == pWDICtx ) ||
14230 ( NULL == pWDICtx->pfncRspCB ) ||
14231 ( NULL == pEventData ) ||
14232 ( NULL == pEventData->pEventData))
14233 {
14234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 }
14239
14240 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14241
14242 /*-------------------------------------------------------------------------
14243 Extract response and send it to UMAC
14244 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014245 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14246 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 sizeof(halJoinRspMsg.joinRspParams));
14248
Jeff Johnsone7245742012-09-05 17:12:55 -070014249 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014250
14251 wpalMutexAcquire(&pWDICtx->wptMutex);
14252
14253 /*-----------------------------------------------------------------------
14254 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14259 {
14260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14262 "association no longer in progress %d - mysterious HAL response",
14263 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014264
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 }
14269
14270 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14271
14272 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 -----------------------------------------------------------------------*/
14275 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14276 {
14277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14278 "Join only allowed in Joining state - failure state is %d "
14279 "strange HAL response", pBSSSes->wdiAssocState);
14280
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14282
Jeff Johnson295189b2012-06-20 16:38:30 -070014283 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 }
14286
14287
14288 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 -----------------------------------------------------------------------*/
14291 if ( WDI_STATUS_SUCCESS != wdiStatus )
14292 {
14293 /*Association was failed by HAL - remove session*/
14294 WDI_DeleteSession(pWDICtx, pBSSSes);
14295
14296 /*Association no longer in progress */
14297 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14298
14299 /*Association no longer in progress - prepare pending assoc for processing*/
14300 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014301
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 }
14303 else
14304 {
14305 /*Transition to state Joining - this may be redundant as we are supposed
14306 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 }
14309
14310 wpalMutexRelease(&pWDICtx->wptMutex);
14311
14312 /*Notify UMAC*/
14313 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14314
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014316}/*WDI_ProcessJoinRsp*/
14317
14318
14319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014320 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014322
14323 @param pWDICtx: pointer to the WLAN DAL context
14324 pEventData: pointer to the event information structure
14325
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 @see
14327 @return Result of the function call
14328*/
14329WDI_Status
14330WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014331(
Jeff Johnson295189b2012-06-20 16:38:30 -070014332 WDI_ControlBlockType* pWDICtx,
14333 WDI_EventInfoType* pEventData
14334)
14335{
14336 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14337 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014338 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014339 WDI_BSSSessionType* pBSSSes = NULL;
14340
Jeff Johnsone7245742012-09-05 17:12:55 -070014341 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014342 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14343 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014344
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14346
14347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 -------------------------------------------------------------------------*/
14350 if (( NULL == pEventData ) ||
14351 ( NULL == pEventData->pEventData))
14352 {
14353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 }
14358
14359 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14360
14361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014364 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14365 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 sizeof(halConfigBssRspMsg.configBssRspParams));
14367
14368 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14369 halConfigBssRspMsg.configBssRspParams.status);
14370 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14371 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014372 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14374 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014375
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014377
14378 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014380
14381 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014383
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014385
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14389 #endif
14390 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14391 halConfigBssRspMsg.configBssRspParams.staMac,
14392 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014393
Jeff Johnson295189b2012-06-20 16:38:30 -070014394 wpalMutexAcquire(&pWDICtx->wptMutex);
14395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014396 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014397 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014398 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14399 wdiConfigBSSParams.macBSSID,
14400 &pBSSSes);
14401
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 /*-----------------------------------------------------------------------
14403 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014404 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 -----------------------------------------------------------------------*/
14406 if ( NULL == pBSSSes )
14407 {
14408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14409 "Association sequence for this BSS does not yet exist "
14410 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014411
14412 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14413
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014417
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 /*Save data for this BSS*/
14419 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14420 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14431 pBSSSes->bcastStaIdx =
14432 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014433
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014435
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 /*-------------------------------------------------------------------------
14437 Add Peer STA
14438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14441 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014442
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 wdiAddSTAParam.ucHTCapable =
14447 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14448 wdiAddSTAParam.ucStaType =
14449 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14450
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14453 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014455
14456 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14457 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14458 WDI_MAC_ADDR_LEN);
14459
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014461 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014469 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014473
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14475 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014476
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14478 /*-------------------------------------------------------------------------
14479 Add Broadcast STA only in AP mode
14480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 WDI_BSS_OPERATIONAL_MODE_AP )
14483 {
14484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14485 "Add BCAST STA to table for index: %d",
14486 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014487
14488 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014490
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14492 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14493 }
14494 wpalMutexRelease(&pWDICtx->wptMutex);
14495 }
14496 else
14497 {
14498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14499 "Config BSS RSP failed with status : %s(%d)",
14500 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014502 halConfigBssRspMsg.configBssRspParams.status);
14503
Jeff Johnsone7245742012-09-05 17:12:55 -070014504
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 /*Association was failed by HAL - remove session*/
14506 WDI_DeleteSession(pWDICtx, pBSSSes);
14507
14508 /*Association no longer in progress */
14509 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14510
14511 /*Association no longer in progress - prepare pending assoc for processing*/
14512 WDI_DequeueAssocRequest(pWDICtx);
14513
14514 }
14515
14516 /*Notify UMAC*/
14517 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14518
Jeff Johnsone7245742012-09-05 17:12:55 -070014519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014520}/*WDI_ProcessConfigBSSRsp*/
14521
14522
14523/**
14524 @brief Process Del BSS Response function (called when a response
14525 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014526
14527 @param pWDICtx: pointer to the WLAN DAL context
14528 pEventData: pointer to the event information structure
14529
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 @see
14531 @return Result of the function call
14532*/
14533WDI_Status
14534WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014535(
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 WDI_ControlBlockType* pWDICtx,
14537 WDI_EventInfoType* pEventData
14538)
14539{
14540 WDI_DelBSSRspParamsType wdiDelBSSParams;
14541 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 WDI_BSSSessionType* pBSSSes = NULL;
14544
Jeff Johnsone7245742012-09-05 17:12:55 -070014545 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14547
14548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 -------------------------------------------------------------------------*/
14551 if (( NULL == pEventData ) ||
14552 ( NULL == pEventData->pEventData))
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 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14561
14562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014565 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14566 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 sizeof(halDelBssRspMsg.deleteBssRspParams));
14568
14569
14570 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014572
14573 wpalMutexAcquire(&pWDICtx->wptMutex);
14574
14575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014576 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14579 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14580 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014581
14582 /*-----------------------------------------------------------------------
14583 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 -----------------------------------------------------------------------*/
14586 if ( NULL == pBSSSes )
14587 {
14588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14589 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014590 "association no longer in progress - mysterious HAL response");
14591
14592 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14593
14594 wpalMutexRelease(&pWDICtx->wptMutex);
14595 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014597
14598 /*Extract BSSID for the response to UMAC*/
14599 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14600 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14601
14602 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14603
14604 /*-----------------------------------------------------------------------
14605 The current session will be deleted
14606 -----------------------------------------------------------------------*/
14607 WDI_DeleteSession(pWDICtx, pBSSSes);
14608
14609
14610 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14611 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014613 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014614 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014615
14616 /* Delete the STA's in this BSS */
14617 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14618
Jeff Johnson295189b2012-06-20 16:38:30 -070014619 wpalMutexRelease(&pWDICtx->wptMutex);
14620
14621 /*Notify UMAC*/
14622 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14623
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014625}/*WDI_ProcessDelBSSRsp*/
14626
14627/**
14628 @brief Process Post Assoc Rsp function (called when a response
14629 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014630
14631 @param pWDICtx: pointer to the WLAN DAL context
14632 pEventData: pointer to the event information structure
14633
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 @see
14635 @return Result of the function call
14636*/
14637WDI_Status
14638WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014639(
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 WDI_ControlBlockType* pWDICtx,
14641 WDI_EventInfoType* pEventData
14642)
14643{
14644 WDI_PostAssocRspParamsType wdiPostAssocParams;
14645 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014648 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14650
14651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 -------------------------------------------------------------------------*/
14654 if (( NULL == pEventData ) ||
14655 ( NULL == pEventData->pEventData))
14656 {
14657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 }
14662
14663 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14664
14665 /*-------------------------------------------------------------------------
14666 Extract response and send it to UMAC
14667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14669 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 sizeof(halPostAssocRspMsg.postAssocRspParams));
14671
14672 /*Extract the Post Assoc STA Params */
14673
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14680
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 wdiPostAssocParams.wdiStatus =
14682 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014683
14684 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14685 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14687 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 WDI_MAC_ADDR_LEN);
14689
14690 /* Extract Post Assoc BSS Params */
14691
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14693 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14694 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014695
14696 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14697 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14700 .macSTA, WDI_MAC_ADDR_LEN);
14701
Jeff Johnsone7245742012-09-05 17:12:55 -070014702 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14704
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014706 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14707
14708 wdiPostAssocParams.bssParams.ucBSSIdx =
14709 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14710
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014712 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14713
14714 wpalMutexAcquire(&pWDICtx->wptMutex);
14715
14716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014722
14723 /*-----------------------------------------------------------------------
14724 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 -----------------------------------------------------------------------*/
14727 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014729 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14730 {
14731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14732 "Association sequence for this BSS does not yet exist or "
14733 "association no longer in progress - mysterious HAL response");
14734
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14736
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 }
14740
14741 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 -----------------------------------------------------------------------*/
14744 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14745 {
14746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14747 "Post Assoc not allowed before JOIN - failing request "
14748 "strange HAL response");
14749
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14751
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 }
14755
14756 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 -----------------------------------------------------------------------*/
14759 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14760 {
14761 /*Association was failed by HAL - remove session*/
14762 WDI_DeleteSession(pWDICtx, pBSSSes);
14763 }
14764 else
14765 {
14766 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014768
14769 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14778
Jeff Johnsone7245742012-09-05 17:12:55 -070014779 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14781 }
14782
14783 /*Association no longer in progress */
14784 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14785
14786 /*Association no longer in progress - prepare pending assoc for processing*/
14787 WDI_DequeueAssocRequest(pWDICtx);
14788
14789 wpalMutexRelease(&pWDICtx->wptMutex);
14790
14791 /*Notify UMAC*/
14792 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14793
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014795}/*WDI_ProcessPostAssocRsp*/
14796
14797/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014800
14801 @param pWDICtx: pointer to the WLAN DAL context
14802 pEventData: pointer to the event information structure
14803
Jeff Johnson295189b2012-06-20 16:38:30 -070014804 @see
14805 @return Result of the function call
14806*/
14807WDI_Status
14808WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014809(
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 WDI_ControlBlockType* pWDICtx,
14811 WDI_EventInfoType* pEventData
14812)
14813{
14814 WDI_DelSTARspParamsType wdiDelSTARsp;
14815 WDI_DelSTARspCb wdiDelSTARspCb;
14816 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14819
14820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 -------------------------------------------------------------------------*/
14823 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14824 ( NULL == pEventData->pEventData))
14825 {
14826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 }
14831
14832 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
14833
14834 /*-------------------------------------------------------------------------
14835 Extract response and send it to UMAC
14836 -------------------------------------------------------------------------*/
14837 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 sizeof(halDelStaRspMsg.delStaRspParams));
14840
14841 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 wdiDelSTARsp.wdiStatus =
14843 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014844
14845 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
14846
14847 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
14848 if(staType == WDI_STA_ENTRY_SELF)
14849 {
14850 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
14851
14852 /* At this point add the self-STA */
14853
14854 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14855 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14856 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14857
14858#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
14859#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
14860
14861 //all DPU indices are the same for self STA
14862 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14863 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14864 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14865 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14866 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14867 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070014868
14869 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 }
14871 else
14872 {
14873 //Delete the station in the table
14874 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
14875 }
14876
14877 /*Notify UMAC*/
14878 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
14879
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881}/*WDI_ProcessDelSTARsp*/
14882
14883
14884/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070014886==========================================================================*/
14887
14888/**
14889 @brief Process Set BSS Key Rsp function (called when a response
14890 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014891
14892 @param pWDICtx: pointer to the WLAN DAL context
14893 pEventData: pointer to the event information structure
14894
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 @see
14896 @return Result of the function call
14897*/
14898WDI_Status
14899WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014900(
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 WDI_ControlBlockType* pWDICtx,
14902 WDI_EventInfoType* pEventData
14903)
14904{
14905 WDI_Status wdiStatus;
14906 eHalStatus halStatus;
14907 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
14908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14909
14910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 -------------------------------------------------------------------------*/
14913 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14914 ( NULL == pEventData->pEventData))
14915 {
14916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 }
14921
14922 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
14923
14924 /*-------------------------------------------------------------------------
14925 Extract response and send it to UMAC
14926 -------------------------------------------------------------------------*/
14927 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014929
14930 if ( eHAL_STATUS_SUCCESS != halStatus )
14931 {
14932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14933 "Set BSS Key failed with status %s (%d)",
14934 WDI_getHALStatusMsgString(halStatus),
14935 halStatus);
14936 /* send the status to UMAC, don't return from here*/
14937 }
14938
14939 /*Notify UMAC*/
14940 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14941
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014943}/*WDI_ProcessSetBssKeyRsp*/
14944
14945/**
14946 @brief Process Remove BSS Key Rsp function (called when a response
14947 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014948
14949 @param pWDICtx: pointer to the WLAN DAL context
14950 pEventData: pointer to the event information structure
14951
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 @see
14953 @return Result of the function call
14954*/
14955WDI_Status
14956WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014957(
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 WDI_ControlBlockType* pWDICtx,
14959 WDI_EventInfoType* pEventData
14960)
14961{
14962 WDI_Status wdiStatus;
14963 eHalStatus halStatus;
14964 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
14965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14966
14967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 -------------------------------------------------------------------------*/
14970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14971 ( NULL == pEventData->pEventData))
14972 {
14973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 }
14978
14979 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
14980
14981 /*-------------------------------------------------------------------------
14982 Extract response and send it to UMAC
14983 -------------------------------------------------------------------------*/
14984 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014985 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014986
14987 if ( eHAL_STATUS_SUCCESS != halStatus )
14988 {
14989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14990 "Remove BSS Key failed with status %s (%d )",
14991 WDI_getHALStatusMsgString(halStatus),
14992 halStatus);
14993 /* send the status to UMAC, don't return from here*/
14994 }
14995
14996 /*Notify UMAC*/
14997 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14998
Jeff Johnsone7245742012-09-05 17:12:55 -070014999 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015000}/*WDI_ProcessSetBssKeyRsp*/
15001
15002
15003/**
15004 @brief Process Set STA Key Rsp function (called when a response
15005 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015006
15007 @param pWDICtx: pointer to the WLAN DAL context
15008 pEventData: pointer to the event information structure
15009
Jeff Johnson295189b2012-06-20 16:38:30 -070015010 @see
15011 @return Result of the function call
15012*/
15013WDI_Status
15014WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015015(
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 WDI_ControlBlockType* pWDICtx,
15017 WDI_EventInfoType* pEventData
15018)
15019{
15020 WDI_Status wdiStatus;
15021 eHalStatus halStatus;
15022 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15024
15025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 -------------------------------------------------------------------------*/
15028 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15029 ( NULL == pEventData->pEventData))
15030 {
15031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 }
15036
15037 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15038
15039 /*-------------------------------------------------------------------------
15040 Extract response and send it to UMAC
15041 -------------------------------------------------------------------------*/
15042 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015043 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015044
15045 if ( eHAL_STATUS_SUCCESS != halStatus )
15046 {
15047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15048 "Set STA Key failed with status %s (%d)",
15049 WDI_getHALStatusMsgString(halStatus),
15050 halStatus);
15051 /* send the status to UMAC, don't return from here*/
15052 }
15053
15054 /*Notify UMAC*/
15055 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15056
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015058}/*WDI_ProcessSetSTAKeyRsp*/
15059
15060/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015061 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015063
15064 @param pWDICtx: pointer to the WLAN DAL context
15065 pEventData: pointer to the event information structure
15066
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 @see
15068 @return Result of the function call
15069*/
15070WDI_Status
15071WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015072(
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 WDI_ControlBlockType* pWDICtx,
15074 WDI_EventInfoType* pEventData
15075)
15076{
15077 WDI_Status wdiStatus;
15078 eHalStatus halStatus;
15079 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15081
15082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 -------------------------------------------------------------------------*/
15085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15086 ( NULL == pEventData->pEventData))
15087 {
15088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 }
15093
15094 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15095
15096 /*-------------------------------------------------------------------------
15097 Extract response and send it to UMAC
15098 -------------------------------------------------------------------------*/
15099 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015100 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015101
15102 if ( eHAL_STATUS_SUCCESS != halStatus )
15103 {
15104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15105 "Remove STA Key failed with status %s (%d)",
15106 WDI_getHALStatusMsgString(halStatus),
15107 halStatus);
15108 /* send the status to UMAC, don't return from here*/
15109 }
15110
15111 /*Notify UMAC*/
15112 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15113
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015115}/*WDI_ProcessRemoveStaKeyRsp*/
15116
15117/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015120
15121 @param pWDICtx: pointer to the WLAN DAL context
15122 pEventData: pointer to the event information structure
15123
Jeff Johnson295189b2012-06-20 16:38:30 -070015124 @see
15125 @return Result of the function call
15126*/
15127WDI_Status
15128WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015129(
Jeff Johnson295189b2012-06-20 16:38:30 -070015130 WDI_ControlBlockType* pWDICtx,
15131 WDI_EventInfoType* pEventData
15132)
15133{
15134 WDI_Status wdiStatus;
15135 eHalStatus halStatus;
15136 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15138
15139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015140 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 -------------------------------------------------------------------------*/
15142 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15143 ( NULL == pEventData->pEventData))
15144 {
15145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015146 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 }
15150
15151 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15152
15153 /*-------------------------------------------------------------------------
15154 Extract response and send it to UMAC
15155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015156 wpalMemoryCopy( &halStatus,
15157 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015158 sizeof(halStatus));
15159
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015161
15162 if ( eHAL_STATUS_SUCCESS != halStatus )
15163 {
15164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15165 "Set STA Key failed with status %s (%d)",
15166 WDI_getHALStatusMsgString(halStatus),
15167 halStatus);
15168 /* send the status to UMAC, don't return from here*/
15169 }
15170
15171 /*Notify UMAC*/
15172 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15173
Jeff Johnsone7245742012-09-05 17:12:55 -070015174 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015175}/*WDI_ProcessSetSTABcastKeyRsp*/
15176
15177/**
15178 @brief Process Remove STA Bcast Key Rsp function (called when a
15179 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015180
15181 @param pWDICtx: pointer to the WLAN DAL context
15182 pEventData: pointer to the event information structure
15183
Jeff Johnson295189b2012-06-20 16:38:30 -070015184 @see
15185 @return Result of the function call
15186*/
15187WDI_Status
15188WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015189(
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 WDI_ControlBlockType* pWDICtx,
15191 WDI_EventInfoType* pEventData
15192)
15193{
15194 WDI_Status wdiStatus;
15195 eHalStatus halStatus;
15196 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15198
15199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 -------------------------------------------------------------------------*/
15202 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15203 ( NULL == pEventData->pEventData))
15204 {
15205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 }
15210
15211 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15212
15213 /*-------------------------------------------------------------------------
15214 Extract response and send it to UMAC
15215 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 wpalMemoryCopy( &halStatus,
15217 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 sizeof(halStatus));
15219
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015221
15222 if ( eHAL_STATUS_SUCCESS != halStatus )
15223 {
15224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15225 "Remove STA Key failed with status %s (%d)",
15226 WDI_getHALStatusMsgString(halStatus),
15227 halStatus);
15228 /* send the status to UMAC, don't return from here*/
15229 }
15230
15231 /*Notify UMAC*/
15232 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15233
Jeff Johnsone7245742012-09-05 17:12:55 -070015234 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015235}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15236
15237
15238/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015239 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015240==========================================================================*/
15241
15242/**
15243 @brief Process Add TSpec Rsp function (called when a response
15244 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015245
15246 @param pWDICtx: pointer to the WLAN DAL context
15247 pEventData: pointer to the event information structure
15248
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 @see
15250 @return Result of the function call
15251*/
15252WDI_Status
15253WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015254(
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 WDI_ControlBlockType* pWDICtx,
15256 WDI_EventInfoType* pEventData
15257)
15258{
15259 WDI_Status wdiStatus;
15260 eHalStatus halStatus;
15261 WDI_AddTsRspCb wdiAddTsRspCb;
15262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15263
15264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 -------------------------------------------------------------------------*/
15267 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15268 ( NULL == pEventData->pEventData))
15269 {
15270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015271 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 }
15275
15276 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15277
15278 /*-------------------------------------------------------------------------
15279 Extract response and send it to UMAC
15280 -------------------------------------------------------------------------*/
15281 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015283
15284 /*Notify UMAC*/
15285 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15286
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015288}/*WDI_ProcessAddTSpecRsp*/
15289
15290
15291/**
15292 @brief Process Del TSpec Rsp function (called when a response
15293 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015294
15295 @param pWDICtx: pointer to the WLAN DAL context
15296 pEventData: pointer to the event information structure
15297
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 @see
15299 @return Result of the function call
15300*/
15301WDI_Status
15302WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015303(
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 WDI_ControlBlockType* pWDICtx,
15305 WDI_EventInfoType* pEventData
15306)
15307{
15308 WDI_Status wdiStatus;
15309 eHalStatus halStatus;
15310 WDI_DelTsRspCb wdiDelTsRspCb;
15311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15312
15313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 -------------------------------------------------------------------------*/
15316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15317 ( NULL == pEventData->pEventData))
15318 {
15319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 }
15324
15325 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15326
15327 /*-------------------------------------------------------------------------
15328 Extract response and send it to UMAC
15329 -------------------------------------------------------------------------*/
15330 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015332
15333 /*Notify UMAC*/
15334 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15335
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015337}/*WDI_ProcessDelTSpecRsp*/
15338
15339/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015342
15343 @param pWDICtx: pointer to the WLAN DAL context
15344 pEventData: pointer to the event information structure
15345
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 @see
15347 @return Result of the function call
15348*/
15349WDI_Status
15350WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015351(
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 WDI_ControlBlockType* pWDICtx,
15353 WDI_EventInfoType* pEventData
15354)
15355{
15356 WDI_Status wdiStatus;
15357 eHalStatus halStatus;
15358 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15360
15361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 -------------------------------------------------------------------------*/
15364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15365 ( NULL == pEventData->pEventData))
15366 {
15367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 }
15372
15373 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15374
15375 /*-------------------------------------------------------------------------
15376 Extract response and send it to UMAC
15377 -------------------------------------------------------------------------*/
15378 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015379 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015380
15381 /*Notify UMAC*/
15382 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15383
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015385}/*WDI_ProcessUpdateEDCAParamsRsp*/
15386
15387
15388/**
15389 @brief Process Add BA Rsp function (called when a response
15390 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015391
15392 @param pWDICtx: pointer to the WLAN DAL context
15393 pEventData: pointer to the event information structure
15394
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 @see
15396 @return Result of the function call
15397*/
15398WDI_Status
15399WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015400(
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 WDI_ControlBlockType* pWDICtx,
15402 WDI_EventInfoType* pEventData
15403)
15404{
15405 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15406
15407 tAddBASessionRspParams halBASessionRsp;
15408 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15409
Jeff Johnsone7245742012-09-05 17:12:55 -070015410
Jeff Johnson295189b2012-06-20 16:38:30 -070015411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15412
15413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015415 -------------------------------------------------------------------------*/
15416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15417 ( NULL == pEventData->pEventData))
15418 {
15419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015423 }
15424
15425 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15426
15427 /*-------------------------------------------------------------------------
15428 Extract response and send it to UMAC
15429 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 wpalMemoryCopy( &halBASessionRsp,
15431 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015432 sizeof(halBASessionRsp));
15433
15434 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15435
Jeff Johnson43971f52012-07-17 12:26:56 -070015436 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015437 {
15438 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15439 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15440 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15441 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15442 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15443 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15444 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15445 }
15446
15447 /*Notify UMAC*/
15448 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15449
Jeff Johnsone7245742012-09-05 17:12:55 -070015450 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015451}/*WDI_ProcessAddSessionBARsp*/
15452
15453
15454/**
15455 @brief Process Del BA Rsp function (called when a response
15456 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015457
15458 @param pWDICtx: pointer to the WLAN DAL context
15459 pEventData: pointer to the event information structure
15460
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 @see
15462 @return Result of the function call
15463*/
15464WDI_Status
15465WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015466(
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 WDI_ControlBlockType* pWDICtx,
15468 WDI_EventInfoType* pEventData
15469)
15470{
15471 WDI_Status wdiStatus;
15472 eHalStatus halStatus;
15473 WDI_DelBARspCb wdiDelBARspCb;
15474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15475
15476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 -------------------------------------------------------------------------*/
15479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15480 ( NULL == pEventData->pEventData))
15481 {
15482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 }
15487
15488 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15489
15490 /*-------------------------------------------------------------------------
15491 Extract response and send it to UMAC
15492 -------------------------------------------------------------------------*/
15493 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015495
15496 if ( eHAL_STATUS_SUCCESS == halStatus )
15497 {
15498 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15499 }
15500
15501 /*Notify UMAC*/
15502 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15503
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015505}/*WDI_ProcessDelBARsp*/
15506
15507#ifdef FEATURE_WLAN_CCX
15508/**
15509 @brief Process TSM Stats Rsp function (called when a response
15510 is being received over the bus from HAL)
15511
15512 @param pWDICtx: pointer to the WLAN DAL context
15513 pEventData: pointer to the event information structure
15514
15515 @see
15516 @return Result of the function call
15517*/
15518WDI_Status
15519WDI_ProcessTsmStatsRsp
15520(
15521 WDI_ControlBlockType* pWDICtx,
15522 WDI_EventInfoType* pEventData
15523)
15524{
15525 WDI_TsmRspCb wdiTsmStatsRspCb;
15526 tTsmStatsRspMsg halTsmStatsRspMsg;
15527 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15529
15530 /*-------------------------------------------------------------------------
15531 Sanity check
15532 -------------------------------------------------------------------------*/
15533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15534 ( NULL == pEventData->pEventData))
15535 {
15536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 WDI_ASSERT(0);
15539 return WDI_STATUS_E_FAILURE;
15540 }
15541
15542 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15543
15544 /*-------------------------------------------------------------------------
15545 Unpack HAL Response Message - the header was already extracted by the
15546 main Response Handling procedure
15547 -------------------------------------------------------------------------*/
15548 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15549 pEventData->pEventData,
15550 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15551
15552 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15553 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15554 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15555 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15556 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15557 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15558 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15559 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15560 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15561 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15562 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15563 halTsmStatsRspMsg.tsmStatsRspParams.status);
15564
15565 /*Notify UMAC*/
15566 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15567
15568 return WDI_STATUS_SUCCESS;
15569}/*WDI_ProcessTsmStatsRsp*/
15570
15571#endif
15572
15573
15574
15575/**
15576 @brief Process Flush AC Rsp function (called when a response
15577 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015578
15579 @param pWDICtx: pointer to the WLAN DAL context
15580 pEventData: pointer to the event information structure
15581
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 @see
15583 @return Result of the function call
15584*/
15585WDI_Status
15586WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015587(
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 WDI_ControlBlockType* pWDICtx,
15589 WDI_EventInfoType* pEventData
15590)
15591{
15592 WDI_Status wdiStatus;
15593 eHalStatus halStatus;
15594 WDI_FlushAcRspCb wdiFlushAcRspCb;
15595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15596
15597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 -------------------------------------------------------------------------*/
15600 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15601 ( NULL == pEventData->pEventData))
15602 {
15603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 }
15608
15609 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15610
15611 /*-------------------------------------------------------------------------
15612 Extract response and send it to UMAC
15613 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 wpalMemoryCopy( &halStatus,
15615 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015616 sizeof(halStatus));
15617
Jeff Johnsone7245742012-09-05 17:12:55 -070015618 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015619
15620 /*Notify UMAC*/
15621 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15622
Jeff Johnsone7245742012-09-05 17:12:55 -070015623 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015624}/*WDI_ProcessFlushAcRsp*/
15625
15626/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015627 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015629
15630 @param pWDICtx: pointer to the WLAN DAL context
15631 pEventData: pointer to the event information structure
15632
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 @see
15634 @return Result of the function call
15635*/
15636WDI_Status
15637WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015638(
Jeff Johnson295189b2012-06-20 16:38:30 -070015639 WDI_ControlBlockType* pWDICtx,
15640 WDI_EventInfoType* pEventData
15641)
15642{
15643 WDI_Status wdiStatus;
15644 eHalStatus halStatus;
15645 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15647
15648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 -------------------------------------------------------------------------*/
15651 if (( NULL == pWDICtx ) || ( 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 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15661
15662 /*-------------------------------------------------------------------------
15663 Extract response and send it to UMAC
15664 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 wpalMemoryCopy( &halStatus,
15666 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 sizeof(halStatus));
15668
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015670
15671 /*Notify UMAC*/
15672 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15673
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015675}/*WDI_ProcessBtAmpEventRsp*/
15676
15677
15678/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015681
15682 @param pWDICtx: pointer to the WLAN DAL context
15683 pEventData: pointer to the event information structure
15684
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 @see
15686 @return Result of the function call
15687*/
15688WDI_Status
15689WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015690(
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 WDI_ControlBlockType* pWDICtx,
15692 WDI_EventInfoType* pEventData
15693)
15694{
15695 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15696 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15697 tAddStaSelfRspMsg halAddStaSelfRsp;
15698 WDI_AddStaParams wdiAddSTAParam = {0};
15699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15700
15701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 -------------------------------------------------------------------------*/
15704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15705 ( NULL == pEventData->pEventData))
15706 {
15707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 }
15712
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15715
15716 /*-------------------------------------------------------------------------
15717 Extract response and send it to UMAC
15718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015719 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15720 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15722
15723
Jeff Johnsone7245742012-09-05 17:12:55 -070015724 wdiAddSTASelfParams.wdiStatus =
15725 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015726
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015729 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15733
15734 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15735 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15736 WDI_MAC_ADDR_LEN);
15737
15738
15739#ifdef HAL_SELF_STA_PER_BSS
15740
15741 /* At this point add the self-STA */
15742
15743 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15744 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15745 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15746
15747 //all DPU indices are the same for self STA
15748
15749 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15752 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15753 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15754 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15755 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15756
15757 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15758 WDI_MAC_ADDR_LEN);
15759
15760 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15761 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15762
Jeff Johnsone7245742012-09-05 17:12:55 -070015763 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15765 {
15766 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15767 }
15768#endif
15769
15770 /*Notify UMAC*/
15771 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15772
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015774}/*WDI_ProcessAddSTASelfRsp*/
15775
15776
15777
15778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015781
15782 @param pWDICtx: pointer to the WLAN DAL context
15783 pEventData: pointer to the event information structure
15784
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 @see
15786 @return Result of the function call
15787*/
15788WDI_Status
15789WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015790(
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 WDI_ControlBlockType* pWDICtx,
15792 WDI_EventInfoType* pEventData
15793)
15794{
15795 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15796 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15797 tDelStaSelfRspParams delStaSelfRspParams;
15798 wpt_uint8 ucStaIdx;
15799
15800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15801
15802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 -------------------------------------------------------------------------*/
15805 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15806 ( NULL == pEventData->pEventData))
15807 {
15808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015812 }
15813
15814 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
15815
15816 /*-------------------------------------------------------------------------
15817 Extract response and send it to UMAC
15818 -------------------------------------------------------------------------*/
15819
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 (wpt_uint8*)pEventData->pEventData,
15822 sizeof(tDelStaSelfRspParams));
15823
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 wdiDelStaSelfRspParams.wdiStatus =
15825 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015826
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070015828 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
15829 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
15830 {
15831 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070015832 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015833 delStaSelfRspParams.selfMacAddr,
15834 &ucStaIdx);
15835 if(WDI_STATUS_E_FAILURE == wdiStatus)
15836 {
15837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015838 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 }
15842 WDI_STATableDelSta(pWDICtx, ucStaIdx);
15843 }
15844
15845 /*Notify UMAC*/
15846 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
15847
15848 return WDI_STATUS_SUCCESS;
15849}
15850
Jeff Johnsone7245742012-09-05 17:12:55 -070015851#ifdef FEATURE_OEM_DATA_SUPPORT
15852/**
15853 @brief Start Oem Data Rsp function (called when a
15854 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070015855
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 @param pWDICtx: pointer to the WLAN DAL context
15857 pEventData: pointer to the event information structure
15858
15859 @see
15860 @return Result of the function call
15861*/
15862#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
15863
15864WDI_Status
15865WDI_ProcessStartOemDataRsp
15866(
15867 WDI_ControlBlockType* pWDICtx,
15868 WDI_EventInfoType* pEventData
15869)
15870{
15871 WDI_oemDataRspCb wdiOemDataRspCb;
15872 WDI_oemDataRspParamsType* wdiOemDataRspParams;
15873 tStartOemDataRspParams* halStartOemDataRspParams;
15874
15875 /*-------------------------------------------------------------------------
15876 Sanity check
15877 -------------------------------------------------------------------------*/
15878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15879 ( NULL == pEventData->pEventData))
15880 {
15881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015882 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 WDI_ASSERT(0);
15884 return WDI_STATUS_E_FAILURE;
15885 }
15886
15887 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
15888
15889 /*-------------------------------------------------------------------------
15890 Extract response and send it to UMAC
15891 -------------------------------------------------------------------------*/
15892 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
15893
15894
15895 //It is the responsibility of the application code to check for failure
15896 //conditions!
15897
15898 //Allocate memory for WDI OEM DATA RSP structure
15899 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
15900
15901 if(NULL == wdiOemDataRspParams)
15902 {
15903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15904 "Failed to allocate memory in OEM DATA Response %x %x %x ",
15905 pWDICtx, pEventData, pEventData->pEventData);
15906 WDI_ASSERT(0);
15907 return WDI_STATUS_E_FAILURE;
15908 }
15909
15910 /* Populate WDI structure members */
15911 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
15912
15913 /*Notify UMAC*/
15914 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
15915
15916 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
15917 wpalMemoryFree(wdiOemDataRspParams);
15918
15919 return WDI_STATUS_SUCCESS;
15920}/*WDI_PrcoessStartOemDataRsp*/
15921#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015922
15923/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015925===========================================================================*/
15926
15927/**
15928 @brief Process Channel Switch Rsp function (called when a response
15929 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015930
15931 @param pWDICtx: pointer to the WLAN DAL context
15932 pEventData: pointer to the event information structure
15933
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 @see
15935 @return Result of the function call
15936*/
15937WDI_Status
15938WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015939(
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 WDI_ControlBlockType* pWDICtx,
15941 WDI_EventInfoType* pEventData
15942)
15943{
15944 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
15945 WDI_SwitchChRspCb wdiChSwitchRspCb;
15946 tSwitchChannelRspParams halSwitchChannelRsp;
15947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15948
15949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 -------------------------------------------------------------------------*/
15952 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15953 ( NULL == pEventData->pEventData))
15954 {
15955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 }
15960
15961 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
15962
15963 /*-------------------------------------------------------------------------
15964 Extract response and send it to UMAC
15965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015966 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 (wpt_uint8*)pEventData->pEventData,
15968 sizeof(halSwitchChannelRsp));
15969
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 wdiSwitchChRsp.wdiStatus =
15971 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
15973
15974#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070015976#endif
15977
15978 /*Notify UMAC*/
15979 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
15980
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015982}/*WDI_ProcessChannelSwitchRsp*/
15983
15984
15985/**
15986 @brief Process Config STA Rsp function (called when a response
15987 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015988
15989 @param pWDICtx: pointer to the WLAN DAL context
15990 pEventData: pointer to the event information structure
15991
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 @see
15993 @return Result of the function call
15994*/
15995WDI_Status
15996WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015997(
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 WDI_ControlBlockType* pWDICtx,
15999 WDI_EventInfoType* pEventData
16000)
16001{
16002 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16003 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16004 WDI_AddStaParams wdiAddSTAParam;
16005
16006 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016008
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16011
16012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 -------------------------------------------------------------------------*/
16015 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16016 ( NULL == pEventData->pEventData))
16017 {
16018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 }
16023
16024 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16025
16026 /*-------------------------------------------------------------------------
16027 Extract response and send it to UMAC
16028 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16030 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016031 sizeof(halConfigStaRsp.configStaRspParams));
16032
16033
16034 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16035 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16036 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16037 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16038 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16039
16040 /* MAC Address of STA - take from cache as it does not come back in the
16041 response*/
16042 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016043 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016044 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016045
16046 wdiCfgSTAParams.wdiStatus =
16047 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016048
16049 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16050 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16051 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16052
16053 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16054 {
16055 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16056 {
16057 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016058 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16060 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016061
Jeff Johnson295189b2012-06-20 16:38:30 -070016062 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016063 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016065 wdiAddSTAParam.ucHTCapable =
16066 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16067 wdiAddSTAParam.ucStaType =
16068 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16069
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16072 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016074
16075 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16076 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16077 WDI_MAC_ADDR_LEN);
16078
16079 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16080 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16081 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016082
16083 if ( NULL == pBSSSes )
16084 {
16085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16086 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016087
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 }
16091
16092 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016097 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016098 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 halConfigStaRsp.configStaRspParams.ucBcastSig;
16101 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16102 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016103
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16105 }
16106 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16107 {
16108 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16109
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016113 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016114 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016118 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016120 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016121 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 halConfigStaRsp.configStaRspParams.ucUcastSig;
16124 }
16125 }
16126
16127 /*Notify UMAC*/
16128 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16129
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016131}/*WDI_ProcessConfigStaRsp*/
16132
16133
16134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016137
16138 @param pWDICtx: pointer to the WLAN DAL context
16139 pEventData: pointer to the event information structure
16140
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 @see
16142 @return Result of the function call
16143*/
16144WDI_Status
16145WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016146(
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 WDI_ControlBlockType* pWDICtx,
16148 WDI_EventInfoType* pEventData
16149)
16150{
16151 WDI_Status wdiStatus;
16152 eHalStatus halStatus;
16153 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16154
16155 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16158
16159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 -------------------------------------------------------------------------*/
16162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16163 ( NULL == pEventData->pEventData))
16164 {
16165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016169 }
16170
16171 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16172
16173 wpalMutexAcquire(&pWDICtx->wptMutex);
16174
16175 /*If the link is being transitioned to idle - the BSS is to be deleted
16176 - this type of ending a session is possible when UMAC has failed an
16177 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16180 {
16181 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016182 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016183 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16185 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16186 &pBSSSes);
16187
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 /*-----------------------------------------------------------------------
16189 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 -----------------------------------------------------------------------*/
16192 if ( NULL == pBSSSes )
16193 {
16194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16195 "Set link response received outside association session");
16196 }
16197 else
16198 {
16199 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16200 will be del BSS coming after this to stop the beaconing & cleaning up the
16201 sessions*/
16202 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16203 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16204 {
16205 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 -----------------------------------------------------------------------*/
16208 WDI_DeleteSession(pWDICtx, pBSSSes);
16209
16210 /*-----------------------------------------------------------------------
16211 Check to see if this association is in progress - if so disable the
16212 flag as this has ended
16213 -----------------------------------------------------------------------*/
16214 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 /*Association no longer in progress */
16217 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16218 /*Association no longer in progress - prepare pending assoc for processing*/
16219 WDI_DequeueAssocRequest(pWDICtx);
16220 }
16221 }
16222 }
16223 }
16224 /* If the link state has been set to POST ASSOC, reset the "association in
16225 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016226 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16228 {
16229 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16230 WDI_DequeueAssocRequest(pWDICtx);
16231 }
16232
16233 wpalMutexRelease(&pWDICtx->wptMutex);
16234
16235 /*-------------------------------------------------------------------------
16236 Extract response and send it to UMAC
16237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 wpalMemoryCopy( &halStatus,
16239 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 sizeof(halStatus));
16241
Jeff Johnsone7245742012-09-05 17:12:55 -070016242 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016243
16244 /*Notify UMAC*/
16245 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16246
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016248}/*WDI_ProcessSetLinkStateRsp*/
16249
16250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016251 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016253
16254 @param pWDICtx: pointer to the WLAN DAL context
16255 pEventData: pointer to the event information structure
16256
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 @see
16258 @return Result of the function call
16259*/
16260WDI_Status
16261WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016262(
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 WDI_ControlBlockType* pWDICtx,
16264 WDI_EventInfoType* pEventData
16265)
16266{
16267 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16268 WDI_GetStatsRspCb wdiGetStatsRspCb;
16269 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016270
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16272
16273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 -------------------------------------------------------------------------*/
16276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16277 ( NULL == pEventData->pEventData))
16278 {
16279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 }
16284
16285 /*-------------------------------------------------------------------------
16286 Extract response and send it to UMAC
16287 -------------------------------------------------------------------------*/
16288 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16289
16290 /*allocate the stats response buffer */
16291 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16292 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16293 + sizeof(WDI_GetStatsRspParamsType));
16294
16295 if(NULL == wdiGetStatsRsp)
16296 {
16297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16298 "Failed to allocate memory in Get Stats Response %x %x %x ",
16299 pWDICtx, pEventData, pEventData->pEventData);
16300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 }
16303
16304 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16305
16306 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16307 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16308 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16309 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16310 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16311 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16312
16313 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16314 wpalMemoryCopy(wdiGetStatsRsp + 1,
16315 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16316 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16317
16318 /*Notify UMAC*/
16319 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16320
16321 wpalMemoryFree(wdiGetStatsRsp);
16322
Jeff Johnsone7245742012-09-05 17:12:55 -070016323 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016324}/*WDI_ProcessGetStatsRsp*/
16325
16326
16327/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016330
16331 @param pWDICtx: pointer to the WLAN DAL context
16332 pEventData: pointer to the event information structure
16333
Jeff Johnson295189b2012-06-20 16:38:30 -070016334 @see
16335 @return Result of the function call
16336*/
16337WDI_Status
16338WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016339(
Jeff Johnson295189b2012-06-20 16:38:30 -070016340 WDI_ControlBlockType* pWDICtx,
16341 WDI_EventInfoType* pEventData
16342)
16343{
16344 WDI_Status wdiStatus;
16345 eHalStatus halStatus;
16346 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16348
16349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 -------------------------------------------------------------------------*/
16352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16353 ( NULL == pEventData->pEventData))
16354 {
16355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 }
16360
16361 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16362
16363 /*-------------------------------------------------------------------------
16364 Extract response and send it to UMAC
16365 -------------------------------------------------------------------------*/
16366 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016367 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016368
16369 /*Notify UMAC*/
16370 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16371
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016373}/*WDI_ProcessUpdateCfgRsp*/
16374
16375
16376
16377/**
16378 @brief Process Add BA Rsp function (called when a response
16379 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016380
16381 @param pWDICtx: pointer to the WLAN DAL context
16382 pEventData: pointer to the event information structure
16383
Jeff Johnson295189b2012-06-20 16:38:30 -070016384 @see
16385 @return Result of the function call
16386*/
16387WDI_Status
16388WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016389(
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 WDI_ControlBlockType* pWDICtx,
16391 WDI_EventInfoType* pEventData
16392)
16393{
16394 WDI_AddBARspCb wdiAddBARspCb;
16395
16396 tAddBARspParams halAddBARsp;
16397 WDI_AddBARspinfoType wdiAddBARsp;
16398
16399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16400
16401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 -------------------------------------------------------------------------*/
16404 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16405 ( NULL == pEventData->pEventData))
16406 {
16407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 }
16412
16413 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16414
16415 /*-------------------------------------------------------------------------
16416 Extract response and send it to UMAC
16417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016418 wpalMemoryCopy( &halAddBARsp,
16419 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 sizeof(halAddBARsp));
16421
16422 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16423
Jeff Johnson43971f52012-07-17 12:26:56 -070016424 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016425 {
16426 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16427 }
16428
16429 /*Notify UMAC*/
16430 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16431
Jeff Johnsone7245742012-09-05 17:12:55 -070016432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016433}/*WDI_ProcessAddSessionBARsp*/
16434
16435/**
16436 @brief Process Add BA Rsp function (called when a response
16437 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016438
16439 @param pWDICtx: pointer to the WLAN DAL context
16440 pEventData: pointer to the event information structure
16441
Jeff Johnson295189b2012-06-20 16:38:30 -070016442 @see
16443 @return Result of the function call
16444*/
16445WDI_Status
16446WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016447(
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 WDI_ControlBlockType* pWDICtx,
16449 WDI_EventInfoType* pEventData
16450)
16451{
16452 WDI_TriggerBARspCb wdiTriggerBARspCb;
16453
16454 tTriggerBARspParams* halTriggerBARsp;
16455 tTriggerBaRspCandidate* halBaCandidate;
16456 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16457 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16458 wpt_uint16 index;
16459 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016460
Jeff Johnson295189b2012-06-20 16:38:30 -070016461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16462
16463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 -------------------------------------------------------------------------*/
16466 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16467 ( NULL == pEventData->pEventData))
16468 {
16469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016473 }
16474
16475 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16476
16477 /*-------------------------------------------------------------------------
16478 Extract response and send it to UMAC
16479 -------------------------------------------------------------------------*/
16480 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16481
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16483 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 sizeof(WDI_TriggerBARspCandidateType));
16485 if(NULL == wdiTriggerBARsp)
16486 {
16487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16488 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16489 pWDICtx, pEventData, pEventData->pEventData);
16490 wpalMemoryFree(halTriggerBARsp);
16491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 }
16494
16495 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16496
16497 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16498 {
16499 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16502
16503 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16504 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16505
16506 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16507 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016508 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16510 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16511 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016514 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16516 }
16517 wdiTriggerBARspCandidate++;
16518 halBaCandidate++;
16519 }
16520 }
16521
16522 /*Notify UMAC*/
16523 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16524
16525 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016527}/*WDI_ProcessAddSessionBARsp*/
16528
16529/**
16530 @brief Process Update Beacon Params Rsp function (called when a response
16531 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016532
16533 @param pWDICtx: pointer to the WLAN DAL context
16534 pEventData: pointer to the event information structure
16535
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 @see
16537 @return Result of the function call
16538*/
16539WDI_Status
16540WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016541(
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 WDI_ControlBlockType* pWDICtx,
16543 WDI_EventInfoType* pEventData
16544)
16545{
16546 WDI_Status wdiStatus;
16547 eHalStatus halStatus;
16548 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16550
16551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 -------------------------------------------------------------------------*/
16554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16555 ( NULL == pEventData->pEventData))
16556 {
16557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 }
16562
16563 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16564
16565 /*-------------------------------------------------------------------------
16566 Extract response and send it to UMAC
16567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 wpalMemoryCopy( &halStatus,
16569 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 sizeof(halStatus));
16571
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016573
16574 /*Notify UMAC*/
16575 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16576
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016578}/*WDI_ProcessUpdateBeaconParamsRsp*/
16579
16580/**
16581 @brief Process Send Beacon template Rsp function (called when a response
16582 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016583
16584 @param pWDICtx: pointer to the WLAN DAL context
16585 pEventData: pointer to the event information structure
16586
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 @see
16588 @return Result of the function call
16589*/
16590WDI_Status
16591WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016592(
Jeff Johnson295189b2012-06-20 16:38:30 -070016593 WDI_ControlBlockType* pWDICtx,
16594 WDI_EventInfoType* pEventData
16595)
16596{
16597 WDI_Status wdiStatus;
16598 eHalStatus halStatus;
16599 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16601
16602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016604 -------------------------------------------------------------------------*/
16605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16606 ( NULL == pEventData->pEventData))
16607 {
16608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 }
16613
16614 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16615
16616 /*-------------------------------------------------------------------------
16617 Extract response and send it to UMAC
16618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016619 wpalMemoryCopy( &halStatus,
16620 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016621 sizeof(halStatus));
16622
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016624
16625 /*Notify UMAC*/
16626 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16627
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016629}/*WDI_ProcessSendBeaconParamsRsp*/
16630
Jeff Johnsone7245742012-09-05 17:12:55 -070016631
Jeff Johnson295189b2012-06-20 16:38:30 -070016632/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016635
16636 @param pWDICtx: pointer to the WLAN DAL context
16637 pEventData: pointer to the event information structure
16638
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 @see
16640 @return Result of the function call
16641*/
16642WDI_Status
16643WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016644(
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 WDI_ControlBlockType* pWDICtx,
16646 WDI_EventInfoType* pEventData
16647)
16648{
16649 WDI_Status wdiStatus;
16650 eHalStatus halStatus;
16651 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16653
16654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 -------------------------------------------------------------------------*/
16657 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16658 ( NULL == pEventData->pEventData))
16659 {
16660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 }
16665
16666 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16667
16668 /*-------------------------------------------------------------------------
16669 Extract response and send it to UMAC
16670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016671 wpalMemoryCopy( &halStatus,
16672 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 sizeof(halStatus));
16674
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016676
16677 /*Notify UMAC*/
16678 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16679
Jeff Johnsone7245742012-09-05 17:12:55 -070016680 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016681}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16682
16683 /**
16684 @brief Process Set Max Tx Power Rsp function (called when a response
16685 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016686
16687 @param pWDICtx: pointer to the WLAN DAL context
16688 pEventData: pointer to the event information structure
16689
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 @see
16691 @return Result of the function call
16692*/
16693WDI_Status
16694WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016695(
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 WDI_ControlBlockType* pWDICtx,
16697 WDI_EventInfoType* pEventData
16698)
16699{
16700 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016701
Jeff Johnson295189b2012-06-20 16:38:30 -070016702 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016703
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16706
16707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016709 -------------------------------------------------------------------------*/
16710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16711 ( NULL == pEventData->pEventData))
16712 {
16713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 }
16718
16719 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16720
16721 /*-------------------------------------------------------------------------
16722 Extract response and send it to UMAC
16723 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016724 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16725 pEventData->pEventData,
16726 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016727
16728 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16729 {
16730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16731 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016732 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 }
16735
Jeff Johnsone7245742012-09-05 17:12:55 -070016736 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016738 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016739
16740 /*Notify UMAC*/
16741 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16742
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016744}
16745
16746#ifdef WLAN_FEATURE_P2P
16747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016750
16751 @param pWDICtx: pointer to the WLAN DAL context
16752 pEventData: pointer to the event information structure
16753
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 @see
16755 @return Result of the function call
16756*/
16757WDI_Status
16758WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016759(
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 WDI_ControlBlockType* pWDICtx,
16761 WDI_EventInfoType* pEventData
16762)
16763{
16764 WDI_Status wdiStatus;
16765 eHalStatus halStatus;
16766 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16768
16769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 -------------------------------------------------------------------------*/
16772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16773 ( NULL == pEventData->pEventData))
16774 {
16775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 }
16780
16781 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16782
16783 /*-------------------------------------------------------------------------
16784 Extract response and send it to UMAC
16785 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016786 wpalMemoryCopy( &halStatus,
16787 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016788 sizeof(halStatus));
16789
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016791
16792 /*Notify UMAC*/
16793 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16794
Jeff Johnsone7245742012-09-05 17:12:55 -070016795 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016796}/*WDI_ProcessP2PGONOARsp*/
16797#endif
16798/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016799 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016801
16802 @param pWDICtx: pointer to the WLAN DAL context
16803 pEventData: pointer to the event information structure
16804
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 @see
16806 @return Result of the function call
16807*/
16808WDI_Status
16809WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016810(
Jeff Johnson295189b2012-06-20 16:38:30 -070016811 WDI_ControlBlockType* pWDICtx,
16812 WDI_EventInfoType* pEventData
16813)
16814{
16815 WDI_Status wdiStatus;
16816 eHalStatus halStatus;
16817 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016818 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16820
16821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016823 -------------------------------------------------------------------------*/
16824 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16825 ( NULL == pEventData->pEventData))
16826 {
16827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 }
16832
16833 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
16834
16835 /*-------------------------------------------------------------------------
16836 Extract response and send it to UMAC
16837 -------------------------------------------------------------------------*/
16838 halStatus = *((eHalStatus*)pEventData->pEventData);
16839
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016841
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016842 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
16843 * Other module states are taken care by PMC.
16844 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
16845 */
16846 if (wdiStatus != WDI_STATUS_SUCCESS) {
16847
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16849 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
16850 halStatus);
16851 /* Call Back is not required as we are putting the DXE in FULL
16852 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016853 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16854
16855 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16857 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
16858 WDI_ASSERT(0);
16859 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016860 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 /*Notify UMAC*/
16862 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16863
Jeff Johnsone7245742012-09-05 17:12:55 -070016864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016865}/*WDI_ProcessEnterImpsRsp*/
16866
16867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016868 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016870
16871 @param pWDICtx: pointer to the WLAN DAL context
16872 pEventData: pointer to the event information structure
16873
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 @see
16875 @return Result of the function call
16876*/
16877WDI_Status
16878WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016879(
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ControlBlockType* pWDICtx,
16881 WDI_EventInfoType* pEventData
16882)
16883{
16884 WDI_Status wdiStatus;
16885 eHalStatus halStatus;
16886 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016887 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16889
16890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 -------------------------------------------------------------------------*/
16893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16894 ( NULL == pEventData->pEventData))
16895 {
16896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 }
16901
16902 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
16903
16904 /*-------------------------------------------------------------------------
16905 Extract response and send it to UMAC
16906 -------------------------------------------------------------------------*/
16907 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016909
16910 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016911 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16912 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16913 {
16914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16915 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
16916 WDI_ASSERT(0);
16917 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 /*Notify UMAC*/
16919 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16920
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016922}/*WDI_ProcessExitImpsRsp*/
16923
16924/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016927
16928 @param pWDICtx: pointer to the WLAN DAL context
16929 pEventData: pointer to the event information structure
16930
Jeff Johnson295189b2012-06-20 16:38:30 -070016931 @see
16932 @return Result of the function call
16933*/
16934WDI_Status
16935WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016936(
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 WDI_ControlBlockType* pWDICtx,
16938 WDI_EventInfoType* pEventData
16939)
16940{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016941 eHalStatus halStatus = eHAL_STATUS_FAILURE;
16942 tHalEnterBmpsRspParams halEnterBmpsRsp;
16943 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
16944 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016945 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16947
16948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 -------------------------------------------------------------------------*/
16951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16952 ( NULL == pEventData->pEventData))
16953 {
16954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016958 }
16959
Jeff Johnson295189b2012-06-20 16:38:30 -070016960 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016961 Extract response and send it to UMAC
16962 -------------------------------------------------------------------------*/
16963 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
16964 {
16965 wpalMemoryCopy( &halEnterBmpsRsp,
16966 pEventData->pEventData,
16967 sizeof(halEnterBmpsRsp));
16968
16969 //Used to print debug message
16970 halStatus = halEnterBmpsRsp.status;
16971 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
16972 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
16973 }
16974 else
16975 {
16976 halStatus = *((eHalStatus*)pEventData->pEventData);
16977 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
16978 }
16979
16980 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016981
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016982 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
16983 * Other module states are taken care by PMC.
16984 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
16985 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016986 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
16987 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016988
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016990 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
16991 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016992 /* Call Back is not required as we are putting the DXE in FULL
16993 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016994 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16995 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16996 {
16997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16998 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
16999 WDI_ASSERT(0);
17000 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017001 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017002 }
17003
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017005 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017006
Jeff Johnsone7245742012-09-05 17:12:55 -070017007 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017008}/*WDI_ProcessEnterBmpsRsp*/
17009
17010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017011 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017013
17014 @param pWDICtx: pointer to the WLAN DAL context
17015 pEventData: pointer to the event information structure
17016
Jeff Johnson295189b2012-06-20 16:38:30 -070017017 @see
17018 @return Result of the function call
17019*/
17020WDI_Status
17021WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017022(
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 WDI_ControlBlockType* pWDICtx,
17024 WDI_EventInfoType* pEventData
17025)
17026{
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 eHalStatus halStatus;
17028 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017029 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017030 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17031 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17033
17034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 -------------------------------------------------------------------------*/
17037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17038 ( NULL == pEventData->pEventData))
17039 {
17040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 }
17045
17046 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17047
17048 /*-------------------------------------------------------------------------
17049 Extract response and send it to UMAC
17050 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017051
17052 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17053 {
17054 wpalMemoryCopy( &halExitBmpsRsp,
17055 pEventData->pEventData,
17056 sizeof(halExitBmpsRsp));
17057
17058 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17059 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17060 }
17061 else
17062 {
17063 halStatus = *((eHalStatus*)pEventData->pEventData);
17064 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17065 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017066
17067 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017068 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17069 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17070 {
17071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17072 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17073 WDI_ASSERT(0);
17074 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017075 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17076
17077 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017078 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017079
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017081}/*WDI_ProcessExitBmpsRsp*/
17082
17083/**
17084 @brief Process Enter UAPSD Rsp function (called when a response
17085 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017086
17087 @param pWDICtx: pointer to the WLAN DAL context
17088 pEventData: pointer to the event information structure
17089
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 @see
17091 @return Result of the function call
17092*/
17093WDI_Status
17094WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017095(
Jeff Johnson295189b2012-06-20 16:38:30 -070017096 WDI_ControlBlockType* pWDICtx,
17097 WDI_EventInfoType* pEventData
17098)
17099{
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017101 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017103 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17104
Jeff Johnson295189b2012-06-20 16:38:30 -070017105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17106
17107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017108 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 -------------------------------------------------------------------------*/
17110 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17111 ( NULL == pEventData->pEventData))
17112 {
17113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 }
17118
17119 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17120
17121 /*-------------------------------------------------------------------------
17122 Extract response and send it to UMAC
17123 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017124 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17125 {
17126 wpalMemoryCopy( &halEnterUapsdRsp,
17127 pEventData->pEventData,
17128 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017129
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017130 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17131 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17132 }
17133 else
17134 {
17135 halStatus = *((eHalStatus*)pEventData->pEventData);
17136 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17137 }
17138
17139 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017140 {
17141 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17142 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17143 // the traffic to decide when to suspend the trigger frames when there is no traffic
17144 // activity on the trigger enabled ACs
17145 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17146
17147#ifdef WLAN_PERF
17148 // Increment the BD signature to refresh the fast path BD utilization
17149 pWDICtx->uBdSigSerialNum++;
17150#endif
17151 }
17152
17153 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017154 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017155
Jeff Johnsone7245742012-09-05 17:12:55 -070017156 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017157}/*WDI_ProcessEnterUapsdRsp*/
17158
17159/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017160 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017161 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017162
17163 @param pWDICtx: pointer to the WLAN DAL context
17164 pEventData: pointer to the event information structure
17165
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 @see
17167 @return Result of the function call
17168*/
17169WDI_Status
17170WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017171(
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 WDI_ControlBlockType* pWDICtx,
17173 WDI_EventInfoType* pEventData
17174)
17175{
Jeff Johnson295189b2012-06-20 16:38:30 -070017176 eHalStatus halStatus;
17177 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017178 tHalExitUapsdRspParams halExitUapsdRsp;
17179 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17181
17182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 -------------------------------------------------------------------------*/
17185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17186 ( NULL == pEventData->pEventData))
17187 {
17188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 }
17193
17194 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17195
17196 /*-------------------------------------------------------------------------
17197 Extract response and send it to UMAC
17198 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017199 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17200 {
17201 wpalMemoryCopy( &halExitUapsdRsp,
17202 pEventData->pEventData,
17203 sizeof(halExitUapsdRsp));
17204
17205 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17206 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17207 }
17208 else
17209 {
17210 halStatus = *((eHalStatus*)pEventData->pEventData);
17211 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17212 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17214 // directly instead of the FW WQ.
17215 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17216
17217#ifdef WLAN_PERF
17218 // Increment the BD signature to refresh the fast path BD utilization
17219 pWDICtx->uBdSigSerialNum++;
17220#endif
17221
17222 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017223 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017224
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017226}/*WDI_ProcessExitUapsdRsp*/
17227
17228/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017231
17232 @param pWDICtx: pointer to the WLAN DAL context
17233 pEventData: pointer to the event information structure
17234
Jeff Johnson295189b2012-06-20 16:38:30 -070017235 @see
17236 @return Result of the function call
17237*/
17238WDI_Status
17239WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017240(
Jeff Johnson295189b2012-06-20 16:38:30 -070017241 WDI_ControlBlockType* pWDICtx,
17242 WDI_EventInfoType* pEventData
17243)
17244{
17245 WDI_Status wdiStatus;
17246 eHalStatus halStatus;
17247 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17249
17250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 -------------------------------------------------------------------------*/
17253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17254 ( NULL == pEventData->pEventData))
17255 {
17256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 }
17261
17262 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17263
17264 /*-------------------------------------------------------------------------
17265 Extract response and send it to UMAC
17266 -------------------------------------------------------------------------*/
17267 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017268 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017269
17270 /*Notify UMAC*/
17271 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17272
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017274}/*WDI_ProcessSetUapsdAcParamsRsp*/
17275
17276/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017279
17280 @param pWDICtx: pointer to the WLAN DAL context
17281 pEventData: pointer to the event information structure
17282
Jeff Johnson295189b2012-06-20 16:38:30 -070017283 @see
17284 @return Result of the function call
17285*/
17286WDI_Status
17287WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017288(
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 WDI_ControlBlockType* pWDICtx,
17290 WDI_EventInfoType* pEventData
17291)
17292{
17293 WDI_Status wdiStatus;
17294 eHalStatus halStatus;
17295 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17297
17298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017300 -------------------------------------------------------------------------*/
17301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17302 ( NULL == pEventData->pEventData))
17303 {
17304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 }
17309
17310 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17311
17312 /*-------------------------------------------------------------------------
17313 Extract response and send it to UMAC
17314 -------------------------------------------------------------------------*/
17315 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017316 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017317
17318 /*Notify UMAC*/
17319 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17320
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017322}/*WDI_ProcessUpdateUapsdParamsRsp*/
17323
17324/**
17325 @brief Process Configure RXP filter Rsp function (called when a
17326 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017327
17328 @param pWDICtx: pointer to the WLAN DAL context
17329 pEventData: pointer to the event information structure
17330
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 @see
17332 @return Result of the function call
17333*/
17334WDI_Status
17335WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017336(
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 WDI_ControlBlockType* pWDICtx,
17338 WDI_EventInfoType* pEventData
17339)
17340{
17341 WDI_Status wdiStatus;
17342 eHalStatus halStatus;
17343 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17345
17346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 -------------------------------------------------------------------------*/
17349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17350 ( NULL == pEventData->pEventData))
17351 {
17352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 }
17357
17358 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17359
17360 /*-------------------------------------------------------------------------
17361 Extract response and send it to UMAC
17362 -------------------------------------------------------------------------*/
17363 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017364 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017365
17366 /*Notify UMAC*/
17367 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17368
Jeff Johnsone7245742012-09-05 17:12:55 -070017369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017370}/*WDI_ProcessConfigureRxpFilterRsp*/
17371
17372/**
17373 @brief Process Set beacon filter Rsp function (called when a
17374 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017375
17376 @param pWDICtx: pointer to the WLAN DAL context
17377 pEventData: pointer to the event information structure
17378
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 @see
17380 @return Result of the function call
17381*/
17382WDI_Status
17383WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017384(
Jeff Johnson295189b2012-06-20 16:38:30 -070017385 WDI_ControlBlockType* pWDICtx,
17386 WDI_EventInfoType* pEventData
17387)
17388{
17389 WDI_Status wdiStatus;
17390 eHalStatus halStatus;
17391 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17393
17394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017396 -------------------------------------------------------------------------*/
17397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17398 ( NULL == pEventData->pEventData))
17399 {
17400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 }
17405
17406 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17407
17408 /*-------------------------------------------------------------------------
17409 Extract response and send it to UMAC
17410 -------------------------------------------------------------------------*/
17411 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017412 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017413
17414 /*Notify UMAC*/
17415 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17416
Jeff Johnsone7245742012-09-05 17:12:55 -070017417 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017418}/*WDI_ProcessSetBeaconFilterRsp*/
17419
17420/**
17421 @brief Process remove beacon filter Rsp function (called when a
17422 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017423
17424 @param pWDICtx: pointer to the WLAN DAL context
17425 pEventData: pointer to the event information structure
17426
Jeff Johnson295189b2012-06-20 16:38:30 -070017427 @see
17428 @return Result of the function call
17429*/
17430WDI_Status
17431WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017432(
Jeff Johnson295189b2012-06-20 16:38:30 -070017433 WDI_ControlBlockType* pWDICtx,
17434 WDI_EventInfoType* pEventData
17435)
17436{
17437 WDI_Status wdiStatus;
17438 eHalStatus halStatus;
17439 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17441
17442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 -------------------------------------------------------------------------*/
17445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17446 ( NULL == pEventData->pEventData))
17447 {
17448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 }
17453
17454 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17455
17456 /*-------------------------------------------------------------------------
17457 Extract response and send it to UMAC
17458 -------------------------------------------------------------------------*/
17459 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017460 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017461
17462 /*Notify UMAC*/
17463 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17464
Jeff Johnsone7245742012-09-05 17:12:55 -070017465 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017466}/*WDI_ProcessRemBeaconFilterRsp*/
17467
17468/**
17469 @brief Process set RSSI thresholds Rsp function (called when a
17470 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017471
17472 @param pWDICtx: pointer to the WLAN DAL context
17473 pEventData: pointer to the event information structure
17474
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 @see
17476 @return Result of the function call
17477*/
17478WDI_Status
17479WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017480(
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 WDI_ControlBlockType* pWDICtx,
17482 WDI_EventInfoType* pEventData
17483)
17484{
17485 WDI_Status wdiStatus;
17486 eHalStatus halStatus;
17487 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17489
17490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 -------------------------------------------------------------------------*/
17493 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17494 ( NULL == pEventData->pEventData))
17495 {
17496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 }
17501
17502 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17503
17504 /*-------------------------------------------------------------------------
17505 Extract response and send it to UMAC
17506 -------------------------------------------------------------------------*/
17507 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017509
17510 /*Notify UMAC*/
17511 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17512
Jeff Johnsone7245742012-09-05 17:12:55 -070017513 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017514}/*WDI_ProcessSetRSSIThresoldsRsp*/
17515
17516/**
17517 @brief Process host offload Rsp function (called when a
17518 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017519
17520 @param pWDICtx: pointer to the WLAN DAL context
17521 pEventData: pointer to the event information structure
17522
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 @see
17524 @return Result of the function call
17525*/
17526WDI_Status
17527WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017528(
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 WDI_ControlBlockType* pWDICtx,
17530 WDI_EventInfoType* pEventData
17531)
17532{
17533 WDI_Status wdiStatus;
17534 eHalStatus halStatus;
17535 WDI_HostOffloadCb wdiHostOffloadCb;
17536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17537
17538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 -------------------------------------------------------------------------*/
17541 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17542 ( NULL == pEventData->pEventData))
17543 {
17544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017545 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 }
17549
17550 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17551
17552 /*-------------------------------------------------------------------------
17553 Extract response and send it to UMAC
17554 -------------------------------------------------------------------------*/
17555 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017556 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017557
17558 /*Notify UMAC*/
17559 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17560
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017562}/*WDI_ProcessHostOffloadRsp*/
17563
17564/**
17565 @brief Process keep alive Rsp function (called when a
17566 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017567
17568 @param pWDICtx: pointer to the WLAN DAL context
17569 pEventData: pointer to the event information structure
17570
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 @see
17572 @return Result of the function call
17573*/
17574WDI_Status
17575WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017576(
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 WDI_ControlBlockType* pWDICtx,
17578 WDI_EventInfoType* pEventData
17579)
17580{
17581 WDI_Status wdiStatus;
17582 eHalStatus halStatus;
17583 WDI_KeepAliveCb wdiKeepAliveCb;
17584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17586 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17587
17588
17589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017590 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 -------------------------------------------------------------------------*/
17592 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17593 ( NULL == pEventData->pEventData))
17594 {
17595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017599 }
17600
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17602
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 /*-------------------------------------------------------------------------
17604 Extract response and send it to UMAC
17605 -------------------------------------------------------------------------*/
17606 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017607 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017608
17609 /*Notify UMAC*/
17610 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17611
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017613}/*WDI_ProcessKeepAliveRsp*/
17614
17615/**
17616 @brief Process wowl add ptrn Rsp function (called when a
17617 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017618
17619 @param pWDICtx: pointer to the WLAN DAL context
17620 pEventData: pointer to the event information structure
17621
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 @see
17623 @return Result of the function call
17624*/
17625WDI_Status
17626WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017627(
Jeff Johnson295189b2012-06-20 16:38:30 -070017628 WDI_ControlBlockType* pWDICtx,
17629 WDI_EventInfoType* pEventData
17630)
17631{
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 eHalStatus halStatus;
17633 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017634 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17635 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17636
Jeff Johnson295189b2012-06-20 16:38:30 -070017637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17638
17639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017641 -------------------------------------------------------------------------*/
17642 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17643 ( NULL == pEventData->pEventData))
17644 {
17645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017649 }
17650
17651 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17652
17653 /*-------------------------------------------------------------------------
17654 Extract response and send it to UMAC
17655 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017656 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17657 {
17658 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17659 pEventData->pEventData,
17660 sizeof(halAddWowlBcastPtrRsp));
17661
17662 wdiWowlAddBcPtrRsp.wdiStatus =
17663 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17664 }
17665 else
17666 {
17667 halStatus = *((eHalStatus*)pEventData->pEventData);
17668 wdiWowlAddBcPtrRsp.wdiStatus =
17669 WDI_HAL_2_WDI_STATUS(halStatus);
17670 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017671
17672 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017673 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017674
Jeff Johnsone7245742012-09-05 17:12:55 -070017675 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017676}/*WDI_ProcessWowlAddBcPtrnRsp*/
17677
17678/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017679 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017681
17682 @param pWDICtx: pointer to the WLAN DAL context
17683 pEventData: pointer to the event information structure
17684
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 @see
17686 @return Result of the function call
17687*/
17688WDI_Status
17689WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017690(
Jeff Johnson295189b2012-06-20 16:38:30 -070017691 WDI_ControlBlockType* pWDICtx,
17692 WDI_EventInfoType* pEventData
17693)
17694{
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 eHalStatus halStatus;
17696 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017697 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17698 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17700
17701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 -------------------------------------------------------------------------*/
17704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17705 ( NULL == pEventData->pEventData))
17706 {
17707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 }
17712
17713 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17714
17715 /*-------------------------------------------------------------------------
17716 Extract response and send it to UMAC
17717 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017718 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17719 {
17720 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17721 pEventData->pEventData,
17722 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017723
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017724 wdiWowlDelBcstPtrRsp.wdiStatus =
17725 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17726 }
17727 else
17728 {
17729 halStatus = *((eHalStatus*)pEventData->pEventData);
17730 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17731 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017732 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017733 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017734
Jeff Johnsone7245742012-09-05 17:12:55 -070017735 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017736}/*WDI_ProcessWowlDelBcPtrnRsp*/
17737
17738/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017739 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017740 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017741
17742 @param pWDICtx: pointer to the WLAN DAL context
17743 pEventData: pointer to the event information structure
17744
Jeff Johnson295189b2012-06-20 16:38:30 -070017745 @see
17746 @return Result of the function call
17747*/
17748WDI_Status
17749WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017750(
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 WDI_ControlBlockType* pWDICtx,
17752 WDI_EventInfoType* pEventData
17753)
17754{
Jeff Johnson295189b2012-06-20 16:38:30 -070017755 eHalStatus halStatus;
17756 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017757 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17758 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17760
17761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017763 -------------------------------------------------------------------------*/
17764 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17765 ( NULL == pEventData->pEventData))
17766 {
17767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 }
17772
17773 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17774
17775 /*-------------------------------------------------------------------------
17776 Extract response and send it to UMAC
17777 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017778 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17779 {
17780 wpalMemoryCopy( &halEnterWowlRspParams,
17781 (wpt_uint8*)pEventData->pEventData,
17782 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017783
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017784 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17785 wdiwowlEnterRsp.status =
17786 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17787 }
17788 else
17789 {
17790 halStatus = *((eHalStatus*)pEventData->pEventData);
17791 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17792 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017794 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017795
Jeff Johnsone7245742012-09-05 17:12:55 -070017796 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017797}/*WDI_ProcessWowlEnterRsp*/
17798
17799/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017800 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017801 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017802
17803 @param pWDICtx: pointer to the WLAN DAL context
17804 pEventData: pointer to the event information structure
17805
Jeff Johnson295189b2012-06-20 16:38:30 -070017806 @see
17807 @return Result of the function call
17808*/
17809WDI_Status
17810WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017811(
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 WDI_ControlBlockType* pWDICtx,
17813 WDI_EventInfoType* pEventData
17814)
17815{
Jeff Johnson295189b2012-06-20 16:38:30 -070017816 eHalStatus halStatus;
17817 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017818 tHalExitWowlRspParams halExitWowlRspParams;
17819 WDI_WowlExitRspParamsType wdiWowlExitRsp;
17820
Jeff Johnson295189b2012-06-20 16:38:30 -070017821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17822
17823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017825 -------------------------------------------------------------------------*/
17826 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17827 ( NULL == pEventData->pEventData))
17828 {
17829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017833 }
17834
17835 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
17836
17837 /*-------------------------------------------------------------------------
17838 Extract response and send it to UMAC
17839 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017840 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17841 {
17842 wpalMemoryCopy( &halExitWowlRspParams,
17843 pEventData->pEventData,
17844 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017845
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017846 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
17847 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
17848
17849 }
17850 else
17851 {
17852 halStatus = *((eHalStatus*)pEventData->pEventData);
17853 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17854 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017856 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017857
Jeff Johnsone7245742012-09-05 17:12:55 -070017858 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017859}/*WDI_ProcessWowlExitRsp*/
17860
17861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017862 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070017863 (called when a response is being received over the bus
17864 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017865
17866 @param pWDICtx: pointer to the WLAN DAL context
17867 pEventData: pointer to the event information structure
17868
Jeff Johnson295189b2012-06-20 16:38:30 -070017869 @see
17870 @return Result of the function call
17871*/
17872WDI_Status
17873WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017874(
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 WDI_ControlBlockType* pWDICtx,
17876 WDI_EventInfoType* pEventData
17877)
17878{
17879 WDI_Status wdiStatus;
17880 eHalStatus halStatus;
17881 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
17882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17883
17884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017886 -------------------------------------------------------------------------*/
17887 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17888 ( NULL == pEventData->pEventData))
17889 {
17890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017891 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 }
17895
17896 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
17897
17898 /*-------------------------------------------------------------------------
17899 Extract response and send it to UMAC
17900 -------------------------------------------------------------------------*/
17901 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017903
17904 /*Notify UMAC*/
17905 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
17906
Jeff Johnsone7245742012-09-05 17:12:55 -070017907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017908}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
17909
17910
17911/**
17912 @brief Process Nv download(called when a response
17913 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070017914
17915 @param pWDICtx: pointer to the WLAN DAL context
17916 pEventData: pointer to the event information structure
17917
Jeff Johnson295189b2012-06-20 16:38:30 -070017918 @see
17919 @return Result of the function call
17920*/
17921WDI_Status
17922WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017923(
Jeff Johnson295189b2012-06-20 16:38:30 -070017924 WDI_ControlBlockType* pWDICtx,
17925 WDI_EventInfoType* pEventData
17926)
17927{
17928
17929 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
17930 tHalNvImgDownloadRspParams halNvDownloadRsp;
17931 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
17932
17933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 -------------------------------------------------------------------------*/
17936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17937 ( NULL == pEventData->pEventData))
17938 {
17939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 }
17944
17945 /*-------------------------------------------------------------------------
17946 Extract response and send it to UMAC
17947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017948 wpalMemoryCopy( &halNvDownloadRsp,
17949 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 sizeof(halNvDownloadRsp));
17951
17952 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
17953
17954 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070017955 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
17956 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 {
17958 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070017959 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 }
17961 else
17962 {
17963 /*Reset the Nv related global information in WDI context information */
17964 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
17965 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
17966 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
17967 /*call WDA callback function for last fragment */
17968 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
17969 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
17970 }
17971
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017973}
17974#ifdef WLAN_FEATURE_VOWIFI_11R
17975/**
17976 @brief Process Add TSpec Rsp function (called when a response
17977 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017978
17979 @param pWDICtx: pointer to the WLAN DAL context
17980 pEventData: pointer to the event information structure
17981
Jeff Johnson295189b2012-06-20 16:38:30 -070017982 @see
17983 @return Result of the function call
17984*/
17985WDI_Status
17986WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017987(
Jeff Johnson295189b2012-06-20 16:38:30 -070017988 WDI_ControlBlockType* pWDICtx,
17989 WDI_EventInfoType* pEventData
17990)
17991{
17992 WDI_Status wdiStatus;
17993 tAggrAddTsRspParams aggrAddTsRsp;
17994 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
17995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17996
17997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017998 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017999 -------------------------------------------------------------------------*/
18000 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18001 ( NULL == pEventData->pEventData))
18002 {
18003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 }
18008
18009 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18010
18011 /*-------------------------------------------------------------------------
18012 Extract response and send it to UMAC
18013 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018014 wpalMemoryCopy( &aggrAddTsRsp,
18015 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 sizeof(aggrAddTsRsp));
18017
18018 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018019 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018020
18021 /*Notify UMAC*/
18022 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18023
Jeff Johnsone7245742012-09-05 17:12:55 -070018024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018025}/*WDI_ProcessAddTSpecRsp*/
18026#endif /* WLAN_FEATURE_VOWIFI_11R */
18027
18028/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018029 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018031
18032 @param pWDICtx: pointer to the WLAN DAL context
18033 pEventData: pointer to the event information structure
18034
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 @see
18036 @return Result of the function call
18037*/
18038WDI_Status
18039WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018040(
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 WDI_ControlBlockType* pWDICtx,
18042 WDI_EventInfoType* pEventData
18043)
18044{
18045 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18046 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18047 tHalHostResumeRspParams hostResumeRspMsg;
18048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18049
18050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018051 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018052 -------------------------------------------------------------------------*/
18053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18054 ( NULL == pEventData->pEventData))
18055 {
18056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018060 }
18061
18062 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18063
18064 /*-------------------------------------------------------------------------
18065 Extract response and send it to UMAC
18066 -------------------------------------------------------------------------*/
18067
Jeff Johnsone7245742012-09-05 17:12:55 -070018068 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018069 (wpt_uint8*)pEventData->pEventData,
18070 sizeof(hostResumeRspMsg));
18071
Jeff Johnsone7245742012-09-05 17:12:55 -070018072 wdiResumeRspParams.wdiStatus =
18073 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018074
18075 /*Notify UMAC*/
18076 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18077
18078 return WDI_STATUS_SUCCESS;
18079}
18080
18081/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018082 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018083 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018084
18085 @param pWDICtx: pointer to the WLAN DAL context
18086 pEventData: pointer to the event information structure
18087
Jeff Johnson295189b2012-06-20 16:38:30 -070018088 @see
18089 @return Result of the function call
18090*/
18091WDI_Status
18092WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018093(
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 WDI_ControlBlockType* pWDICtx,
18095 WDI_EventInfoType* pEventData
18096)
18097{
18098 WDI_Status wdiStatus;
18099 eHalStatus halStatus;
18100 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18102
18103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018105 -------------------------------------------------------------------------*/
18106 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18107 ( NULL == pEventData->pEventData))
18108 {
18109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018114
18115 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018116
18117 /*-------------------------------------------------------------------------
18118 Extract response and send it to UMAC
18119 -------------------------------------------------------------------------*/
18120 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018122
18123 /*Notify UMAC*/
18124 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18125
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018127}/*WDI_ProcessSetTxPerTrackingRsp*/
18128
18129/*==========================================================================
18130 Indications from HAL
18131 ==========================================================================*/
18132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 indication of this kind is being received over the bus
18135 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018136
18137 @param pWDICtx: pointer to the WLAN DAL context
18138 pEventData: pointer to the event information structure
18139
Jeff Johnson295189b2012-06-20 16:38:30 -070018140 @see
18141 @return Result of the function call
18142*/
18143WDI_Status
18144WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018145(
Jeff Johnson295189b2012-06-20 16:38:30 -070018146 WDI_ControlBlockType* pWDICtx,
18147 WDI_EventInfoType* pEventData
18148)
18149{
18150 WDI_LowLevelIndType wdiInd;
18151 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18153
18154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 -------------------------------------------------------------------------*/
18157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18158 ( NULL == pEventData->pEventData))
18159 {
18160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 }
18165
18166 /*-------------------------------------------------------------------------
18167 Extract indication and send it to UMAC
18168 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018169 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18170 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 sizeof(tHalRSSINotification));
18172
18173 /*Fill in the indication parameters*/
18174 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18175 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18176 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18177 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18178 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18179 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18180 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18181 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18182 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18183 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18184 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18185 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18186 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
18187
18188 /*Notify UMAC*/
18189 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018190
18191 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018192}/*WDI_ProcessLowRSSIInd*/
18193
18194
18195/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018196 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018197 an indication of this kind is being received over the
18198 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018199
18200 @param pWDICtx: pointer to the WLAN DAL context
18201 pEventData: pointer to the event information structure
18202
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 @see
18204 @return Result of the function call
18205*/
18206WDI_Status
18207WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018208(
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 WDI_ControlBlockType* pWDICtx,
18210 WDI_EventInfoType* pEventData
18211)
18212{
18213 WDI_Status wdiStatus;
18214 eHalStatus halStatus;
18215 WDI_LowLevelIndType wdiInd;
18216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18217
18218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 -------------------------------------------------------------------------*/
18221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18222 ( NULL == pEventData->pEventData))
18223 {
18224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018228 }
18229
18230 /*-------------------------------------------------------------------------
18231 Extract indication and send it to UMAC
18232 -------------------------------------------------------------------------*/
18233 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18234 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018236
18237 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018238 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
18239
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 /*Notify UMAC*/
18241 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018242
18243 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018244}/*WDI_ProcessMissedBeaconInd*/
18245
18246
18247/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018248 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018249 an indication of this kind is being received over the
18250 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018251
18252 @param pWDICtx: pointer to the WLAN DAL context
18253 pEventData: pointer to the event information structure
18254
Jeff Johnson295189b2012-06-20 16:38:30 -070018255 @see
18256 @return Result of the function call
18257*/
18258WDI_Status
18259WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018260(
Jeff Johnson295189b2012-06-20 16:38:30 -070018261 WDI_ControlBlockType* pWDICtx,
18262 WDI_EventInfoType* pEventData
18263)
18264{
18265 WDI_Status wdiStatus;
18266 eHalStatus halStatus;
18267 WDI_LowLevelIndType wdiInd;
18268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18269
18270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 -------------------------------------------------------------------------*/
18273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18274 ( NULL == pEventData->pEventData))
18275 {
18276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 }
18281
18282 /*-------------------------------------------------------------------------
18283 Extract indication and send it to UMAC
18284 -------------------------------------------------------------------------*/
18285 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18286 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018287 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018288
18289 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018290 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018291 /* ! TO DO - fill in from HAL struct:
18292 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18293
18294 /*Notify UMAC*/
18295 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018296
18297 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018298}/*WDI_ProcessUnkAddrFrameInd*/
18299
18300
18301/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018302 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018303 indication of this kind is being received over the bus
18304 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018305
18306 @param pWDICtx: pointer to the WLAN DAL context
18307 pEventData: pointer to the event information structure
18308
Jeff Johnson295189b2012-06-20 16:38:30 -070018309 @see
18310 @return Result of the function call
18311*/
18312WDI_Status
18313WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018314(
Jeff Johnson295189b2012-06-20 16:38:30 -070018315 WDI_ControlBlockType* pWDICtx,
18316 WDI_EventInfoType* pEventData
18317)
18318{
18319 WDI_LowLevelIndType wdiInd;
18320 tpSirMicFailureInd pHalMicFailureInd;
18321
18322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18323
18324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 -------------------------------------------------------------------------*/
18327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18328 ( NULL == pEventData->pEventData))
18329 {
18330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018335
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18337 /*-------------------------------------------------------------------------
18338 Extract indication and send it to UMAC
18339 -------------------------------------------------------------------------*/
18340
18341 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018342 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018343 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18344 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18345 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18346 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18347 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18348 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18349 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18350 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018351 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018352 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018353 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018355 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018356 pHalMicFailureInd->info.keyId;
18357 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18358 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18359 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18360 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
18361 /*Notify UMAC*/
18362 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018363
18364 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018365}/*WDI_ProcessMicFailureInd*/
18366
18367
18368/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018369 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018370 an indication of this kind is being received over the
18371 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018372
18373 @param pWDICtx: pointer to the WLAN DAL context
18374 pEventData: pointer to the event information structure
18375
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 @see
18377 @return Result of the function call
18378*/
18379WDI_Status
18380WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018381(
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 WDI_ControlBlockType* pWDICtx,
18383 WDI_EventInfoType* pEventData
18384)
18385{
18386 WDI_Status wdiStatus;
18387 eHalStatus halStatus;
18388 WDI_LowLevelIndType wdiInd;
18389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18390
18391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018393 -------------------------------------------------------------------------*/
18394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18395 ( NULL == pEventData->pEventData))
18396 {
18397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 }
18402
18403 /*-------------------------------------------------------------------------
18404 Extract indication and send it to UMAC
18405 -------------------------------------------------------------------------*/
18406
18407 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18408 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018409 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018410
18411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18412 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018413
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018415 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18416 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018417
18418 /*Notify UMAC*/
18419 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018420
18421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018422}/*WDI_ProcessFatalErrorInd*/
18423
18424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018425 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 an indication of this kind is being received over the
18427 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018428
18429 @param pWDICtx: pointer to the WLAN DAL context
18430 pEventData: pointer to the event information structure
18431
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 @see
18433 @return Result of the function call
18434*/
18435WDI_Status
18436WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018437(
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 WDI_ControlBlockType* pWDICtx,
18439 WDI_EventInfoType* pEventData
18440)
18441{
18442 tDeleteStaContextParams halDelSTACtx;
18443 WDI_LowLevelIndType wdiInd;
18444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18445
18446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 -------------------------------------------------------------------------*/
18449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18450 ( NULL == pEventData->pEventData))
18451 {
18452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018456 }
18457
18458 /*-------------------------------------------------------------------------
18459 Extract indication and send it to UMAC
18460 -------------------------------------------------------------------------*/
18461
18462 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 wpalMemoryCopy( &halDelSTACtx,
18464 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 sizeof(halDelSTACtx));
18466
18467 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018469
18470 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18471 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18472 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18473 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18474
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018477 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018479 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18480 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018481
18482 /*Notify UMAC*/
18483 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018484
18485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018486}/*WDI_ProcessDelSTAInd*/
18487
18488/**
18489*@brief Process Coex Indication function (called when
18490 an indication of this kind is being received over the
18491 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018492
18493 @param pWDICtx: pointer to the WLAN DAL context
18494 pEventData: pointer to the event information structure
18495
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 @see
18497 @return Result of the function call
18498*/
18499WDI_Status
18500WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018501(
Jeff Johnson295189b2012-06-20 16:38:30 -070018502 WDI_ControlBlockType* pWDICtx,
18503 WDI_EventInfoType* pEventData
18504)
18505{
18506 WDI_LowLevelIndType wdiInd;
18507 tCoexIndMsg halCoexIndMsg;
18508 wpt_uint32 index;
18509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18510
18511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 -------------------------------------------------------------------------*/
18514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18515 ( NULL == pEventData->pEventData ))
18516 {
18517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 }
18522
18523 /*-------------------------------------------------------------------------
18524 Extract indication and send it to UMAC
18525 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018526 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18527 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 sizeof(halCoexIndMsg.coexIndParams) );
18529
18530 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018531 wdiInd.wdiIndicationType = WDI_COEX_IND;
18532 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018533 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18534 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018535 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018536 }
18537
18538 // DEBUG
18539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18540 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018541 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18542 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18543 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18544 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18545 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018546
18547 /*Notify UMAC*/
18548 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018549
18550 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018551}/*WDI_ProcessCoexInd*/
18552
18553/**
18554*@brief Process Tx Complete Indication function (called when
18555 an indication of this kind is being received over the
18556 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018557
18558 @param pWDICtx: pointer to the WLAN DAL context
18559 pEventData: pointer to the event information structure
18560
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 @see
18562 @return Result of the function call
18563*/
18564WDI_Status
18565WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018566(
Jeff Johnson295189b2012-06-20 16:38:30 -070018567 WDI_ControlBlockType* pWDICtx,
18568 WDI_EventInfoType* pEventData
18569)
18570{
18571 WDI_LowLevelIndType wdiInd;
18572 tTxComplIndMsg halTxComplIndMsg;
18573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18574
18575 /*-------------------------------------------------------------------------
18576 Sanity check
18577 -------------------------------------------------------------------------*/
18578 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18579 ( NULL == pEventData->pEventData ))
18580 {
18581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 WDI_ASSERT( 0 );
18584 return WDI_STATUS_E_FAILURE;
18585 }
18586
18587 /*-------------------------------------------------------------------------
18588 Extract indication and send it to UMAC
18589 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018590 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18591 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 sizeof(halTxComplIndMsg.txComplParams) );
18593
18594 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18596 wdiInd.wdiIndicationData.tx_complete_status
18597 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018598
18599 /*Notify UMAC*/
18600 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018601
18602 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018603}/*WDI_ProcessTxCompleteInd*/
18604
18605#ifdef WLAN_FEATURE_P2P
18606/**
Viral Modi9dc288a2012-12-10 13:09:21 -080018607*@brief Process Noa Start Indication function (called when
18608 an indication of this kind is being received over the
18609 bus from HAL)
18610
18611 @param pWDICtx: pointer to the WLAN DAL context
18612 pEventData: pointer to the event information structure
18613
18614 @see
18615 @return Result of the function call
18616*/
18617WDI_Status
18618WDI_ProcessP2pNoaStartInd
18619(
18620 WDI_ControlBlockType* pWDICtx,
18621 WDI_EventInfoType* pEventData
18622)
18623{
18624 WDI_LowLevelIndType wdiInd;
18625 tNoaStartIndMsg halNoaStartIndMsg;
18626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18627
18628 /*-------------------------------------------------------------------------
18629 Sanity check
18630 -------------------------------------------------------------------------*/
18631 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18632 ( NULL == pEventData->pEventData ))
18633 {
18634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18635 "%s: Invalid parameters", __func__);
18636 WDI_ASSERT( 0 );
18637 return WDI_STATUS_E_FAILURE;
18638 }
18639
18640 /*-------------------------------------------------------------------------
18641 Extract indication and send it to UMAC
18642 -------------------------------------------------------------------------*/
18643 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
18644 pEventData->pEventData,
18645 sizeof(halNoaStartIndMsg.noaStartIndParams) );
18646
18647 /*Fill in the indication parameters*/
18648 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
18649
18650 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
18651 = halNoaStartIndMsg.noaStartIndParams.status;
18652
18653 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
18654 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
18655
18656 /*Notify UMAC*/
18657 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18658
18659 return WDI_STATUS_SUCCESS;
18660}/*WDI_ProcessNoaAttrInd*/
18661
18662/**
Jeff Johnson295189b2012-06-20 16:38:30 -070018663*@brief Process Noa Attr Indication function (called when
18664 an indication of this kind is being received over the
18665 bus from HAL)
18666
18667 @param pWDICtx: pointer to the WLAN DAL context
18668 pEventData: pointer to the event information structure
18669
18670 @see
18671 @return Result of the function call
18672*/
18673WDI_Status
18674WDI_ProcessP2pNoaAttrInd
18675(
18676 WDI_ControlBlockType* pWDICtx,
18677 WDI_EventInfoType* pEventData
18678)
18679{
18680 WDI_LowLevelIndType wdiInd;
18681 tNoaAttrIndMsg halNoaAttrIndMsg;
18682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18683
18684 /*-------------------------------------------------------------------------
18685 Sanity check
18686 -------------------------------------------------------------------------*/
18687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18688 ( NULL == pEventData->pEventData ))
18689 {
18690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 WDI_ASSERT( 0 );
18693 return WDI_STATUS_E_FAILURE;
18694 }
18695
18696 /*-------------------------------------------------------------------------
18697 Extract indication and send it to UMAC
18698 -------------------------------------------------------------------------*/
18699 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18700 pEventData->pEventData,
18701 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18702
18703 /*Fill in the indication parameters*/
18704 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018705
Jeff Johnson295189b2012-06-20 16:38:30 -070018706 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18707 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018708
Jeff Johnson295189b2012-06-20 16:38:30 -070018709 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18710 = halNoaAttrIndMsg.noaAttrIndParams.index;
18711 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18712 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18713 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18714 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018715
Jeff Johnson295189b2012-06-20 16:38:30 -070018716 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18717 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18718 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18719 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18720 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18721 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18722 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18723 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018724
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18726 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18727 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18728 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18729 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18730 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18731 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18732 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18733
18734 /*Notify UMAC*/
18735 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18736
18737 return WDI_STATUS_SUCCESS;
18738}/*WDI_ProcessNoaAttrInd*/
18739#endif
18740
18741/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018742 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 an indication of this kind is being received over the
18744 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018745
18746 @param pWDICtx: pointer to the WLAN DAL context
18747 pEventData: pointer to the event information structure
18748
Jeff Johnson295189b2012-06-20 16:38:30 -070018749 @see
18750 @return Result of the function call
18751*/
18752WDI_Status
18753WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018754(
Jeff Johnson295189b2012-06-20 16:38:30 -070018755 WDI_ControlBlockType* pWDICtx,
18756 WDI_EventInfoType* pEventData
18757)
18758{
18759 WDI_LowLevelIndType wdiInd;
18760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018761
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 /*-------------------------------------------------------------------------
18763 Extract indication and send it to UMAC
18764 -------------------------------------------------------------------------*/
18765 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018766 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18767
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 /*Notify UMAC*/
18769 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18770
Jeff Johnsone7245742012-09-05 17:12:55 -070018771 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018772}/*WDI_ProcessTxPerHitInd*/
18773
18774#ifdef ANI_MANF_DIAG
18775/**
18776 @brief WDI_ProcessFTMCommandReq
18777 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018778
18779 @param pWDICtx: pointer to the WLAN DAL context
18780 pEventData: pointer to the event information structure
18781
Jeff Johnson295189b2012-06-20 16:38:30 -070018782 @see
18783 @return Result of the function call
18784*/
18785WDI_Status
18786WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018787(
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 WDI_ControlBlockType* pWDICtx,
18789 WDI_EventInfoType* pEventData
18790)
18791{
18792 WDI_FTMCommandReqType *ftmCommandReq = NULL;
18793 wpt_uint8 *ftmCommandBuffer = NULL;
18794 wpt_uint16 dataOffset;
18795 wpt_uint16 bufferSize;
18796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018798 -------------------------------------------------------------------------*/
18799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18800 ( NULL == pEventData->pEventData))
18801
18802 {
18803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 }
18808
18809 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
18810
18811 /* Get MSG Buffer */
18812 WDI_GetMessageBuffer(pWDICtx,
18813 WDI_FTM_CMD_REQ,
18814 ftmCommandReq->bodyLength,
18815 &ftmCommandBuffer,
18816 &dataOffset,
18817 &bufferSize);
18818
18819 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
18820 ftmCommandReq->FTMCommandBody,
18821 ftmCommandReq->bodyLength);
18822
18823 /* Send MSG */
18824 return WDI_SendMsg(pWDICtx,
18825 ftmCommandBuffer,
18826 bufferSize,
18827 pEventData->pCBfnc,
18828 pEventData->pUserData,
18829 WDI_FTM_CMD_RESP);
18830}
18831
18832/**
18833 @brief WDI_ProcessFTMCommandRsp
18834 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070018835
18836 @param pWDICtx: pointer to the WLAN DAL context
18837 pEventData: pointer to the event information structure
18838
Jeff Johnson295189b2012-06-20 16:38:30 -070018839 @see
18840 @return Result of the function call
18841*/
18842WDI_Status
18843WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018844(
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 WDI_ControlBlockType* pWDICtx,
18846 WDI_EventInfoType* pEventData
18847)
18848{
18849 WDI_FTMCommandRspCb ftmCMDRspCb;
18850 tProcessPttRspParams *ftmCMDRspData = NULL;
18851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18852
18853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 -------------------------------------------------------------------------*/
18856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18857 ( NULL == pEventData->pEventData))
18858 {
18859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018863 }
18864
18865 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
18866
18867 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
18868
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
18870 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
18872
18873 /*Notify UMAC*/
18874 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
18875
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018877}
18878#endif /* ANI_MANF_DIAG */
18879/**
18880 @brief WDI_ProcessHalDumpCmdReq
18881 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018882
18883 @param pWDICtx: pointer to the WLAN DAL context
18884 pEventData: pointer to the event information structure
18885
Jeff Johnson295189b2012-06-20 16:38:30 -070018886 @see
18887 @return Result of the function call
18888*/
18889WDI_Status
18890WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018891(
Jeff Johnson295189b2012-06-20 16:38:30 -070018892 WDI_ControlBlockType* pWDICtx,
18893 WDI_EventInfoType* pEventData
18894)
18895{
18896 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
18897 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
18898 wpt_uint16 usDataOffset = 0;
18899 wpt_uint16 usSendSize = 0;
18900 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018901 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070018902
18903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 -------------------------------------------------------------------------*/
18906 if (( NULL == pEventData ) ||
18907 ( NULL == pEventData->pEventData) ||
18908 ( NULL == pEventData->pCBfnc ))
18909 {
18910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 }
18915
18916 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
18917 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
18918
18919 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018920 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070018922 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018923 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070018928 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018929 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070018930
Jeff Johnson295189b2012-06-20 16:38:30 -070018931 /*-----------------------------------------------------------------------
18932 Get message buffer
18933 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
18936 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070018937 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
18939 {
18940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18941 "Unable to get send buffer in HAL Dump Command req %x %x %x",
18942 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
18943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 }
18946
Jeff Johnsone7245742012-09-05 17:12:55 -070018947 wpalMemoryCopy( pSendBuffer+usDataOffset,
18948 &halDumpCmdReqMsg.dumpCmdReqParams,
18949 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018950
18951 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070018952 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018953
18954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
18958 wdiHALDumpCmdRspCb, pEventData->pUserData,
18959 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070018960}
18961
18962/**
18963 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 Process hal Dump Command Response from HAL, simply route to HDD
18965
18966 @param pWDICtx: pointer to the WLAN DAL context
18967 pEventData: pointer to the event information structure
18968
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 @see
18970 @return Result of the function call
18971*/
18972WDI_Status
18973WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018974(
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 WDI_ControlBlockType* pWDICtx,
18976 WDI_EventInfoType* pEventData
18977)
18978{
18979 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
18980 tpHalDumpCmdRspParams halDumpCmdRspParams;
18981 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
18982
18983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018984 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018985 -------------------------------------------------------------------------*/
18986 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18987 ( NULL == pEventData->pEventData))
18988 {
18989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018990 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 }
18994
Jeff Johnsone7245742012-09-05 17:12:55 -070018995 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018996
18997 /*Initialize the WDI Response structure */
18998 wdiHALDumpCmdRsp.usBufferLen = 0;
18999 wdiHALDumpCmdRsp.pBuffer = NULL;
19000
19001 halDumpCmdRspParams = (tHalDumpCmdRspParams *)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019002
19003 wdiHALDumpCmdRsp.wdiStatus =
19004 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams->status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019005
19006 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
19007 (halDumpCmdRspParams->rspLength != 0))
19008 {
19009 /* Copy the response data */
19010 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams->rspLength;
19011 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams->rspLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070019012 wpalMemoryCopy( &halDumpCmdRspParams->rspBuffer,
19013 wdiHALDumpCmdRsp.pBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019014 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19015 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019016
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 /*Notify UMAC*/
19018 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19019
19020 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19021 {
19022 /* Free the allocated buffer */
19023 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19024 }
19025 return WDI_STATUS_SUCCESS;
19026}
19027
19028/*==========================================================================
19029 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019030
Jeff Johnson295189b2012-06-20 16:38:30 -070019031 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019033==========================================================================*/
19034/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019035 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019036 when it wishes to send up a notification like the ones
19037 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019038
Jeff Johnson295189b2012-06-20 16:38:30 -070019039 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019040
19041 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 wctsNotifyCBData: the callback data of the user
19044
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019046
19047 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019048*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019049void
Jeff Johnson295189b2012-06-20 16:38:30 -070019050WDI_NotifyMsgCTSCB
19051(
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 WCTS_NotifyEventType wctsEvent,
19054 void* wctsNotifyCBData
19055)
19056{
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19059
19060 if (NULL == pWDICtx )
19061 {
19062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 }
19067
19068 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19069 {
19070 /* callback presumably occurred after close */
19071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019072 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 }
19075
19076 if ( WCTS_EVENT_OPEN == wctsEvent )
19077 {
19078 /*Flag must be set atomically as it is checked from incoming request
19079 functions*/
19080 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019082
19083 /*Nothing to do - so try to dequeue any pending request that may have
19084 occurred while we were trying to establish this*/
19085 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019088 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 {
19090 /*Flag must be set atomically as it is checked from incoming request
19091 functions*/
19092 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019094
19095 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 wpalMutexRelease(&pWDICtx->wptMutex);
19098
19099 /*Notify that the Control Channel is closed */
19100 wpalEventSet(&pWDICtx->wctsActionEvent);
19101 }
19102
19103}/*WDI_NotifyMsgCTSCB*/
19104
19105
19106/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019107 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 when it wishes to send up a packet received over the
19109 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019110
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019112
19113 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 pMsg: the packet
19115 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019116 wctsRxMsgCBData: the callback data of the user
19117
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019119
19120 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019121*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019122void
19123WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019124(
Jeff Johnsone7245742012-09-05 17:12:55 -070019125 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019126 void* pMsg,
19127 wpt_uint32 uLen,
19128 void* wctsRxMsgCBData
19129)
19130{
Jeff Johnsone7245742012-09-05 17:12:55 -070019131 tHalMsgHeader *pHalMsgHeader;
19132 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019133 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19135
19136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 ( uLen < sizeof(tHalMsgHeader)))
19141 {
19142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 }
19147
19148 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19149 {
19150 /* callback presumably occurred after close */
19151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019152 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 }
19155
Jeff Johnsone7245742012-09-05 17:12:55 -070019156 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 context - so no serialization is necessary here
19158 ! - revisit this assumption */
19159
19160 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19161
19162 if ( uLen != pHalMsgHeader->msgLen )
19163 {
19164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19165 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019166 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19167 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 }
19169
19170 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19171
19172 /*The message itself starts after the header*/
19173 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19174 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19175 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19176 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19177
19178
19179 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19180 {
19181 /*Stop the timer as the response was received */
19182 /*!UT - check for potential race conditions between stop and response */
19183 wpalTimerStop(&pWDICtx->wptResponseTimer);
19184 }
19185 /* Check if we receive a response message which is not expected */
19186 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19187 {
19188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19189 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19190 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019191 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019192 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19193 pWDICtx->wdiExpectedResponse);
19194 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19195 return;
19196 }
19197
19198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19199 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19200
19201 /*Post response event to the state machine*/
19202 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19203
19204}/*WDI_RXMsgCTSCB*/
19205
19206
19207/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019209========================================================================*/
19210
19211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019214
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 @param pWDICtx - pointer to the control block
19216
19217 @return Result of the function call
19218*/
19219WPT_INLINE WDI_Status
19220WDI_CleanCB
19221(
19222 WDI_ControlBlockType* pWDICtx
19223)
19224{
19225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19226
19227 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019228 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019229
Jeff Johnsone7245742012-09-05 17:12:55 -070019230 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19232 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19233
19234 WDI_ResetAssocSessions( pWDICtx );
19235
19236 return WDI_STATUS_SUCCESS;
19237}/*WDI_CleanCB*/
19238
19239
19240/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019241 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019242
Jeff Johnsone7245742012-09-05 17:12:55 -070019243
19244 @param pWDICtx: pointer to the WLAN DAL context
19245 pEventData: pointer to the event information structure
19246
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 @see
19248 @return Result of the function call
19249*/
19250WPT_INLINE WDI_Status
19251WDI_ProcessRequest
19252(
19253 WDI_ControlBlockType* pWDICtx,
19254 WDI_EventInfoType* pEventData
19255)
19256{
19257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19258
Jeff Johnsone7245742012-09-05 17:12:55 -070019259 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 already checked these pointers*/
19261
19262 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19263 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019264 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19266 "Calling request processing function for req %s (%d) %x",
19267 WDI_getReqMsgString(pEventData->wdiRequest),
19268 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19269 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19270 }
19271 else
19272 {
19273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019274 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 pEventData->wdiRequest);
19276 return WDI_STATUS_E_NOT_IMPLEMENT;
19277 }
19278}/*WDI_ProcessRequest*/
19279
19280
19281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019284 prefixes it with a send message header
19285
19286 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 wdiReqType: type of the request being sent
19288 uBufferLen: message buffer len
19289 pMsgBuffer: resulting allocated buffer
19290 pusDataOffset: offset in the buffer where the caller
19291 can start copying its message data
19292 puBufferSize: the resulting buffer size (offset+buff
19293 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019294
Jeff Johnson295189b2012-06-20 16:38:30 -070019295 @see
19296 @return Result of the function call
19297*/
19298WDI_Status
19299WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019300(
19301 WDI_ControlBlockType* pWDICtx,
19302 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019303 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019304 wpt_uint8** pMsgBuffer,
19305 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019306 wpt_uint16* pusBufferSize
19307)
19308{
19309 tHalMsgHeader halMsgHeader;
19310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19311
Jeff Johnsone7245742012-09-05 17:12:55 -070019312 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019313 again*/
19314
19315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019316 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019318 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19320 if ( NULL == *pMsgBuffer )
19321 {
19322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19323 "Unable to allocate message buffer for req %s (%d)",
19324 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019325 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 }
19329
19330 /*-------------------------------------------------------------------------
19331 Fill in the message header
19332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019333 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19334 /* Fill msgVersion */
19335#ifdef WLAN_FEATURE_11AC
19336 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019337 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019338 else
19339#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019340 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019341
Jeff Johnsone7245742012-09-05 17:12:55 -070019342 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19343 *pusDataOffset = sizeof(halMsgHeader);
19344 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19345
19346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019347}/*WDI_GetMessageBuffer*/
19348
19349
19350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019351 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019353 the CB
19354
19355 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019357
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 usSendSize size of the buffer to be sent
19359 pRspCb: response callback - save in the WDI
19360 CB
19361 pUserData: user data associated with the
19362 callback
19363 wdiExpectedResponse: the code of the response that is
19364 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019365
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 @see
19367 @return Result of the function call
19368*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019369WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019370WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019371(
19372 WDI_ControlBlockType* pWDICtx,
19373 wpt_uint8* pSendBuffer,
19374 wpt_uint32 usSendSize,
19375 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 void* pUserData,
19377 WDI_ResponseEnumType wdiExpectedResponse
19378)
19379{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019380 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19382
19383 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 ------------------------------------------------------------------------*/
19386 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019387 pWDICtx->pfncRspCB = pRspCb;
19388 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019389
19390 /*-----------------------------------------------------------------------
19391 Call the CTS to send this message over - free message afterwards
19392 - notify transport failure
19393 Note: CTS is reponsible for freeing the message buffer.
19394 -----------------------------------------------------------------------*/
19395 if ( 0 != WCTS_SendMessage( pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize ))
19396 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 "Failed to send message over the bus - catastrophic failure");
19399
Jeff Johnsond13512a2012-07-17 11:42:19 -070019400 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019401 }
19402
Jeff Johnsond13512a2012-07-17 11:42:19 -070019403 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 if ( NULL != pWDICtx->wdiReqStatusCB )
19405 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019406 /*Inform originator whether request went through or not*/
19407 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19408 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019409 pWDICtx->wdiReqStatusCB = NULL;
19410 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019411 callback(wdiStatus, callbackContext);
19412
19413 /*For WDI requests which have registered a request callback,
19414 inform the WDA caller of the same via setting the return value
19415 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19416 end up repeating the functonality in the req callback for the
19417 WDI_STATUS_E_FAILURE case*/
19418 if (wdiStatus == WDI_STATUS_E_FAILURE)
19419 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 }
19421
Jeff Johnsond13512a2012-07-17 11:42:19 -070019422 if ( wdiStatus == WDI_STATUS_SUCCESS )
19423 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 /*Start timer for the expected response */
19425 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Jeff Johnsond13512a2012-07-17 11:42:19 -070019426 }
19427 else
19428 {
Jeff Johnson1920a722012-12-10 14:28:09 -080019429 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019430 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19431 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019432
Jeff Johnsond13512a2012-07-17 11:42:19 -070019433 return wdiStatus;
19434
Jeff Johnson295189b2012-06-20 16:38:30 -070019435}/*WDI_SendMsg*/
19436
19437
19438
19439/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019440 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 the bus using the control transport and saves some info
19442 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019443
19444 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019445 pSendBuffer: buffer to be sent
19446 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019447
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 @see
19449 @return Result of the function call
19450*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019451WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019452WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019453(
19454 WDI_ControlBlockType* pWDICtx,
19455 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 wpt_uint32 usSendSize
19457)
19458{
19459 wpt_uint32 uStatus ;
19460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19461
19462 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019463 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019464 Note: CTS is reponsible for freeing the message buffer.
19465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019466 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019467 (void*)pSendBuffer, usSendSize );
19468
19469 /*Inform Upper MAC about the outcome of the request*/
19470 if ( NULL != pWDICtx->wdiReqStatusCB )
19471 {
19472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19473 "Send indication status : %d", uStatus);
19474
19475 pWDICtx->wdiReqStatusCB( (uStatus != 0 ) ? WDI_STATUS_E_FAILURE:
Jeff Johnsone7245742012-09-05 17:12:55 -070019476 WDI_STATUS_SUCCESS,
19477 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 }
19479
19480 /*If sending of the message failed - it is considered catastrophic and
19481 indicates an error with the device*/
19482 if ( 0 != uStatus)
19483 {
19484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019485 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019486
19487 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19488 return WDI_STATUS_E_FAILURE;
19489 }
19490
Jeff Johnsone7245742012-09-05 17:12:55 -070019491 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019492}/*WDI_SendIndication*/
19493
19494
19495/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019496 @brief WDI_DetectedDeviceError - called internally by DAL when
19497 it has detected a failure in the device
19498
19499 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 usErrorCode: error code detected by WDI or received
19501 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019502
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019505*/
19506void
19507WDI_DetectedDeviceError
19508(
19509 WDI_ControlBlockType* pWDICtx,
19510 wpt_uint16 usErrorCode
19511)
19512{
19513 WDI_LowLevelIndType wdiInd;
19514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19515
19516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19517 "Device Error detected code: %d - transitioning to stopped state",
19518 usErrorCode);
19519
19520 wpalMutexAcquire(&pWDICtx->wptMutex);
19521
19522 WDI_STATableStop(pWDICtx);
19523
19524 WDI_ResetAssocSessions(pWDICtx);
19525
19526 /*Set the expected state transition to stopped - because the device
19527 experienced a failure*/
19528 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19529
19530 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019531 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019532
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019534
19535 /*TO DO: - there should be an attempt to reset the device here*/
19536
19537 wpalMutexRelease(&pWDICtx->wptMutex);
19538
19539 /*------------------------------------------------------------------------
19540 Notify UMAC if a handler is registered
19541 ------------------------------------------------------------------------*/
19542 if (pWDICtx->wdiLowLevelIndCB)
19543 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019544 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19545 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019546
19547 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19548 }
19549}/*WDI_DetectedDeviceError*/
19550
19551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019552 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 we started on send message has expire - this should
19554 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 reply - trigger catastrophic failure
19556 @param
19557
Jeff Johnson295189b2012-06-20 16:38:30 -070019558 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019559
19560 @see
19561 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019562*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019563void
Jeff Johnson295189b2012-06-20 16:38:30 -070019564WDI_ResponseTimerCB
19565(
19566 void *pUserData
19567)
19568{
19569 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19571
19572 if (NULL == pWDICtx )
19573 {
19574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019577 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 }
19579
19580 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19581 {
19582
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019584 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsone7245742012-09-05 17:12:55 -070019585 " - catastrophic failure",
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19587 pWDICtx->wdiExpectedResponse);
19588 /* WDI timeout means Riva is not responding or SMD communication to Riva
19589 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019590 * is to initiate SSR from APPS
19591 * There is also an option to re-enable wifi, which will eventually
19592 * trigger SSR
19593 */
19594#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019595 wpalWcnssResetIntr();
19596 /* if this timer fires, it means Riva did not receive the FIQ */
19597 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019598#else
19599 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19600 wpalWlanReload();
19601#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019602 }
19603 else
19604 {
19605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19606 "Timeout occurred but not waiting for any response %d",
19607 pWDICtx->wdiExpectedResponse);
19608 }
19609
19610 return;
19611
19612}/*WDI_ResponseTimerCB*/
19613
19614
19615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019616 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019617
Jeff Johnsone7245742012-09-05 17:12:55 -070019618
19619 @param pWDICtx: pointer to the WLAN DAL context
19620 pEventData: pointer to the event information structure
19621
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 @see
19623 @return Result of the function call
19624*/
19625WPT_INLINE WDI_Status
19626WDI_ProcessResponse
19627(
19628 WDI_ControlBlockType* pWDICtx,
19629 WDI_EventInfoType* pEventData
19630)
19631{
19632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19633
Jeff Johnsone7245742012-09-05 17:12:55 -070019634 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019635 already checked these pointers
19636 ! - revisit this assumption */
19637 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19638 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019639 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019641 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 WDI_getRespMsgString(pEventData->wdiResponse),
19643 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19644 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19645 }
19646 else
19647 {
19648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019649 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019650 pEventData->wdiResponse);
19651 return WDI_STATUS_E_NOT_IMPLEMENT;
19652 }
19653}/*WDI_ProcessResponse*/
19654
19655
19656/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019657 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019658=========================================================================*/
19659
19660/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019661 @brief Utility function used by the DAL Core to help queue a
19662 request that cannot be processed right away.
19663 @param
19664
Jeff Johnson295189b2012-06-20 16:38:30 -070019665 pWDICtx: - pointer to the WDI control block
19666 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 queued
19668
19669 @see
19670 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019671*/
19672WDI_Status
19673WDI_QueuePendingReq
19674(
19675 WDI_ControlBlockType* pWDICtx,
19676 WDI_EventInfoType* pEventData
19677)
19678{
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19683
19684 if ( NULL == pEventDataQueue )
19685 {
19686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019687 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019688 WDI_ASSERT(0);
19689 return WDI_STATUS_MEM_FAILURE;
19690 }
19691
19692 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19693 pEventDataQueue->pUserData = pEventData->pUserData;
19694 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19695 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697
19698 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19699 {
19700 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019701
Jeff Johnson295189b2012-06-20 16:38:30 -070019702 if ( NULL == pEventInfo )
19703 {
19704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019705 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 WDI_ASSERT(0);
19707 wpalMemoryFree(pEventDataQueue);
19708 return WDI_STATUS_MEM_FAILURE;
19709 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019710
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19712
19713 }
19714 pEventDataQueue->pEventData = pEventInfo;
19715
19716 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019718
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019720
19721 return WDI_STATUS_SUCCESS;
19722}/*WDI_QueuePendingReq*/
19723
19724/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019725 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019727 @param
19728
19729 pMsg - pointer to the message
19730
19731 @see
19732 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019733*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019734void
Jeff Johnson295189b2012-06-20 16:38:30 -070019735WDI_PALCtrlMsgCB
19736(
19737 wpt_msg *pMsg
19738)
19739{
19740 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019741 WDI_ControlBlockType* pWDICtx = NULL;
19742 WDI_Status wdiStatus;
19743 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019744 void* pUserData;
19745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19746
19747 if (( NULL == pMsg )||
19748 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19749 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19750 {
19751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019752 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019754 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019755 }
19756
19757 /*Transition back to the state that we had before serialization
19758 - serialization transitions us to BUSY to stop any incomming requests
19759 ! TO DO L: possible race condition here if a request comes in between the
19760 state transition and the post function*/
19761
Jeff Johnsone7245742012-09-05 17:12:55 -070019762 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019763
19764 /*-----------------------------------------------------------------------
19765 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019766 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 -----------------------------------------------------------------------*/
19768 switch ( pEventData->wdiRequest )
19769 {
19770
Jeff Johnsone7245742012-09-05 17:12:55 -070019771 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070019772 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
19773 break;
19774
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 case WDI_NV_DOWNLOAD_REQ:
19776 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
19777 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
19778 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
19779 {
19780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019781 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19783 }
19784 else
19785 {
19786 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
19787 }
19788
19789 break;
19790
19791 default:
19792 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19793 break;
19794 }/*switch ( pEventData->wdiRequest )*/
19795
19796 if ( WDI_STATUS_SUCCESS != wdiStatus )
19797 {
19798 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
19799
19800 if ( NULL != pfnReqStatusCB )
19801 {
19802 /*Fail the request*/
19803 pfnReqStatusCB( wdiStatus, pUserData);
19804 }
19805 }
19806
19807 /* Free data - that was allocated when queueing*/
19808 if( pEventData != NULL )
19809 {
19810 if( pEventData->pEventData != NULL )
19811 {
19812 wpalMemoryFree(pEventData->pEventData);
19813 }
19814 wpalMemoryFree(pEventData);
19815 }
19816
19817 if( pMsg != NULL )
19818 {
19819 wpalMemoryFree(pMsg);
19820 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019821
Jeff Johnson295189b2012-06-20 16:38:30 -070019822}/*WDI_PALCtrlMsgCB*/
19823
19824/**
19825 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 and schedule for execution a pending request
19827 @param
19828
Jeff Johnson295189b2012-06-20 16:38:30 -070019829 pWDICtx: - pointer to the WDI control block
19830 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019831 queued
19832
19833 @see
19834 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019835*/
19836WDI_Status
19837WDI_DequeuePendingReq
19838(
19839 WDI_ControlBlockType* pWDICtx
19840)
19841{
Jeff Johnsone7245742012-09-05 17:12:55 -070019842 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019843 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019844 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070019845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19846
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019848
19849 if ( NULL == pNode )
19850 {
19851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 return WDI_STATUS_SUCCESS;
19854 }
19855
19856 /*The node actually points to the 1st element inside the Event Data struct -
19857 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019858 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019859
19860 /*Serialize processing in the control thread
19861 !TO DO: - check to see if these are all the messages params that need
19862 to be filled in*/
19863 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
19864
19865 if ( NULL == palMsg )
19866 {
19867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019868 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070019869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019872 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019873 palMsg->callback = WDI_PALCtrlMsgCB;
19874 palMsg->ptr = pEventData;
19875
19876 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019877 palMsg->val = pWDICtx->uGlobalState;
19878
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 /*Transition back to BUSY as we need to handle a queued request*/
19880 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070019881
Jeff Johnson295189b2012-06-20 16:38:30 -070019882 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
19883
19884 return WDI_STATUS_PENDING;
19885}/*WDI_DequeuePendingReq*/
19886
19887
19888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019889 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070019891 away.- The assoc requests will be queued by BSSID
19892 @param
19893
Jeff Johnson295189b2012-06-20 16:38:30 -070019894 pWDICtx: - pointer to the WDI control block
19895 pEventData: pointer to the evnt info that needs to be queued
19896 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070019897
19898 @see
19899 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019900*/
19901WDI_Status
19902WDI_QueueNewAssocRequest
19903(
19904 WDI_ControlBlockType* pWDICtx,
19905 WDI_EventInfoType* pEventData,
19906 wpt_macAddr macBSSID
19907)
19908{
Jeff Johnsone7245742012-09-05 17:12:55 -070019909 wpt_uint8 i;
19910 WDI_BSSSessionType* pSession = NULL;
19911 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 void* pEventInfo;
19914 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070019916
Jeff Johnsone7245742012-09-05 17:12:55 -070019917
19918 /*------------------------------------------------------------------------
19919 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 ------------------------------------------------------------------------*/
19921 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
19922 {
19923 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
19924 {
19925 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019926 pSession = &pWDICtx->aBSSSessions[i];
19927 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 }
19929 }
19930
19931 if ( i >= WDI_MAX_BSS_SESSIONS )
19932 {
19933 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019936
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 /*------------------------------------------------------------------------
19938 Fill in the BSSID for this session and set the usage flag
19939 ------------------------------------------------------------------------*/
19940 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019941 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019942
19943 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 ------------------------------------------------------------------------*/
19946 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
19947 if ( NULL == pEventDataQueue )
19948 {
19949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019950 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 WDI_ASSERT(0);
19952 return WDI_STATUS_MEM_FAILURE;
19953 }
19954
19955 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
19956 if ( NULL == pSessionIdElement )
19957 {
19958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019959 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019960 WDI_ASSERT(0);
19961 wpalMemoryFree(pEventDataQueue);
19962 return WDI_STATUS_MEM_FAILURE;
19963 }
19964
19965 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
19966 if ( NULL == pEventInfo )
19967 {
19968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019969 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 WDI_ASSERT(0);
19971 wpalMemoryFree(pSessionIdElement);
19972 wpalMemoryFree(pEventDataQueue);
19973 return WDI_STATUS_MEM_FAILURE;
19974 }
19975
19976 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19977 pEventDataQueue->pUserData = pEventData->pUserData;
19978 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19979 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019981
19982 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19983 pEventDataQueue->pEventData = pEventInfo;
19984
19985 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019986 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019987
19988 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019990
Jeff Johnsone7245742012-09-05 17:12:55 -070019991 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019992
19993 /*We need to maintain a separate list that keeps track of the order in which
19994 the new assoc requests are being queued such that we can start processing
19995 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 pSessionIdElement->ucIndex = i;
19997 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019998
19999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20000 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020001 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020002
20003 /*Return pending as this is what the status of the request is since it has
20004 been queued*/
20005 return WDI_STATUS_PENDING;
20006}/*WDI_QueueNewAssocRequest*/
20007
20008/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020009 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 away.- The assoc requests will be queued by BSSID
20012 @param
20013
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 pWDICtx: - pointer to the WDI control block
20015 pSession: - session in which to queue
20016 pEventData: pointer to the event info that needs to be
20017 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020018
20019 @see
20020 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020021*/
20022WDI_Status
20023WDI_QueueAssocRequest
20024(
20025 WDI_ControlBlockType* pWDICtx,
20026 WDI_BSSSessionType* pSession,
20027 WDI_EventInfoType* pEventData
20028)
20029{
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020032 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020034
20035 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 Sanity check
20037 ------------------------------------------------------------------------*/
20038 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20039 {
20040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020042
Jeff Johnsone7245742012-09-05 17:12:55 -070020043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 }
20045
20046 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020047 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020048 ------------------------------------------------------------------------*/
20049 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20050 if ( NULL == pEventDataQueue )
20051 {
20052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020053 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 WDI_ASSERT(0);
20055 return WDI_STATUS_MEM_FAILURE;
20056 }
20057
20058 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20059 if ( NULL == pEventInfo )
20060 {
20061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20062 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020063 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 WDI_ASSERT(0);
20065 wpalMemoryFree(pEventDataQueue);
20066 return WDI_STATUS_MEM_FAILURE;
20067 }
20068
20069 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20070 pEventDataQueue->pUserData = pEventData->pUserData;
20071 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20072 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 pEventDataQueue->pEventData = pEventInfo;
20075
20076 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20077
20078 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020080
20081 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020082 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020083
Jeff Johnsone7245742012-09-05 17:12:55 -070020084 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020085
20086 /*The result of this operation is pending because the request has been
20087 queued and it will be processed at a later moment in time */
20088 return WDI_STATUS_PENDING;
20089}/*WDI_QueueAssocRequest*/
20090
20091/**
20092 @brief Utility function used by the DAL Core to help dequeue
20093 an association request that was pending
20094 The request will be queued up in front of the main
20095 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 @param
20097
Jeff Johnson295189b2012-06-20 16:38:30 -070020098 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020099
20100
20101 @see
20102 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020103*/
20104WDI_Status
20105WDI_DequeueAssocRequest
20106(
20107 WDI_ControlBlockType* pWDICtx
20108)
20109{
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 wpt_list_node* pNode = NULL;
20111 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 WDI_BSSSessionType* pSession;
20113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020114
20115 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 Sanity check
20117 ------------------------------------------------------------------------*/
20118 if ( NULL == pWDICtx )
20119 {
20120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020122
Jeff Johnsone7245742012-09-05 17:12:55 -070020123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020124 }
20125
20126 /*------------------------------------------------------------------------
20127 An association has been completed => a new association can occur
20128 Check to see if there are any pending associations ->
20129 If so , transfer all the pending requests into the busy queue for
20130 processing
20131 These requests have arrived prior to the requests in the busy queue
20132 (bc they needed to be processed in order to be placed in this queue)
20133 => they will be placed at the front of the busy queue
20134 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020135 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020136
20137 if ( NULL == pNode )
20138 {
20139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 return WDI_STATUS_SUCCESS;
20142 }
20143
20144 /*The node actually points to the 1st element inside the Session Id struct -
20145 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020146 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020147
20148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20149 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20150
20151 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20152 {
20153 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020154
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020156 the front of the main waiting queue for subsequent execution*/
20157 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020158 while ( NULL != pNode )
20159 {
20160 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20162 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020163 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020164 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 }
20166 else
20167 {
20168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020169 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 WPAL_ASSERT(0);
20171 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020174
Jeff Johnson295189b2012-06-20 16:38:30 -070020175 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20176 wpalMemoryFree(pSessionIdElement);
20177 return WDI_STATUS_SUCCESS;
20178}/*WDI_DequeueAssocRequest*/
20179
20180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020181 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 pending requests - all req cb will be called with
20183 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020184 @param
20185
Jeff Johnson295189b2012-06-20 16:38:30 -070020186 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020187
20188 @see
20189 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020190*/
20191WDI_Status
20192WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020193(
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 WDI_ControlBlockType* pWDICtx
20195)
20196{
Jeff Johnsone7245742012-09-05 17:12:55 -070020197 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020198 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020199 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020200 void* pUserData;
20201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20202
Jeff Johnsone7245742012-09-05 17:12:55 -070020203 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020204
20205 /*------------------------------------------------------------------------
20206 Go through all the requests and fail them - this will only be called
20207 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020208 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020209 ------------------------------------------------------------------------*/
20210 while( pNode )
20211 {
20212 /*The node actually points to the 1st element inside the Event Data struct -
20213 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020214 pEventDataQueue = (WDI_EventInfoType*)pNode;
20215
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20217 if ( NULL != pfnReqStatusCB )
20218 {
20219 /*Fail the request*/
20220 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20221 }
20222 /* Free data - that was allocated when queueing */
20223 if ( pEventDataQueue->pEventData != NULL )
20224 {
20225 wpalMemoryFree(pEventDataQueue->pEventData);
20226 }
20227 wpalMemoryFree(pEventDataQueue);
20228
20229 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20230 {
20231 break;
20232 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020233 }
20234
Jeff Johnson295189b2012-06-20 16:38:30 -070020235 return WDI_STATUS_SUCCESS;
20236}/*WDI_ClearPendingRequests*/
20237
20238/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 @brief Helper routine used to init the BSS Sessions in the WDI control block
20240
20241
20242 @param pWDICtx: pointer to the WLAN DAL context
20243
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 @see
20245*/
20246void
20247WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020248(
Jeff Johnson295189b2012-06-20 16:38:30 -070020249 WDI_ControlBlockType* pWDICtx
20250)
20251{
Jeff Johnsone7245742012-09-05 17:12:55 -070020252 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20254
20255 /*-------------------------------------------------------------------------
20256 No Sanity check
20257 -------------------------------------------------------------------------*/
20258 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20259 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020260 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20262 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20263 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20264 }
20265}/*WDI_ResetAssocSessions*/
20266
20267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020268 @brief Helper routine used to find a session based on the BSSID
20269
20270
20271 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020272 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 pSession: pointer to the session (if found)
20274
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020276 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020277*/
20278wpt_uint8
20279WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020280(
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 WDI_ControlBlockType* pWDICtx,
20282 wpt_macAddr macBSSID,
20283 WDI_BSSSessionType** ppSession
20284)
20285{
Jeff Johnsone7245742012-09-05 17:12:55 -070020286 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20288
20289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020291 -------------------------------------------------------------------------*/
20292 if ( NULL == ppSession )
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 Johnsone7245742012-09-05 17:12:55 -070020296 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020297 }
20298
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020300
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 /*------------------------------------------------------------------------
20302 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020303 ------------------------------------------------------------------------*/
20304 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20305 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020306 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20307 (eWLAN_PAL_TRUE ==
20308 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20309 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 {
20311 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020312 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020313 return i;
20314 }
20315 }
20316
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020318}/*WDI_FindAssocSession*/
20319
20320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020321 @brief Helper routine used to find a session based on the BSSID
20322
20323
20324 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 ucBSSIdx: BSS Index of the session
20326 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020327
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020330*/
20331wpt_uint8
20332WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020333(
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 WDI_ControlBlockType* pWDICtx,
20335 wpt_uint16 ucBSSIdx,
20336 WDI_BSSSessionType** ppSession
20337)
20338{
Jeff Johnsone7245742012-09-05 17:12:55 -070020339 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20341
20342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020344 -------------------------------------------------------------------------*/
20345 if ( NULL == ppSession )
20346 {
20347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020348 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020349 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020350 }
20351
Jeff Johnsone7245742012-09-05 17:12:55 -070020352 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020353
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 /*------------------------------------------------------------------------
20355 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020356 ------------------------------------------------------------------------*/
20357 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20358 {
20359 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20360 {
20361 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020362 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020363 return i;
20364 }
20365 }
20366
Jeff Johnsone7245742012-09-05 17:12:55 -070020367 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020368}/*WDI_FindAssocSessionByBSSIdx*/
20369
20370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020371 @brief Helper routine used to find a session based on the BSSID
20372
20373
20374 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020375 ucBSSIdx: BSS Index of the session
20376 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020377
Jeff Johnson295189b2012-06-20 16:38:30 -070020378 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020379 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020380*/
20381wpt_uint8
20382WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020383(
Jeff Johnson295189b2012-06-20 16:38:30 -070020384 WDI_ControlBlockType* pWDICtx,
20385 wpt_uint16 usIdx,
20386 WDI_BSSSessionType** ppSession
20387)
20388{
20389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20390
20391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020393 -------------------------------------------------------------------------*/
20394 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20395 {
20396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020397 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020398 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 }
20400
20401 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020402 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020403
20404 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020405
Jeff Johnson295189b2012-06-20 16:38:30 -070020406}/*WDI_FindAssocSessionByBSSIdx*/
20407
20408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020409 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020410 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020411
20412
20413 @param pWDICtx: pointer to the WLAN DAL context
20414 pSession: pointer to the session (if found)
20415
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020417 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020418*/
20419wpt_uint8
20420WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020421(
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 WDI_ControlBlockType* pWDICtx,
20423 WDI_BSSSessionType** ppSession
20424)
20425{
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 -------------------------------------------------------------------------*/
20431 if ( NULL == ppSession )
20432 {
20433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020434 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020435 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020436 }
20437
Jeff Johnsone7245742012-09-05 17:12:55 -070020438 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020439
Jeff Johnsone7245742012-09-05 17:12:55 -070020440 /*------------------------------------------------------------------------
20441 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 ------------------------------------------------------------------------*/
20443 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20444 {
20445 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20446 {
20447 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020449 return i;
20450 }
20451 }
20452
Jeff Johnsone7245742012-09-05 17:12:55 -070020453 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020454}/*WDI_FindEmptySession*/
20455
20456
20457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020460
20461
20462 @param pWDICtx: pointer to the WLAN DAL context
20463
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 @see
20465 @return Number of sessions in use
20466*/
20467wpt_uint8
20468WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020469(
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 WDI_ControlBlockType* pWDICtx
20471)
20472{
Jeff Johnsone7245742012-09-05 17:12:55 -070020473 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020475
20476 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 Count all sessions in use
20478 ------------------------------------------------------------------------*/
20479 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20480 {
20481 if ( pWDICtx->aBSSSessions[i].bInUse )
20482 {
20483 ucCount++;
20484 }
20485 }
20486
Jeff Johnsone7245742012-09-05 17:12:55 -070020487 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020488}/*WDI_GetActiveSessionsCount*/
20489
20490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020493
20494
20495 @param pWDICtx: pointer to the WLAN DAL context
20496 pSession: pointer to the session (if found)
20497
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020499 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020500*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020501void
Jeff Johnson295189b2012-06-20 16:38:30 -070020502WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020503(
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 WDI_ControlBlockType* pWDICtx,
20505 WDI_BSSSessionType* ppSession
20506)
20507{
20508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020510 -------------------------------------------------------------------------*/
20511 if ( NULL == ppSession )
20512 {
20513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020514 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 }
20517
Jeff Johnsone7245742012-09-05 17:12:55 -070020518 /*------------------------------------------------------------------------
20519 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020520 ------------------------------------------------------------------------*/
20521 wpal_list_destroy(&ppSession->wptPendingQueue);
20522 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20524 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20526 wpal_list_init(&ppSession->wptPendingQueue);
20527
20528}/*WDI_DeleteSession*/
20529
20530/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020531 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020533 @param
20534
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 WDI_AddStaParams: - pointer to the WDI Add STA params
20536 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020537
20538 @see
20539 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020540*/
20541void
20542WDI_AddBcastSTAtoSTATable
20543(
20544 WDI_ControlBlockType* pWDICtx,
20545 WDI_AddStaParams * staParams,
20546 wpt_uint16 usBcastStaIdx
20547)
20548{
20549 WDI_AddStaParams wdiAddSTAParam = {0};
20550 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20552
20553 /*---------------------------------------------------------------------
20554 Sanity check
20555 ---------------------------------------------------------------------*/
20556 if ( NULL == staParams )
20557 {
20558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020559 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020560
Jeff Johnsone7245742012-09-05 17:12:55 -070020561 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020562 }
20563
20564 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20565 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20566 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20567 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20568 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20569 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20570 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20571 WDI_MAC_ADDR_LEN );
20572 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20573 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20574 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20575 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20576 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20577 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20578 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020579
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20581}
20582
20583/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 @brief NV blob will be divided into fragments of size 4kb and
20585 Sent to HAL
20586
20587 @param pWDICtx: pointer to the WLAN DAL context
20588 pEventData: pointer to the event information structure
20589
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 @see
20591 @return Result of the function call
20592 */
20593
20594WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020595(
Jeff Johnson295189b2012-06-20 16:38:30 -070020596 WDI_ControlBlockType* pWDICtx,
20597 WDI_EventInfoType* pEventData
20598)
20599{
20600
20601 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20602 wpt_uint8* pSendBuffer = NULL;
20603 wpt_uint16 usDataOffset = 0;
20604 wpt_uint16 usSendSize = 0;
20605 wpt_uint16 usCurrentFragmentSize =0;
20606 wpt_uint8* pSrcBuffer = NULL;
20607 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20608 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20609
20610 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20611 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20612 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20613
Jeff Johnsone7245742012-09-05 17:12:55 -070020614 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20616
20617 /* Update the current Fragment Number */
20618 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20619
20620 /*Update the HAL REQ structure */
20621 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20622 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20623 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20624
20625 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020626 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020627 image will be sent to HAL*/
20628
Jeff Johnsone7245742012-09-05 17:12:55 -070020629 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20635 usCurrentFragmentSize = FRAGMENT_SIZE;
20636
20637 /*Update the HAL REQ structure */
20638 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20639 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20640
20641 }
20642 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 usCurrentFragmentSize = FRAGMENT_SIZE;
20645
20646 /*Update the HAL REQ structure */
20647 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20648 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20649 }
20650
20651 /*-----------------------------------------------------------------------
20652 Get message buffer
20653 -----------------------------------------------------------------------*/
20654 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20655 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20656 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020657 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20659 {
20660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20661 "Unable to get send buffer in NV Download req %x %x ",
20662 pEventData, pwdiNvDownloadReqParams);
20663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 }
20666
20667 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20670
20671 /* Appending the NV image fragment */
20672 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20673 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20674 usCurrentFragmentSize);
20675
20676 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020677 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020678
Jeff Johnsone7245742012-09-05 17:12:55 -070020679 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20680 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020681 WDI_NV_DOWNLOAD_RESP);
20682
20683}
Jeff Johnsone7245742012-09-05 17:12:55 -070020684/*============================================================================
20685 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 ============================================================================*/
20687/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020688 @brief Helper routine used to find a session based on the BSSID
20689 @param pContext: pointer to the WLAN DAL context
20690 @param pDPContext: pointer to the Datapath context
20691
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020693 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020694*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020695WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020696WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20697{
20698 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20699
20700 pCB->pDPContext = pDPContext;
20701 return;
20702}
20703
20704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 @brief Helper routine used to find a session based on the BSSID
20706
20707
20708 @param pContext: pointer to the WLAN DAL context
20709
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 @see
20711 @return pointer to Datapath context
20712*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020713WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020714WDI_DS_GetDatapathContext (void *pContext)
20715{
20716 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20717 return pCB->pDPContext;
20718}
20719/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020720 @brief Helper routine used to find a session based on the BSSID
20721
20722
20723 @param pContext: pointer to the WLAN DAL context
20724 @param pDTDriverContext: pointer to the Transport Driver context
20725
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 @see
20727 @return void
20728*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020729WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020730WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20731{
20732 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20733
20734 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020736}
20737
20738/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020739 @brief Helper routine used to find a session based on the BSSID
20740
20741
20742 @param pWDICtx: pointer to the WLAN DAL context
20743
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020746*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020747WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020748WDT_GetTransportDriverContext (void *pContext)
20749{
20750 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020752}
20753
Jeff Johnsone7245742012-09-05 17:12:55 -070020754/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 Helper inline converters
20756 ============================================================================*/
20757/*Convert WDI driver type into HAL driver type*/
20758WPT_STATIC WPT_INLINE WDI_Status
20759WDI_HAL_2_WDI_STATUS
20760(
20761 eHalStatus halStatus
20762)
20763{
Jeff Johnsone7245742012-09-05 17:12:55 -070020764 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 the chances of getting inlined*/
20766 switch( halStatus )
20767 {
20768 case eHAL_STATUS_SUCCESS:
20769 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20770 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20771 return WDI_STATUS_SUCCESS;
20772 case eHAL_STATUS_FAILURE:
20773 return WDI_STATUS_E_FAILURE;
20774 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070020775 return WDI_STATUS_MEM_FAILURE;
20776 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 default:
20779 return WDI_STATUS_DEV_INTERNAL_FAILURE;
20780 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020781
Jeff Johnsone7245742012-09-05 17:12:55 -070020782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020783}/*WDI_HAL_2_WDI_STATUS*/
20784
20785/*Convert WDI request type into HAL request type*/
20786WPT_STATIC WPT_INLINE tHalHostMsgType
20787WDI_2_HAL_REQ_TYPE
20788(
20789 WDI_RequestEnumType wdiReqType
20790)
20791{
Jeff Johnsone7245742012-09-05 17:12:55 -070020792 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 the chances of getting inlined*/
20794 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070020795 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020797 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020798 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020800 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020802 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020803 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020804 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020808 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020809 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020810 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020817 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020821 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020823 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020827 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 return WLAN_HAL_RMV_STAKEY_REQ;
20831 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020836 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 case WDI_DEL_BA_REQ:
20840 return WLAN_HAL_DEL_BA_REQ;
20841#ifdef FEATURE_WLAN_CCX
20842 case WDI_TSM_STATS_REQ:
20843 return WLAN_HAL_TSM_STATS_REQ;
20844#endif
20845 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020846 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020849 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020852 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 case WDI_ADD_BA_SESSION_REQ:
20856 return WLAN_HAL_ADD_BA_SESSION_REQ;
20857 case WDI_TRIGGER_BA_REQ:
20858 return WLAN_HAL_TRIGGER_BA_REQ;
20859 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
20864 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
20865 case WDI_SET_MAX_TX_POWER_REQ:
20866 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
20867#ifdef WLAN_FEATURE_P2P
20868 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
20869 return WLAN_HAL_SET_P2P_GONOA_REQ;
20870#endif
20871 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020876 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020878 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020882 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020883 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020886 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020888 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 case WDI_REM_BEACON_FILTER_REQ:
20892 return WLAN_HAL_REM_BCN_FILTER_REQ;
20893 case WDI_SET_RSSI_THRESHOLDS_REQ:
20894 return WLAN_HAL_SET_RSSI_THRESH_REQ;
20895 case WDI_HOST_OFFLOAD_REQ:
20896 return WLAN_HAL_HOST_OFFLOAD_REQ;
20897 case WDI_WOWL_ADD_BC_PTRN_REQ:
20898 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
20899 case WDI_WOWL_DEL_BC_PTRN_REQ:
20900 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
20901 case WDI_WOWL_ENTER_REQ:
20902 return WLAN_HAL_ENTER_WOWL_REQ;
20903 case WDI_WOWL_EXIT_REQ:
20904 return WLAN_HAL_EXIT_WOWL_REQ;
20905 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
20906 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
20907 case WDI_NV_DOWNLOAD_REQ:
20908 return WLAN_HAL_DOWNLOAD_NV_REQ;
20909 case WDI_FLUSH_AC_REQ:
20910 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
20911 case WDI_BTAMP_EVENT_REQ:
20912 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
20913#ifdef WLAN_FEATURE_VOWIFI_11R
20914 case WDI_AGGR_ADD_TS_REQ:
20915 return WLAN_HAL_AGGR_ADD_TS_REQ;
20916#endif /* WLAN_FEATURE_VOWIFI_11R */
20917#ifdef ANI_MANF_DIAG
20918 case WDI_FTM_CMD_REQ:
20919 return WLAN_HAL_PROCESS_PTT_REQ;
20920#endif /* ANI_MANF_DIAG */
20921 case WDI_ADD_STA_SELF_REQ:
20922 return WLAN_HAL_ADD_STA_SELF_REQ;
20923 case WDI_DEL_STA_SELF_REQ:
20924 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070020925#ifdef FEATURE_OEM_DATA_SUPPORT
20926 case WDI_START_OEM_DATA_REQ:
20927 return WLAN_HAL_START_OEM_DATA_REQ;
20928#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 case WDI_HOST_RESUME_REQ:
20930 return WLAN_HAL_HOST_RESUME_REQ;
20931 case WDI_HOST_SUSPEND_IND:
20932 return WLAN_HAL_HOST_SUSPEND_IND;
20933 case WDI_KEEP_ALIVE_REQ:
20934 return WLAN_HAL_KEEP_ALIVE_REQ;
20935
20936#ifdef FEATURE_WLAN_SCAN_PNO
20937 case WDI_SET_PREF_NETWORK_REQ:
20938 return WLAN_HAL_SET_PREF_NETWORK_REQ;
20939 case WDI_SET_RSSI_FILTER_REQ:
20940 return WLAN_HAL_SET_RSSI_FILTER_REQ;
20941 case WDI_UPDATE_SCAN_PARAMS_REQ:
20942 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
20943#endif // FEATURE_WLAN_SCAN_PNO
20944 case WDI_SET_TX_PER_TRACKING_REQ:
20945 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
20946#ifdef WLAN_FEATURE_PACKET_FILTERING
20947 case WDI_8023_MULTICAST_LIST_REQ:
20948 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
20949 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020950 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
20952 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
20953 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
20954 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
20955#endif // WLAN_FEATURE_PACKET_FILTERING
20956 case WDI_HAL_DUMP_CMD_REQ:
20957 return WLAN_HAL_DUMP_COMMAND_REQ;
20958#ifdef WLAN_FEATURE_GTK_OFFLOAD
20959 case WDI_GTK_OFFLOAD_REQ:
20960 return WLAN_HAL_GTK_OFFLOAD_REQ;
20961 case WDI_GTK_OFFLOAD_GETINFO_REQ:
20962 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
20963#endif /* WLAN_FEATURE_GTK_OFFLOAD */
20964
20965 case WDI_INIT_SCAN_CON_REQ:
20966 return WLAN_HAL_INIT_SCAN_CON_REQ;
20967 case WDI_SET_POWER_PARAMS_REQ:
20968 return WLAN_HAL_SET_POWER_PARAMS_REQ;
20969 case WDI_SET_TM_LEVEL_REQ:
20970 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
20971 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
20972 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070020973#ifdef WLAN_FEATURE_11AC
20974 case WDI_UPDATE_VHT_OP_MODE_REQ:
20975 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
20976#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020977 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020980
Jeff Johnson295189b2012-06-20 16:38:30 -070020981}/*WDI_2_HAL_REQ_TYPE*/
20982
20983/*Convert WDI response type into HAL response type*/
20984WPT_STATIC WPT_INLINE WDI_ResponseEnumType
20985HAL_2_WDI_RSP_TYPE
20986(
20987 tHalHostMsgType halMsg
20988)
20989{
Jeff Johnsone7245742012-09-05 17:12:55 -070020990 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 the chances of getting inlined*/
20992 switch( halMsg )
20993 {
20994 case WLAN_HAL_START_RSP:
20995 return WDI_START_RESP;
20996 case WLAN_HAL_STOP_RSP:
20997 return WDI_STOP_RESP;
20998 case WLAN_HAL_INIT_SCAN_RSP:
20999 return WDI_INIT_SCAN_RESP;
21000 case WLAN_HAL_START_SCAN_RSP:
21001 return WDI_START_SCAN_RESP;
21002 case WLAN_HAL_END_SCAN_RSP:
21003 return WDI_END_SCAN_RESP;
21004 case WLAN_HAL_FINISH_SCAN_RSP:
21005 return WDI_FINISH_SCAN_RESP;
21006 case WLAN_HAL_CONFIG_STA_RSP:
21007 return WDI_CONFIG_STA_RESP;
21008 case WLAN_HAL_DELETE_STA_RSP:
21009 return WDI_DEL_STA_RESP;
21010 case WLAN_HAL_CONFIG_BSS_RSP:
21011 return WDI_CONFIG_BSS_RESP;
21012 case WLAN_HAL_DELETE_BSS_RSP:
21013 return WDI_DEL_BSS_RESP;
21014 case WLAN_HAL_JOIN_RSP:
21015 return WDI_JOIN_RESP;
21016 case WLAN_HAL_POST_ASSOC_RSP:
21017 return WDI_POST_ASSOC_RESP;
21018 case WLAN_HAL_SET_BSSKEY_RSP:
21019 return WDI_SET_BSS_KEY_RESP;
21020 case WLAN_HAL_SET_STAKEY_RSP:
21021 return WDI_SET_STA_KEY_RESP;
21022 case WLAN_HAL_RMV_BSSKEY_RSP:
21023 return WDI_RMV_BSS_KEY_RESP;
21024 case WLAN_HAL_RMV_STAKEY_RSP:
21025 return WDI_RMV_STA_KEY_RESP;
21026 case WLAN_HAL_SET_BCASTKEY_RSP:
21027 return WDI_SET_STA_BCAST_KEY_RESP;
21028 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21029 // return WDI_RMV_STA_BCAST_KEY_RESP;
21030 case WLAN_HAL_ADD_TS_RSP:
21031 return WDI_ADD_TS_RESP;
21032 case WLAN_HAL_DEL_TS_RSP:
21033 return WDI_DEL_TS_RESP;
21034 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21035 return WDI_UPD_EDCA_PRMS_RESP;
21036 case WLAN_HAL_ADD_BA_RSP:
21037 return WDI_ADD_BA_RESP;
21038 case WLAN_HAL_DEL_BA_RSP:
21039 return WDI_DEL_BA_RESP;
21040#ifdef FEATURE_WLAN_CCX
21041 case WLAN_HAL_TSM_STATS_RSP:
21042 return WDI_TSM_STATS_RESP;
21043#endif
21044 case WLAN_HAL_CH_SWITCH_RSP:
21045 return WDI_CH_SWITCH_RESP;
21046 case WLAN_HAL_SET_LINK_ST_RSP:
21047 return WDI_SET_LINK_ST_RESP;
21048 case WLAN_HAL_GET_STATS_RSP:
21049 return WDI_GET_STATS_RESP;
21050 case WLAN_HAL_UPDATE_CFG_RSP:
21051 return WDI_UPDATE_CFG_RESP;
21052 case WLAN_HAL_ADD_BA_SESSION_RSP:
21053 return WDI_ADD_BA_SESSION_RESP;
21054 case WLAN_HAL_TRIGGER_BA_RSP:
21055 return WDI_TRIGGER_BA_RESP;
21056 case WLAN_HAL_UPDATE_BEACON_RSP:
21057 return WDI_UPD_BCON_PRMS_RESP;
21058 case WLAN_HAL_SEND_BEACON_RSP:
21059 return WDI_SND_BCON_RESP;
21060 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21061 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21062 /*Indications*/
21063 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21064 return WDI_HAL_RSSI_NOTIFICATION_IND;
21065 case WLAN_HAL_MISSED_BEACON_IND:
21066 return WDI_HAL_MISSED_BEACON_IND;
21067 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21068 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21069 case WLAN_HAL_MIC_FAILURE_IND:
21070 return WDI_HAL_MIC_FAILURE_IND;
21071 case WLAN_HAL_FATAL_ERROR_IND:
21072 return WDI_HAL_FATAL_ERROR_IND;
21073 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21074 return WDI_HAL_DEL_STA_IND;
21075 case WLAN_HAL_COEX_IND:
21076 return WDI_HAL_COEX_IND;
21077 case WLAN_HAL_OTA_TX_COMPL_IND:
21078 return WDI_HAL_TX_COMPLETE_IND;
21079#ifdef WLAN_FEATURE_P2P
21080 case WLAN_HAL_P2P_NOA_ATTR_IND:
21081 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021082 case WLAN_HAL_P2P_NOA_START_IND:
21083 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021084#endif
21085 case WLAN_HAL_TX_PER_HIT_IND:
21086 return WDI_HAL_TX_PER_HIT_IND;
21087 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21088 return WDI_SET_MAX_TX_POWER_RESP;
21089#ifdef WLAN_FEATURE_P2P
21090 case WLAN_HAL_SET_P2P_GONOA_RSP:
21091 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21092#endif
21093 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021096 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021098 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021099 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021106 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021109 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21112 return WDI_SET_BEACON_FILTER_RESP;
21113 case WLAN_HAL_REM_BCN_FILTER_RSP:
21114 return WDI_REM_BEACON_FILTER_RESP;
21115 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21116 return WDI_SET_RSSI_THRESHOLDS_RESP;
21117 case WLAN_HAL_HOST_OFFLOAD_RSP:
21118 return WDI_HOST_OFFLOAD_RESP;
21119 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21120 return WDI_WOWL_ADD_BC_PTRN_RESP;
21121 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21122 return WDI_WOWL_DEL_BC_PTRN_RESP;
21123 case WLAN_HAL_ENTER_WOWL_RSP:
21124 return WDI_WOWL_ENTER_RESP;
21125 case WLAN_HAL_EXIT_WOWL_RSP:
21126 return WDI_WOWL_EXIT_RESP;
21127 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21128 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21129 case WLAN_HAL_DOWNLOAD_NV_RSP:
21130 return WDI_NV_DOWNLOAD_RESP;
21131 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21132 return WDI_FLUSH_AC_RESP;
21133 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21134 return WDI_BTAMP_EVENT_RESP;
21135#ifdef ANI_MANF_DIAG
21136 case WLAN_HAL_PROCESS_PTT_RSP:
21137 return WDI_FTM_CMD_RESP;
21138#endif /* ANI_MANF_DIAG */
21139 case WLAN_HAL_ADD_STA_SELF_RSP:
21140 return WDI_ADD_STA_SELF_RESP;
21141case WLAN_HAL_DEL_STA_SELF_RSP:
21142 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021143#ifdef FEATURE_OEM_DATA_SUPPORT
21144 case WLAN_HAL_START_OEM_DATA_RSP:
21145 return WDI_START_OEM_DATA_RESP;
21146#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021147 case WLAN_HAL_HOST_RESUME_RSP:
21148 return WDI_HOST_RESUME_RESP;
21149 case WLAN_HAL_KEEP_ALIVE_RSP:
21150 return WDI_KEEP_ALIVE_RESP;
21151#ifdef FEATURE_WLAN_SCAN_PNO
21152 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21153 return WDI_SET_PREF_NETWORK_RESP;
21154 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21157 return WDI_UPDATE_SCAN_PARAMS_RESP;
21158 case WLAN_HAL_PREF_NETW_FOUND_IND:
21159 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21160#endif // FEATURE_WLAN_SCAN_PNO
21161 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21162 return WDI_SET_TX_PER_TRACKING_RESP;
21163#ifdef WLAN_FEATURE_PACKET_FILTERING
21164 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21165 return WDI_8023_MULTICAST_LIST_RESP;
21166 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21167 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21168 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21169 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21170 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21171 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21172#endif // WLAN_FEATURE_PACKET_FILTERING
21173
21174 case WLAN_HAL_DUMP_COMMAND_RSP:
21175 return WDI_HAL_DUMP_CMD_RESP;
21176 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21177 return WDI_SET_POWER_PARAMS_RESP;
21178#ifdef WLAN_FEATURE_VOWIFI_11R
21179 case WLAN_HAL_AGGR_ADD_TS_RSP:
21180 return WDI_AGGR_ADD_TS_RESP;
21181#endif
21182
21183#ifdef WLAN_FEATURE_GTK_OFFLOAD
21184 case WLAN_HAL_GTK_OFFLOAD_RSP:
21185 return WDI_GTK_OFFLOAD_RESP;
21186 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21187 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21188#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21189#ifdef WLAN_WAKEUP_EVENTS
21190 case WLAN_HAL_WAKE_REASON_IND:
21191 return WDI_HAL_WAKE_REASON_IND;
21192#endif // WLAN_WAKEUP_EVENTS
21193
21194 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21195 return WDI_SET_TM_LEVEL_RESP;
21196 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21197 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021198#ifdef WLAN_FEATURE_11AC
21199 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21200 return WDI_UPDATE_VHT_OP_MODE_RESP;
21201#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021202 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021203 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 }
21205
21206}/*HAL_2_WDI_RSP_TYPE*/
21207
21208
21209/*Convert WDI driver type into HAL driver type*/
21210WPT_STATIC WPT_INLINE tDriverType
21211WDI_2_HAL_DRV_TYPE
21212(
21213 WDI_DriverType wdiDriverType
21214)
21215{
Jeff Johnsone7245742012-09-05 17:12:55 -070021216 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 the chances of getting inlined*/
21218 switch( wdiDriverType )
21219 {
21220 case WDI_DRIVER_TYPE_PRODUCTION:
21221 return eDRIVER_TYPE_PRODUCTION;
21222 case WDI_DRIVER_TYPE_MFG:
21223 return eDRIVER_TYPE_MFG;
21224 case WDI_DRIVER_TYPE_DVT:
21225 return eDRIVER_TYPE_DVT;
21226 }
21227
Jeff Johnsone7245742012-09-05 17:12:55 -070021228 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021229}/*WDI_2_HAL_DRV_TYPE*/
21230
21231
21232/*Convert WDI stop reason into HAL stop reason*/
21233WPT_STATIC WPT_INLINE tHalStopType
21234WDI_2_HAL_STOP_REASON
21235(
21236 WDI_StopType wdiDriverType
21237)
21238{
Jeff Johnsone7245742012-09-05 17:12:55 -070021239 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 the chances of getting inlined*/
21241 switch( wdiDriverType )
21242 {
21243 case WDI_STOP_TYPE_SYS_RESET:
21244 return HAL_STOP_TYPE_SYS_RESET;
21245 case WDI_DRIVER_TYPE_MFG:
21246 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21247 case WDI_STOP_TYPE_RF_KILL:
21248 return HAL_STOP_TYPE_RF_KILL;
21249 }
21250
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021252}/*WDI_2_HAL_STOP_REASON*/
21253
21254
21255/*Convert WDI scan mode type into HAL scan mode type*/
21256WPT_STATIC WPT_INLINE eHalSysMode
21257WDI_2_HAL_SCAN_MODE
21258(
21259 WDI_ScanMode wdiScanMode
21260)
21261{
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 the chances of getting inlined*/
21264 switch( wdiScanMode )
21265 {
21266 case WDI_SCAN_MODE_NORMAL:
21267 return eHAL_SYS_MODE_NORMAL;
21268 case WDI_SCAN_MODE_LEARN:
21269 return eHAL_SYS_MODE_LEARN;
21270 case WDI_SCAN_MODE_SCAN:
21271 return eHAL_SYS_MODE_SCAN;
21272 case WDI_SCAN_MODE_PROMISC:
21273 return eHAL_SYS_MODE_PROMISC;
21274 case WDI_SCAN_MODE_SUSPEND_LINK:
21275 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021276 case WDI_SCAN_MODE_ROAM_SCAN:
21277 return eHAL_SYS_MODE_ROAM_SCAN;
21278 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21279 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 }
21281
Jeff Johnsone7245742012-09-05 17:12:55 -070021282 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021283}/*WDI_2_HAL_SCAN_MODE*/
21284
21285/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021286WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021287WDI_2_HAL_SEC_CH_OFFSET
21288(
21289 WDI_HTSecondaryChannelOffset wdiSecChOffset
21290)
21291{
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 the chances of getting inlined*/
21294 switch( wdiSecChOffset )
21295 {
21296 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021297 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021301 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21302#ifdef WLAN_FEATURE_11AC
21303 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21304 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21305 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21306 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21307 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21308 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21309 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21310 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21311 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21312 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21313 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21314 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21315 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21316 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21317#endif
21318 default:
21319 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 }
21321
Jeff Johnsone7245742012-09-05 17:12:55 -070021322 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021323}/*WDI_2_HAL_SEC_CH_OFFSET*/
21324
21325/*Convert WDI BSS type into HAL BSS type*/
21326WPT_STATIC WPT_INLINE tSirBssType
21327WDI_2_HAL_BSS_TYPE
21328(
21329 WDI_BssType wdiBSSType
21330)
21331{
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 the chances of getting inlined*/
21334 switch( wdiBSSType )
21335 {
21336 case WDI_INFRASTRUCTURE_MODE:
21337 return eSIR_INFRASTRUCTURE_MODE;
21338 case WDI_INFRA_AP_MODE:
21339 return eSIR_INFRA_AP_MODE;
21340 case WDI_IBSS_MODE:
21341 return eSIR_IBSS_MODE;
21342 case WDI_BTAMP_STA_MODE:
21343 return eSIR_BTAMP_STA_MODE;
21344 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 case WDI_BSS_AUTO_MODE:
21347 return eSIR_AUTO_MODE;
21348 }
21349
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021351}/*WDI_2_HAL_BSS_TYPE*/
21352
21353/*Convert WDI NW type into HAL NW type*/
21354WPT_STATIC WPT_INLINE tSirNwType
21355WDI_2_HAL_NW_TYPE
21356(
21357 WDI_NwType wdiNWType
21358)
21359{
Jeff Johnsone7245742012-09-05 17:12:55 -070021360 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 the chances of getting inlined*/
21362 switch( wdiNWType )
21363 {
21364 case WDI_11A_NW_TYPE:
21365 return eSIR_11A_NW_TYPE;
21366 case WDI_11B_NW_TYPE:
21367 return eSIR_11B_NW_TYPE;
21368 case WDI_11G_NW_TYPE:
21369 return eSIR_11G_NW_TYPE;
21370 case WDI_11N_NW_TYPE:
21371 return eSIR_11N_NW_TYPE;
21372 }
21373
Jeff Johnsone7245742012-09-05 17:12:55 -070021374 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021375}/*WDI_2_HAL_NW_TYPE*/
21376
21377/*Convert WDI chanel bonding type into HAL cb type*/
21378WPT_STATIC WPT_INLINE ePhyChanBondState
21379WDI_2_HAL_CB_STATE
21380(
21381 WDI_PhyChanBondState wdiCbState
21382)
21383{
Jeff Johnsone7245742012-09-05 17:12:55 -070021384 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 the chances of getting inlined*/
21386 switch ( wdiCbState )
21387 {
21388 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21389 return PHY_SINGLE_CHANNEL_CENTERED;
21390 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21391 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21392 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21393 return PHY_DOUBLE_CHANNEL_CENTERED;
21394 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21395 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021396#ifdef WLAN_FEATURE_11AC
21397 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21398 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21399 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21400 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21401 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21402 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21403 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21404 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21405 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21406 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21407 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21408 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21409 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21410 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21411#endif
21412 case WDI_MAX_CB_STATE:
21413 default:
21414 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021416
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 return PHY_CHANNEL_BONDING_STATE_MAX;
21418}/*WDI_2_HAL_CB_STATE*/
21419
21420/*Convert WDI chanel bonding type into HAL cb type*/
21421WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21422WDI_2_HAL_HT_OPER_MODE
21423(
21424 WDI_HTOperatingMode wdiHTOperMode
21425)
21426{
Jeff Johnsone7245742012-09-05 17:12:55 -070021427 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021428 the chances of getting inlined*/
21429 switch ( wdiHTOperMode )
21430 {
21431 case WDI_HT_OP_MODE_PURE:
21432 return eSIR_HT_OP_MODE_PURE;
21433 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21434 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21435 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21436 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21437 case WDI_HT_OP_MODE_MIXED:
21438 return eSIR_HT_OP_MODE_MIXED;
21439 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021440
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 return eSIR_HT_OP_MODE_MAX;
21442}/*WDI_2_HAL_HT_OPER_MODE*/
21443
21444/*Convert WDI mimo PS type into HAL mimo PS type*/
21445WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21446WDI_2_HAL_MIMO_PS
21447(
21448 WDI_HTMIMOPowerSaveState wdiHTOperMode
21449)
21450{
Jeff Johnsone7245742012-09-05 17:12:55 -070021451 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 the chances of getting inlined*/
21453 switch ( wdiHTOperMode )
21454 {
21455 case WDI_HT_MIMO_PS_STATIC:
21456 return eSIR_HT_MIMO_PS_STATIC;
21457 case WDI_HT_MIMO_PS_DYNAMIC:
21458 return eSIR_HT_MIMO_PS_DYNAMIC;
21459 case WDI_HT_MIMO_PS_NA:
21460 return eSIR_HT_MIMO_PS_NA;
21461 case WDI_HT_MIMO_PS_NO_LIMIT:
21462 return eSIR_HT_MIMO_PS_NO_LIMIT;
21463 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021464
Jeff Johnson295189b2012-06-20 16:38:30 -070021465 return eSIR_HT_MIMO_PS_MAX;
21466}/*WDI_2_HAL_MIMO_PS*/
21467
21468/*Convert WDI ENC type into HAL ENC type*/
21469WPT_STATIC WPT_INLINE tAniEdType
21470WDI_2_HAL_ENC_TYPE
21471(
21472 WDI_EncryptType wdiEncType
21473)
21474{
Jeff Johnsone7245742012-09-05 17:12:55 -070021475 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021476 the chances of getting inlined*/
21477 switch ( wdiEncType )
21478 {
21479 case WDI_ENCR_NONE:
21480 return eSIR_ED_NONE;
21481
21482 case WDI_ENCR_WEP40:
21483 return eSIR_ED_WEP40;
21484
21485 case WDI_ENCR_WEP104:
21486 return eSIR_ED_WEP104;
21487
21488 case WDI_ENCR_TKIP:
21489 return eSIR_ED_TKIP;
21490
21491 case WDI_ENCR_CCMP:
21492 return eSIR_ED_CCMP;
21493
21494 case WDI_ENCR_AES_128_CMAC:
21495 return eSIR_ED_AES_128_CMAC;
21496#if defined(FEATURE_WLAN_WAPI)
21497 case WDI_ENCR_WPI:
21498 return eSIR_ED_WPI;
21499#endif
21500 default:
21501 return eSIR_ED_NOT_IMPLEMENTED;
21502 }
21503
21504}/*WDI_2_HAL_ENC_TYPE*/
21505
21506/*Convert WDI WEP type into HAL WEP type*/
21507WPT_STATIC WPT_INLINE tAniWepType
21508WDI_2_HAL_WEP_TYPE
21509(
21510 WDI_WepType wdiWEPType
21511)
21512{
Jeff Johnsone7245742012-09-05 17:12:55 -070021513 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021514 the chances of getting inlined*/
21515 switch ( wdiWEPType )
21516 {
21517 case WDI_WEP_STATIC:
21518 return eSIR_WEP_STATIC;
21519
21520 case WDI_WEP_DYNAMIC:
21521 return eSIR_WEP_DYNAMIC;
21522 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021523
Jeff Johnson295189b2012-06-20 16:38:30 -070021524 return eSIR_WEP_MAX;
21525}/*WDI_2_HAL_WEP_TYPE*/
21526
21527WPT_STATIC WPT_INLINE tSirLinkState
21528WDI_2_HAL_LINK_STATE
21529(
21530 WDI_LinkStateType wdiLinkState
21531)
21532{
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 the chances of getting inlined*/
21535 switch ( wdiLinkState )
21536 {
21537 case WDI_LINK_IDLE_STATE:
21538 return eSIR_LINK_IDLE_STATE;
21539
21540 case WDI_LINK_PREASSOC_STATE:
21541 return eSIR_LINK_PREASSOC_STATE;
21542
21543 case WDI_LINK_POSTASSOC_STATE:
21544 return eSIR_LINK_POSTASSOC_STATE;
21545
21546 case WDI_LINK_AP_STATE:
21547 return eSIR_LINK_AP_STATE;
21548
21549 case WDI_LINK_IBSS_STATE:
21550 return eSIR_LINK_IBSS_STATE;
21551
21552 case WDI_LINK_BTAMP_PREASSOC_STATE:
21553 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21554
21555 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21556 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21557
21558 case WDI_LINK_BTAMP_AP_STATE:
21559 return eSIR_LINK_BTAMP_AP_STATE;
21560
21561 case WDI_LINK_BTAMP_STA_STATE:
21562 return eSIR_LINK_BTAMP_STA_STATE;
21563
21564 case WDI_LINK_LEARN_STATE:
21565 return eSIR_LINK_LEARN_STATE;
21566
21567 case WDI_LINK_SCAN_STATE:
21568 return eSIR_LINK_SCAN_STATE;
21569
21570 case WDI_LINK_FINISH_SCAN_STATE:
21571 return eSIR_LINK_FINISH_SCAN_STATE;
21572
21573 case WDI_LINK_INIT_CAL_STATE:
21574 return eSIR_LINK_INIT_CAL_STATE;
21575
21576 case WDI_LINK_FINISH_CAL_STATE:
21577 return eSIR_LINK_FINISH_CAL_STATE;
21578
21579#ifdef WLAN_FEATURE_P2P
21580 case WDI_LINK_LISTEN_STATE:
21581 return eSIR_LINK_LISTEN_STATE;
21582#endif
21583
21584 default:
21585 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021586 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021587}
21588
Jeff Johnsone7245742012-09-05 17:12:55 -070021589/*Translate a STA Context from WDI into HAL*/
21590WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021591void
21592WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021593(
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 tConfigStaParams* phalConfigSta,
21595 WDI_ConfigStaReqInfoType* pwdiConfigSta
21596)
21597{
21598 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021599#ifdef WLAN_FEATURE_11AC
21600 /* Get the Version 1 Handler */
21601 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21602 if (WDI_getFwWlanFeatCaps(DOT11AC))
21603 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021604 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021605 }
21606#endif
21607 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 the chances of getting inlined*/
21609
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 wpalMemoryCopy(phalConfigSta->bssId,
21611 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21612
21613 wpalMemoryCopy(phalConfigSta->staMac,
21614 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021615
21616 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21617 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21618 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21619 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21620 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21621 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21622 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21623 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21624 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21625 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21626 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21627 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21628 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21629 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21630 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21631 phalConfigSta->action = pwdiConfigSta->wdiAction;
21632 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21633 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21634 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21635 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21636 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21637 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21638 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021639
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21641
Jeff Johnsone7245742012-09-05 17:12:55 -070021642 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 pwdiConfigSta->wdiSupportedRates.opRateMode;
21644 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21645 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021646 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021647 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21648 }
21649 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21650 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021651 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21653 }
21654 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21655 {
21656 phalConfigSta->supportedRates.aniLegacyRates[i] =
21657 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21658 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021659 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021660 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21661 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21662 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021663 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21665 }
21666 phalConfigSta->supportedRates.rxHighestDataRate =
21667 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21668
Jeff Johnsone7245742012-09-05 17:12:55 -070021669#ifdef WLAN_FEATURE_11AC
21670 if(phalConfigSta_V1 != NULL)
21671 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021672 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21673 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21674 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21675 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 }
21677#endif
21678
Jeff Johnson295189b2012-06-20 16:38:30 -070021679#ifdef WLAN_FEATURE_P2P
21680 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21681#endif
21682
Jeff Johnsone7245742012-09-05 17:12:55 -070021683#ifdef WLAN_FEATURE_11AC
21684 if(phalConfigSta_V1 != NULL)
21685 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021686 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21687 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 }
21689#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021690}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021691
21692/*Translate a Rate set info from WDI into HAL*/
21693WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021694WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021695(
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 tSirMacRateSet* pHalRateSet,
21697 WDI_RateSet* pwdiRateSet
21698)
21699{
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21702
21703 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21704 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21705
21706 for ( i = 0; i < pHalRateSet->numRates; i++ )
21707 {
21708 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21709 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021710
Jeff Johnson295189b2012-06-20 16:38:30 -070021711}/*WDI_CopyWDIRateSetToHALRateSet*/
21712
21713
21714/*Translate an EDCA Parameter Record from WDI into HAL*/
21715WPT_STATIC WPT_INLINE void
21716WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021717(
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 tSirMacEdcaParamRecord* phalEdcaParam,
21719 WDI_EdcaParamRecord* pWDIEdcaParam
21720)
21721{
Jeff Johnsone7245742012-09-05 17:12:55 -070021722 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 the chances of getting inlined*/
21724
21725 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21726 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21727 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21728 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21729
21730 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21731 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21732 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21733}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21734
21735
21736/*Copy a management frame header from WDI fmt into HAL fmt*/
21737WPT_STATIC WPT_INLINE void
21738WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21739(
21740 tSirMacMgmtHdr* pmacMgmtHdr,
21741 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21742)
21743{
21744 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21745 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21746 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21747 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21748 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21749 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21750 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21751 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21752 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21753 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21754 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21755
21756 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21757 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21758
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021762 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021763 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021764 pwdiMacMgmtHdr->bssId, 6);
21765
21766 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
21767 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
21768 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
21769
21770}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
21771
21772
21773/*Copy config bss parameters from WDI fmt into HAL fmt*/
21774WPT_STATIC WPT_INLINE void
21775WDI_CopyWDIConfigBSSToHALConfigBSS
21776(
21777 tConfigBssParams* phalConfigBSS,
21778 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
21779)
21780{
21781
21782 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021783#ifdef WLAN_FEATURE_11AC
21784 /* Get the Version 1 Handler */
21785 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
21786 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021787 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070021788#endif
21789
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 wpalMemoryCopy( phalConfigBSS->bssId,
21791 pwdiConfigBSS->macBSSID,
21792 WDI_MAC_ADDR_LEN);
21793
21794#ifdef HAL_SELF_STA_PER_BSS
21795 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
21796 pwdiConfigBSS->macSelfAddr,
21797 WDI_MAC_ADDR_LEN);
21798#endif
21799
21800 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
21801
21802 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
21803 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
21804
Jeff Johnsone7245742012-09-05 17:12:55 -070021805 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070021806 pwdiConfigBSS->ucShortSlotTimeSupported;
21807 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
21808 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
21809 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
21810 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
21811 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 pwdiConfigBSS->ucTXOPProtectionFullSupport;
21814 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
21815 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
21816 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
21817 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
21818 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
21819 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
21820 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
21821 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
21822 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
21823 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
21824
Jeff Johnsone7245742012-09-05 17:12:55 -070021825 phalConfigBSS->htOperMode =
21826 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070021827
21828 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
21829 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
21830 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
21831 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
21832
21833#ifdef WLAN_FEATURE_VOWIFI
21834 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
21835#endif
21836
21837 /*! Used 32 as magic number because that is how the ssid is declared inside the
21838 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
21841 pwdiConfigBSS->wdiSSID.ucLength : 32;
21842 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 pwdiConfigBSS->wdiSSID.sSSID,
21844 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070021845
21846 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
21847 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070021848
Jeff Johnson295189b2012-06-20 16:38:30 -070021849 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
21850 &pwdiConfigBSS->wdiRateSet);
21851
21852 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
21853
21854 if(phalConfigBSS->edcaParamsValid)
21855 {
21856 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
21857 &pwdiConfigBSS->wdiBEEDCAParams);
21858 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
21859 &pwdiConfigBSS->wdiBKEDCAParams);
21860 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
21861 &pwdiConfigBSS->wdiVIEDCAParams);
21862 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
21863 &pwdiConfigBSS->wdiVOEDCAParams);
21864 }
21865
Jeff Johnsone7245742012-09-05 17:12:55 -070021866 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070021867
21868 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
21869
21870#ifdef WLAN_FEATURE_VOWIFI_11R
21871
Jeff Johnsone7245742012-09-05 17:12:55 -070021872 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070021874
Jeff Johnson295189b2012-06-20 16:38:30 -070021875 if( phalConfigBSS->extSetStaKeyParamValid )
21876 {
21877 /*-----------------------------------------------------------------------
21878 Copy the STA Key parameters into the HAL message
21879 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021880 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
21882
Jeff Johnsone7245742012-09-05 17:12:55 -070021883 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
21885
21886 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
21887
21888 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
21889
21890 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
21891
21892#ifdef WLAN_SOFTAP_FEATURE
21893 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
21894 keyIndex++)
21895 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021896 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021897 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
21898 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
21899 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
21900 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
21901 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
21902 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021903 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021905 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021906 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021907 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021908 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
21909 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 WDI_MAX_KEY_LENGTH);
21912 }
21913#else
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021915 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
21916 phalConfigBSS->extSetStaKeyParam.key.unicast =
21917 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
21918 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
21919 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
21920 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021922 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021923 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021924 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021925 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021926 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
21927 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 WDI_MAX_KEY_LENGTH);
21930#endif
21931 }
21932 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
21933 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021934 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070021935 sizeof(phalConfigBSS->extSetStaKeyParam) );
21936 }
21937
21938#endif /*WLAN_FEATURE_VOWIFI_11R*/
21939
Jeff Johnsone7245742012-09-05 17:12:55 -070021940#ifdef WLAN_FEATURE_11AC
21941 if(phalConfigBSS_V1 != NULL)
21942 {
21943 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
21944 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
21945 }
21946#endif
21947
Jeff Johnson295189b2012-06-20 16:38:30 -070021948}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
21949
21950
Jeff Johnsone7245742012-09-05 17:12:55 -070021951/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 pointed to by user data */
21953WPT_STATIC WPT_INLINE void
21954WDI_ExtractRequestCBFromEvent
21955(
21956 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070021957 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070021958 void** ppUserData
21959)
21960{
21961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21962 switch ( pEvent->wdiRequest )
21963 {
21964 case WDI_START_REQ:
21965 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21966 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
21967 break;
21968 case WDI_STOP_REQ:
21969 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21970 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
21971 break;
21972 case WDI_INIT_SCAN_REQ:
21973 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21974 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
21975 break;
21976 case WDI_START_SCAN_REQ:
21977 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21978 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
21979 break;
21980 case WDI_END_SCAN_REQ:
21981 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21982 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
21983 break;
21984 case WDI_FINISH_SCAN_REQ:
21985 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21986 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
21987 break;
21988 case WDI_JOIN_REQ:
21989 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21990 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
21991 break;
21992 case WDI_CONFIG_BSS_REQ:
21993 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21994 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
21995 break;
21996 case WDI_DEL_BSS_REQ:
21997 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21998 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
21999 break;
22000 case WDI_POST_ASSOC_REQ:
22001 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22002 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22003 break;
22004 case WDI_DEL_STA_REQ:
22005 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22006 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22007 break;
22008 case WDI_DEL_STA_SELF_REQ:
22009 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22010 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22011 break;
22012
22013 case WDI_SET_BSS_KEY_REQ:
22014 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22015 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22016 break;
22017 case WDI_RMV_BSS_KEY_REQ:
22018 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22019 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22020 break;
22021 case WDI_SET_STA_KEY_REQ:
22022 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22023 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22024 break;
22025 case WDI_RMV_STA_KEY_REQ:
22026 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22027 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22028 break;
22029 case WDI_ADD_TS_REQ:
22030 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22031 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22032 break;
22033 case WDI_DEL_TS_REQ:
22034 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22035 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22036 break;
22037 case WDI_UPD_EDCA_PRMS_REQ:
22038 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22039 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22040 break;
22041 case WDI_ADD_BA_SESSION_REQ:
22042 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22043 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22044 break;
22045 case WDI_DEL_BA_REQ:
22046 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22047 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22048 break;
22049#ifdef FEATURE_WLAN_CCX
22050 case WDI_TSM_STATS_REQ:
22051 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22052 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22053 break;
22054#endif
22055 case WDI_CH_SWITCH_REQ:
22056 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22057 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22058 break;
22059 case WDI_CONFIG_STA_REQ:
22060 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22061 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22062 break;
22063 case WDI_SET_LINK_ST_REQ:
22064 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22065 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22066 break;
22067 case WDI_GET_STATS_REQ:
22068 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22069 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22070 break;
22071 case WDI_UPDATE_CFG_REQ:
22072 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22073 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22074 break;
22075 case WDI_ADD_BA_REQ:
22076 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22077 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22078 break;
22079 case WDI_TRIGGER_BA_REQ:
22080 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22081 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22082 break;
22083 case WDI_UPD_BCON_PRMS_REQ:
22084 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22085 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22086 break;
22087 case WDI_SND_BCON_REQ:
22088 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22089 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22090 break;
22091 case WDI_ENTER_BMPS_REQ:
22092 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22093 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22094 break;
22095 case WDI_EXIT_BMPS_REQ:
22096 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22097 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22098 break;
22099 case WDI_ENTER_UAPSD_REQ:
22100 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22101 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22102 break;
22103 case WDI_UPDATE_UAPSD_PARAM_REQ:
22104 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22105 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22106 break;
22107 case WDI_CONFIGURE_RXP_FILTER_REQ:
22108 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22109 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22110 break;
22111 case WDI_SET_BEACON_FILTER_REQ:
22112 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22113 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22114 break;
22115 case WDI_REM_BEACON_FILTER_REQ:
22116 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22117 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 case WDI_SET_RSSI_THRESHOLDS_REQ:
22120 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22121 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22122 break;
22123 case WDI_HOST_OFFLOAD_REQ:
22124 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22125 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22126 break;
22127 case WDI_WOWL_ADD_BC_PTRN_REQ:
22128 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22129 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22130 break;
22131 case WDI_WOWL_DEL_BC_PTRN_REQ:
22132 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22133 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22134 break;
22135 case WDI_WOWL_ENTER_REQ:
22136 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22137 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22138 break;
22139 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22140 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22141 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22142 break;
22143 case WDI_FLUSH_AC_REQ:
22144 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22145 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22146 break;
22147 case WDI_BTAMP_EVENT_REQ:
22148 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22149 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22150 break;
22151 case WDI_KEEP_ALIVE_REQ:
22152 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22153 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22154 break;
22155 case WDI_SET_TX_PER_TRACKING_REQ:
22156 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22157 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22158 default:
22159 *ppfnReqCB = NULL;
22160 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 }
22163}/*WDI_ExtractRequestCBFromEvent*/
22164
22165
22166/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 frame xtl is enabled for a particular STA.
22169
22170 WDI_PostAssocReq must have been called.
22171
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 @param uSTAIdx: STA index
22173
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 @see WDI_PostAssocReq
22175 @return Result of the function call
22176*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022177wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022178WDI_IsHwFrameTxTranslationCapable
22179(
22180 wpt_uint8 uSTAIdx
22181)
22182{
Jeff Johnsone7245742012-09-05 17:12:55 -070022183 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022184 uma value*/
22185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022186 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 ------------------------------------------------------------------------*/
22188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22189 {
22190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22191 "WDI API call before module is initialized - Fail request");
22192
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 }
22195
Jeff Johnsone7245742012-09-05 17:12:55 -070022196
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 return gWDICb.bFrameTransEnabled;
22198}/*WDI_IsHwFrameTxTranslationCapable*/
22199
22200#ifdef FEATURE_WLAN_SCAN_PNO
22201/**
22202 @brief WDI_SetPreferredNetworkList
22203
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022206
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 wdiPNOScanCb: callback for passing back the response
22208 of the Set PNO operation received from the
22209 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022210
Jeff Johnson295189b2012-06-20 16:38:30 -070022211 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022212 callback
22213
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 @return Result of the function call
22215*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022216WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022217WDI_SetPreferredNetworkReq
22218(
22219 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22220 WDI_PNOScanCb wdiPNOScanCb,
22221 void* pUserData
22222)
22223{
22224 WDI_EventInfoType wdiEventData = {{0}};
22225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22226
22227 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022228 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022229 ------------------------------------------------------------------------*/
22230 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22231 {
22232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22233 "WDI API call before module is initialized - Fail request");
22234
Jeff Johnsone7245742012-09-05 17:12:55 -070022235 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 }
22237
22238 /*------------------------------------------------------------------------
22239 Fill in Event data and post to the Main FSM
22240 ------------------------------------------------------------------------*/
22241 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022242 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022243 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 wdiEventData.pUserData = pUserData;
22246
22247 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22248}
22249
22250
22251/**
22252 @brief WDI_SetRssiFilterReq
22253
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022256
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 wdiRssiFilterCb: callback for passing back the response
22258 of the Set RSSI Filter operation received from the
22259 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022260
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022262 callback
22263
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 @return Result of the function call
22265*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022266WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022267WDI_SetRssiFilterReq
22268(
22269 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22270 WDI_RssiFilterCb wdiRssiFilterCb,
22271 void* pUserData
22272)
22273{
22274 WDI_EventInfoType wdiEventData = {{0}};
22275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22276
22277 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 ------------------------------------------------------------------------*/
22280 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22281 {
22282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22283 "WDI API call before module is initialized - Fail request");
22284
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 }
22287
22288 /*------------------------------------------------------------------------
22289 Fill in Event data and post to the Main FSM
22290 ------------------------------------------------------------------------*/
22291 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022292 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022293 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 wdiEventData.pUserData = pUserData;
22296
22297 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22298}/*WDI_SetRssiFilterReq*/
22299
22300/**
22301 @brief WDI_UpdateScanParamsReq
22302
Jeff Johnsone7245742012-09-05 17:12:55 -070022303 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022305
Jeff Johnson295189b2012-06-20 16:38:30 -070022306 wdiUpdateScanParamsCb: callback for passing back the response
22307 of the Set PNO operation received from the
22308 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022309
Jeff Johnson295189b2012-06-20 16:38:30 -070022310 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 callback
22312
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 @return Result of the function call
22314*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022315WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022316WDI_UpdateScanParamsReq
22317(
22318 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22319 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22320 void* pUserData
22321)
22322{
22323 WDI_EventInfoType wdiEventData = {{0}};
22324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22325
22326 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022327 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022328 ------------------------------------------------------------------------*/
22329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22330 {
22331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22332 "WDI API call before module is initialized - Fail request");
22333
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 }
22336
22337 /*------------------------------------------------------------------------
22338 Fill in Event data and post to the Main FSM
22339 ------------------------------------------------------------------------*/
22340 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022344 wdiEventData.pUserData = pUserData;
22345
22346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22347}
22348
22349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022352
22353 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 pwdiPNOScanReqParams: pointer to the info received
22355 from upper layers
22356 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022357 and its size
22358
Jeff Johnson295189b2012-06-20 16:38:30 -070022359 @return Result of the function call
22360*/
22361
22362WDI_Status
22363WDI_PackPreferredNetworkList
22364(
22365 WDI_ControlBlockType* pWDICtx,
22366 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22367 wpt_uint8** ppSendBuffer,
22368 wpt_uint16* pSize
22369)
22370{
Jeff Johnsone7245742012-09-05 17:12:55 -070022371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 wpt_uint16 usDataOffset = 0;
22373 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022374 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 /*-----------------------------------------------------------------------
22377 Get message buffer
22378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022380 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022382 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 {
22384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22385 "Unable to get send buffer in Set PNO req %x ",
22386 pwdiPNOScanReqParams);
22387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022389 }
22390
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022391 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22392
Jeff Johnson295189b2012-06-20 16:38:30 -070022393 /*-------------------------------------------------------------------------
22394 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22395 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022396 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022397 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022398 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022399 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22400
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022401 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022403 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022404 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022405 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22406
22407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022409 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22410 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22411 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22412
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022413 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 {
22415 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022416 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22418
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022419 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022421 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022422
22423 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022424 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022426
22427 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022428 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022429 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022430
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022433 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022434 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22435 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22436 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22437 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022438
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022439 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022441 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022442
22443 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022444 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22446
22447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022449 pPrefNetwListParams->aNetworks[i].ssId.length,
22450 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 }
22452
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022453 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22456 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22457 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22458
22459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022460 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022461 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22463 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22464
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022465 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022467 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022469 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22471 }
22472
22473 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022474 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22476 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22477 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022478 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022479
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022480 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022482 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022483
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022484 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22486 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22487 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022488 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022489
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022490 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022492 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022493
22494 /*Set the output values*/
22495 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022497
22498 return WDI_STATUS_SUCCESS;
22499}/*WDI_PackPreferredNetworkList*/
22500
22501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022504
22505 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 pwdiPNOScanReqParams: pointer to the info received
22507 from upper layers
22508 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 and its size
22510
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 @return Result of the function call
22512*/
22513
22514WDI_Status
22515WDI_PackPreferredNetworkListNew
22516(
22517 WDI_ControlBlockType* pWDICtx,
22518 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22519 wpt_uint8** ppSendBuffer,
22520 wpt_uint16* pSize
22521)
22522{
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 wpt_uint16 usDataOffset = 0;
22525 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022526 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022528
22529 /*-----------------------------------------------------------------------
22530 Get message buffer
22531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022533 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022535 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022536 {
22537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22538 "Unable to get send buffer in Set PNO req %x ",
22539 pwdiPNOScanReqParams);
22540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022542 }
22543
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022544 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22545
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 /*-------------------------------------------------------------------------
22547 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22548 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022549 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022551 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22553
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022554 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022556 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022558 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22559
22560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022561 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022562 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22563 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22564 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22565
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022566 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 {
22568 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022569 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022570 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22571
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022572 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022574 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022575
22576 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022577 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022579
22580 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022581 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022582 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022583
22584 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022585 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022586 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022587
Jeff Johnsone7245742012-09-05 17:12:55 -070022588 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022589 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022590 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22592
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022593 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022595 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022596
22597 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022598 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22600
22601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022602 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022603 pPrefNetwListParams->aNetworks[i].ssId.length,
22604 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022605 }
22606
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022607 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22610 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22611 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22612
22613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022614 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022615 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022616 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22617 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22618
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022619 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022621 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022622 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022623 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022624 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22625 }
22626
22627 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022628 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22630 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22631 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022633
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022634 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022636 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022637
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022638 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022639 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22640 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22641 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022643
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022644 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022646 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022647
Jeff Johnson295189b2012-06-20 16:38:30 -070022648
22649 /*Set the output values*/
22650 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022651 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022652
22653 return WDI_STATUS_SUCCESS;
22654}/*WDI_PackPreferredNetworkListNew*/
22655
22656/**
22657 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022658
22659 @param pWDICtx: pointer to the WLAN DAL context
22660 pEventData: pointer to the event information structure
22661
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 @return Result of the function call
22663*/
22664WDI_Status
22665WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022666(
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 WDI_ControlBlockType* pWDICtx,
22668 WDI_EventInfoType* pEventData
22669)
22670{
22671 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22672 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022675 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022676
22677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022679 -------------------------------------------------------------------------*/
22680 if (( NULL == pEventData ) ||
22681 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22682 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22683 {
22684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 }
22689
22690 /*-------------------------------------------------------------------------
22691 Pack the PNO request structure based on version
22692 -------------------------------------------------------------------------*/
22693 if ( pWDICtx->wdiPNOVersion > 0 )
22694 {
22695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022696 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 pWDICtx->wdiPNOVersion);
22698
22699 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22700 &pSendBuffer, &usSendSize);
22701 }
22702 else
22703 {
22704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022705 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022706 pWDICtx->wdiPNOVersion);
22707
22708 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22709 &pSendBuffer, &usSendSize);
22710 }
22711
22712 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22713 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22714 {
22715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022716 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022719 }
22720
22721 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723
22724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022725 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022726 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022727 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22728 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022729}
22730
22731/**
22732 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022733
22734 @param pWDICtx: pointer to the WLAN DAL context
22735 pEventData: pointer to the event information structure
22736
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 @see
22738 @return Result of the function call
22739*/
22740WDI_Status
22741WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022742(
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 WDI_ControlBlockType* pWDICtx,
22744 WDI_EventInfoType* pEventData
22745)
22746{
22747 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22748 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022749 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 wpt_uint16 usDataOffset = 0;
22751 wpt_uint16 usSendSize = 0;
22752 wpt_uint8 ucRssiThreshold;
22753
22754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 -------------------------------------------------------------------------*/
22757 if (( NULL == pEventData ) ||
22758 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
22759 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
22760 {
22761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 }
22766
22767 /*-----------------------------------------------------------------------
22768 Get message buffer
22769 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022770 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022771 sizeof(ucRssiThreshold),
22772 &pSendBuffer, &usDataOffset, &usSendSize))||
22773 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
22774 {
22775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22776 "Unable to get send buffer in Set PNO req %x %x %x",
22777 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
22778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 }
22781
22782 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
22783
Jeff Johnsone7245742012-09-05 17:12:55 -070022784 wpalMemoryCopy( pSendBuffer+usDataOffset,
22785 &ucRssiThreshold,
22786 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070022787
22788 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022789 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022790
22791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022792 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022794 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22795 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022796}
22797
22798
22799/**
22800 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070022801
22802 @param pWDICtx: pointer to the WLAN DAL context
22803 pEventData: pointer to the event information structure
22804
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 @see
22806 @return Result of the function call
22807*/
22808WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053022809WDI_PackUpdateScanParamsReq
22810(
22811 WDI_ControlBlockType* pWDICtx,
22812 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22813 wpt_uint8** ppSendBuffer,
22814 wpt_uint16* pSize
22815)
22816{
22817 wpt_uint8* pSendBuffer = NULL;
22818 wpt_uint16 usDataOffset = 0;
22819 wpt_uint16 usSendSize = 0;
22820 tUpdateScanParams updateScanParams = {0};
22821
22822
22823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22824 "Begin WDI Update Scan Parameters Old Style Params");
22825 /*-----------------------------------------------------------------------
22826 Get message buffer
22827 -----------------------------------------------------------------------*/
22828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22829 sizeof(updateScanParams),
22830 &pSendBuffer, &usDataOffset, &usSendSize))||
22831 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22832 {
22833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22834 "Unable to get send buffer in Update Scan Params req %x",
22835 pwdiUpdateScanParams);
22836 WDI_ASSERT(0);
22837 return WDI_STATUS_E_FAILURE;
22838 }
22839
22840 //
22841 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22842 //
22843
22844 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22845 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22846
22847 updateScanParams.ucChannelCount =
22848 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22849 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22850 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22851 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
22852
22853 wpalMemoryCopy( updateScanParams.aChannels,
22854 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22855 updateScanParams.ucChannelCount);
22856
22857
22858 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22859 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22860 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22861 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22862 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22863
22864 wpalMemoryCopy( pSendBuffer+usDataOffset,
22865 &updateScanParams,
22866 sizeof(updateScanParams));
22867
22868 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
22869 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
22870
22871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22872 "End Update Scan Parameters Old Style");
22873
22874 /*Set the output values*/
22875 *ppSendBuffer = pSendBuffer;
22876 *pSize = usSendSize;
22877
22878 return WDI_STATUS_SUCCESS;
22879}
22880
22881/**
22882 @brief Process Update Scan Params function
22883
22884 @param pWDICtx: pointer to the WLAN DAL context
22885 pEventData: pointer to the event information structure
22886
22887 @see
22888 @return Result of the function call
22889*/
22890WDI_Status
22891WDI_PackUpdateScanParamsReqEx
22892(
22893 WDI_ControlBlockType* pWDICtx,
22894 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22895 wpt_uint8** ppSendBuffer,
22896 wpt_uint16* pSize
22897)
22898{
22899 wpt_uint8* pSendBuffer = NULL;
22900 wpt_uint16 usDataOffset = 0;
22901 wpt_uint16 usSendSize = 0;
22902 tUpdateScanParamsEx updateScanParams = {0};
22903
22904
22905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22906 "Begin WDI Update Scan Parameters New Style Params");
22907 /*-----------------------------------------------------------------------
22908 Get message buffer
22909 -----------------------------------------------------------------------*/
22910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22911 sizeof(updateScanParams),
22912 &pSendBuffer, &usDataOffset, &usSendSize))||
22913 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22914 {
22915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22916 "Unable to get send buffer in Update Scan Params Ex req %x",
22917 pwdiUpdateScanParams);
22918 WDI_ASSERT(0);
22919 return WDI_STATUS_E_FAILURE;
22920 }
22921
22922 //
22923 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22924 //
22925
22926 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22927 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22928
22929 updateScanParams.ucChannelCount =
22930 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22931 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
22932 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22933 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
22934
22935 wpalMemoryCopy( updateScanParams.aChannels,
22936 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22937 updateScanParams.ucChannelCount);
22938
22939
22940 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22941 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22942 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22943 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22944 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22945
22946 wpalMemoryCopy( pSendBuffer+usDataOffset,
22947 &updateScanParams,
22948 sizeof(updateScanParams));
22949
22950 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
22951 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
22952
22953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22954 "End Update Scan Parameters New Style");
22955
22956 /*Set the output values*/
22957 *ppSendBuffer = pSendBuffer;
22958 *pSize = usSendSize;
22959
22960 return WDI_STATUS_SUCCESS;
22961}
22962
22963/**
22964 @brief Process Update Scan Params function
22965
22966 @param pWDICtx: pointer to the WLAN DAL context
22967 pEventData: pointer to the event information structure
22968
22969 @see
22970 @return Result of the function call
22971*/
22972WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022973WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022974(
Jeff Johnson295189b2012-06-20 16:38:30 -070022975 WDI_ControlBlockType* pWDICtx,
22976 WDI_EventInfoType* pEventData
22977)
22978{
22979 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
22980 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022981 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022982 wpt_uint16 usDataOffset = 0;
22983 wpt_uint16 usSendSize = 0;
22984 tUpdateScanParams updateScanParams = {0};
22985
22986
22987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022989 -------------------------------------------------------------------------*/
22990 if (( NULL == pEventData ) ||
22991 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
22992 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
22993 {
22994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022995 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 }
22999
23000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23001 "Begin WDI Update Scan Parameters");
23002 /*-----------------------------------------------------------------------
23003 Get message buffer
23004 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 sizeof(updateScanParams),
23007 &pSendBuffer, &usDataOffset, &usSendSize))||
23008 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23009 {
23010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23011 "Unable to get send buffer in Update Scan Params req %x %x %x",
23012 pEventData, pwdiUpdateScanParams, wdiUpdateScanParamsCb);
23013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 }
23016
23017 //
23018 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23019 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023020 if ( pWDICtx->wlanVersion.revision < 1 )
23021 {
23022 WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
23023 &pSendBuffer, &usSendSize);
23024 }
23025 else
23026 {
23027 WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23028 &pSendBuffer, &usSendSize);
23029 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023030
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023035 wdiUpdateScanParamsCb, pEventData->pUserData,
23036 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023037}
23038
23039/**
23040 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023041
23042 @param pWDICtx: pointer to the WLAN DAL context
23043 pEventData: pointer to the event information structure
23044
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 @see
23046 @return Result of the function call
23047*/
23048WDI_Status
23049WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023050(
Jeff Johnson295189b2012-06-20 16:38:30 -070023051 WDI_ControlBlockType* pWDICtx,
23052 WDI_EventInfoType* pEventData
23053)
23054{
23055 WDI_LowLevelIndType wdiInd;
23056 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23057
23058
23059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 -------------------------------------------------------------------------*/
23062 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23063 ( NULL == pEventData->pEventData ))
23064 {
23065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 }
23070
23071 /*-------------------------------------------------------------------------
23072 Extract indication and send it to UMAC
23073 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23075 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 sizeof(tPrefNetwFoundParams));
23077
23078 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023079 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023080
23081 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23082
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023085 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023086
Jeff Johnsone7245742012-09-05 17:12:55 -070023087 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23088 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23090
23091 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23092 prefNetwFoundInd.prefNetwFoundParams.rssi;
23093
23094 // DEBUG
23095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23096 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23097 wdiInd.wdiIndicationType,
23098 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23099 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23100
23101 /*Notify UMAC*/
23102 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070023103
23104 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023105}
23106
23107/**
23108 @brief Process PNO Rsp function (called when a
23109 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023110
23111 @param pWDICtx: pointer to the WLAN DAL context
23112 pEventData: pointer to the event information structure
23113
Jeff Johnson295189b2012-06-20 16:38:30 -070023114 @see
23115 @return Result of the function call
23116*/
23117WDI_Status
23118WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023119(
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 WDI_ControlBlockType* pWDICtx,
23121 WDI_EventInfoType* pEventData
23122)
23123{
23124 WDI_Status wdiStatus;
23125 eHalStatus halStatus;
23126 WDI_PNOScanCb wdiPNOScanCb = NULL;
23127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23128
23129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023131 -------------------------------------------------------------------------*/
23132 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23133 ( NULL == pEventData->pEventData ))
23134 {
23135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 }
23140
23141
Jeff Johnsone7245742012-09-05 17:12:55 -070023142 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023143
23144 /*-------------------------------------------------------------------------
23145 Extract response and send it to UMAC
23146 -------------------------------------------------------------------------*/
23147 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023148 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023149
23150 /*Notify UMAC*/
23151 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23152
Jeff Johnsone7245742012-09-05 17:12:55 -070023153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023154}/*WDI_ProcessSetPreferredNetworkRsp*/
23155
23156/**
23157 @brief Process RSSI Filter Rsp function (called when a
23158 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023159
23160 @param pWDICtx: pointer to the WLAN DAL context
23161 pEventData: pointer to the event information structure
23162
Jeff Johnson295189b2012-06-20 16:38:30 -070023163 @see
23164 @return Result of the function call
23165*/
23166WDI_Status
23167WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023168(
Jeff Johnson295189b2012-06-20 16:38:30 -070023169 WDI_ControlBlockType* pWDICtx,
23170 WDI_EventInfoType* pEventData
23171)
23172{
23173 WDI_Status wdiStatus;
23174 eHalStatus halStatus;
23175 WDI_RssiFilterCb wdiRssiFilterCb;
23176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23177
23178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023180 -------------------------------------------------------------------------*/
23181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23182 ( NULL == pEventData->pEventData ))
23183 {
23184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023188 }
23189
Jeff Johnsone7245742012-09-05 17:12:55 -070023190 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023191
23192 /*-------------------------------------------------------------------------
23193 Extract response and send it to UMAC
23194 -------------------------------------------------------------------------*/
23195 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023196 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023197
23198 /*Notify UMAC*/
23199 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23200
Jeff Johnsone7245742012-09-05 17:12:55 -070023201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023202}/*WDI_ProcessSetRssiFilterRsp*/
23203
23204/**
23205 @brief Process Update Scan Params Rsp function (called when a
23206 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023207
23208 @param pWDICtx: pointer to the WLAN DAL context
23209 pEventData: pointer to the event information structure
23210
Jeff Johnson295189b2012-06-20 16:38:30 -070023211 @see
23212 @return Result of the function call
23213*/
23214WDI_Status
23215WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023216(
Jeff Johnson295189b2012-06-20 16:38:30 -070023217 WDI_ControlBlockType* pWDICtx,
23218 WDI_EventInfoType* pEventData
23219)
23220{
23221 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023222 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023223 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023224 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23226
23227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 -------------------------------------------------------------------------*/
23230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23231 ( NULL == pEventData->pEventData ))
23232 {
23233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023237 }
23238
23239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023240 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023241
Jeff Johnsone7245742012-09-05 17:12:55 -070023242 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023243
23244 /*-------------------------------------------------------------------------
23245 Extract response and send it to UMAC
23246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23248 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 sizeof(halUpdScanParams.status));
23250
23251 uStatus = halUpdScanParams.status;
23252
23253 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023255
23256 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023257 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023258
Jeff Johnsone7245742012-09-05 17:12:55 -070023259 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023260
23261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 halUpdScanParams.status);
23264
23265 /*Notify UMAC*/
23266 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23267
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023269}
23270#endif // FEATURE_WLAN_SCAN_PNO
23271
23272#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023273WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023274WDI_8023MulticastListReq
23275(
23276 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23277 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23278 void* pUserData
23279)
23280{
23281 WDI_EventInfoType wdiEventData;
23282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23283
23284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023285 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023286
23287 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023288 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 ------------------------------------------------------------------------*/
23290 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23291 {
23292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23293 "WDI API call before module is initialized - Fail request");
23294
Jeff Johnsone7245742012-09-05 17:12:55 -070023295 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 }
23297
23298 /*------------------------------------------------------------------------
23299 Fill in Event data and post to the Main FSM
23300 ------------------------------------------------------------------------*/
23301 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 wdiEventData.pUserData = pUserData;
23306
23307 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23308}
23309
Jeff Johnsone7245742012-09-05 17:12:55 -070023310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023311WDI_ReceiveFilterSetFilterReq
23312(
23313 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23314 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23315 void* pUserData
23316)
23317{
23318 WDI_EventInfoType wdiEventData;
23319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23320
23321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023322 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023323
23324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 ------------------------------------------------------------------------*/
23327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23328 {
23329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23330 "WDI API call before module is initialized - Fail request");
23331
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023333 }
23334
23335 /*------------------------------------------------------------------------
23336 Fill in Event data and post to the Main FSM
23337 ------------------------------------------------------------------------*/
23338 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23340 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23341 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023343 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 wdiEventData.pUserData = pUserData;
23345
23346
23347 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23348}
23349
Jeff Johnsone7245742012-09-05 17:12:55 -070023350WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023351WDI_FilterMatchCountReq
23352(
23353 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23354 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23355 void* pUserData
23356)
23357{
23358 WDI_EventInfoType wdiEventData;
23359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23360
23361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023362 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023363
23364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 ------------------------------------------------------------------------*/
23367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23368 {
23369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23370 "WDI API call before module is initialized - Fail request");
23371
Jeff Johnsone7245742012-09-05 17:12:55 -070023372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 }
23374
23375 /*------------------------------------------------------------------------
23376 Fill in Event data and post to the Main FSM
23377 ------------------------------------------------------------------------*/
23378 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023379 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023381 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 wdiEventData.pUserData = pUserData;
23383
23384
23385 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23386}
23387
Jeff Johnsone7245742012-09-05 17:12:55 -070023388WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023389WDI_ReceiveFilterClearFilterReq
23390(
23391 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23392 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23393 void* pUserData
23394)
23395{
23396 WDI_EventInfoType wdiEventData;
23397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23398
23399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023400 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023401
23402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023403 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023404 ------------------------------------------------------------------------*/
23405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23406 {
23407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23408 "WDI API call before module is initialized - Fail request");
23409
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 }
23412
23413 /*------------------------------------------------------------------------
23414 Fill in Event data and post to the Main FSM
23415 ------------------------------------------------------------------------*/
23416 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023420 wdiEventData.pUserData = pUserData;
23421
23422
23423 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23424}
23425
23426/**
23427 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023428
23429 @param pWDICtx: pointer to the WLAN DAL context
23430 pEventData: pointer to the event information structure
23431
Jeff Johnson295189b2012-06-20 16:38:30 -070023432 @see
23433 @return Result of the function call
23434*/
23435WDI_Status
23436WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023437(
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 WDI_ControlBlockType* pWDICtx,
23439 WDI_EventInfoType* pEventData
23440)
23441{
23442 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23443 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 wpt_uint16 usDataOffset = 0;
23446 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023447 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 wpt_uint8 ucCurrentBSSSesIdx = 0;
23450 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023451
23452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023453 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023454
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023455 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23456 if( NULL == pRcvFltMcAddrListType )
23457 {
23458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23459 "Failed to alloc in WDI_Process8023MulticastListReq");
23460 return WDI_STATUS_E_FAILURE;
23461 }
23462
Jeff Johnson295189b2012-06-20 16:38:30 -070023463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 -------------------------------------------------------------------------*/
23466 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023467 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023469 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23471 {
23472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023473 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023474 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023476 return WDI_STATUS_E_FAILURE;
23477 }
23478
23479 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23480 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23481 &pBSSSes);
23482 if ( NULL == pBSSSes )
23483 {
23484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023485 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023486 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023488 }
23489
23490 /*-----------------------------------------------------------------------
23491 Get message buffer
23492 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023493 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23494 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 sizeof(tHalRcvFltMcAddrListType),
23496 &pSendBuffer, &usDataOffset, &usSendSize))||
23497 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23498 {
23499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23500 "Unable to get send buffer in "
23501 "WDI_Process8023MulticastListReq() %x %x %x",
23502 pEventData, pwdiFltPktSetMcListReqParamsType,
23503 wdi8023MulticastListCb);
23504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023506 }
23507
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023508 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023509 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023510 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023511 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023512 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023513 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23514 sizeof(tSirMacAddr));
23515 }
23516
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023517 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023518 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023519 pRcvFltMcAddrListType,
23520 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023521
23522 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023523 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023524
23525
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023526 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023528 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023530 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023531 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023533}
23534
23535/**
23536 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023537
23538 @param pWDICtx: pointer to the WLAN DAL context
23539 pEventData: pointer to the event information structure
23540
Jeff Johnson295189b2012-06-20 16:38:30 -070023541 @see
23542 @return Result of the function call
23543*/
23544WDI_Status
23545WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023546(
Jeff Johnson295189b2012-06-20 16:38:30 -070023547 WDI_ControlBlockType* pWDICtx,
23548 WDI_EventInfoType* pEventData
23549)
23550{
23551 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23552 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023553 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 wpt_uint16 usDataOffset = 0;
23555 wpt_uint16 usSendSize = 0;
23556 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023557 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023559 wpt_uint8 ucCurrentBSSSesIdx = 0;
23560 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023561 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23562 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023563
23564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023565 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023566
23567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 -------------------------------------------------------------------------*/
23570 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023571 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023572 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023573 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023574 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23575 {
23576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 return WDI_STATUS_E_FAILURE;
23580 }
23581
23582 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23583 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23584 &pBSSSes);
23585 if ( NULL == pBSSSes )
23586 {
23587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023588 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023590 }
23591
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023592 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23593 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023594
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023595 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23596 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23597 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23598
23599 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23600 usSessRcvPktFilterCfgSize);
23601
23602 if(NULL == pSessRcvPktFilterCfg)
23603 {
23604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23605 "%s: Failed to allocate memory for "
23606 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023607 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023608 WDI_ASSERT(0);
23609 return WDI_STATUS_E_FAILURE;
23610 }
23611
23612 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23613
23614 /*-----------------------------------------------------------------------
23615 Get message buffer
23616 -----------------------------------------------------------------------*/
23617
23618 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23619 usSessRcvPktFilterCfgSize,
23620 &pSendBuffer, &usDataOffset, &usSendSize))||
23621 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23622 {
23623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23624 "Unable to get send buffer in "
23625 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23626 pEventData, pwdiSetRcvPktFilterReqInfo,
23627 wdiReceiveFilterSetFilterCb);
23628 WDI_ASSERT(0);
23629 wpalMemoryFree(pSessRcvPktFilterCfg);
23630 return WDI_STATUS_E_FAILURE;
23631 }
23632
23633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23634 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23635 usSendSize,pSessRcvPktFilterCfg);
23636
23637 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23638 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23639 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23640 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23641
23642 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23643
23644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23645 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23646 pSessRcvPktFilterCfg->filterType);
23647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23648 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23649 pSessRcvPktFilterCfg->coleasceTime);
23650
23651 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23652 {
23653 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23654 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23655 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23656 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23657 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23658 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23659 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23660 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23661
23662 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23663 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23664 8);
23665 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23666 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23667 8);
23668
23669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23670 "Out:Proto %d Comp Flag %d \n",
23671 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23672 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23673
23674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23675 "Data Offset %d Data Len %d\n",
23676 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23677 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23678
23679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23680 "CData: %d:%d:%d:%d:%d:%d\n",
23681 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23682 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23683 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23684 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23685 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23686 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23687
23688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23689 "MData: %d:%d:%d:%d:%d:%d\n",
23690 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23691 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23692 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23693 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23694 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23695 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23696 }
23697
23698 wpalMemoryCopy( pSendBuffer+usDataOffset,
23699 pSessRcvPktFilterCfg,
23700 usSessRcvPktFilterCfgSize);
23701
23702
23703 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23704 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23705
23706 wpalMemoryFree(pSessRcvPktFilterCfg);
23707
23708 }
23709 /*If SLM_SESSIONIZATION is not supported then do this */
23710 else
23711 {
23712 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23713 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23714 * sizeof(tHalRcvPktFilterParams));
23715
23716 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 usRcvPktFilterCfgSize);
23718
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023719 if(NULL == pRcvPktFilterCfg)
23720 {
23721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23722 "%s: Failed to allocate memory for "
23723 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023724 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023725 WDI_ASSERT(0);
23726 return WDI_STATUS_E_FAILURE;
23727 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023728
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023729 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023730
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023731 /*-----------------------------------------------------------------------
23732 Get message buffer
23733 -----------------------------------------------------------------------*/
23734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 usRcvPktFilterCfgSize,
23736 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023737 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23738 {
23739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 "Unable to get send buffer in "
23741 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23742 pEventData, pwdiSetRcvPktFilterReqInfo,
23743 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023744 WDI_ASSERT(0);
23745 wpalMemoryFree(pRcvPktFilterCfg);
23746 return WDI_STATUS_E_FAILURE;
23747 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023748
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023751 usSendSize,usRcvPktFilterCfgSize);
23752
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023753 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23754 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23755 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23756 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070023757
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023763 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023764
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023765 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
23766 {
23767 pRcvPktFilterCfg->paramsData[i].protocolLayer =
23768 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23769 pRcvPktFilterCfg->paramsData[i].cmpFlag =
23770 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23771 pRcvPktFilterCfg->paramsData[i].dataOffset =
23772 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23773 pRcvPktFilterCfg->paramsData[i].dataLength =
23774 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070023775
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023776 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023777 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23778 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023779 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070023780 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23781 8);
23782
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023784 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070023785 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 pRcvPktFilterCfg->paramsData[i].cmpFlag);
23787
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23789 "Data Offset %d Data Len %d\n",
23790 pRcvPktFilterCfg->paramsData[i].dataOffset,
23791 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023792
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23794 "CData: %d:%d:%d:%d:%d:%d\n",
23795 pRcvPktFilterCfg->paramsData[i].compareData[0],
23796 pRcvPktFilterCfg->paramsData[i].compareData[1],
23797 pRcvPktFilterCfg->paramsData[i].compareData[2],
23798 pRcvPktFilterCfg->paramsData[i].compareData[3],
23799 pRcvPktFilterCfg->paramsData[i].compareData[4],
23800 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070023801
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23803 "MData: %d:%d:%d:%d:%d:%d\n",
23804 pRcvPktFilterCfg->paramsData[i].dataMask[0],
23805 pRcvPktFilterCfg->paramsData[i].dataMask[1],
23806 pRcvPktFilterCfg->paramsData[i].dataMask[2],
23807 pRcvPktFilterCfg->paramsData[i].dataMask[3],
23808 pRcvPktFilterCfg->paramsData[i].dataMask[4],
23809 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
23810 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023811
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023812 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070023813 pRcvPktFilterCfg,
23814 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023815
23816
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023817 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23818 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023819
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023821 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023822 wpalMemoryFree(pRcvPktFilterCfg);
23823 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023825 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023826 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023830}
23831
23832/**
23833 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023834
23835 @param pWDICtx: pointer to the WLAN DAL context
23836 pEventData: pointer to the event information structure
23837
Jeff Johnson295189b2012-06-20 16:38:30 -070023838 @see
23839 @return Result of the function call
23840*/
23841WDI_Status
23842WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023843(
Jeff Johnson295189b2012-06-20 16:38:30 -070023844 WDI_ControlBlockType* pWDICtx,
23845 WDI_EventInfoType* pEventData
23846)
23847{
23848 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
23849 NULL;
23850 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
23851 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023852 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023853 wpt_uint16 usDataOffset = 0;
23854 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023855 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
23856 wpt_uint8 ucCurrentBSSSesIdx = 0;
23857 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023858
23859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023860 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023861
23862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023864 -------------------------------------------------------------------------*/
23865 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023866 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023869 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
23870 {
23871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 }
23876
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023877 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23878 pwdiRcvFltPktMatchCntReqParamsType->bssId,
23879 &pBSSSes);
23880 if ( NULL == pBSSSes )
23881 {
23882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023883 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023884 return WDI_STATUS_E_FAILURE;
23885 }
23886
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 /*-----------------------------------------------------------------------
23888 Get message buffer
23889 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23891 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023892 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023894 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070023895 {
23896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23897 "Unable to get send buffer in "
23898 "WDI_ProcessFilterMatchCountReq() %x %x %x",
23899 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
23900 wdiFilterMatchCountCb);
23901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023903 }
23904
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023905 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
23906 wpalMemoryCopy( pSendBuffer+usDataOffset,
23907 &rcvFltPktMatchCntReqParam,
23908 sizeof(rcvFltPktMatchCntReqParam));
23909
Jeff Johnson295189b2012-06-20 16:38:30 -070023910 //
23911 // Don't need to fill send buffer other than header
23912 //
23913 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915
23916
23917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023918 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023919 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23921 wdiFilterMatchCountCb,
23922 pEventData->pUserData,
23923 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023924}
23925
23926/**
23927 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023928
23929 @param pWDICtx: pointer to the WLAN DAL context
23930 pEventData: pointer to the event information structure
23931
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 @see
23933 @return Result of the function call
23934*/
23935WDI_Status
23936WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023937(
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 WDI_ControlBlockType* pWDICtx,
23939 WDI_EventInfoType* pEventData
23940)
Jeff Johnsone7245742012-09-05 17:12:55 -070023941{
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
23943 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 wpt_uint16 usDataOffset = 0;
23946 wpt_uint16 usSendSize = 0;
23947 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023948 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023950
23951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023952 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023953
23954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 -------------------------------------------------------------------------*/
23957 if (( NULL == pEventData ) ||
23958 ( NULL == (pwdiRcvFltPktClearReqParamsType =
23959 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023960 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023961 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
23962 {
23963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 return WDI_STATUS_E_FAILURE;
23967 }
23968
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023969 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070023970 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
23971 &pBSSSes);
23972 if ( NULL == pBSSSes )
23973 {
23974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023975 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 }
23978
23979 /*-----------------------------------------------------------------------
23980 Get message buffer
23981 -----------------------------------------------------------------------*/
23982 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070023983 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 sizeof(tHalRcvFltPktClearParam),
23985 &pSendBuffer, &usDataOffset, &usSendSize))||
23986 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
23987 {
23988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23989 "Unable to get send buffer in "
23990 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
23991 pEventData, pwdiRcvFltPktClearReqParamsType,
23992 wdiRcvFltPktClearFilterCb);
23993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 }
23996
23997
23998 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024002
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24004 wpalMemoryCopy( pSendBuffer+usDataOffset,
24005 &rcvFltPktClearParam,
24006 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024007
24008 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024009 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024010
24011
24012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024013 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024014 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024018}
24019
24020/**
24021 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024022
24023 @param pWDICtx: pointer to the WLAN DAL context
24024 pEventData: pointer to the event information structure
24025
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 @see
24027 @return Result of the function call
24028*/
24029WDI_Status
24030WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024031(
Jeff Johnson295189b2012-06-20 16:38:30 -070024032 WDI_ControlBlockType* pWDICtx,
24033 WDI_EventInfoType* pEventData
24034)
24035{
Jeff Johnson295189b2012-06-20 16:38:30 -070024036 eHalStatus halStatus;
24037 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024038 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24039 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24041
24042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024043 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024044
24045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 -------------------------------------------------------------------------*/
24048 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24049 ( NULL == pEventData->pEventData ))
24050 {
24051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024055 }
24056
Jeff Johnsone7245742012-09-05 17:12:55 -070024057 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024058
24059 /*-------------------------------------------------------------------------
24060 Extract response and send it to UMAC
24061 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024062 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24063 {
24064 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24065 pEventData->pEventData,
24066 sizeof(halRcvFltPktSetMcListRsp));
24067
24068 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24069 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24070 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24071 halRcvFltPktSetMcListRsp.bssIdx;
24072 }
24073 else
24074 {
24075 halStatus = *((eHalStatus*)pEventData->pEventData);
24076 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24077 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024078
24079 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024080 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024081
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024083}
24084
24085/**
24086 @brief Process Set Rsp function (called when a
24087 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024088
24089 @param pWDICtx: pointer to the WLAN DAL context
24090 pEventData: pointer to the event information structure
24091
Jeff Johnson295189b2012-06-20 16:38:30 -070024092 @see
24093 @return Result of the function call
24094*/
24095WDI_Status
24096WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024097(
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 WDI_ControlBlockType* pWDICtx,
24099 WDI_EventInfoType* pEventData
24100)
24101{
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 eHalStatus halStatus;
24103 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024104 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24105 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24107
24108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024109 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024110
24111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024113 -------------------------------------------------------------------------*/
24114 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24115 ( NULL == pEventData->pEventData ))
24116 {
24117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 }
24122
24123 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024124 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024125
24126 /*-------------------------------------------------------------------------
24127 Extract response and send it to UMAC
24128 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024129 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24130 {
24131 wpalMemoryCopy( &halSetPktFilterRspParams,
24132 pEventData->pEventData,
24133 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024134
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024135 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24136 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24137 }
24138 else
24139 {
24140 halStatus = *((eHalStatus*)pEventData->pEventData);
24141 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024144 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024145
Jeff Johnsone7245742012-09-05 17:12:55 -070024146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024147}
24148
24149/**
24150 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024151
24152 @param pWDICtx: pointer to the WLAN DAL context
24153 pEventData: pointer to the event information structure
24154
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 @see
24156 @return Result of the function call
24157*/
24158WDI_Status
24159WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024160(
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 WDI_ControlBlockType* pWDICtx,
24162 WDI_EventInfoType* pEventData
24163)
24164{
Jeff Johnson295189b2012-06-20 16:38:30 -070024165 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024166 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024167 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24168 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024169
24170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24171
24172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024173 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024174
24175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024176 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 -------------------------------------------------------------------------*/
24178 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24179 ( NULL == pEventData->pEventData ))
24180 {
24181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024185 }
24186
Jeff Johnsone7245742012-09-05 17:12:55 -070024187 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024188
24189 /*-------------------------------------------------------------------------
24190 Extract response and send it to UMAC
24191 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024192 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24193 {
24194 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24195 pEventData->pEventData,
24196 sizeof(halRcvFltrPktMatachRsp));
24197
24198 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24199 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24200 }
24201 else
24202 {
24203 halStatus = *((eHalStatus*)pEventData->pEventData);
24204 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24205 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024206
24207 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024208 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024209
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024211}
24212
24213/**
24214 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024215
24216 @param pWDICtx: pointer to the WLAN DAL context
24217 pEventData: pointer to the event information structure
24218
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 @see
24220 @return Result of the function call
24221*/
24222WDI_Status
24223WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024224(
Jeff Johnson295189b2012-06-20 16:38:30 -070024225 WDI_ControlBlockType* pWDICtx,
24226 WDI_EventInfoType* pEventData
24227)
24228{
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 eHalStatus halStatus;
24230 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024231 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24232 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24234
24235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024236 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024237
24238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 -------------------------------------------------------------------------*/
24241 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24242 ( NULL == pEventData->pEventData ))
24243 {
24244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 }
24249
24250 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024251 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024252
24253 /*-------------------------------------------------------------------------
24254 Extract response and send it to UMAC
24255 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024256 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24257 {
24258 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24259 pEventData->pEventData,
24260 sizeof(halRcvFltPktClearRspMsg));
24261
24262 wdiRcvFltPktClearRspParamsType.wdiStatus =
24263 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24264 wdiRcvFltPktClearRspParamsType.bssIdx =
24265 halRcvFltPktClearRspMsg.bssIdx;
24266 }
24267 else
24268 {
24269 halStatus = *((eHalStatus*)pEventData->pEventData);
24270 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24271 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024272
24273 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024274 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024275
Jeff Johnsone7245742012-09-05 17:12:55 -070024276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024277}
24278#endif // WLAN_FEATURE_PACKET_FILTERING
24279
24280/**
24281 @brief Process Shutdown Rsp function
24282 There is no shutdown response comming from HAL
24283 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024284
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024287
24288 @see
24289 @return Result of the function call
24290*/
24291WDI_Status
24292WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024293(
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 WDI_ControlBlockType* pWDICtx,
24295 WDI_EventInfoType* pEventData
24296)
24297{
24298 /*There is no shutdown response comming from HAL - function just kept for
24299 simmetry */
24300 WDI_ASSERT(0);
24301 return WDI_STATUS_SUCCESS;
24302}/*WDI_ProcessShutdownRsp*/
24303
24304/**
24305 @brief WDI_SetPowerParamsReq
24306
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024309
Jeff Johnson295189b2012-06-20 16:38:30 -070024310 wdiPowerParamsCb: callback for passing back the response
24311 of the Set Power Params operation received from the
24312 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024313
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 callback
24316
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 @return Result of the function call
24318*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024319WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024320WDI_SetPowerParamsReq
24321(
24322 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24323 WDI_SetPowerParamsCb wdiPowerParamsCb,
24324 void* pUserData
24325)
24326{
24327 WDI_EventInfoType wdiEventData;
24328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24329
24330 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 ------------------------------------------------------------------------*/
24333 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24334 {
24335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24336 "WDI API call before module is initialized - Fail request");
24337
Jeff Johnsone7245742012-09-05 17:12:55 -070024338 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 }
24340
24341 /*------------------------------------------------------------------------
24342 Fill in Event data and post to the Main FSM
24343 ------------------------------------------------------------------------*/
24344 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 wdiEventData.pUserData = pUserData;
24349
24350 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24351}/*WDI_SetPowerParamsReq*/
24352
24353/**
24354 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024355
24356 @param pWDICtx: pointer to the WLAN DAL context
24357 pEventData: pointer to the event information structure
24358
Jeff Johnson295189b2012-06-20 16:38:30 -070024359 @see
24360 @return Result of the function call
24361*/
24362WDI_Status
24363WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024364(
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 WDI_ControlBlockType* pWDICtx,
24366 WDI_EventInfoType* pEventData
24367)
24368{
24369 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24370 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 wpt_uint16 usDataOffset = 0;
24373 wpt_uint16 usSendSize = 0;
24374 tSetPowerParamsType powerParams;
24375
24376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 -------------------------------------------------------------------------*/
24379 if (( NULL == pEventData ) ||
24380 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24381 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24382 {
24383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024387 }
24388
24389 /*-----------------------------------------------------------------------
24390 Get message buffer
24391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 sizeof(powerParams),
24394 &pSendBuffer, &usDataOffset, &usSendSize))||
24395 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24396 {
24397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24398 "Unable to get send buffer in Set PNO req %x %x %x",
24399 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024402 }
24403
24404 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024405 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024406 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24407
24408 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24411
24412 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024413 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24415
24416 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024417 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024418 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24419
24420 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024421 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024422 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24423
24424 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024425 powerParams.uBETInterval =
24426 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024427
Jeff Johnsone7245742012-09-05 17:12:55 -070024428
24429 wpalMemoryCopy( pSendBuffer+usDataOffset,
24430 &powerParams,
24431 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024432
24433 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024434 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024435
24436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024437 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024439 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24440 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024441}
24442
24443/**
24444 @brief Process Power Params Rsp function (called when a
24445 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024446
24447 @param pWDICtx: pointer to the WLAN DAL context
24448 pEventData: pointer to the event information structure
24449
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 @see
24451 @return Result of the function call
24452*/
24453WDI_Status
24454WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024455(
Jeff Johnson295189b2012-06-20 16:38:30 -070024456 WDI_ControlBlockType* pWDICtx,
24457 WDI_EventInfoType* pEventData
24458)
24459{
24460 WDI_Status wdiStatus;
24461 eHalStatus halStatus;
24462 WDI_SetPowerParamsCb wdiPowerParamsCb;
24463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24464
24465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 -------------------------------------------------------------------------*/
24468 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24469 ( NULL == pEventData->pEventData ))
24470 {
24471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 }
24476
Jeff Johnsone7245742012-09-05 17:12:55 -070024477 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024478
24479 /*-------------------------------------------------------------------------
24480 Extract response and send it to UMAC
24481 -------------------------------------------------------------------------*/
24482 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024483 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024484
24485 /*Notify UMAC*/
24486 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24487
Jeff Johnsone7245742012-09-05 17:12:55 -070024488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024489}/*WDI_ProcessSetPowerParamsRsp*/
24490
24491#ifdef WLAN_FEATURE_GTK_OFFLOAD
24492/**
24493 @brief WDI_GTKOffloadReq will be called when the upper MAC
24494 wants to set GTK Rekey Counter while in power save. Upon
24495 the call of this API the WLAN DAL will pack and send a
24496 HAL GTK offload request message to the lower RIVA
24497 sub-system if DAL is in state STARTED.
24498
24499 In state BUSY this request will be queued. Request won't
24500 be allowed in any other state.
24501
24502 WDI_PostAssocReq must have been called.
24503
24504 @param pwdiGtkOffloadParams: the GTK offload as specified
24505 by the Device Interface
24506
24507 wdiGtkOffloadCb: callback for passing back the response
24508 of the GTK offload operation received from the device
24509
24510 pUserData: user data will be passed back with the
24511 callback
24512
24513 @see WDI_PostAssocReq
24514 @return Result of the function call
24515*/
24516WDI_Status
24517WDI_GTKOffloadReq
24518(
24519 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24520 WDI_GtkOffloadCb wdiGtkOffloadCb,
24521 void* pUserData
24522)
24523{
24524 WDI_EventInfoType wdiEventData = {0};
24525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24526
24527 /*------------------------------------------------------------------------
24528 Sanity Check
24529 ------------------------------------------------------------------------*/
24530 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24531 {
24532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24533 "WDI API call before module is initialized - Fail request");
24534
24535 return WDI_STATUS_E_NOT_ALLOWED;
24536 }
24537
24538 /*------------------------------------------------------------------------
24539 Fill in Event data and post to the Main FSM
24540 ------------------------------------------------------------------------*/
24541 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24542 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024543 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024544 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24545 wdiEventData.pUserData = pUserData;
24546
24547 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24548}
24549
24550
24551/**
24552 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24553 MAC wants to get GTK Rekey Counter while in power save.
24554 Upon the call of this API the WLAN DAL will pack and
24555 send a HAL GTK offload request message to the lower RIVA
24556 sub-system if DAL is in state STARTED.
24557
24558 In state BUSY this request will be queued. Request won't
24559 be allowed in any other state.
24560
24561 WDI_PostAssocReq must have been called.
24562
24563 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24564 Information Message as specified by the
24565 Device Interface
24566
24567 wdiGtkOffloadGetInfoCb: callback for passing back the
24568 response of the GTK offload operation received from the
24569 device
24570
24571 pUserData: user data will be passed back with the
24572 callback
24573
24574 @see WDI_PostAssocReq
24575 @return Result of the function call
24576*/
24577WDI_Status
24578WDI_GTKOffloadGetInfoReq
24579(
24580 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24581 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24582 void* pUserData
24583)
24584{
24585 WDI_EventInfoType wdiEventData = {0};
24586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24587
24588 /*------------------------------------------------------------------------
24589 Sanity Check
24590 ------------------------------------------------------------------------*/
24591 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24592 {
24593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24594 "WDI API call before module is initialized - Fail request");
24595
24596 return WDI_STATUS_E_NOT_ALLOWED;
24597 }
24598
24599 /*------------------------------------------------------------------------
24600 Fill in Event data and post to the Main FSM
24601 ------------------------------------------------------------------------*/
24602 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24603 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24604 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24605 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24606 wdiEventData.pUserData = pUserData;
24607
24608 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24609}
24610
24611
24612/**
24613 @brief Process set GTK Offload Request function
24614
24615 @param pWDICtx: pointer to the WLAN DAL context
24616 pEventData: pointer to the event information structure
24617
24618 @see
24619 @return Result of the function call
24620*/
24621WDI_Status
24622WDI_ProcessGTKOffloadReq
24623(
24624 WDI_ControlBlockType* pWDICtx,
24625 WDI_EventInfoType* pEventData
24626)
24627{
24628 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24629 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24630 wpt_uint8* pSendBuffer = NULL;
24631 wpt_uint16 usDataOffset = 0;
24632 wpt_uint16 usSendSize = 0;
24633 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024634 wpt_uint8 ucCurrentSessionId = 0;
24635 WDI_BSSSessionType* pBSSSes = NULL;
24636
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24638
24639 /*-------------------------------------------------------------------------
24640 Sanity check
24641 -------------------------------------------------------------------------*/
24642 if (( NULL == pEventData ) ||
24643 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24644 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24645 {
24646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024648 WDI_ASSERT(0);
24649 return WDI_STATUS_E_FAILURE;
24650 }
24651
24652 /*-----------------------------------------------------------------------
24653 Get message buffer
24654 -----------------------------------------------------------------------*/
24655 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24656 sizeof(gtkOffloadReqParams),
24657 &pSendBuffer, &usDataOffset, &usSendSize))||
24658 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24659 {
24660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24661 "Unable to get send buffer in GTK offload req %x %x %x",
24662 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24663 WDI_ASSERT(0);
24664 return WDI_STATUS_E_FAILURE;
24665 }
24666
24667 //
24668 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24669 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024670 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24671 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24672 &pBSSSes);
24673 if ( NULL == pBSSSes )
24674 {
24675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024676 " %s : Association for this BSSID does not exist", __func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024677 return WDI_STATUS_E_FAILURE;
24678 }
24679
24680 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24681
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24683 // Copy KCK
24684 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24685 // Copy KEK
24686 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24687 // Copy KeyReplayCounter
24688 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24689
24690 wpalMemoryCopy( pSendBuffer+usDataOffset,
24691 &gtkOffloadReqParams,
24692 sizeof(gtkOffloadReqParams));
24693
24694 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24695 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24696
24697 /*-------------------------------------------------------------------------
24698 Send Get STA Request to HAL
24699 -------------------------------------------------------------------------*/
24700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24701 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
24702}
24703
24704
24705/**
24706 @brief Process GTK Offload Get Information Request function
24707
24708 @param pWDICtx: pointer to the WLAN DAL context
24709 pEventData: pointer to the event information structure
24710
24711 @see
24712 @return Result of the function call
24713*/
24714WDI_Status
24715WDI_ProcessGTKOffloadGetInfoReq
24716(
24717 WDI_ControlBlockType* pWDICtx,
24718 WDI_EventInfoType* pEventData
24719)
24720{
24721 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24722 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24723 wpt_uint8* pSendBuffer = NULL;
24724 wpt_uint16 usDataOffset = 0;
24725 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024726 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24727 wpt_uint8 ucCurrentSessionId = 0;
24728 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024729
24730 /*-------------------------------------------------------------------------
24731 Sanity check
24732 -------------------------------------------------------------------------*/
24733 if (( NULL == pEventData ) ||
24734 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24735 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24736 {
24737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024738 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 WDI_ASSERT(0);
24740 return WDI_STATUS_E_FAILURE;
24741 }
24742
24743 /*-----------------------------------------------------------------------
24744 Get message buffer
24745 -----------------------------------------------------------------------*/
24746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024747 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024749 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 {
24751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24752 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24753 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24754 WDI_ASSERT(0);
24755 return WDI_STATUS_E_FAILURE;
24756 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024757 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24758 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24759 &pBSSSes);
24760 if ( NULL == pBSSSes )
24761 {
24762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024763 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024764 return WDI_STATUS_E_FAILURE;
24765 }
24766 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024767
24768 //
24769 // Don't need to fill send buffer other than header
24770 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024771 wpalMemoryCopy( pSendBuffer+usDataOffset,
24772 &halGtkOffloadGetInfoReqParams,
24773 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024774
24775 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
24776 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
24777
24778 /*-------------------------------------------------------------------------
24779 Send Get STA Request to HAL
24780 -------------------------------------------------------------------------*/
24781 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24782 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
24783}
24784
24785/**
24786 @brief Process host offload Rsp function (called when a
24787 response is being received over the bus from HAL)
24788
24789 @param pWDICtx: pointer to the WLAN DAL context
24790 pEventData: pointer to the event information structure
24791
24792 @see
24793 @return Result of the function call
24794*/
24795WDI_Status
24796WDI_ProcessGtkOffloadRsp
24797(
24798 WDI_ControlBlockType* pWDICtx,
24799 WDI_EventInfoType* pEventData
24800)
24801{
Jeff Johnson295189b2012-06-20 16:38:30 -070024802 eHalStatus halStatus;
24803 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024804 tHalGtkOffloadRspParams halGtkOffloadRspParams;
24805 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24807
24808 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
24809
24810 /*-------------------------------------------------------------------------
24811 Sanity check
24812 -------------------------------------------------------------------------*/
24813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24814 ( NULL == pEventData->pEventData))
24815 {
24816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024818 WDI_ASSERT(0);
24819 return WDI_STATUS_E_FAILURE;
24820 }
24821
24822 /*-------------------------------------------------------------------------
24823 Extract response and send it to UMAC
24824 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024825 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24826 {
24827 wpalMemoryCopy( &halGtkOffloadRspParams,
24828 pEventData->pEventData,
24829 sizeof(halGtkOffloadRspParams));
24830
24831 wdiGtkOffloadRsparams.ulStatus =
24832 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
24833 wdiGtkOffloadRsparams.bssIdx =
24834 halGtkOffloadRspParams.bssIdx;
24835 }
24836 else
24837 {
24838 halStatus = *((eHalStatus*)pEventData->pEventData);
24839 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24840 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024841
24842 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024843 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024844
24845 return WDI_STATUS_SUCCESS;
24846}
24847
24848/**
24849 @brief Process GTK Offload Get Information Response function
24850
24851 @param pWDICtx: pointer to the WLAN DAL context
24852 pEventData: pointer to the event information structure
24853
24854 @see
24855 @return Result of the function call
24856*/
24857WDI_Status
24858WDI_ProcessGTKOffloadGetInfoRsp
24859(
24860 WDI_ControlBlockType* pWDICtx,
24861 WDI_EventInfoType* pEventData
24862)
24863{
Jeff Johnson295189b2012-06-20 16:38:30 -070024864 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024865 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024866 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
24867 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024868
24869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24870
24871 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
24872
24873 /*-------------------------------------------------------------------------
24874 Sanity check
24875 -------------------------------------------------------------------------*/
24876 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24877 ( NULL == pEventData->pEventData ))
24878 {
24879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024881 WDI_ASSERT(0);
24882 return WDI_STATUS_E_FAILURE;
24883 }
24884
24885 /*-------------------------------------------------------------------------
24886 Extract response and send it to UMAC
24887 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024888 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24889 {
24890 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
24891 pEventData->pEventData,
24892 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024893
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024894 wdiGtkOffloadGetInfoRsparams.ulStatus =
24895 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
24896 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
24897 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
24898 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
24899 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
24900 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
24901 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
24902 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
24903 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
24904 wdiGtkOffloadGetInfoRsparams.bssIdx =
24905 halGtkOffloadGetInfoRspParams.bssIdx;
24906 }
24907 else
24908 {
24909 halStatus = *((eHalStatus*)pEventData->pEventData);
24910 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24911 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024912 /*Notify UMAC*/
24913 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24914 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024915 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024916
24917 return WDI_STATUS_SUCCESS;
24918}
24919#endif // WLAN_FEATURE_GTK_OFFLOAD
24920
24921#ifdef WLAN_WAKEUP_EVENTS
24922WDI_Status
24923WDI_ProcessWakeReasonInd
24924(
24925 WDI_ControlBlockType* pWDICtx,
24926 WDI_EventInfoType* pEventData
24927)
24928{
24929 WDI_LowLevelIndType *pWdiInd;
24930 tpWakeReasonParams pWakeReasonParams;
24931 wpt_uint32 allocSize = 0;
24932
24933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024934 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024935
24936 /*-------------------------------------------------------------------------
24937 Sanity check
24938 -------------------------------------------------------------------------*/
24939 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24940 ( NULL == pEventData->pEventData ))
24941 {
24942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 WDI_ASSERT( 0 );
24945 return WDI_STATUS_E_FAILURE;
24946 }
24947
24948 /*-------------------------------------------------------------------------
24949 Extract indication and send it to UMAC
24950 -------------------------------------------------------------------------*/
24951 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
24952
24953 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
24954
24955 //Allocate memory for WDI_WakeReasonIndType structure
24956 pWdiInd = wpalMemoryAllocate(allocSize) ;
24957
24958 if(NULL == pWdiInd)
24959 {
24960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24961 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024962 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024963 WDI_ASSERT(0);
24964 return WDI_STATUS_E_FAILURE;
24965 }
24966
24967 wpalMemoryZero(pWdiInd, allocSize);
24968
24969 /* Fill in the indication parameters*/
24970 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
24971 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
24972 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
24973 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
24974 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
24975 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
24976 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
24977 &(pWakeReasonParams->aDataStart[0]),
24978 pWakeReasonParams->ulStoredDataLen);
24979
24980 /*Notify UMAC*/
24981 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
24982
24983 //Free memory allocated for WDI_WakeReasonIndType structure
24984 wpalMemoryFree(pWdiInd);
24985
24986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024987 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024988
24989 return WDI_STATUS_SUCCESS;
24990}
24991#endif // WLAN_WAKEUP_EVENTS
24992
24993void WDI_GetWcnssCompiledApiVersion
24994(
24995 WDI_WlanVersionType *pWcnssApiVersion
24996)
24997{
24998 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
24999 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25000 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25001 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25002}
25003
25004/**
25005 @brief Process Set TM Level Rsp function (called when a
25006 response is being received over the bus from HAL)
25007
25008 @param pWDICtx: pointer to the WLAN DAL context
25009 pEventData: pointer to the event information structure
25010
25011 @see
25012 @return Result of the function call
25013*/
25014WDI_Status
25015WDI_ProcessSetTmLevelRsp
25016(
25017 WDI_ControlBlockType* pWDICtx,
25018 WDI_EventInfoType* pEventData
25019)
25020{
25021 WDI_Status wdiStatus;
25022 eHalStatus halStatus;
25023 WDI_SetTmLevelCb wdiSetTmLevelCb;
25024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25025
25026 /*-------------------------------------------------------------------------
25027 Sanity check
25028 -------------------------------------------------------------------------*/
25029 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25030 ( NULL == pEventData->pEventData ))
25031 {
25032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025034 WDI_ASSERT(0);
25035 return WDI_STATUS_E_FAILURE;
25036 }
25037
25038 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25039
25040 /*-------------------------------------------------------------------------
25041 Extract response and send it to UMAC
25042 -------------------------------------------------------------------------*/
25043 halStatus = *((eHalStatus*)pEventData->pEventData);
25044 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25045
25046 /*Notify UMAC*/
25047 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25048
25049 return WDI_STATUS_SUCCESS;
25050}/*WDI_ProcessSetTmLevelRsp*/
25051
25052/**
25053 @brief Process Set Thermal Mitigation level Changed request
25054
25055 @param pWDICtx: pointer to the WLAN DAL context
25056 pEventData: pointer to the event information structure
25057
25058 @see
25059 @return Result of the function call
25060*/
25061WDI_Status
25062WDI_ProcessSetTmLevelReq
25063(
25064 WDI_ControlBlockType* pWDICtx,
25065 WDI_EventInfoType* pEventData
25066)
25067{
25068 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25069 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25070 wpt_uint8* pSendBuffer = NULL;
25071 wpt_uint16 usDataOffset = 0;
25072 wpt_uint16 usSendSize = 0;
25073 tSetThermalMitgationType halTmMsg;
25074
25075 /*-------------------------------------------------------------------------
25076 Sanity check
25077 -------------------------------------------------------------------------*/
25078 if (( NULL == pEventData ) ||
25079 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25080 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25081 {
25082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 WDI_ASSERT(0);
25085 return WDI_STATUS_E_FAILURE;
25086 }
25087
25088 /*-----------------------------------------------------------------------
25089 Get message buffer
25090 -----------------------------------------------------------------------*/
25091 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25092 sizeof(halTmMsg),
25093 &pSendBuffer, &usDataOffset, &usSendSize))||
25094 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25095 {
25096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25097 "Unable to get send buffer in Set PNO req %x %x %x",
25098 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25099 WDI_ASSERT(0);
25100 return WDI_STATUS_E_FAILURE;
25101 }
25102
25103 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25104 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25105
25106 wpalMemoryCopy( pSendBuffer+usDataOffset,
25107 &halTmMsg,
25108 sizeof(halTmMsg));
25109
25110 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25111 pWDICtx->pfncRspCB = NULL;
25112 /*-------------------------------------------------------------------------
25113 Send Get STA Request to HAL
25114 -------------------------------------------------------------------------*/
25115 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25116 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25117}
25118
25119/* Fill the value from the global features enabled array to the global capabilities
25120 * bitmap struct
25121 */
25122static void
25123FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25124{
25125 wpt_int8 i;
25126 for (i=0; i<len; i++)
25127 {
25128 setFeatCaps(fCaps, enabledFeat[i]);
25129 }
25130}
25131
25132/**
25133 @brief WDI_featureCapsExchangeReq
25134 Post feature capability bitmap exchange event.
25135 Host will send its own capability to FW in this req and
25136 expect FW to send its capability back as a bitmap in Response
25137
25138 @param
25139
25140 wdiFeatureCapsExchangeCb: callback called on getting the response.
25141 It is kept to mantain similarity between WDI reqs and if needed, can
25142 be used in future. Currently, It is set to NULL
25143
25144 pUserData: user data will be passed back with the
25145 callback
25146
25147 @see
25148 @return Result of the function call
25149*/
25150WDI_Status
25151WDI_featureCapsExchangeReq
25152(
25153 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25154 void* pUserData
25155)
25156{
25157 WDI_EventInfoType wdiEventData;
25158 wpt_int32 fCapsStructSize;
25159
25160 /*------------------------------------------------------------------------
25161 Sanity Check
25162 ------------------------------------------------------------------------*/
25163 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25164 {
25165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25166 "WDI API call before module is initialized - Fail request");
25167
25168 return WDI_STATUS_E_NOT_ALLOWED;
25169 }
25170
25171 /* Allocate memory separately for global variable carrying FW caps */
25172 fCapsStructSize = sizeof(tWlanFeatCaps);
25173 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25174 if ( NULL == gpHostWlanFeatCaps )
25175 {
25176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25177 "Cannot allocate memory for host capability info\n");
25178 WDI_ASSERT(0);
25179 return WDI_STATUS_MEM_FAILURE;
25180 }
25181
25182 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25183
25184 /*------------------------------------------------------------------------
25185 Fill in Event data and post to the Main FSM
25186 ------------------------------------------------------------------------*/
25187 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25188 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25190 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025191 gpHostWlanFeatCaps->featCaps[0],
25192 gpHostWlanFeatCaps->featCaps[1],
25193 gpHostWlanFeatCaps->featCaps[2],
25194 gpHostWlanFeatCaps->featCaps[3]
25195 );
25196
25197 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25198 wdiEventData.pEventData = gpHostWlanFeatCaps;
25199 wdiEventData.uEventDataSize = fCapsStructSize;
25200 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25201 wdiEventData.pUserData = pUserData;
25202
25203 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25204}
25205
25206/**
Yathishd8713192012-12-10 14:21:35 -080025207 @brief Disable Active mode offload in Host
25208
25209 @param void
25210 @see
25211 @return void
25212*/
25213void
25214WDI_disableCapablityFeature(wpt_uint8 feature_index)
25215{
25216 supportEnabledFeatures[feature_index] = 0;
25217 return;
25218}
25219
25220/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 @brief Process Host-FW Capability Exchange Request function
25222
25223 @param pWDICtx: pointer to the WLAN DAL context
25224 pEventData: pointer to the event information structure
25225
25226 @see
25227 @return Result of the function call
25228*/
25229WDI_Status
25230WDI_ProcessFeatureCapsExchangeReq
25231(
25232 WDI_ControlBlockType* pWDICtx,
25233 WDI_EventInfoType* pEventData
25234)
25235{
25236 wpt_uint8* pSendBuffer = NULL;
25237 wpt_uint16 usDataOffset = 0;
25238 wpt_uint16 usSendSize = 0;
25239 wpt_uint16 usLen = 0;
25240
25241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25242
25243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025244 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025245
25246 /*-------------------------------------------------------------------------
25247 Sanity check
25248 -------------------------------------------------------------------------*/
25249 /* Call back function is NULL since not required for cap exchange req */
25250 if (( NULL == pEventData ) ||
25251 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25252 {
25253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025255 WDI_ASSERT(0);
25256 return WDI_STATUS_E_FAILURE;
25257 }
25258
25259 /*-----------------------------------------------------------------------
25260 Get message buffer
25261 -----------------------------------------------------------------------*/
25262 usLen = sizeof(tWlanFeatCaps);
25263
25264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25265 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25266 usLen,
25267 &pSendBuffer, &usDataOffset, &usSendSize))||
25268 ( usSendSize < (usDataOffset + usLen )))
25269 {
25270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25271 "Unable to get send buffer in feat caps exchange req %x %x",
25272 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25273 WDI_ASSERT(0);
25274 return WDI_STATUS_E_FAILURE;
25275 }
25276
25277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025278 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025279 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25280 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25281 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25282 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25283 );
25284
25285 /* Copy host caps after the offset in the send buffer */
25286 wpalMemoryCopy( pSendBuffer+usDataOffset,
25287 (tWlanFeatCaps *)pEventData->pEventData,
25288 usLen);
25289
25290 /*-------------------------------------------------------------------------
25291 Send Start Request to HAL
25292 -------------------------------------------------------------------------*/
25293 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25294 (WDI_StartRspCb)pEventData->pCBfnc,
25295 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25296
25297}/*WDI_ProcessFeatureCapsExchangeReq*/
25298
25299/**
25300 @brief Process Host-FW Capability Exchange Response function
25301
25302 @param pWDICtx: pointer to the WLAN DAL context
25303 pEventData: pointer to the event information structure
25304
25305 @see
25306 @return Result of the function call
25307*/
25308WDI_Status
25309WDI_ProcessFeatureCapsExchangeRsp
25310(
25311 WDI_ControlBlockType* pWDICtx,
25312 WDI_EventInfoType* pEventData
25313)
25314{
25315 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25316 wpt_int32 fCapsStructSize;
25317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25318
25319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025320 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025321
25322 /*-------------------------------------------------------------------------
25323 Sanity check
25324 -------------------------------------------------------------------------*/
25325 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25326 ( NULL == pEventData->pEventData ))
25327 {
25328 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025331 WDI_ASSERT(0);
25332 return WDI_STATUS_E_FAILURE;
25333 }
25334
25335 /* Allocate memory separately for global variable carrying FW caps */
25336 fCapsStructSize = sizeof(tWlanFeatCaps);
25337 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25338 if ( NULL == gpFwWlanFeatCaps )
25339 {
25340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25341 "Cannot allocate memory for host capability info\n");
25342 WDI_ASSERT(0);
25343 return WDI_STATUS_MEM_FAILURE;
25344 }
25345
25346 /*-------------------------------------------------------------------------
25347 Unpack HAL Response Message - the header was already extracted by the
25348 main Response Handling procedure
25349 -------------------------------------------------------------------------*/
25350 /*-------------------------------------------------------------------------
25351 Extract response and send it to UMAC
25352 -------------------------------------------------------------------------*/
25353
25354 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25355 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25357 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 gpFwWlanFeatCaps->featCaps[0],
25359 gpFwWlanFeatCaps->featCaps[1],
25360 gpFwWlanFeatCaps->featCaps[2],
25361 gpFwWlanFeatCaps->featCaps[3]
25362 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025363
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25365
25366 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25367 if (wdiFeatureCapsExchangeCb != NULL)
25368 wdiFeatureCapsExchangeCb(NULL, NULL);
25369
25370 return WDI_STATUS_SUCCESS;
25371}
25372
Mohit Khanna4a70d262012-09-11 16:30:12 -070025373#ifdef WLAN_FEATURE_11AC
25374WDI_Status
25375WDI_ProcessUpdateVHTOpModeRsp
25376(
25377 WDI_ControlBlockType* pWDICtx,
25378 WDI_EventInfoType* pEventData
25379)
25380{
25381 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25382 WDI_Status wdiStatus;
25383 eHalStatus halStatus;
25384
25385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25386
25387 /*-------------------------------------------------------------------------
25388 Sanity check
25389 -------------------------------------------------------------------------*/
25390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25391 ( NULL == pEventData->pEventData))
25392 {
25393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025394 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025395 WDI_ASSERT(0);
25396 return WDI_STATUS_E_FAILURE;
25397 }
25398 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25399
25400 /*-------------------------------------------------------------------------
25401 Extract response and send it to UMAC
25402 -------------------------------------------------------------------------*/
25403 halStatus = *((eHalStatus*)pEventData->pEventData);
25404 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25405
25406 /*Notify UMAC*/
25407 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25408
25409 return WDI_STATUS_SUCCESS;
25410}
25411#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025412/**
25413 @brief WDI_getHostWlanFeatCaps
25414 WDI API that returns whether the feature passed to it as enum value in
25415 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25416 variable storing host capability bitmap to find this. This can be used by
25417 other moduels to decide certain things like call different APIs based on
25418 whether a particular feature is supported.
25419
25420 @param
25421
25422 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25423
25424 @see
25425 @return
25426 0 - if the feature is NOT supported in host
25427 any non-zero value - if the feature is SUPPORTED in host.
25428*/
25429wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25430{
25431 wpt_uint8 featSupported = 0;
25432 if (gpHostWlanFeatCaps != NULL)
25433 {
25434 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25435 }
25436 else
25437 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025439 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025440 }
25441 return featSupported;
25442}
25443
25444/**
25445 @brief WDI_getFwWlanFeatCaps
25446 WDI API that returns whether the feature passed to it as enum value in
25447 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25448 variable storing host capability bitmap to find this. This can be used by
25449 other moduels to decide certain things like call different APIs based on
25450 whether a particular feature is supported.
25451
25452 @param
25453
25454 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25455 in wlan_hal_msg.h.
25456
25457 @see
25458 @return
25459 0 - if the feature is NOT supported in FW
25460 any non-zero value - if the feature is SUPPORTED in FW.
25461*/
25462wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25463{
25464 wpt_uint8 featSupported = 0;
25465 if (gpFwWlanFeatCaps != NULL)
25466 {
25467 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25468 }
25469 else
25470 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025472 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 }
25474 return featSupported;
25475}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025476
25477#ifdef WLAN_FEATURE_11AC
25478WDI_Status
25479WDI_ProcessUpdateVHTOpModeReq
25480(
25481 WDI_ControlBlockType* pWDICtx,
25482 WDI_EventInfoType* pEventData
25483)
25484{
25485 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25486 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25487 wpt_uint8* pSendBuffer = NULL;
25488 wpt_uint16 usDataOffset = 0;
25489 wpt_uint16 usSendSize = 0;
25490
25491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25492
25493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025494 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025495
25496 /*-------------------------------------------------------------------------
25497 Sanity check
25498 -------------------------------------------------------------------------*/
25499 if (( NULL == pEventData ) ||
25500 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25501 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25502 {
25503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025504 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025505 WDI_ASSERT(0);
25506 return WDI_STATUS_E_FAILURE;
25507 }
25508
25509 /*-----------------------------------------------------------------------
25510 Get message buffer
25511 -----------------------------------------------------------------------*/
25512 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25513 sizeof(WDI_UpdateVHTOpMode),
25514 &pSendBuffer, &usDataOffset, &usSendSize))||
25515 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25516 {
25517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25518 "Unable to get send buffer in update vht opMode req");
25519 WDI_ASSERT(0);
25520 return WDI_STATUS_E_FAILURE;
25521 }
25522
25523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25524 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25525
25526 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25527 sizeof(WDI_UpdateVHTOpMode));
25528
25529 /*-------------------------------------------------------------------------
25530 Send Start Request to HAL
25531 -------------------------------------------------------------------------*/
25532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25533 wdiVHTOpModeCb,
25534 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25535
25536}
25537
25538WDI_Status
25539WDI_UpdateVHTOpModeReq
25540(
25541 WDI_UpdateVHTOpMode *pData,
25542 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25543 void* pUserData
25544)
25545{
25546 WDI_EventInfoType wdiEventData;
25547
25548 /*------------------------------------------------------------------------
25549 Sanity Check
25550 ------------------------------------------------------------------------*/
25551 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25552 {
25553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25554 "WDI API call before module is initialized - Fail request");
25555
25556 return WDI_STATUS_E_NOT_ALLOWED;
25557 }
25558
25559 /*------------------------------------------------------------------------
25560 Fill in Event data and post to the Main FSM
25561 ------------------------------------------------------------------------*/
25562 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25563 wdiEventData.pEventData = pData;
25564 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25565 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25566 wdiEventData.pUserData = pUserData;
25567
25568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25569 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25570
25571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25572
25573}
25574#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025575
25576/**
25577 @brief WDI_TransportChannelDebug -
25578 Display DXE Channel debugging information
25579 User may request to display DXE channel snapshot
25580 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025581
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080025582 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025583 @param enableStallDetect : Enable stall detect feature
25584 This feature will take effect to data performance
25585 Not integrate till fully verification
25586 @see
25587 @return none
25588*/
25589void WDI_TransportChannelDebug
25590(
25591 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025592 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025593)
25594{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025595 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025596 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025597}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025598/**
25599 @brief WDI_SsrTimerCB
25600 Callback function for SSR timer, if this is called then the graceful
25601 shutdown for Riva did not happen.
25602
25603 @param pUserData : user data to timer
25604
25605 @see
25606 @return none
25607*/
25608void
25609WDI_SsrTimerCB
25610(
25611 void *pUserData
25612)
25613{
25614 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25616
25617 if (NULL == pWDICtx )
25618 {
25619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025620 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025621 WDI_ASSERT(0);
25622 return;
25623 }
25624 wpalRivaSubystemRestart();
25625
25626 return;
25627
25628}/*WDI_SsrTimerCB*/