blob: 5ed8e65ba905473a6c874d7738038edccb16e42c [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
Jeff Johnson295189b2012-06-20 16:38:30 -070097
98#ifdef FEATURE_WLAN_SCAN_PNO
99#define WDI_PNO_VERSION_MASK 0x8000
100#endif
101
102/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700103static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700104/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700105static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700106/* array of features supported. Need to add a new feature
107 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
108 */
109static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna4a70d262012-09-11 16:30:12 -0700110 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE};
Jeff Johnson295189b2012-06-20 16:38:30 -0700111
112/*--------------------------------------------------------------------------
113 WLAN DAL State Machine
114 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700115WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700116{
117 /*WDI_INIT_ST*/
118 {{
119 WDI_MainStart, /*WDI_START_EVENT*/
120 NULL, /*WDI_STOP_EVENT*/
121 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
122 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
123 WDI_MainClose, /*WDI_CLOSE_EVENT*/
124 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
125 }},
126
127 /*WDI_STARTED_ST*/
128 {{
129 WDI_MainStartStarted, /*WDI_START_EVENT*/
130 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
131 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
132 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
133 NULL, /*WDI_CLOSE_EVENT*/
134 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
135 }},
136
137 /*WDI_STOPPED_ST*/
138 {{
139 WDI_MainStart, /*WDI_START_EVENT*/
140 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
141 NULL, /*WDI_REQUEST_EVENT*/
142 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
143 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700144 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700145 }},
146
147 /*WDI_BUSY_ST*/
148 {{
149 WDI_MainStartBusy, /*WDI_START_EVENT*/
150 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
151 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
152 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
153 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
154 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
155 }}
156};
157
Jeff Johnsone7245742012-09-05 17:12:55 -0700158/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700159 DAL Request Processing Array - the functions in this table will only be
160 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700161 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700162 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700163WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700164{
165 /*INIT*/
166 WDI_ProcessStartReq, /* WDI_START_REQ */
167 WDI_ProcessStopReq, /* WDI_STOP_REQ */
168 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
169
170 /*SCAN*/
171 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
172 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
173 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
174 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
175
176 /*ASSOCIATION*/
177 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
178 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
179 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
180 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
181 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
182
183 /* Security */
184 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
185 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
186 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
187 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
188
189 /* QoS and BA APIs */
190 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
191 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
192 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
193 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
194 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
195
196 /* Miscellaneous Control APIs */
197 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
198 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
199 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
200 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
201 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
202
203 /*BA APIs*/
204 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
205 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
206
207 /*Beacon processing APIs*/
208 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
209 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
210
211 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
212 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
213 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
214 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
215#ifdef WLAN_FEATURE_P2P
216 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
217#else
218 NULL,
219#endif
220 /* PowerSave APIs */
221 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
222 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
223 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
224 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
225 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
226 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
227 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
228 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
229 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
230 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
231 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
232 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
233 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
234 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
235 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
236 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
237 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
238 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
239 /*NV Download APIs*/
240 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
241 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
242 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
243#ifdef WLAN_FEATURE_VOWIFI_11R
244 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
245#else
246 NULL,
247#endif /* WLAN_FEATURE_VOWIFI_11R */
248 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
249 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
250#ifdef ANI_MANF_DIAG
251 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
252#else
253 NULL,
254#endif /* ANI_MANF_DIAG */
Jeff Johnsone7245742012-09-05 17:12:55 -0700255
256#ifdef FEATURE_OEM_DATA_SUPPORT
257 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
258#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700259 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700260#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700261 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700262
263 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700264
265#ifdef FEATURE_WLAN_SCAN_PNO
266 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
267 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
268 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
269#else
270 NULL,
271 NULL,
272 NULL,
273#endif /* FEATURE_WLAN_SCAN_PNO */
274
275 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700276
Jeff Johnson295189b2012-06-20 16:38:30 -0700277#ifdef WLAN_FEATURE_PACKET_FILTERING
278 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700279 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700280 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700281 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700283 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700284 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700285 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700286#else
287 NULL,
288 NULL,
289 NULL,
290 NULL,
291#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700292 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700293 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
294 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
295
296 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
297#ifdef FEATURE_WLAN_CCX
298 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
299#else
300 NULL,
301#endif
302
303#ifdef WLAN_FEATURE_GTK_OFFLOAD
304 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
305 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
306#else
307 NULL,
308 NULL,
309#endif // WLAN_FEATURE_GTK_OFFLOAD
310
311 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
312 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700313#ifdef WLAN_FEATURE_11AC
314 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
315#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700316 /*-------------------------------------------------------------------------
317 Indications
318 -------------------------------------------------------------------------*/
319 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
320};
321
322
Jeff Johnsone7245742012-09-05 17:12:55 -0700323/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700324 DAL Request Processing Array - the functions in this table will only be
325 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700326 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700327 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700328WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700329{
330 /*INIT*/
331 WDI_ProcessStartRsp, /* WDI_START_RESP */
332 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
333 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
334
335 /*SCAN*/
336 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
337 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
338 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
339 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
340
341 /* ASSOCIATION*/
342 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
343 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
344 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
345 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
346 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
347
348 /* Security */
349 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
350 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
351 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
352 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
353
354 /* QoS and BA APIs */
355 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
356 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
357 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
358 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
359 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
360
361 /* Miscellaneous Control APIs */
362 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
363 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
364 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
365 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
366 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
367
368 /* BA APIs*/
369 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
370 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700371
Jeff Johnson295189b2012-06-20 16:38:30 -0700372 /* IBSS APIs*/
373 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
374 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
375
376 /*Soft AP APIs*/
377 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
378 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
379 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
380 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
381
382 /* PowerSave APIs */
383 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
384 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
385 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
386 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
387 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
388 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
389 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
390 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
391 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
392 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
393 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
394 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
395 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
396 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
397 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
398 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
399 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
400 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700401
Jeff Johnson295189b2012-06-20 16:38:30 -0700402
403 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
404
405 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
406 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
407#ifdef WLAN_FEATURE_VOWIFI_11R
408 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
409#else
410 NULL,
411#endif /* WLAN_FEATURE_VOWIFI_11R */
412 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
413 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700414#ifdef FEATURE_OEM_DATA_SUPPORT
415 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
416#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700417 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700418#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700419 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
420
421#ifdef WLAN_FEATURE_P2P
422 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
423#else
424 NULL,
425#endif
426
427#ifdef ANI_MANF_DIAG
428 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
429#else
430 NULL,
431#endif /* ANI_MANF_DIAG */
432
Jeff Johnsone7245742012-09-05 17:12:55 -0700433 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
434
Jeff Johnson295189b2012-06-20 16:38:30 -0700435#ifdef FEATURE_WLAN_SCAN_PNO
436 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
437 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
438 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
439#else
440 NULL,
441 NULL,
442 NULL,
443#endif // FEATURE_WLAN_SCAN_PNO
444
445 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
446
447 /*---------------------------------------------------------------------
448 Indications
449 ---------------------------------------------------------------------*/
450#ifdef WLAN_FEATURE_PACKET_FILTERING
451 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700452 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700453 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700454 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700455 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700456 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700457 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700458 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700459#else
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464#endif // WLAN_FEATURE_PACKET_FILTERING
465
466 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
467 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
468
469 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
470#ifdef FEATURE_WLAN_CCX
471 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
472#else
473 NULL,
474#endif
475
476#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700477 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
478 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700479#else
480 NULL,
481 NULL,
482#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700483 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
484 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700485#ifdef WLAN_FEATURE_11AC
486 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
487#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700488
489 /*---------------------------------------------------------------------
490 Indications
491 ---------------------------------------------------------------------*/
492 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
493 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
494 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
495 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
496 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
497 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
498
499 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
500
501 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
502
503#ifdef WLAN_FEATURE_P2P
504 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
505#else
506 NULL,
507#endif
508
509#ifdef FEATURE_WLAN_SCAN_PNO
510 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
511#else
512 NULL,
513#endif // FEATURE_WLAN_SCAN_PNO
514
515#ifdef WLAN_WAKEUP_EVENTS
516 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
517#else // WLAN_WAKEUP_EVENTS
518 NULL,
519#endif // WLAN_WAKEUP_EVENTS
520
521 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
522};
523
524
Jeff Johnsone7245742012-09-05 17:12:55 -0700525/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700526 WLAN DAL Global Control Block
527 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700528WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700529static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
530
Jeff Johnsone7245742012-09-05 17:12:55 -0700531const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700532
533/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700534WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700535void* WDI_GET_PAL_CTX( void )
536{
Jeff Johnsone7245742012-09-05 17:12:55 -0700537 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700538}/*WDI_GET_PAL_CTX*/
539
Jeff Johnsone7245742012-09-05 17:12:55 -0700540/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700541 Helper inline converters
542 ============================================================================*/
543/*Convert WDI driver type into HAL driver type*/
544WPT_STATIC WPT_INLINE WDI_Status
545WDI_HAL_2_WDI_STATUS
546(
547 eHalStatus halStatus
548);
549
550/*Convert WDI request type into HAL request type*/
551WPT_STATIC WPT_INLINE tHalHostMsgType
552WDI_2_HAL_REQ_TYPE
553(
554 WDI_RequestEnumType wdiReqType
555);
556
557/*Convert WDI response type into HAL response type*/
558WPT_STATIC WPT_INLINE WDI_ResponseEnumType
559HAL_2_WDI_RSP_TYPE
560(
561 tHalHostMsgType halMsg
562);
563
564/*Convert WDI driver type into HAL driver type*/
565WPT_STATIC WPT_INLINE tDriverType
566WDI_2_HAL_DRV_TYPE
567(
568 WDI_DriverType wdiDriverType
569);
570
571/*Convert WDI stop reason into HAL stop reason*/
572WPT_STATIC WPT_INLINE tHalStopType
573WDI_2_HAL_STOP_REASON
574(
575 WDI_StopType wdiStopType
576);
577
578/*Convert WDI scan mode type into HAL scan mode type*/
579WPT_STATIC WPT_INLINE eHalSysMode
580WDI_2_HAL_SCAN_MODE
581(
582 WDI_ScanMode wdiScanMode
583);
584
585/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700586WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700587WDI_2_HAL_SEC_CH_OFFSET
588(
589 WDI_HTSecondaryChannelOffset wdiSecChOffset
590);
591
592/*Convert WDI BSS type into HAL BSS type*/
593WPT_STATIC WPT_INLINE tSirBssType
594WDI_2_HAL_BSS_TYPE
595(
596 WDI_BssType wdiBSSType
597);
598
599/*Convert WDI NW type into HAL NW type*/
600WPT_STATIC WPT_INLINE tSirNwType
601WDI_2_HAL_NW_TYPE
602(
603 WDI_NwType wdiNWType
604);
605
606/*Convert WDI chanel bonding type into HAL cb type*/
607WPT_STATIC WPT_INLINE ePhyChanBondState
608WDI_2_HAL_CB_STATE
609(
610 WDI_PhyChanBondState wdiCbState
611);
612
613/*Convert WDI chanel bonding type into HAL cb type*/
614WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
615WDI_2_HAL_HT_OPER_MODE
616(
617 WDI_HTOperatingMode wdiHTOperMode
618);
619
620/*Convert WDI mimo PS type into HAL mimo PS type*/
621WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
622WDI_2_HAL_MIMO_PS
623(
624 WDI_HTMIMOPowerSaveState wdiHTOperMode
625);
626
627/*Convert WDI ENC type into HAL ENC type*/
628WPT_STATIC WPT_INLINE tAniEdType
629WDI_2_HAL_ENC_TYPE
630(
631 WDI_EncryptType wdiEncType
632);
633
634/*Convert WDI WEP type into HAL WEP type*/
635WPT_STATIC WPT_INLINE tAniWepType
636WDI_2_HAL_WEP_TYPE
637(
638 WDI_WepType wdiWEPType
639);
640
641/*Convert WDI Link State into HAL Link State*/
642WPT_STATIC WPT_INLINE tSirLinkState
643WDI_2_HAL_LINK_STATE
644(
645 WDI_LinkStateType wdiLinkState
646);
647
Jeff Johnsone7245742012-09-05 17:12:55 -0700648/*Translate a STA Context from WDI into HAL*/
649WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700650void
651WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700652(
Jeff Johnson295189b2012-06-20 16:38:30 -0700653 tConfigStaParams* phalConfigSta,
654 WDI_ConfigStaReqInfoType* pwdiConfigSta
655);
Jeff Johnsone7245742012-09-05 17:12:55 -0700656
657/*Translate a Rate set info from WDI into HAL*/
658WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700659WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700660(
Jeff Johnson295189b2012-06-20 16:38:30 -0700661 tSirMacRateSet* pHalRateSet,
662 WDI_RateSet* pwdiRateSet
663);
664
665/*Translate an EDCA Parameter Record from WDI into HAL*/
666WPT_STATIC WPT_INLINE void
667WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700668(
Jeff Johnson295189b2012-06-20 16:38:30 -0700669 tSirMacEdcaParamRecord* phalEdcaParam,
670 WDI_EdcaParamRecord* pWDIEdcaParam
671);
672
673/*Copy a management frame header from WDI fmt into HAL fmt*/
674WPT_STATIC WPT_INLINE void
675WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
676(
677 tSirMacMgmtHdr* pmacMgmtHdr,
678 WDI_MacMgmtHdr* pwdiMacMgmtHdr
679);
680
681/*Copy config bss parameters from WDI fmt into HAL fmt*/
682WPT_STATIC WPT_INLINE void
683WDI_CopyWDIConfigBSSToHALConfigBSS
684(
685 tConfigBssParams* phalConfigBSS,
686 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
687);
688
Jeff Johnsone7245742012-09-05 17:12:55 -0700689/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700690 pointed to by user data */
691WPT_STATIC WPT_INLINE void
692WDI_ExtractRequestCBFromEvent
693(
694 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700695 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700696 void** ppUserData
697);
698
699wpt_uint8
700WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700701(
Jeff Johnson295189b2012-06-20 16:38:30 -0700702 WDI_ControlBlockType* pWDICtx,
703 WDI_BSSSessionType** ppSession
704);
705
706void
707WDI_AddBcastSTAtoSTATable
708(
709 WDI_ControlBlockType* pWDICtx,
710 WDI_AddStaParams * staParams,
711 wpt_uint16 usBcastStaIdx
712);
713
714WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700715(
Jeff Johnson295189b2012-06-20 16:38:30 -0700716 WDI_ControlBlockType* pWDICtx,
717 WDI_EventInfoType* pEventData
718);
719
720void
721WDI_SetPowerStateCb
722(
723 wpt_status status,
724 unsigned int dxePhyAddr,
725 void *pContext
726);
727
728#define CASE_RETURN_STRING( str ) \
729 case ( ( str ) ): return( #str ); break \
730
731/**
732 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700733
734 @param wdiReqMsgId: WDI Message request Id
735
736 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700737 @return Result of the function call
738*/
739static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
740{
741 switch (wdiReqMsgId)
742 {
743 CASE_RETURN_STRING( WDI_START_REQ );
744 CASE_RETURN_STRING( WDI_STOP_REQ );
745 CASE_RETURN_STRING( WDI_CLOSE_REQ );
746 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
747 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
748 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
749 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
750 CASE_RETURN_STRING( WDI_JOIN_REQ );
751 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
752 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
753 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
754 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
755 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
756 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
757 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
758 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
759 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
760 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
761 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
762 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
763 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
764 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
765 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
766 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
767 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
768 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
769 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
770 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
771 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
772 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
773 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
774 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
775 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
776 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
777 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
778 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
779 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
780 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
781 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
782 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
783 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
784 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
785 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
786 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
787 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
788 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
789 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
790 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
791 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
792 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
793 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
794 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
795 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
796 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
797 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
798 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
799 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
800 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
801 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
802 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700803 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700804 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
805 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
806 #ifdef FEATURE_WLAN_SCAN_PNO
807 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
808 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
809 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
810 #endif
811 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
812 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
813 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
814 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
815 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
816 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
817 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
818 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
819 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
820 default:
821 return "Unknown WDI MessageId";
822 }
823}
824
825
826
827/**
828 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700829
830 @param wdiRespMsgId: WDI Message response Id
831
832 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700833 @return Result of the function call
834*/
835static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
836{
837 switch (wdiRespMsgId)
838 {
839 CASE_RETURN_STRING( WDI_START_RESP );
840 CASE_RETURN_STRING( WDI_STOP_RESP );
841 CASE_RETURN_STRING( WDI_CLOSE_RESP );
842 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
843 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
844 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
845 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
846 CASE_RETURN_STRING( WDI_JOIN_RESP );
847 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
848 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
849 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
850 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
851 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
852 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
853 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
854 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
855 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
856 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
857 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
858 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
859 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
860 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
861 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
862 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
863 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
864 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
865 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
866 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
867 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
868 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
869 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
870 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
871 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
872 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
873 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
874 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
875 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
876 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
877 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
878 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
879 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
880 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
881 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
882 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
883 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
884 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
885 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
886 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
887 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
888 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
889 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
890 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
891 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
892 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
893 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
894 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
895 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
896 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
897 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
898 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700899 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700900 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
901 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
902 #ifdef FEATURE_WLAN_SCAN_PNO
903 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
904 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
905 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
906 #endif
907 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
908 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
909 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
910 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
911 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
912 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
913 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
914 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
915 default:
916 return "Unknown WDI MessageId";
917 }
918}
919
920/**
921 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700922
923 @param halStatusId: HAL status Id
924
925 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700926 @return Result of the function call
927*/
928static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
929{
930 switch (halStatusId)
931 {
932 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
933 CASE_RETURN_STRING( PAL_STATUS_INVAL );
934 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
935 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
936 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
937 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
938 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
939 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
940 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
941 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
942 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
943 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
944 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
945 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
946 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
947 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
948 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
949 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
950 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
951 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
952 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
953 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
954 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
955 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
956 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
957 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
958 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
959 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
960 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
961 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
962 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
963 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
964 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
965 default:
966 return "Unknown HAL status";
967 }
968}
969
Jeff Johnsone7245742012-09-05 17:12:55 -0700970/*========================================================================
971
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -0700973
Jeff Johnson295189b2012-06-20 16:38:30 -0700974==========================================================================*/
975
976/**
977 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -0700978
Jeff Johnson295189b2012-06-20 16:38:30 -0700979 DAL will allocate all the resources it needs. It will open PAL, it will also
980 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -0700981 DXE/SMD or any other drivers that they need.
982
Jeff Johnson295189b2012-06-20 16:38:30 -0700983 @param pOSContext: pointer to the OS context provided by the UMAC
984 will be passed on to PAL on Open
985 ppWDIGlobalCtx: output pointer of Global Context
986 pWdiDevCapability: output pointer of device capability
987
988 @return Result of the function call
989*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700990WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -0700991WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -0700992(
Jeff Johnson295189b2012-06-20 16:38:30 -0700993 void* pOSContext,
994 void** ppWDIGlobalCtx,
995 WDI_DeviceCapabilityType* pWdiDevCapability,
996 unsigned int driverType
997)
998{
999 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001000 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001001 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001002 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1004
1005 /*---------------------------------------------------------------------
1006 Sanity check
1007 ---------------------------------------------------------------------*/
1008 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1009 {
1010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1011 "Invalid input parameters in WDI_Init");
1012
Jeff Johnsone7245742012-09-05 17:12:55 -07001013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001014 }
1015
1016 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001017 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001018 ---------------------------------------------------------------------*/
1019 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1020 {
1021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1022 "WDI module already initialized - return");
1023
Jeff Johnsone7245742012-09-05 17:12:55 -07001024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 }
1026
1027 /*Module is now initialized - this flag is to ensure the fact that multiple
1028 init will not happen on WDI
1029 !! - potential race does exist because read and set are not atomic,
1030 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001031 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001032
1033 /*Setup the control block */
1034 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001035 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001036
1037 /*Setup the STA Table*/
1038 wdiStatus = WDI_STATableInit(&gWDICb);
1039 if ( WDI_STATUS_SUCCESS != wdiStatus )
1040 {
1041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1042 "%s: Failure while initializing STA Table, status %d",
1043 __FUNCTION__, wdiStatus);
1044 goto fail_STATableInit;
1045 }
1046
1047 /*------------------------------------------------------------------------
1048 Open the PAL
1049 ------------------------------------------------------------------------*/
1050 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1051 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1052 {
1053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1054 "%s: Failed to open PAL, status %d",
1055 __FUNCTION__, wptStatus);
1056 goto fail_wpalOpen;
1057 }
1058
1059 /*Initialize main synchro mutex - it will be used to ensure integrity of
1060 the main WDI Control Block*/
1061 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1062 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1063 {
1064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1065 "%s: Failed to init mutex, status %d",
1066 __FUNCTION__, wptStatus);
1067 goto fail_mutex;
1068 }
1069
1070 /*Initialize the response timer - it will be used to time all messages
1071 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001072 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1073 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001074 &gWDICb);
1075 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1076 {
1077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1078 "%s: Failed to init response timer, status %d",
1079 __FUNCTION__, wptStatus);
1080 goto fail_timer;
1081 }
1082
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001083 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1084 WDI_SsrTimerCB,
1085 &gWDICb);
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 SSR timer, status %d",
1090 __FUNCTION__, wptStatus);
1091 goto fail_timer2;
1092 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001093 /* Initialize the WDI Pending Request Queue*/
1094 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1095 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1096 {
1097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1098 "%s: Failed to init pending request queue, status %d",
1099 __FUNCTION__, wptStatus);
1100 goto fail_pend_queue;
1101 }
1102
1103 /*Init WDI Pending Assoc Id Queue */
1104 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1105 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1106 {
1107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1108 "%s: Failed to init assoc session queue, status %d",
1109 __FUNCTION__, wptStatus);
1110 goto fail_assoc_queue;
1111 }
1112
1113 /*Initialize the BSS sessions pending Queue */
1114 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1115 {
1116 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1117 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1118 {
1119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1120 "%s: Failed to init BSS %d pending queue, status %d",
1121 __FUNCTION__, i, wptStatus);
1122 goto fail_bss_queue;
1123 }
1124 }
1125
1126 /*Indicate the control block is sufficiently initialized for callbacks*/
1127 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1128
1129 /*------------------------------------------------------------------------
1130 Initialize the Data Path Utility Module
1131 ------------------------------------------------------------------------*/
1132 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1133 if ( WDI_STATUS_SUCCESS != wdiStatus )
1134 {
1135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1136 "%s: Failed to initialize the DP Util Module, status %d",
1137 __FUNCTION__, wdiStatus);
1138 goto fail_dp_util_init;
1139 }
1140
1141 /* Init Set power state event */
1142 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001143 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001144 {
1145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1146 "%s: Failed to initialize power state event, status %d",
1147 __FUNCTION__, wptStatus);
1148 goto fail_power_event;
1149 }
1150
1151 /* Init WCTS action event */
1152 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001153 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001154 {
1155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1156 "%s: Failed to initialize WCTS action event, status %d",
1157 __FUNCTION__, wptStatus);
1158 goto fail_wcts_event;
1159 }
1160
1161 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001162 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001163 ------------------------------------------------------------------------*/
1164 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1165 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001166 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001167 wctsCBs.wctsRxMsgCBData = &gWDICb;
1168
Jeff Johnsone7245742012-09-05 17:12:55 -07001169 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001170 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001171 WDI_CT_CHANNEL_SIZE,
1172 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001173
1174 if ( NULL == gWDICb.wctsHandle )
1175 {
1176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1177 "%s: Failed to open WCTS transport", __FUNCTION__);
1178 goto fail_wcts_open;
1179 }
1180
1181 gWDICb.driverMode = (tDriverType)driverType;
1182 /* FTM mode not need to open Transport Driver */
1183 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001184 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001185 /*------------------------------------------------------------------------
1186 Open the Data Transport
1187 ------------------------------------------------------------------------*/
1188 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1189 {
1190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1191 "%s: Failed to open the DT Transport", __FUNCTION__);
1192 goto fail_wdts_open;
1193 }
1194 }
1195
1196 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001197 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001198
1199 /*Send the context as a ptr to the global WDI Control Block*/
1200 *ppWDIGlobalCtx = &gWDICb;
1201
1202 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001203 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1205 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1206 return WDI_STATUS_SUCCESS;
1207
1208 /* ERROR handlers
1209 Undo everything that completed successfully */
1210
1211 fail_wdts_open:
1212 {
1213 wpt_status eventStatus;
1214
1215 /* Closing WCTS in this scenario is tricky since it has to close
1216 the SMD channel and then we get notified asynchronously when
1217 the channel has been closed. So we take some of the logic from
1218 the "normal" close procedure in WDI_Close()
1219 */
1220
1221 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001222 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001223 {
1224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1225 "%s: Failed to reset WCTS action event", __FUNCTION__);
1226 }
1227
1228 WCTS_CloseTransport(gWDICb.wctsHandle);
1229
1230 /* Wait for WCTS to close the control transport. If we were able
1231 to reset the event flag, then we'll wait for the event,
1232 otherwise we'll wait for a maximum amount of time required for
1233 the channel to be closed */
1234 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1235 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001236 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001237 WDI_WCTS_ACTION_TIMEOUT);
1238 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1239 {
1240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1241 "%s: Failed to wait on WCTS action event", __FUNCTION__);
1242 }
1243 }
1244 else
1245 {
1246 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1247 }
1248 }
1249 fail_wcts_open:
1250 wpalEventDelete(&gWDICb.wctsActionEvent);
1251 fail_wcts_event:
1252 wpalEventDelete(&gWDICb.setPowerStateEvent);
1253 fail_power_event:
1254 WDI_DP_UtilsExit(&gWDICb);
1255 fail_dp_util_init:
1256 gWDICb.magic = 0;
1257 fail_bss_queue:
1258 /* entries 0 thru i-1 were successfully initialized */
1259 while (0 < i)
1260 {
1261 i--;
1262 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1263 }
1264 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1265 fail_assoc_queue:
1266 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1267 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001268 wpalTimerDelete(&gWDICb.ssrTimer);
1269 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001270 wpalTimerDelete(&gWDICb.wptResponseTimer);
1271 fail_timer:
1272 wpalMutexDelete(&gWDICb.wptMutex);
1273 fail_mutex:
1274 wpalClose(gWDICb.pPALContext);
1275 fail_wpalOpen:
1276 WDI_STATableClose(&gWDICb);
1277 fail_STATableInit:
1278 gWDIInitialized = eWLAN_PAL_FALSE;
1279
1280 return WDI_STATUS_E_FAILURE;
1281
1282}/*WDI_Init*/;
1283
1284/**
1285 @brief WDI_Start will be called when the upper MAC is ready to
1286 commence operation with the WLAN Device. Upon the call
1287 of this API the WLAN DAL will pack and send a HAL Start
1288 message to the lower RIVA sub-system if the SMD channel
1289 has been fully opened and the RIVA subsystem is up.
1290
1291 If the RIVA sub-system is not yet up and running DAL
1292 will queue the request for Open and will wait for the
1293 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001294 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001295
1296 WDI_Init must have been called.
1297
Jeff Johnsone7245742012-09-05 17:12:55 -07001298 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001299 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001300
Jeff Johnson295189b2012-06-20 16:38:30 -07001301 wdiStartRspCb: callback for passing back the response of
1302 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001303
Jeff Johnson295189b2012-06-20 16:38:30 -07001304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001305 callback
1306
Jeff Johnson295189b2012-06-20 16:38:30 -07001307 @see WDI_Start
1308 @return Result of the function call
1309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001311WDI_Start
1312(
1313 WDI_StartReqParamsType* pwdiStartParams,
1314 WDI_StartRspCb wdiStartRspCb,
1315 void* pUserData
1316)
1317{
1318 WDI_EventInfoType wdiEventData;
1319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1320
1321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001323 ------------------------------------------------------------------------*/
1324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1325 {
1326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1327 "WDI API call before module is initialized - Fail request");
1328
Jeff Johnsone7245742012-09-05 17:12:55 -07001329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001330 }
1331
1332 /*------------------------------------------------------------------------
1333 Fill in Event data and post to the Main FSM
1334 ------------------------------------------------------------------------*/
1335 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001336 wdiEventData.pEventData = pwdiStartParams;
1337 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1338 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001339 wdiEventData.pUserData = pUserData;
1340
1341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1342
1343}/*WDI_Start*/
1344
1345/**
1346 @brief WDI_Stop will be called when the upper MAC is ready to
1347 stop any operation with the WLAN Device. Upon the call
1348 of this API the WLAN DAL will pack and send a HAL Stop
1349 message to the lower RIVA sub-system if the DAL Core is
1350 in started state.
1351
1352 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001353
1354 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001355
1356 WDI_Start must have been called.
1357
Jeff Johnsone7245742012-09-05 17:12:55 -07001358 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001359 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001360
Jeff Johnson295189b2012-06-20 16:38:30 -07001361 wdiStopRspCb: callback for passing back the response of
1362 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001363
Jeff Johnson295189b2012-06-20 16:38:30 -07001364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001365 callback
1366
Jeff Johnson295189b2012-06-20 16:38:30 -07001367 @see WDI_Start
1368 @return Result of the function call
1369*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001370WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001371WDI_Stop
1372(
1373 WDI_StopReqParamsType* pwdiStopParams,
1374 WDI_StopRspCb wdiStopRspCb,
1375 void* pUserData
1376)
1377{
1378 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001379 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1381
1382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001384 ------------------------------------------------------------------------*/
1385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1386 {
1387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1388 "WDI API call before module is initialized - Fail request");
1389
Jeff Johnsone7245742012-09-05 17:12:55 -07001390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001391 }
1392
Jeff Johnson43971f52012-07-17 12:26:56 -07001393 /*Access to the global state must be locked before cleaning */
1394 wpalMutexAcquire(&pWDICtx->wptMutex);
1395
1396 /*Clear all pending request*/
1397 WDI_ClearPendingRequests(pWDICtx);
1398
1399 /*We have completed cleaning unlock now*/
1400 wpalMutexRelease(&pWDICtx->wptMutex);
1401
Jeff Johnson295189b2012-06-20 16:38:30 -07001402 /* Free the global variables */
1403 wpalMemoryFree(gpHostWlanFeatCaps);
1404 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001405 gpHostWlanFeatCaps = NULL;
1406 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001407
1408 /*------------------------------------------------------------------------
1409 Fill in Event data and post to the Main FSM
1410 ------------------------------------------------------------------------*/
1411 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001412 wdiEventData.pEventData = pwdiStopParams;
1413 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1414 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001415 wdiEventData.pUserData = pUserData;
1416
1417 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1418
1419}/*WDI_Stop*/
1420
1421
1422
1423/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001424 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 needs to interact with DAL. DAL will free its control
1426 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001427
1428 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001429
1430 WDI_Stop must have been called.
1431
1432 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001433
Jeff Johnson295189b2012-06-20 16:38:30 -07001434 @see WDI_Stop
1435 @return Result of the function call
1436*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001438WDI_Close
1439(
1440 void
1441)
1442{
1443 wpt_uint8 i;
1444 WDI_EventInfoType wdiEventData;
1445 wpt_status wptStatus;
1446 wpt_status eventStatus;
1447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1448
1449 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001450 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001451 ------------------------------------------------------------------------*/
1452 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1453 {
1454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1455 "WDI API call before module is initialized - Fail request");
1456
Jeff Johnsone7245742012-09-05 17:12:55 -07001457 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001458 }
1459
1460 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1461 (the control transport will be closed by the FSM and we'll want
1462 to wait until that completes)*/
1463 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001464 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001465 {
1466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1467 "%s: Failed to reset WCTS action event", __FUNCTION__);
1468 /* fall through and try to finish closing via the FSM */
1469 }
1470
1471 /*------------------------------------------------------------------------
1472 Fill in Event data and post to the Main FSM
1473 ------------------------------------------------------------------------*/
1474 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001475 wdiEventData.pEventData = NULL;
1476 wdiEventData.uEventDataSize = 0;
1477 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001478 wdiEventData.pUserData = NULL;
1479
1480 gWDIInitialized = eWLAN_PAL_FALSE;
1481
1482 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1483
1484 /*Wait for WCTS to close the control transport
1485 (but only if we were able to reset the event flag*/
1486 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1487 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001488 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001489 WDI_WCTS_ACTION_TIMEOUT);
1490 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1491 {
1492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1493 "%s: Failed to wait on WCTS action event", __FUNCTION__);
1494 }
1495 }
1496
1497 /* Destroy the WCTS action event */
1498 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1499 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1500 {
1501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1502 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001503 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 }
1505
1506 /* Destroy the Set Power State event */
1507 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1508 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1509 {
1510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1511 "WDI Close failed to destroy an event");
1512
Jeff Johnsone7245742012-09-05 17:12:55 -07001513 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 }
1515
1516 /*------------------------------------------------------------------------
1517 Closes the Data Path Utility Module
1518 ------------------------------------------------------------------------*/
1519 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1520 {
1521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1522 "WDI Init failed to close the DP Util Module");
1523
Jeff Johnsone7245742012-09-05 17:12:55 -07001524 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 }
1526
1527 /*destroy the BSS sessions pending Queue */
1528 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1529 {
1530 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1531 }
1532
1533 /* destroy the WDI Pending Assoc Id Request Queue*/
1534 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1535
1536 /* destroy the WDI Pending Request Queue*/
1537 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001538
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 /*destroy the response timer */
1540 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1541
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001542 /*destroy the SSR timer */
1543 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1544
Jeff Johnson295189b2012-06-20 16:38:30 -07001545 /*invalidate the main synchro mutex */
1546 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1547 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1548 {
1549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1550 "Failed to delete mutex %d", wptStatus);
1551 WDI_ASSERT(0);
1552 }
1553
1554 /*Clear control block. note that this will clear the "magic"
1555 which will inhibit all asynchronous callbacks*/
1556 WDI_CleanCB(&gWDICb);
1557
1558 return wptStatus;
1559
1560}/*WDI_Close*/
1561
1562/**
1563 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1564 This will do most of the WDI stop & close
1565 operations without doing any handshake with Riva
1566
1567 This will also make sure that the control transport
1568 will NOT be closed.
1569
1570 This request will not be queued.
1571
1572
1573 WDI_Start must have been called.
1574
1575 @param closeTransport: Close control channel if this is set
1576
1577 @return Result of the function call
1578*/
1579WDI_Status
1580WDI_Shutdown
1581(
1582 wpt_boolean closeTransport
1583)
1584{
1585 WDI_EventInfoType wdiEventData;
1586 wpt_status wptStatus;
1587 int i = 0;
1588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1589
1590 /*------------------------------------------------------------------------
1591 Sanity Check
1592 ------------------------------------------------------------------------*/
1593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1594 {
1595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1596 "WDI API call before module is initialized - Fail request");
1597
1598 return WDI_STATUS_E_NOT_ALLOWED;
1599 }
1600
1601 /*------------------------------------------------------------------------
1602 Fill in Event data and post to the Main FSM
1603 ------------------------------------------------------------------------*/
1604 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1605 wdiEventData.pEventData = NULL;
1606 wdiEventData.uEventDataSize = 0;
1607
1608 /* Shutdown will not be queued, if the state is busy timer will be
1609 * stopped & this message will be processed.*/
1610 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1611 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1612 {
1613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1614 "%s: Failed to process shutdown event", __FUNCTION__);
1615 }
1616 /* Destroy the Set Power State event */
1617 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1618 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1619 {
1620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1621 "WDI Close failed to destroy an event");
1622
1623 WDI_ASSERT(0);
1624 }
1625 /*------------------------------------------------------------------------
1626 Closes the Data Path Utility Module
1627 ------------------------------------------------------------------------*/
1628 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1629 {
1630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1631 "WDI Init failed to close the DP Util Module");
1632
1633 WDI_ASSERT(0);
1634 }
1635 if ( closeTransport )
1636 {
1637 /* Close control transport, called from module unload */
1638 WCTS_CloseTransport(gWDICb.wctsHandle);
1639 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001640 else
1641 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001642 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001643 the pending messages in the transport queue */
1644 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1645 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001646 /*destroy the BSS sessions pending Queue */
1647 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1648 {
1649 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1650 }
1651
1652 /* destroy the WDI Pending Assoc Id Request Queue*/
1653 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1654 /* destroy the WDI Pending Request Queue*/
1655 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1656 /*destroy the response timer */
1657 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001658 /*destroy the SSR timer */
1659 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001660
1661 /*invalidate the main synchro mutex */
1662 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1663 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1664 {
1665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1666 "%s: Failed to delete mutex %d", __FUNCTION__, wptStatus);
1667 WDI_ASSERT(0);
1668 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001669 /* Free the global variables */
1670 wpalMemoryFree(gpHostWlanFeatCaps);
1671 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001672 gpHostWlanFeatCaps = NULL;
1673 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001674 /*Clear control block. note that this will clear the "magic"
1675 which will inhibit all asynchronous callbacks*/
1676 WDI_CleanCB(&gWDICb);
1677 return wptStatus;
1678
1679}/*WDI_Shutdown*/
1680
1681
Jeff Johnsone7245742012-09-05 17:12:55 -07001682/*========================================================================
1683
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001685
Jeff Johnson295189b2012-06-20 16:38:30 -07001686==========================================================================*/
1687
1688/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001689 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001690 the WLAN Device to get ready for a scan procedure. Upon
1691 the call of this API the WLAN DAL will pack and send a
1692 HAL Init Scan request message to the lower RIVA
1693 sub-system if DAL is in state STARTED.
1694
1695 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001696 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001697
1698 WDI_Start must have been called.
1699
1700 @param wdiInitScanParams: the init scan parameters as specified
1701 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001702
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 wdiInitScanRspCb: callback for passing back the response
1704 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001705
Jeff Johnson295189b2012-06-20 16:38:30 -07001706 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001707 callback
1708
Jeff Johnson295189b2012-06-20 16:38:30 -07001709 @see WDI_Start
1710 @return Result of the function call
1711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001713WDI_InitScanReq
1714(
1715 WDI_InitScanReqParamsType* pwdiInitScanParams,
1716 WDI_InitScanRspCb wdiInitScanRspCb,
1717 void* pUserData
1718)
1719{
1720 WDI_EventInfoType wdiEventData;
1721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1722
1723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001725 ------------------------------------------------------------------------*/
1726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1727 {
1728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1729 "WDI API call before module is initialized - Fail request");
1730
Jeff Johnsone7245742012-09-05 17:12:55 -07001731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001732 }
1733
1734 /*------------------------------------------------------------------------
1735 Fill in Event data and post to the Main FSM
1736 ------------------------------------------------------------------------*/
1737 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001738 wdiEventData.pEventData = pwdiInitScanParams;
1739 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1740 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001741 wdiEventData.pUserData = pUserData;
1742
1743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1744
1745}/*WDI_InitScanReq*/
1746
1747/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001748 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 wishes to change the Scan channel on the WLAN Device.
1750 Upon the call of this API the WLAN DAL will pack and
1751 send a HAL Start Scan request message to the lower RIVA
1752 sub-system if DAL is in state STARTED.
1753
1754 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001755 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001756
1757 WDI_InitScanReq must have been called.
1758
Jeff Johnsone7245742012-09-05 17:12:55 -07001759 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001761
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 wdiStartScanRspCb: callback for passing back the
1763 response of the start scan operation received from the
1764 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001765
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001767 callback
1768
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 @see WDI_InitScanReq
1770 @return Result of the function call
1771*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001772WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001773WDI_StartScanReq
1774(
1775 WDI_StartScanReqParamsType* pwdiStartScanParams,
1776 WDI_StartScanRspCb wdiStartScanRspCb,
1777 void* pUserData
1778)
1779{
1780 WDI_EventInfoType wdiEventData;
1781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1782
1783 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 ------------------------------------------------------------------------*/
1786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1787 {
1788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1789 "WDI API call before module is initialized - Fail request");
1790
Jeff Johnsone7245742012-09-05 17:12:55 -07001791 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001792 }
1793
1794 /*------------------------------------------------------------------------
1795 Fill in Event data and post to the Main FSM
1796 ------------------------------------------------------------------------*/
1797 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001798 wdiEventData.pEventData = pwdiStartScanParams;
1799 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1800 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001801 wdiEventData.pUserData = pUserData;
1802
1803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1804
1805}/*WDI_StartScanReq*/
1806
1807
1808/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001809 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001810 wants to end scanning for a particular channel that it
1811 had set before by calling Scan Start on the WLAN Device.
1812 Upon the call of this API the WLAN DAL will pack and
1813 send a HAL End Scan request message to the lower RIVA
1814 sub-system if DAL is in state STARTED.
1815
1816 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001817 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001818
1819 WDI_StartScanReq must have been called.
1820
Jeff Johnsone7245742012-09-05 17:12:55 -07001821 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001822 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001823
Jeff Johnson295189b2012-06-20 16:38:30 -07001824 wdiEndScanRspCb: callback for passing back the response
1825 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001826
Jeff Johnson295189b2012-06-20 16:38:30 -07001827 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001828 callback
1829
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 @see WDI_StartScanReq
1831 @return Result of the function call
1832*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001833WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001834WDI_EndScanReq
1835(
1836 WDI_EndScanReqParamsType* pwdiEndScanParams,
1837 WDI_EndScanRspCb wdiEndScanRspCb,
1838 void* pUserData
1839)
1840{
1841 WDI_EventInfoType wdiEventData;
1842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1843
1844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001846 ------------------------------------------------------------------------*/
1847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1848 {
1849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1850 "WDI API call before module is initialized - Fail request");
1851
Jeff Johnsone7245742012-09-05 17:12:55 -07001852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001853 }
1854
1855 /*------------------------------------------------------------------------
1856 Fill in Event data and post to the Main FSM
1857 ------------------------------------------------------------------------*/
1858 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001859 wdiEventData.pEventData = pwdiEndScanParams;
1860 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1861 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001862 wdiEventData.pUserData = pUserData;
1863
1864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1865
1866}/*WDI_EndScanReq*/
1867
1868
1869/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001870 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001871 completed the scan process on the WLAN Device. Upon the
1872 call of this API the WLAN DAL will pack and send a HAL
1873 Finish Scan Request request message to the lower RIVA
1874 sub-system if DAL is in state STARTED.
1875
1876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001878
1879 WDI_InitScanReq must have been called.
1880
Jeff Johnsone7245742012-09-05 17:12:55 -07001881 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001882 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001883
Jeff Johnson295189b2012-06-20 16:38:30 -07001884 wdiFinishScanRspCb: callback for passing back the
1885 response of the finish scan operation received from the
1886 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001887
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001889 callback
1890
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 @see WDI_InitScanReq
1892 @return Result of the function call
1893*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001895WDI_FinishScanReq
1896(
1897 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1898 WDI_FinishScanRspCb wdiFinishScanRspCb,
1899 void* pUserData
1900)
1901{
1902 WDI_EventInfoType wdiEventData;
1903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1904
1905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 ------------------------------------------------------------------------*/
1908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1909 {
1910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1911 "WDI API call before module is initialized - Fail request");
1912
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 }
1915
1916 /*------------------------------------------------------------------------
1917 Fill in Event data and post to the Main FSM
1918 ------------------------------------------------------------------------*/
1919 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001920 wdiEventData.pEventData = pwdiFinishScanParams;
1921 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1922 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 wdiEventData.pUserData = pUserData;
1924
1925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1926
1927}/*WDI_FinishScanReq*/
1928
Jeff Johnsone7245742012-09-05 17:12:55 -07001929/*========================================================================
1930
Jeff Johnson295189b2012-06-20 16:38:30 -07001931 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001932
Jeff Johnson295189b2012-06-20 16:38:30 -07001933==========================================================================*/
1934
1935/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001936 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001937 to start an association procedure to a BSS. Upon the
1938 call of this API the WLAN DAL will pack and send a HAL
1939 Join request message to the lower RIVA sub-system if
1940 DAL is in state STARTED.
1941
1942 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001943 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001944
1945 WDI_Start must have been called.
1946
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001949
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 wdiJoinRspCb: callback for passing back the response of
1951 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001952
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001954 callback
1955
Jeff Johnson295189b2012-06-20 16:38:30 -07001956 @see WDI_Start
1957 @return Result of the function call
1958*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001959WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001960WDI_JoinReq
1961(
1962 WDI_JoinReqParamsType* pwdiJoinParams,
1963 WDI_JoinRspCb wdiJoinRspCb,
1964 void* pUserData
1965)
1966{
1967 WDI_EventInfoType wdiEventData;
1968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1969
1970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 ------------------------------------------------------------------------*/
1973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1974 {
1975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1976 "WDI API call before module is initialized - Fail request");
1977
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 }
1980
1981 /*------------------------------------------------------------------------
1982 Fill in Event data and post to the Main FSM
1983 ------------------------------------------------------------------------*/
1984 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001985 wdiEventData.pEventData = pwdiJoinParams;
1986 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
1987 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001988 wdiEventData.pUserData = pUserData;
1989
1990 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1991
1992}/*WDI_JoinReq*/
1993
1994/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001995 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 wishes to configure the newly acquired or in process of
1997 being acquired BSS to the HW . Upon the call of this API
1998 the WLAN DAL will pack and send a HAL Config BSS request
1999 message to the lower RIVA sub-system if DAL is in state
2000 STARTED.
2001
2002 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002003 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002004
2005 WDI_JoinReq must have been called.
2006
Jeff Johnsone7245742012-09-05 17:12:55 -07002007 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002008 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002009
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 wdiConfigBSSRspCb: callback for passing back the
2011 response of the config BSS operation received from the
2012 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002013
Jeff Johnson295189b2012-06-20 16:38:30 -07002014 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002015 callback
2016
Jeff Johnson295189b2012-06-20 16:38:30 -07002017 @see WDI_JoinReq
2018 @return Result of the function call
2019*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002020WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002021WDI_ConfigBSSReq
2022(
2023 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2024 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2025 void* pUserData
2026)
2027{
2028 WDI_EventInfoType wdiEventData;
2029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2030
2031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002032 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002033 ------------------------------------------------------------------------*/
2034 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2035 {
2036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2037 "WDI API call before module is initialized - Fail request");
2038
Jeff Johnsone7245742012-09-05 17:12:55 -07002039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002040 }
2041
2042 /*------------------------------------------------------------------------
2043 Fill in Event data and post to the Main FSM
2044 ------------------------------------------------------------------------*/
2045 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002046 wdiEventData.pEventData = pwdiConfigBSSParams;
2047 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2048 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 wdiEventData.pUserData = pUserData;
2050
2051 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2052
2053}/*WDI_ConfigBSSReq*/
2054
2055/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 disassociating from the BSS and wishes to notify HW.
2058 Upon the call of this API the WLAN DAL will pack and
2059 send a HAL Del BSS request message to the lower RIVA
2060 sub-system if DAL is in state STARTED.
2061
2062 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002064
2065 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2066
Jeff Johnsone7245742012-09-05 17:12:55 -07002067 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002068 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002069
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 wdiDelBSSRspCb: callback for passing back the response
2071 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002072
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002074 callback
2075
2076 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002077 @return Result of the function call
2078*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002079WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002080WDI_DelBSSReq
2081(
2082 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2083 WDI_DelBSSRspCb wdiDelBSSRspCb,
2084 void* pUserData
2085)
2086{
2087 WDI_EventInfoType wdiEventData;
2088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2089
2090 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 ------------------------------------------------------------------------*/
2093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2094 {
2095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2096 "WDI API call before module is initialized - Fail request");
2097
Jeff Johnsone7245742012-09-05 17:12:55 -07002098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002099 }
2100
2101 /*------------------------------------------------------------------------
2102 Fill in Event data and post to the Main FSM
2103 ------------------------------------------------------------------------*/
2104 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 wdiEventData.pEventData = pwdiDelBSSParams;
2106 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2107 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002108 wdiEventData.pUserData = pUserData;
2109
2110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2111
2112}/*WDI_DelBSSReq*/
2113
2114/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002115 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 associated to a BSS and wishes to configure HW for
2117 associated state. Upon the call of this API the WLAN DAL
2118 will pack and send a HAL Post Assoc request message to
2119 the lower RIVA sub-system if DAL is in state STARTED.
2120
2121 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002122 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002123
2124 WDI_JoinReq must have been called.
2125
2126 @param wdiPostAssocReqParams: the assoc parameters as specified
2127 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002128
Jeff Johnson295189b2012-06-20 16:38:30 -07002129 wdiPostAssocRspCb: callback for passing back the
2130 response of the post assoc operation received from the
2131 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002132
Jeff Johnson295189b2012-06-20 16:38:30 -07002133 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002134 callback
2135
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 @see WDI_JoinReq
2137 @return Result of the function call
2138*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002139WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002140WDI_PostAssocReq
2141(
2142 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2143 WDI_PostAssocRspCb wdiPostAssocRspCb,
2144 void* pUserData
2145)
2146{
2147 WDI_EventInfoType wdiEventData;
2148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2149
2150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002152 ------------------------------------------------------------------------*/
2153 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2154 {
2155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2156 "WDI API call before module is initialized - Fail request");
2157
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002159 }
2160
2161 /*------------------------------------------------------------------------
2162 Fill in Event data and post to the Main FSM
2163 ------------------------------------------------------------------------*/
2164 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002165 wdiEventData.pEventData = pwdiPostAssocReqParams;
2166 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2167 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002168 wdiEventData.pUserData = pUserData;
2169
2170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2171
2172}/*WDI_PostAssocReq*/
2173
2174/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002175 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002176 association with another STA has ended and the station
2177 must be deleted from HW. Upon the call of this API the
2178 WLAN DAL will pack and send a HAL Del STA request
2179 message to the lower RIVA sub-system if DAL is in state
2180 STARTED.
2181
2182 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002183 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002184
2185 WDI_PostAssocReq must have been called.
2186
Jeff Johnsone7245742012-09-05 17:12:55 -07002187 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002188 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002189
Jeff Johnson295189b2012-06-20 16:38:30 -07002190 wdiDelSTARspCb: callback for passing back the response
2191 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002192
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002194 callback
2195
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 @see WDI_PostAssocReq
2197 @return Result of the function call
2198*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002199WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002200WDI_DelSTAReq
2201(
2202 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2203 WDI_DelSTARspCb wdiDelSTARspCb,
2204 void* pUserData
2205)
2206{
2207 WDI_EventInfoType wdiEventData;
2208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2209
2210 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002211 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002212 ------------------------------------------------------------------------*/
2213 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2214 {
2215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2216 "WDI API call before module is initialized - Fail request");
2217
Jeff Johnsone7245742012-09-05 17:12:55 -07002218 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002219 }
2220
2221 /*------------------------------------------------------------------------
2222 Fill in Event data and post to the Main FSM
2223 ------------------------------------------------------------------------*/
2224 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002225 wdiEventData.pEventData = pwdiDelSTAParams;
2226 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2227 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 wdiEventData.pUserData = pUserData;
2229
2230 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2231
2232}/*WDI_DelSTAReq*/
2233
Jeff Johnsone7245742012-09-05 17:12:55 -07002234/*========================================================================
2235
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002237
Jeff Johnson295189b2012-06-20 16:38:30 -07002238==========================================================================*/
2239
2240/**
2241 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2242 install a BSS encryption key on the HW. Upon the call of this
2243 API the WLAN DAL will pack and send a Set BSS Key request
2244 message to the lower RIVA sub-system if DAL is in state
2245 STARTED.
2246
2247 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002248 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002249
2250 WDI_PostAssocReq must have been called.
2251
Jeff Johnsone7245742012-09-05 17:12:55 -07002252 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002254
Jeff Johnson295189b2012-06-20 16:38:30 -07002255 wdiSetBSSKeyRspCb: callback for passing back the
2256 response of the set BSS Key operation received from the
2257 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002258
Jeff Johnson295189b2012-06-20 16:38:30 -07002259 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002260 callback
2261
Jeff Johnson295189b2012-06-20 16:38:30 -07002262 @see WDI_PostAssocReq
2263 @return Result of the function call
2264*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002265WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002266WDI_SetBSSKeyReq
2267(
2268 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2269 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2270 void* pUserData
2271)
2272{
2273 WDI_EventInfoType wdiEventData;
2274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2275
2276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 ------------------------------------------------------------------------*/
2279 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2280 {
2281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2282 "WDI API call before module is initialized - Fail request");
2283
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 }
2286
2287 /*------------------------------------------------------------------------
2288 Fill in Event data and post to the Main FSM
2289 ------------------------------------------------------------------------*/
2290 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2292 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2293 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002294 wdiEventData.pUserData = pUserData;
2295
2296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2297
2298}/*WDI_SetBSSKeyReq*/
2299
2300/**
2301 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2302 uninstall a BSS key from HW. Upon the call of this API the
2303 WLAN DAL will pack and send a HAL Remove BSS Key request
2304 message to the lower RIVA sub-system if DAL is in state
2305 STARTED.
2306
2307 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002309
2310 WDI_SetBSSKeyReq must have been called.
2311
Jeff Johnsone7245742012-09-05 17:12:55 -07002312 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002313 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002314
Jeff Johnson295189b2012-06-20 16:38:30 -07002315 wdiRemoveBSSKeyRspCb: callback for passing back the
2316 response of the remove BSS key operation received from
2317 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002318
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002320 callback
2321
Jeff Johnson295189b2012-06-20 16:38:30 -07002322 @see WDI_SetBSSKeyReq
2323 @return Result of the function call
2324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002326WDI_RemoveBSSKeyReq
2327(
2328 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2329 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2330 void* pUserData
2331)
2332{
2333 WDI_EventInfoType wdiEventData;
2334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2335
2336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002338 ------------------------------------------------------------------------*/
2339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2340 {
2341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2342 "WDI API call before module is initialized - Fail request");
2343
Jeff Johnsone7245742012-09-05 17:12:55 -07002344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002345 }
2346
2347 /*------------------------------------------------------------------------
2348 Fill in Event data and post to the Main FSM
2349 ------------------------------------------------------------------------*/
2350 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002351 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2352 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2353 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002354 wdiEventData.pUserData = pUserData;
2355
2356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2357
2358}/*WDI_RemoveBSSKeyReq*/
2359
2360
2361/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002362 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002363 ready to install a STA(ast) encryption key in HW. Upon
2364 the call of this API the WLAN DAL will pack and send a
2365 HAL Set STA Key request message to the lower RIVA
2366 sub-system if DAL is in state STARTED.
2367
2368 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002369 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002370
2371 WDI_PostAssocReq must have been called.
2372
Jeff Johnsone7245742012-09-05 17:12:55 -07002373 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002375
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 wdiSetSTAKeyRspCb: callback for passing back the
2377 response of the set STA key operation received from the
2378 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002379
Jeff Johnson295189b2012-06-20 16:38:30 -07002380 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002381 callback
2382
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 @see WDI_PostAssocReq
2384 @return Result of the function call
2385*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002386WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002387WDI_SetSTAKeyReq
2388(
2389 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2390 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2391 void* pUserData
2392)
2393{
2394 WDI_EventInfoType wdiEventData;
2395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2396
2397 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002399 ------------------------------------------------------------------------*/
2400 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2401 {
2402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2403 "WDI API call before module is initialized - Fail request");
2404
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002406 }
2407
2408 /*------------------------------------------------------------------------
2409 Fill in Event data and post to the Main FSM
2410 ------------------------------------------------------------------------*/
2411 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2413 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2414 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 wdiEventData.pUserData = pUserData;
2416
2417 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2418
2419}/*WDI_SetSTAKeyReq*/
2420
2421
2422/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002423 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002424 wants to uninstall a previously set STA key in HW. Upon
2425 the call of this API the WLAN DAL will pack and send a
2426 HAL Remove STA Key request message to the lower RIVA
2427 sub-system if DAL is in state STARTED.
2428
2429 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002430 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002431
2432 WDI_SetSTAKeyReq must have been called.
2433
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002436
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 wdiRemoveSTAKeyRspCb: callback for passing back the
2438 response of the remove STA key operation received from
2439 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002440
Jeff Johnson295189b2012-06-20 16:38:30 -07002441 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002442 callback
2443
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 @see WDI_SetSTAKeyReq
2445 @return Result of the function call
2446*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002447WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002448WDI_RemoveSTAKeyReq
2449(
2450 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2451 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2452 void* pUserData
2453)
2454{
2455 WDI_EventInfoType wdiEventData;
2456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2457
2458 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002459 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002460 ------------------------------------------------------------------------*/
2461 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2462 {
2463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2464 "WDI API call before module is initialized - Fail request");
2465
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002467 }
2468
2469 /*------------------------------------------------------------------------
2470 Fill in Event data and post to the Main FSM
2471 ------------------------------------------------------------------------*/
2472 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2474 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2475 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002476 wdiEventData.pUserData = pUserData;
2477
2478 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2479
2480}/*WDI_RemoveSTAKeyReq*/
2481
2482
2483/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002484 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002485 wants to install a STA Bcast encryption key on the HW.
2486 Upon the call of this API the WLAN DAL will pack and
2487 send a HAL Start request message to the lower RIVA
2488 sub-system if DAL is in state STARTED.
2489
2490 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002491 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002492
2493 WDI_PostAssocReq must have been called.
2494
Jeff Johnsone7245742012-09-05 17:12:55 -07002495 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002497
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 wdiSetSTABcastKeyRspCb: callback for passing back the
2499 response of the set BSS Key operation received from the
2500 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002501
Jeff Johnson295189b2012-06-20 16:38:30 -07002502 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002503 callback
2504
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 @see WDI_PostAssocReq
2506 @return Result of the function call
2507*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002508WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002509WDI_SetSTABcastKeyReq
2510(
2511 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2512 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2513 void* pUserData
2514)
2515
2516{
2517 WDI_EventInfoType wdiEventData;
2518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2519
2520 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 ------------------------------------------------------------------------*/
2523 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2524 {
2525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2526 "WDI API call before module is initialized - Fail request");
2527
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 }
2530
2531 /*------------------------------------------------------------------------
2532 Fill in Event data and post to the Main FSM
2533 ------------------------------------------------------------------------*/
2534 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2536 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2537 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 wdiEventData.pUserData = pUserData;
2539
2540 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2541
2542}/*WDI_SetSTABcastKeyReq*/
2543
2544/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 MAC wants to uninstall a STA Bcast key from HW. Upon the
2547 call of this API the WLAN DAL will pack and send a HAL
2548 Remove STA Bcast Key request message to the lower RIVA
2549 sub-system if DAL is in state STARTED.
2550
2551 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002553
2554 WDI_SetSTABcastKeyReq must have been called.
2555
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 parameters as specified by the Device
2558 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002559
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2561 response of the remove STA Bcast key operation received
2562 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002563
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002565 callback
2566
Jeff Johnson295189b2012-06-20 16:38:30 -07002567 @see WDI_SetSTABcastKeyReq
2568 @return Result of the function call
2569*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002570WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002571WDI_RemoveSTABcastKeyReq
2572(
2573 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2574 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2575 void* pUserData
2576)
2577{
2578 WDI_EventInfoType wdiEventData;
2579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2580
2581 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002582 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002583 ------------------------------------------------------------------------*/
2584 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2585 {
2586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2587 "WDI API call before module is initialized - Fail request");
2588
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 }
2591
2592 /*------------------------------------------------------------------------
2593 Fill in Event data and post to the Main FSM
2594 ------------------------------------------------------------------------*/
2595 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002596 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2597 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2598 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002599 wdiEventData.pUserData = pUserData;
2600
2601 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2602
2603}/*WDI_RemoveSTABcastKeyReq*/
2604
2605/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 MAC wants to set Max Tx Power to HW. Upon the
2608 call of this API the WLAN DAL will pack and send a HAL
2609 Remove STA Bcast Key request message to the lower RIVA
2610 sub-system if DAL is in state STARTED.
2611
2612 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002614
2615 WDI_SetSTABcastKeyReq must have been called.
2616
Jeff Johnsone7245742012-09-05 17:12:55 -07002617 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002618 parameters as specified by the Device
2619 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002620
Jeff Johnson295189b2012-06-20 16:38:30 -07002621 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2622 response of the remove STA Bcast key operation received
2623 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002624
Jeff Johnson295189b2012-06-20 16:38:30 -07002625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002626 callback
2627
Jeff Johnson295189b2012-06-20 16:38:30 -07002628 @see WDI_SetMaxTxPowerReq
2629 @return Result of the function call
2630*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002631WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002632WDI_SetMaxTxPowerReq
2633(
2634 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2635 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2636 void* pUserData
2637)
2638{
2639 WDI_EventInfoType wdiEventData;
2640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2641
2642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002643 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002644 ------------------------------------------------------------------------*/
2645 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2646 {
2647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2648 "WDI API call before module is initialized - Fail request");
2649
Jeff Johnsone7245742012-09-05 17:12:55 -07002650 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 }
2652
2653 /*------------------------------------------------------------------------
2654 Fill in Event data and post to the Main FSM
2655 ------------------------------------------------------------------------*/
2656 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002657 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2658 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2659 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002660 wdiEventData.pUserData = pUserData;
2661
2662 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2663}
2664
2665#ifdef FEATURE_WLAN_CCX
2666WDI_Status
2667WDI_TSMStatsReq
2668(
2669 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2670 WDI_TsmRspCb wdiReqStatusCb,
2671 void* pUserData
2672)
2673{
2674 WDI_EventInfoType wdiEventData;
2675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 /*------------------------------------------------------------------------
2677 Sanity Check
2678 ------------------------------------------------------------------------*/
2679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2680 {
2681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2682 "WDI API call before module is initialized - Fail request");
2683
2684 return WDI_STATUS_E_NOT_ALLOWED;
2685 }
2686
2687 /*------------------------------------------------------------------------
2688 Fill in Event data and post to the Main FSM
2689 ------------------------------------------------------------------------*/
2690 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2691 wdiEventData.pEventData = pwdiTsmReqParams;
2692 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2693 wdiEventData.pCBfnc = wdiReqStatusCb;
2694 wdiEventData.pUserData = pUserData;
2695
2696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2697
2698}
2699#endif
2700
2701/*========================================================================
2702
2703 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002704
Jeff Johnson295189b2012-06-20 16:38:30 -07002705==========================================================================*/
2706
2707/**
2708 @brief WDI_AddTSReq will be called when the upper MAC to inform
2709 the device of a successful add TSpec negotiation. HW
2710 needs to receive the TSpec Info from the UMAC in order
2711 to configure properly the QoS data traffic. Upon the
2712 call of this API the WLAN DAL will pack and send a HAL
2713 Add TS request message to the lower RIVA sub-system if
2714 DAL is in state STARTED.
2715
2716 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002717 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002718
2719 WDI_PostAssocReq must have been called.
2720
2721 @param wdiAddTsReqParams: the add TS parameters as specified by
2722 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002723
Jeff Johnson295189b2012-06-20 16:38:30 -07002724 wdiAddTsRspCb: callback for passing back the response of
2725 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002726
Jeff Johnson295189b2012-06-20 16:38:30 -07002727 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 callback
2729
Jeff Johnson295189b2012-06-20 16:38:30 -07002730 @see WDI_PostAssocReq
2731 @return Result of the function call
2732*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002733WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002734WDI_AddTSReq
2735(
2736 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2737 WDI_AddTsRspCb wdiAddTsRspCb,
2738 void* pUserData
2739)
2740{
2741 WDI_EventInfoType wdiEventData;
2742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2743
2744 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002746 ------------------------------------------------------------------------*/
2747 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2748 {
2749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2750 "WDI API call before module is initialized - Fail request");
2751
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002753 }
2754
2755 /*------------------------------------------------------------------------
2756 Fill in Event data and post to the Main FSM
2757 ------------------------------------------------------------------------*/
2758 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002759 wdiEventData.pEventData = pwdiAddTsReqParams;
2760 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2761 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 wdiEventData.pUserData = pUserData;
2763
2764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2765
2766}/*WDI_AddTSReq*/
2767
2768
2769
2770/**
2771 @brief WDI_DelTSReq will be called when the upper MAC has ended
2772 admission on a specific AC. This is to inform HW that
2773 QoS traffic parameters must be rest. Upon the call of
2774 this API the WLAN DAL will pack and send a HAL Del TS
2775 request message to the lower RIVA sub-system if DAL is
2776 in state STARTED.
2777
2778 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002779 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002780
2781 WDI_AddTSReq must have been called.
2782
2783 @param wdiDelTsReqParams: the del TS parameters as specified by
2784 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002785
Jeff Johnson295189b2012-06-20 16:38:30 -07002786 wdiDelTsRspCb: callback for passing back the response of
2787 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002788
Jeff Johnson295189b2012-06-20 16:38:30 -07002789 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002790 callback
2791
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 @see WDI_AddTSReq
2793 @return Result of the function call
2794*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002795WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002796WDI_DelTSReq
2797(
2798 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2799 WDI_DelTsRspCb wdiDelTsRspCb,
2800 void* pUserData
2801)
2802{
2803 WDI_EventInfoType wdiEventData;
2804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2805
2806 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002807 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 ------------------------------------------------------------------------*/
2809 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2810 {
2811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2812 "WDI API call before module is initialized - Fail request");
2813
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 }
2816
2817 /*------------------------------------------------------------------------
2818 Fill in Event data and post to the Main FSM
2819 ------------------------------------------------------------------------*/
2820 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002821 wdiEventData.pEventData = pwdiDelTsReqParams;
2822 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2823 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002824 wdiEventData.pUserData = pUserData;
2825
2826 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2827
2828}/*WDI_DelTSReq*/
2829
2830
2831
2832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 wishes to update the EDCA parameters used by HW for QoS
2835 data traffic. Upon the call of this API the WLAN DAL
2836 will pack and send a HAL Update EDCA Params request
2837 message to the lower RIVA sub-system if DAL is in state
2838 STARTED.
2839
2840 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002842
2843 WDI_PostAssocReq must have been called.
2844
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002847
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 wdiUpdateEDCAParamsRspCb: callback for passing back the
2849 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002850
Jeff Johnson295189b2012-06-20 16:38:30 -07002851 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 callback
2853
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 @see WDI_PostAssocReq
2855 @return Result of the function call
2856*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002857WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002858WDI_UpdateEDCAParams
2859(
2860 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2861 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2862 void* pUserData
2863)
2864{
2865 WDI_EventInfoType wdiEventData;
2866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2867
2868 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002869 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 ------------------------------------------------------------------------*/
2871 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2872 {
2873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2874 "WDI API call before module is initialized - Fail request");
2875
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002877 }
2878
2879 /*------------------------------------------------------------------------
2880 Fill in Event data and post to the Main FSM
2881 ------------------------------------------------------------------------*/
2882 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002883 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2884 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2885 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 wdiEventData.pUserData = pUserData;
2887
2888 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2889
2890}/*WDI_UpdateEDCAParams*/
2891
2892
2893/**
2894 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2895 successfully a BA session and needs to notify the HW for
2896 the appropriate settings to take place. Upon the call of
2897 this API the WLAN DAL will pack and send a HAL Add BA
2898 request message to the lower RIVA sub-system if DAL is
2899 in state STARTED.
2900
2901 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002902 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002903
2904 WDI_PostAssocReq must have been called.
2905
2906 @param wdiAddBAReqParams: the add BA parameters as specified by
2907 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002908
Jeff Johnson295189b2012-06-20 16:38:30 -07002909 wdiAddBARspCb: callback for passing back the response of
2910 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002911
Jeff Johnson295189b2012-06-20 16:38:30 -07002912 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002913 callback
2914
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 @see WDI_PostAssocReq
2916 @return Result of the function call
2917*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002918WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002919WDI_AddBASessionReq
2920(
2921 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2922 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
2923 void* pUserData
2924)
2925{
2926 WDI_EventInfoType wdiEventData;
2927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2928
2929 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002930 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 ------------------------------------------------------------------------*/
2932 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2933 {
2934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2935 "WDI API call before module is initialized - Fail request");
2936
Jeff Johnsone7245742012-09-05 17:12:55 -07002937 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002938 }
2939
2940 /*------------------------------------------------------------------------
2941 Fill in Event data and post to the Main FSM
2942 ------------------------------------------------------------------------*/
2943 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002944 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2945 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2946 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 wdiEventData.pUserData = pUserData;
2948
2949 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2950
2951}/*WDI_AddBASessionReq*/
2952
2953/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 inform HW that it has deleted a previously created BA
2956 session. Upon the call of this API the WLAN DAL will
2957 pack and send a HAL Del BA request message to the lower
2958 RIVA sub-system if DAL is in state STARTED.
2959
2960 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002961 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002962
2963 WDI_AddBAReq must have been called.
2964
2965 @param wdiDelBAReqParams: the del BA parameters as specified by
2966 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002967
Jeff Johnson295189b2012-06-20 16:38:30 -07002968 wdiDelBARspCb: callback for passing back the response of
2969 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002970
Jeff Johnson295189b2012-06-20 16:38:30 -07002971 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002972 callback
2973
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 @see WDI_AddBAReq
2975 @return Result of the function call
2976*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002977WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002978WDI_DelBAReq
2979(
2980 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
2981 WDI_DelBARspCb wdiDelBARspCb,
2982 void* pUserData
2983)
2984{
2985 WDI_EventInfoType wdiEventData;
2986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2987
2988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 ------------------------------------------------------------------------*/
2991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2992 {
2993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2994 "WDI API call before module is initialized - Fail request");
2995
Jeff Johnsone7245742012-09-05 17:12:55 -07002996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002997 }
2998
2999 /*------------------------------------------------------------------------
3000 Fill in Event data and post to the Main FSM
3001 ------------------------------------------------------------------------*/
3002 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 wdiEventData.pEventData = pwdiDelBAReqParams;
3004 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3005 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003006 wdiEventData.pUserData = pUserData;
3007
3008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3009
3010}/*WDI_DelBAReq*/
3011
Jeff Johnsone7245742012-09-05 17:12:55 -07003012/*========================================================================
3013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003015
Jeff Johnson295189b2012-06-20 16:38:30 -07003016==========================================================================*/
3017
3018/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 wants to set the power save related configurations of
3021 the WLAN Device. Upon the call of this API the WLAN DAL
3022 will pack and send a HAL Update CFG request message to
3023 the lower RIVA sub-system if DAL is in state STARTED.
3024
3025 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003027
3028 WDI_Start must have been called.
3029
Jeff Johnsone7245742012-09-05 17:12:55 -07003030 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003031 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003032
Jeff Johnson295189b2012-06-20 16:38:30 -07003033 wdiSetPwrSaveCfgCb: callback for passing back the
3034 response of the set power save cfg operation received
3035 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003036
Jeff Johnson295189b2012-06-20 16:38:30 -07003037 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003038 callback
3039
Jeff Johnson295189b2012-06-20 16:38:30 -07003040 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 @return Result of the function call
3042*/
3043WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003044WDI_SetPwrSaveCfgReq
3045(
3046 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3047 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3048 void* pUserData
3049)
3050{
3051 WDI_EventInfoType wdiEventData;
3052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3053
3054 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003055 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003056 ------------------------------------------------------------------------*/
3057 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3058 {
3059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3060 "WDI API call before module is initialized - Fail request");
3061
Jeff Johnsone7245742012-09-05 17:12:55 -07003062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 }
3064
3065 /*------------------------------------------------------------------------
3066 Fill in Event data and post to the Main FSM
3067 ------------------------------------------------------------------------*/
3068 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003069 wdiEventData.pEventData = pwdiPowerSaveCfg;
3070 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3071 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 wdiEventData.pUserData = pUserData;
3073
3074 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3075
3076}/*WDI_SetPwrSaveCfgReq*/
3077
3078/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003079 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003080 request the device to get into IMPS power state. Upon
3081 the call of this API the WLAN DAL will send a HAL Enter
3082 IMPS request message to the lower RIVA sub-system if DAL
3083 is in state STARTED.
3084
3085 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003086 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003087
Jeff Johnsone7245742012-09-05 17:12:55 -07003088
3089 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003090 response of the Enter IMPS operation received from the
3091 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003092
Jeff Johnson295189b2012-06-20 16:38:30 -07003093 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003094 callback
3095
Jeff Johnson295189b2012-06-20 16:38:30 -07003096 @see WDI_Start
3097 @return Result of the function call
3098*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003099WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003100WDI_EnterImpsReq
3101(
3102 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3103 void* pUserData
3104)
3105{
3106 WDI_EventInfoType wdiEventData;
3107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3108
3109 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003111 ------------------------------------------------------------------------*/
3112 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3113 {
3114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3115 "WDI API call before module is initialized - Fail request");
3116
Jeff Johnsone7245742012-09-05 17:12:55 -07003117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003118 }
3119
3120 /*------------------------------------------------------------------------
3121 Fill in Event data and post to the Main FSM
3122 ------------------------------------------------------------------------*/
3123 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003124 wdiEventData.pEventData = NULL;
3125 wdiEventData.uEventDataSize = 0;
3126 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 wdiEventData.pUserData = pUserData;
3128
3129 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3130
3131}/*WDI_EnterImpsReq*/
3132
3133/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003134 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003135 request the device to get out of IMPS power state. Upon
3136 the call of this API the WLAN DAL will send a HAL Exit
3137 IMPS request message to the lower RIVA sub-system if DAL
3138 is in state STARTED.
3139
3140 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003141 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003142
Jeff Johnson295189b2012-06-20 16:38:30 -07003143
Jeff Johnsone7245742012-09-05 17:12:55 -07003144
3145 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003146 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003147
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003149 callback
3150
Jeff Johnson295189b2012-06-20 16:38:30 -07003151 @see WDI_Start
3152 @return Result of the function call
3153*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003154WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003155WDI_ExitImpsReq
3156(
3157 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3158 void* pUserData
3159)
3160{
3161 WDI_EventInfoType wdiEventData;
3162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3163
3164 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003165 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003166 ------------------------------------------------------------------------*/
3167 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3168 {
3169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3170 "WDI API call before module is initialized - Fail request");
3171
Jeff Johnsone7245742012-09-05 17:12:55 -07003172 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 }
3174
3175 /*------------------------------------------------------------------------
3176 Fill in Event data and post to the Main FSM
3177 ------------------------------------------------------------------------*/
3178 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003179 wdiEventData.pEventData = NULL;
3180 wdiEventData.uEventDataSize = 0;
3181 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003182 wdiEventData.pUserData = pUserData;
3183
3184 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3185
3186}/*WDI_ExitImpsReq*/
3187
3188/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003189 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 request the device to get into BMPS power state. Upon
3191 the call of this API the WLAN DAL will pack and send a
3192 HAL Enter BMPS request message to the lower RIVA
3193 sub-system if DAL is in state STARTED.
3194
3195 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003197
3198 WDI_PostAssocReq must have been called.
3199
Jeff Johnsone7245742012-09-05 17:12:55 -07003200 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003201 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003202
Jeff Johnson295189b2012-06-20 16:38:30 -07003203 wdiEnterBmpsRspCb: callback for passing back the
3204 response of the Enter BMPS operation received from the
3205 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003206
Jeff Johnson295189b2012-06-20 16:38:30 -07003207 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 callback
3209
Jeff Johnson295189b2012-06-20 16:38:30 -07003210 @see WDI_PostAssocReq
3211 @return Result of the function call
3212*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003213WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003214WDI_EnterBmpsReq
3215(
3216 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3217 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3218 void* pUserData
3219)
3220{
3221 WDI_EventInfoType wdiEventData;
3222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3223
3224 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 ------------------------------------------------------------------------*/
3227 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3228 {
3229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3230 "WDI API call before module is initialized - Fail request");
3231
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003233 }
3234
3235 /*------------------------------------------------------------------------
3236 Fill in Event data and post to the Main FSM
3237 ------------------------------------------------------------------------*/
3238 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003239 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3240 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3241 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003242 wdiEventData.pUserData = pUserData;
3243
3244 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3245
3246}/*WDI_EnterBmpsReq*/
3247
3248/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003249 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003250 request the device to get out of BMPS power state. Upon
3251 the call of this API the WLAN DAL will pack and send a
3252 HAL Exit BMPS request message to the lower RIVA
3253 sub-system if DAL is in state STARTED.
3254
3255 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003256 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003257
3258 WDI_PostAssocReq must have been called.
3259
Jeff Johnsone7245742012-09-05 17:12:55 -07003260 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003261 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003262
Jeff Johnson295189b2012-06-20 16:38:30 -07003263 wdiExitBmpsRspCb: callback for passing back the response
3264 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003265
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003267 callback
3268
Jeff Johnson295189b2012-06-20 16:38:30 -07003269 @see WDI_PostAssocReq
3270 @return Result of the function call
3271*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003272WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003273WDI_ExitBmpsReq
3274(
3275 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3276 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3277 void* pUserData
3278)
3279{
3280 WDI_EventInfoType wdiEventData;
3281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3282
3283 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003284 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 ------------------------------------------------------------------------*/
3286 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3287 {
3288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3289 "WDI API call before module is initialized - Fail request");
3290
Jeff Johnsone7245742012-09-05 17:12:55 -07003291 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 }
3293
3294 /*------------------------------------------------------------------------
3295 Fill in Event data and post to the Main FSM
3296 ------------------------------------------------------------------------*/
3297 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003298 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3299 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3300 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003301 wdiEventData.pUserData = pUserData;
3302
3303 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3304
3305}/*WDI_ExitBmpsReq*/
3306
3307/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003308 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 request the device to get into UAPSD power state. Upon
3310 the call of this API the WLAN DAL will pack and send a
3311 HAL Enter UAPSD request message to the lower RIVA
3312 sub-system if DAL is in state STARTED.
3313
3314 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003315 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003316
3317 WDI_PostAssocReq must have been called.
3318 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003319
3320 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003321 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003322
Jeff Johnson295189b2012-06-20 16:38:30 -07003323 wdiEnterUapsdRspCb: callback for passing back the
3324 response of the Enter UAPSD operation received from the
3325 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003326
Jeff Johnson295189b2012-06-20 16:38:30 -07003327 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003328 callback
3329
Jeff Johnson295189b2012-06-20 16:38:30 -07003330 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3331 @return Result of the function call
3332*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003334WDI_EnterUapsdReq
3335(
3336 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3337 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3338 void* pUserData
3339)
3340{
3341 WDI_EventInfoType wdiEventData;
3342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3343
3344 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003345 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003346 ------------------------------------------------------------------------*/
3347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3348 {
3349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3350 "WDI API call before module is initialized - Fail request");
3351
Jeff Johnsone7245742012-09-05 17:12:55 -07003352 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 }
3354
3355 /*------------------------------------------------------------------------
3356 Fill in Event data and post to the Main FSM
3357 ------------------------------------------------------------------------*/
3358 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003359 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3360 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3361 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003362 wdiEventData.pUserData = pUserData;
3363
3364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3365
3366}/*WDI_EnterUapsdReq*/
3367
3368/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003370 request the device to get out of UAPSD power state. Upon
3371 the call of this API the WLAN DAL will send a HAL Exit
3372 UAPSD request message to the lower RIVA sub-system if
3373 DAL is in state STARTED.
3374
3375 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003376 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003377
3378 WDI_PostAssocReq must have been called.
3379
Jeff Johnsone7245742012-09-05 17:12:55 -07003380 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003381 response of the Exit UAPSD operation received from the
3382 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003383
Jeff Johnson295189b2012-06-20 16:38:30 -07003384 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003385 callback
3386
Jeff Johnson295189b2012-06-20 16:38:30 -07003387 @see WDI_PostAssocReq
3388 @return Result of the function call
3389*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003390WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003391WDI_ExitUapsdReq
3392(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003393 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3395 void* pUserData
3396)
3397{
3398 WDI_EventInfoType wdiEventData;
3399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3400
3401 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003402 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003403 ------------------------------------------------------------------------*/
3404 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3405 {
3406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3407 "WDI API call before module is initialized - Fail request");
3408
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 }
3411
3412 /*------------------------------------------------------------------------
3413 Fill in Event data and post to the Main FSM
3414 ------------------------------------------------------------------------*/
3415 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003416 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3417 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003418 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 wdiEventData.pUserData = pUserData;
3420
3421 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3422
3423}/*WDI_ExitUapsdReq*/
3424
3425/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003426 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 MAC wants to set the UAPSD related configurations
3428 of an associated STA (while acting as an AP) to the WLAN
3429 Device. Upon the call of this API the WLAN DAL will pack
3430 and send a HAL Update UAPSD params request message to
3431 the lower RIVA sub-system if DAL is in state STARTED.
3432
3433 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003435
3436 WDI_ConfigBSSReq must have been called.
3437
Jeff Johnsone7245742012-09-05 17:12:55 -07003438 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003440
Jeff Johnson295189b2012-06-20 16:38:30 -07003441 wdiUpdateUapsdParamsCb: callback for passing back the
3442 response of the update UAPSD params operation received
3443 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003444
Jeff Johnson295189b2012-06-20 16:38:30 -07003445 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003446 callback
3447
Jeff Johnson295189b2012-06-20 16:38:30 -07003448 @see WDI_ConfigBSSReq
3449 @return Result of the function call
3450*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003451WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003452WDI_UpdateUapsdParamsReq
3453(
3454 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3455 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3456 void* pUserData
3457)
3458{
3459 WDI_EventInfoType wdiEventData;
3460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3461
3462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003464 ------------------------------------------------------------------------*/
3465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3466 {
3467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3468 "WDI API call before module is initialized - Fail request");
3469
Jeff Johnsone7245742012-09-05 17:12:55 -07003470 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 }
3472
3473 /*------------------------------------------------------------------------
3474 Fill in Event data and post to the Main FSM
3475 ------------------------------------------------------------------------*/
3476 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003477 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003478 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003479 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003480 wdiEventData.pUserData = pUserData;
3481
3482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3483
3484}/*WDI_UpdateUapsdParamsReq*/
3485
3486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003487 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003488 MAC wants to set the UAPSD related configurations before
3489 requesting for enter UAPSD power state to the WLAN
3490 Device. Upon the call of this API the WLAN DAL will pack
3491 and send a HAL Set UAPSD params request message to
3492 the lower RIVA sub-system if DAL is in state STARTED.
3493
3494 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003495 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003496
3497 WDI_PostAssocReq must have been called.
3498
3499 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3500 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003501
Jeff Johnson295189b2012-06-20 16:38:30 -07003502 wdiSetUapsdAcParamsCb: callback for passing back the
3503 response of the set UAPSD params operation received from
3504 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003505
Jeff Johnson295189b2012-06-20 16:38:30 -07003506 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 callback
3508
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 @see WDI_PostAssocReq
3510 @return Result of the function call
3511*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003512WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003513WDI_SetUapsdAcParamsReq
3514(
3515 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3516 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3517 void* pUserData
3518)
3519{
3520 WDI_EventInfoType wdiEventData;
3521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3522
3523 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003524 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 ------------------------------------------------------------------------*/
3526 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3527 {
3528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3529 "WDI API call before module is initialized - Fail request");
3530
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 }
3533
3534 /*------------------------------------------------------------------------
3535 Fill in Event data and post to the Main FSM
3536 ------------------------------------------------------------------------*/
3537 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003538 wdiEventData.pEventData = pwdiUapsdInfo;
3539 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3540 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003541 wdiEventData.pUserData = pUserData;
3542
3543 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3544
3545}/*WDI_SetUapsdAcParamsReq*/
3546
3547/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003549 MAC wants to set/reset the RXP filters for received pkts
3550 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3551 and send a HAL configure RXP filter request message to
3552 the lower RIVA sub-system.
3553
3554 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003555 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003556
Jeff Johnsone7245742012-09-05 17:12:55 -07003557
3558 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 filter as specified by the Device
3560 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003561
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 wdiConfigureRxpFilterCb: callback for passing back the
3563 response of the configure RXP filter operation received
3564 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003565
Jeff Johnson295189b2012-06-20 16:38:30 -07003566 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 callback
3568
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 @return Result of the function call
3570*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003571WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003572WDI_ConfigureRxpFilterReq
3573(
3574 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3575 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3576 void* pUserData
3577)
3578{
3579 WDI_EventInfoType wdiEventData;
3580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3581
3582 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003583 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003584 ------------------------------------------------------------------------*/
3585 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3586 {
3587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3588 "WDI API call before module is initialized - Fail request");
3589
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003591 }
3592
3593 /*------------------------------------------------------------------------
3594 Fill in Event data and post to the Main FSM
3595 ------------------------------------------------------------------------*/
3596 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003597 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3598 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3599 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003600 wdiEventData.pUserData = pUserData;
3601
3602 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3603}/*WDI_ConfigureRxpFilterReq*/
3604
3605/**
3606 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3607 wants to set the beacon filters while in power save.
3608 Upon the call of this API the WLAN DAL will pack and
3609 send a Beacon filter request message to the
3610 lower RIVA sub-system.
3611
3612 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003613 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003614
Jeff Johnsone7245742012-09-05 17:12:55 -07003615
3616 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003617 filter as specified by the Device
3618 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003619
Jeff Johnson295189b2012-06-20 16:38:30 -07003620 wdiBeaconFilterCb: callback for passing back the
3621 response of the set beacon filter operation received
3622 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003623
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003625 callback
3626
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 @return Result of the function call
3628*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003629WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003630WDI_SetBeaconFilterReq
3631(
3632 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3633 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3634 void* pUserData
3635)
3636{
3637 WDI_EventInfoType wdiEventData;
3638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3639
3640 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003641 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003642 ------------------------------------------------------------------------*/
3643 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3644 {
3645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3646 "WDI API call before module is initialized - Fail request");
3647
Jeff Johnsone7245742012-09-05 17:12:55 -07003648 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 }
3650
3651 /*------------------------------------------------------------------------
3652 Fill in Event data and post to the Main FSM
3653 ------------------------------------------------------------------------*/
3654 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003655 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003656 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003657 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 wdiEventData.pUserData = pUserData;
3659
3660 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3661}/*WDI_SetBeaconFilterReq*/
3662
3663/**
3664 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3665 wants to remove the beacon filter for particular IE
3666 while in power save. Upon the call of this API the WLAN
3667 DAL will pack and send a remove Beacon filter request
3668 message to the lower RIVA sub-system.
3669
3670 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003672
Jeff Johnsone7245742012-09-05 17:12:55 -07003673
3674 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003675 filter as specified by the Device
3676 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003677
Jeff Johnson295189b2012-06-20 16:38:30 -07003678 wdiBeaconFilterCb: callback for passing back the
3679 response of the remove beacon filter operation received
3680 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003681
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003683 callback
3684
Jeff Johnson295189b2012-06-20 16:38:30 -07003685 @return Result of the function call
3686*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003687WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003688WDI_RemBeaconFilterReq
3689(
3690 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3691 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3692 void* pUserData
3693)
3694{
3695 WDI_EventInfoType wdiEventData;
3696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3697
3698 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003699 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003700 ------------------------------------------------------------------------*/
3701 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3702 {
3703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3704 "WDI API call before module is initialized - Fail request");
3705
Jeff Johnsone7245742012-09-05 17:12:55 -07003706 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003707 }
3708
3709 /*------------------------------------------------------------------------
3710 Fill in Event data and post to the Main FSM
3711 ------------------------------------------------------------------------*/
3712 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003713 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003714 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003715 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003716 wdiEventData.pUserData = pUserData;
3717
3718 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3719}/*WDI_RemBeaconFilterReq*/
3720
3721/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 MAC wants to set the RSSI thresholds related
3724 configurations while in power save. Upon the call of
3725 this API the WLAN DAL will pack and send a HAL Set RSSI
3726 thresholds request message to the lower RIVA
3727 sub-system if DAL is in state STARTED.
3728
3729 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003731
3732 WDI_PostAssocReq must have been called.
3733
3734 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3735 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003736
Jeff Johnson295189b2012-06-20 16:38:30 -07003737 wdiSetUapsdAcParamsCb: callback for passing back the
3738 response of the set UAPSD params operation received from
3739 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003740
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 callback
3743
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 @see WDI_PostAssocReq
3745 @return Result of the function call
3746*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003747WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003748WDI_SetRSSIThresholdsReq
3749(
3750 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3751 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3752 void* pUserData
3753)
3754{
3755 WDI_EventInfoType wdiEventData;
3756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3757
3758 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 ------------------------------------------------------------------------*/
3761 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3762 {
3763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3764 "WDI API call before module is initialized - Fail request");
3765
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 }
3768
3769 /*------------------------------------------------------------------------
3770 Fill in Event data and post to the Main FSM
3771 ------------------------------------------------------------------------*/
3772 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003774 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003775 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003776 wdiEventData.pUserData = pUserData;
3777
3778 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3779}/* WDI_SetRSSIThresholdsReq*/
3780
3781/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 wants to set the filter to minimize unnecessary host
3784 wakeup due to broadcast traffic while in power save.
3785 Upon the call of this API the WLAN DAL will pack and
3786 send a HAL host offload request message to the
3787 lower RIVA sub-system if DAL is in state STARTED.
3788
3789 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003790 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003791
3792 WDI_PostAssocReq must have been called.
3793
Jeff Johnsone7245742012-09-05 17:12:55 -07003794 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003795 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003796
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 wdiHostOffloadCb: callback for passing back the response
3798 of the host offload operation received from the
3799 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003800
Jeff Johnson295189b2012-06-20 16:38:30 -07003801 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 callback
3803
Jeff Johnson295189b2012-06-20 16:38:30 -07003804 @see WDI_PostAssocReq
3805 @return Result of the function call
3806*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003807WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003808WDI_HostOffloadReq
3809(
3810 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3811 WDI_HostOffloadCb wdiHostOffloadCb,
3812 void* pUserData
3813)
3814{
3815 WDI_EventInfoType wdiEventData;
3816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3817
3818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 ------------------------------------------------------------------------*/
3821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3822 {
3823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3824 "WDI API call before module is initialized - Fail request");
3825
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 }
3828
3829 /*------------------------------------------------------------------------
3830 Fill in Event data and post to the Main FSM
3831 ------------------------------------------------------------------------*/
3832 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003833 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003834 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003835 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 wdiEventData.pUserData = pUserData;
3837
3838 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3839}/*WDI_HostOffloadReq*/
3840
3841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003842 @brief WDI_KeepAliveReq will be called when the upper MAC
3843 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 and minimize unnecessary host wakeups due to while in power save.
3845 Upon the call of this API the WLAN DAL will pack and
3846 send a HAL Keep Alive request message to the
3847 lower RIVA sub-system if DAL is in state STARTED.
3848
3849 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003851
3852 WDI_PostAssocReq must have been called.
3853
Jeff Johnsone7245742012-09-05 17:12:55 -07003854 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003856
Jeff Johnson295189b2012-06-20 16:38:30 -07003857 wdiKeepAliveCb: callback for passing back the response
3858 of the Keep Alive operation received from the
3859 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003860
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003862 callback
3863
Jeff Johnson295189b2012-06-20 16:38:30 -07003864 @see WDI_PostAssocReq
3865 @return Result of the function call
3866*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003867WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003868WDI_KeepAliveReq
3869(
3870 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3871 WDI_KeepAliveCb wdiKeepAliveCb,
3872 void* pUserData
3873)
3874{
3875 WDI_EventInfoType wdiEventData;
3876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3877
3878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 ------------------------------------------------------------------------*/
3881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3882 {
3883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3884 "WDI_KeepAliveReq: WDI API call before module "
3885 "is initialized - Fail request");
3886
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 }
3889
3890 /*------------------------------------------------------------------------
3891 Fill in Event data and post to the Main FSM
3892 ------------------------------------------------------------------------*/
3893 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003894 wdiEventData.pEventData = pwdiKeepAliveParams;
3895 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3896 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003897 wdiEventData.pUserData = pUserData;
3898
3899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3900}/*WDI_KeepAliveReq*/
3901
3902/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003904 wants to set the Wowl Bcast ptrn to minimize unnecessary
3905 host wakeup due to broadcast traffic while in power
3906 save. Upon the call of this API the WLAN DAL will pack
3907 and send a HAL Wowl Bcast ptrn request message to the
3908 lower RIVA sub-system if DAL is in state STARTED.
3909
3910 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003912
3913 WDI_PostAssocReq must have been called.
3914
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003917
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 wdiWowlAddBcPtrnCb: callback for passing back the
3919 response of the add Wowl bcast ptrn operation received
3920 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003921
Jeff Johnson295189b2012-06-20 16:38:30 -07003922 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003923 callback
3924
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 @see WDI_PostAssocReq
3926 @return Result of the function call
3927*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003928WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003929WDI_WowlAddBcPtrnReq
3930(
3931 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3932 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
3933 void* pUserData
3934)
3935{
3936 WDI_EventInfoType wdiEventData;
3937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3938
3939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 ------------------------------------------------------------------------*/
3942 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3943 {
3944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3945 "WDI API call before module is initialized - Fail request");
3946
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 }
3949
3950 /*------------------------------------------------------------------------
3951 Fill in Event data and post to the Main FSM
3952 ------------------------------------------------------------------------*/
3953 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003954 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003955 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003956 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003957 wdiEventData.pUserData = pUserData;
3958
3959 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3960}/*WDI_WowlAddBcPtrnReq*/
3961
3962/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 wants to clear the Wowl Bcast ptrn. Upon the call of
3965 this API the WLAN DAL will pack and send a HAL delete
3966 Wowl Bcast ptrn request message to the lower RIVA
3967 sub-system if DAL is in state STARTED.
3968
3969 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003971
3972 WDI_WowlAddBcPtrnReq must have been called.
3973
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003976
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 wdiWowlDelBcPtrnCb: callback for passing back the
3978 response of the del Wowl bcast ptrn operation received
3979 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003980
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 callback
3983
Jeff Johnson295189b2012-06-20 16:38:30 -07003984 @see WDI_WowlAddBcPtrnReq
3985 @return Result of the function call
3986*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003987WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003988WDI_WowlDelBcPtrnReq
3989(
3990 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
3991 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
3992 void* pUserData
3993)
3994{
3995 WDI_EventInfoType wdiEventData;
3996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3997
3998 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 ------------------------------------------------------------------------*/
4001 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4002 {
4003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4004 "WDI API call before module is initialized - Fail request");
4005
Jeff Johnsone7245742012-09-05 17:12:55 -07004006 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 }
4008
4009 /*------------------------------------------------------------------------
4010 Fill in Event data and post to the Main FSM
4011 ------------------------------------------------------------------------*/
4012 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004013 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004014 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004015 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004016 wdiEventData.pUserData = pUserData;
4017
4018 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4019}/*WDI_WowlDelBcPtrnReq*/
4020
4021/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004022 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004023 wants to enter the Wowl state to minimize unnecessary
4024 host wakeup while in power save. Upon the call of this
4025 API the WLAN DAL will pack and send a HAL Wowl enter
4026 request message to the lower RIVA sub-system if DAL is
4027 in state STARTED.
4028
4029 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004030 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004031
4032 WDI_PostAssocReq must have been called.
4033
Jeff Johnsone7245742012-09-05 17:12:55 -07004034 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004036
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 wdiWowlEnterReqCb: callback for passing back the
4038 response of the enter Wowl operation received from the
4039 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004040
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 callback
4043
Jeff Johnson295189b2012-06-20 16:38:30 -07004044 @see WDI_PostAssocReq
4045 @return Result of the function call
4046*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004047WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004048WDI_WowlEnterReq
4049(
4050 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4051 WDI_WowlEnterReqCb wdiWowlEnterCb,
4052 void* pUserData
4053)
4054{
4055 WDI_EventInfoType wdiEventData;
4056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4057
4058 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 ------------------------------------------------------------------------*/
4061 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4062 {
4063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4064 "WDI API call before module is initialized - Fail request");
4065
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 }
4068
4069 /*------------------------------------------------------------------------
4070 Fill in Event data and post to the Main FSM
4071 ------------------------------------------------------------------------*/
4072 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004073 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004074 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004075 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004076 wdiEventData.pUserData = pUserData;
4077
4078 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4079}/*WDI_WowlEnterReq*/
4080
4081/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004082 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004083 wants to exit the Wowl state. Upon the call of this API
4084 the WLAN DAL will pack and send a HAL Wowl exit request
4085 message to the lower RIVA sub-system if DAL is in state
4086 STARTED.
4087
4088 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004089 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004090
4091 WDI_WowlEnterReq must have been called.
4092
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004095
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 wdiWowlExitReqCb: callback for passing back the response
4097 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004098
Jeff Johnson295189b2012-06-20 16:38:30 -07004099 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004100 callback
4101
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 @see WDI_WowlEnterReq
4103 @return Result of the function call
4104*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004105WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004106WDI_WowlExitReq
4107(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004108 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004109 WDI_WowlExitReqCb wdiWowlExitCb,
4110 void* pUserData
4111)
4112{
4113 WDI_EventInfoType wdiEventData;
4114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4115
4116 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 ------------------------------------------------------------------------*/
4119 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4120 {
4121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4122 "WDI API call before module is initialized - Fail request");
4123
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 }
4126
4127 /*------------------------------------------------------------------------
4128 Fill in Event data and post to the Main FSM
4129 ------------------------------------------------------------------------*/
4130 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004131 wdiEventData.pEventData = pwdiWowlExitParams;
4132 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004133 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004134 wdiEventData.pUserData = pUserData;
4135
4136 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4137}/*WDI_WowlExitReq*/
4138
4139/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004140 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 the upper MAC wants to dynamically adjusts the listen
4142 interval based on the WLAN/MSM activity. Upon the call
4143 of this API the WLAN DAL will pack and send a HAL
4144 configure Apps Cpu Wakeup State request message to the
4145 lower RIVA sub-system.
4146
4147 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004148 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004149
Jeff Johnsone7245742012-09-05 17:12:55 -07004150
4151 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 Apps Cpu Wakeup State as specified by the
4153 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004154
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4156 back the response of the configure Apps Cpu Wakeup State
4157 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004158
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 callback
4161
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 @return Result of the function call
4163*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004165WDI_ConfigureAppsCpuWakeupStateReq
4166(
4167 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4168 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4169 void* pUserData
4170)
4171{
4172 WDI_EventInfoType wdiEventData;
4173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4174
4175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 ------------------------------------------------------------------------*/
4178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4179 {
4180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4181 "WDI API call before module is initialized - Fail request");
4182
Jeff Johnsone7245742012-09-05 17:12:55 -07004183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 }
4185
4186 /*------------------------------------------------------------------------
4187 Fill in Event data and post to the Main FSM
4188 ------------------------------------------------------------------------*/
4189 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4191 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4192 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 wdiEventData.pUserData = pUserData;
4194
4195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4196}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4197/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 to to perform a flush operation on a given AC. Upon the
4200 call of this API the WLAN DAL will pack and send a HAL
4201 Flush AC request message to the lower RIVA sub-system if
4202 DAL is in state STARTED.
4203
4204 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004206
4207 WDI_AddBAReq must have been called.
4208
Jeff Johnsone7245742012-09-05 17:12:55 -07004209 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004210 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004211
Jeff Johnson295189b2012-06-20 16:38:30 -07004212 wdiFlushAcRspCb: callback for passing back the response
4213 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004214
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 callback
4217
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 @see WDI_AddBAReq
4219 @return Result of the function call
4220*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004221WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004222WDI_FlushAcReq
4223(
4224 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4225 WDI_FlushAcRspCb wdiFlushAcRspCb,
4226 void* pUserData
4227)
4228{
4229 WDI_EventInfoType wdiEventData;
4230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4231
4232 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004233 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004234 ------------------------------------------------------------------------*/
4235 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4236 {
4237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4238 "WDI API call before module is initialized - Fail request");
4239
Jeff Johnsone7245742012-09-05 17:12:55 -07004240 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 }
4242
4243 /*------------------------------------------------------------------------
4244 Fill in Event data and post to the Main FSM
4245 ------------------------------------------------------------------------*/
4246 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004247 wdiEventData.pEventData = pwdiFlushAcReqParams;
4248 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4249 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 wdiEventData.pUserData = pUserData;
4251
4252 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4253
4254}/*WDI_FlushAcReq*/
4255
4256/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004257 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 wants to notify the lower mac on a BT AMP event. This is
4259 to inform BTC-SLM that some BT AMP event occurred. Upon
4260 the call of this API the WLAN DAL will pack and send a
4261 HAL BT AMP event request message to the lower RIVA
4262 sub-system if DAL is in state STARTED.
4263
4264 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004266
Jeff Johnsone7245742012-09-05 17:12:55 -07004267
4268 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004269 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004270
Jeff Johnson295189b2012-06-20 16:38:30 -07004271 wdiBtAmpEventRspCb: callback for passing back the
4272 response of the BT AMP event operation received from the
4273 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004274
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 callback
4277
Jeff Johnson295189b2012-06-20 16:38:30 -07004278 @return Result of the function call
4279*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004281WDI_BtAmpEventReq
4282(
4283 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4284 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4285 void* pUserData
4286)
4287{
4288 WDI_EventInfoType wdiEventData;
4289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4290
4291 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004292 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004293 ------------------------------------------------------------------------*/
4294 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4295 {
4296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4297 "WDI API call before module is initialized - Fail request");
4298
Jeff Johnsone7245742012-09-05 17:12:55 -07004299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 }
4301
4302 /*------------------------------------------------------------------------
4303 Fill in Event data and post to the Main FSM
4304 ------------------------------------------------------------------------*/
4305 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004306 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4307 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4308 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004309 wdiEventData.pUserData = pUserData;
4310
4311 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4312
4313}/*WDI_BtAmpEventReq*/
4314
Jeff Johnsone7245742012-09-05 17:12:55 -07004315#ifdef FEATURE_OEM_DATA_SUPPORT
4316/**
4317 @brief WDI_Start Oem Data Req will be called when the upper MAC
4318 wants to notify the lower mac on a oem data Req event.Upon
4319 the call of this API the WLAN DAL will pack and send a
4320 HAL OEM Data Req event request message to the lower RIVA
4321 sub-system if DAL is in state STARTED.
4322
4323 In state BUSY this request will be queued. Request won't
4324 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004325
4326
Jeff Johnsone7245742012-09-05 17:12:55 -07004327
4328 @param pwdiOemDataReqParams: the Oem Data Req as
4329 specified by the Device Interface
4330
4331 wdiStartOemDataRspCb: callback for passing back the
4332 response of the Oem Data Req received from the
4333 device
4334
4335 pUserData: user data will be passed back with the
4336 callback
4337
4338 @return Result of the function call
4339*/
4340WDI_Status
4341WDI_StartOemDataReq
4342(
4343 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4344 WDI_oemDataRspCb wdiOemDataRspCb,
4345 void* pUserData
4346)
4347{
4348 WDI_EventInfoType wdiEventData;
4349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4350
4351 /*------------------------------------------------------------------------
4352 Sanity Check
4353 ------------------------------------------------------------------------*/
4354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4355 {
4356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4357 "WDI API call before module is initialized - Fail request");
4358
4359 return WDI_STATUS_E_NOT_ALLOWED;
4360 }
4361
4362 /*------------------------------------------------------------------------
4363 Fill in Event data and post to the Main FSM
4364 ------------------------------------------------------------------------*/
4365 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4366 wdiEventData.pEventData = pwdiOemDataReqParams;
4367 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4368 wdiEventData.pCBfnc = wdiOemDataRspCb;
4369 wdiEventData.pUserData = pUserData;
4370
4371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4372
4373
4374}
4375
4376#endif
4377
4378
4379/*========================================================================
4380
Jeff Johnson295189b2012-06-20 16:38:30 -07004381 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004382
Jeff Johnson295189b2012-06-20 16:38:30 -07004383==========================================================================*/
4384/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 the WLAN HW to change the current channel of operation.
4387 Upon the call of this API the WLAN DAL will pack and
4388 send a HAL Start request message to the lower RIVA
4389 sub-system if DAL is in state STARTED.
4390
4391 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004393
4394 WDI_Start must have been called.
4395
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004397 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004398
Jeff Johnson295189b2012-06-20 16:38:30 -07004399 wdiSwitchChRspCb: callback for passing back the response
4400 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004401
Jeff Johnson295189b2012-06-20 16:38:30 -07004402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004403 callback
4404
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 @see WDI_Start
4406 @return Result of the function call
4407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004409WDI_SwitchChReq
4410(
4411 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4412 WDI_SwitchChRspCb wdiSwitchChRspCb,
4413 void* pUserData
4414)
4415{
4416 WDI_EventInfoType wdiEventData;
4417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4418
4419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 ------------------------------------------------------------------------*/
4422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4423 {
4424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4425 "WDI API call before module is initialized - Fail request");
4426
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 }
4429
4430 /*------------------------------------------------------------------------
4431 Fill in Event data and post to the Main FSM
4432 ------------------------------------------------------------------------*/
4433 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004434 wdiEventData.pEventData = pwdiSwitchChReqParams;
4435 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4436 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004437 wdiEventData.pUserData = pUserData;
4438
4439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4440
4441}/*WDI_SwitchChReq*/
4442
4443
4444/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004445 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004446 wishes to add or update a STA in HW. Upon the call of
4447 this API the WLAN DAL will pack and send a HAL Start
4448 message request message to the lower RIVA sub-system if
4449 DAL is in state STARTED.
4450
4451 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004453
4454 WDI_Start must have been called.
4455
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004458
Jeff Johnson295189b2012-06-20 16:38:30 -07004459 wdiConfigSTARspCb: callback for passing back the
4460 response of the config STA operation received from the
4461 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004462
Jeff Johnson295189b2012-06-20 16:38:30 -07004463 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004464 callback
4465
Jeff Johnson295189b2012-06-20 16:38:30 -07004466 @see WDI_Start
4467 @return Result of the function call
4468*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004469WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004470WDI_ConfigSTAReq
4471(
4472 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4473 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4474 void* pUserData
4475)
4476{
4477 WDI_EventInfoType wdiEventData;
4478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4479
4480 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004481 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004482 ------------------------------------------------------------------------*/
4483 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4484 {
4485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4486 "WDI API call before module is initialized - Fail request");
4487
Jeff Johnsone7245742012-09-05 17:12:55 -07004488 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004489 }
4490
4491 /*------------------------------------------------------------------------
4492 Fill in Event data and post to the Main FSM
4493 ------------------------------------------------------------------------*/
4494 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004495 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4496 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4497 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 wdiEventData.pUserData = pUserData;
4499
4500 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4501
4502}/*WDI_ConfigSTAReq*/
4503
4504/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004505 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 wants to change the state of an ongoing link. Upon the
4507 call of this API the WLAN DAL will pack and send a HAL
4508 Start message request message to the lower RIVA
4509 sub-system if DAL is in state STARTED.
4510
4511 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004512 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004513
4514 WDI_JoinStartReq must have been called.
4515
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004518
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 wdiSetLinkStateRspCb: callback for passing back the
4520 response of the set link state operation received from
4521 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004522
Jeff Johnson295189b2012-06-20 16:38:30 -07004523 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004524 callback
4525
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 @see WDI_JoinStartReq
4527 @return Result of the function call
4528*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004529WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004530WDI_SetLinkStateReq
4531(
4532 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4533 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4534 void* pUserData
4535)
4536{
4537 WDI_EventInfoType wdiEventData;
4538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4539
4540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004542 ------------------------------------------------------------------------*/
4543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4544 {
4545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4546 "WDI API call before module is initialized - Fail request");
4547
Jeff Johnsone7245742012-09-05 17:12:55 -07004548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004549 }
4550
4551 /*------------------------------------------------------------------------
4552 Fill in Event data and post to the Main FSM
4553 ------------------------------------------------------------------------*/
4554 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004555 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4556 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4557 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004558 wdiEventData.pUserData = pUserData;
4559
4560 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4561
4562}/*WDI_SetLinkStateReq*/
4563
4564
4565/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004566 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004567 to get statistics (MIB counters) from the device. Upon
4568 the call of this API the WLAN DAL will pack and send a
4569 HAL Start request message to the lower RIVA sub-system
4570 if DAL is in state STARTED.
4571
4572 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004574
4575 WDI_Start must have been called.
4576
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004579
Jeff Johnson295189b2012-06-20 16:38:30 -07004580 wdiGetStatsRspCb: callback for passing back the response
4581 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004582
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 callback
4585
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 @see WDI_Start
4587 @return Result of the function call
4588*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004589WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004590WDI_GetStatsReq
4591(
4592 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4593 WDI_GetStatsRspCb wdiGetStatsRspCb,
4594 void* pUserData
4595)
4596{
4597 WDI_EventInfoType wdiEventData;
4598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4599
4600 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004602 ------------------------------------------------------------------------*/
4603 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4604 {
4605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4606 "WDI API call before module is initialized - Fail request");
4607
Jeff Johnsone7245742012-09-05 17:12:55 -07004608 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004609 }
4610
4611 /*------------------------------------------------------------------------
4612 Fill in Event data and post to the Main FSM
4613 ------------------------------------------------------------------------*/
4614 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004615 wdiEventData.pEventData = pwdiGetStatsReqParams;
4616 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4617 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004618 wdiEventData.pUserData = pUserData;
4619
4620 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4621
4622}/*WDI_GetStatsReq*/
4623
4624
4625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004627 it wishes to change the configuration of the WLAN
4628 Device. Upon the call of this API the WLAN DAL will pack
4629 and send a HAL Update CFG request message to the lower
4630 RIVA sub-system if DAL is in state STARTED.
4631
4632 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004633 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004634
4635 WDI_Start must have been called.
4636
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004639
Jeff Johnson295189b2012-06-20 16:38:30 -07004640 wdiUpdateCfgsRspCb: callback for passing back the
4641 response of the update cfg operation received from the
4642 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004643
Jeff Johnson295189b2012-06-20 16:38:30 -07004644 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004645 callback
4646
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 @see WDI_Start
4648 @return Result of the function call
4649*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004650WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004651WDI_UpdateCfgReq
4652(
4653 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4654 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4655 void* pUserData
4656)
4657{
4658 WDI_EventInfoType wdiEventData;
4659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4660
4661 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004662 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004663 ------------------------------------------------------------------------*/
4664 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4665 {
4666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4667 "WDI API call before module is initialized - Fail request");
4668
Jeff Johnsone7245742012-09-05 17:12:55 -07004669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004670 }
4671
4672 /*------------------------------------------------------------------------
4673 Fill in Event data and post to the Main FSM
4674 ------------------------------------------------------------------------*/
4675 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004676 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4677 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4678 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004679 wdiEventData.pUserData = pUserData;
4680
4681 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4682
4683}/*WDI_UpdateCfgReq*/
4684
4685
4686
4687/**
4688 @brief WDI_AddBAReq will be called when the upper MAC has setup
4689 successfully a BA session and needs to notify the HW for
4690 the appropriate settings to take place. Upon the call of
4691 this API the WLAN DAL will pack and send a HAL Add BA
4692 request message to the lower RIVA sub-system if DAL is
4693 in state STARTED.
4694
4695 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004697
4698 WDI_PostAssocReq must have been called.
4699
4700 @param wdiAddBAReqParams: the add BA parameters as specified by
4701 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004702
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 wdiAddBARspCb: callback for passing back the response of
4704 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004705
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004707 callback
4708
Jeff Johnson295189b2012-06-20 16:38:30 -07004709 @see WDI_PostAssocReq
4710 @return Result of the function call
4711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004713WDI_AddBAReq
4714(
4715 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4716 WDI_AddBARspCb wdiAddBARspCb,
4717 void* pUserData
4718)
4719{
4720 WDI_EventInfoType wdiEventData;
4721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4722
4723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 ------------------------------------------------------------------------*/
4726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4727 {
4728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4729 "WDI API call before module is initialized - Fail request");
4730
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 }
4733
4734 /*------------------------------------------------------------------------
4735 Fill in Event data and post to the Main FSM
4736 ------------------------------------------------------------------------*/
4737 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 wdiEventData.pEventData = pwdiAddBAReqParams;
4739 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4740 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 wdiEventData.pUserData = pUserData;
4742
4743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4744
4745}/*WDI_AddBAReq*/
4746
4747
4748/**
4749 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4750 successfully a BA session and needs to notify the HW for
4751 the appropriate settings to take place. Upon the call of
4752 this API the WLAN DAL will pack and send a HAL Add BA
4753 request message to the lower RIVA sub-system if DAL is
4754 in state STARTED.
4755
4756 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004757 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004758
4759 WDI_PostAssocReq must have been called.
4760
4761 @param wdiAddBAReqParams: the add BA parameters as specified by
4762 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004763
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 wdiAddBARspCb: callback for passing back the response of
4765 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004766
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004768 callback
4769
Jeff Johnson295189b2012-06-20 16:38:30 -07004770 @see WDI_PostAssocReq
4771 @return Result of the function call
4772*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004773WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004774WDI_TriggerBAReq
4775(
4776 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4777 WDI_TriggerBARspCb wdiTriggerBARspCb,
4778 void* pUserData
4779)
4780{
4781 WDI_EventInfoType wdiEventData;
4782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4783
4784 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004785 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004786 ------------------------------------------------------------------------*/
4787 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4788 {
4789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4790 "WDI API call before module is initialized - Fail request");
4791
Jeff Johnsone7245742012-09-05 17:12:55 -07004792 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 }
4794
4795 /*------------------------------------------------------------------------
4796 Fill in Event data and post to the Main FSM
4797 ------------------------------------------------------------------------*/
4798 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4800 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4801 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 wdiEventData.pUserData = pUserData;
4803
4804 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4805
4806}/*WDI_AddBAReq*/
4807
4808/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004809 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 wishes to update any of the Beacon parameters used by HW.
4811 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4812 message to the lower RIVA sub-system if DAL is in state
4813 STARTED.
4814
4815 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004817
4818 WDI_PostAssocReq must have been called.
4819
Jeff Johnsone7245742012-09-05 17:12:55 -07004820 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004822
Jeff Johnson295189b2012-06-20 16:38:30 -07004823 wdiUpdateBeaconParamsRspCb: callback for passing back the
4824 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004825
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 callback
4828
Jeff Johnson295189b2012-06-20 16:38:30 -07004829 @see WDI_PostAssocReq
4830 @return Result of the function call
4831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004833WDI_UpdateBeaconParamsReq
4834(
4835 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4836 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4837 void* pUserData
4838)
4839{
4840 WDI_EventInfoType wdiEventData;
4841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4842
4843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 ------------------------------------------------------------------------*/
4846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4847 {
4848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4849 "WDI API call before module is initialized - Fail request");
4850
Jeff Johnsone7245742012-09-05 17:12:55 -07004851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 }
4853
4854 /*------------------------------------------------------------------------
4855 Fill in Event data and post to the Main FSM
4856 ------------------------------------------------------------------------*/
4857 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004858 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4859 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4860 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 wdiEventData.pUserData = pUserData;
4862
4863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4864
4865}/*WDI_UpdateBeaconParamsReq*/
4866
4867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 wishes to update the Beacon template used by HW.
4870 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4871 message to the lower RIVA sub-system if DAL is in state
4872 STARTED.
4873
4874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004876
4877 WDI_PostAssocReq must have been called.
4878
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004881
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 wdiSendBeaconParamsRspCb: callback for passing back the
4883 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004884
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 callback
4887
Jeff Johnson295189b2012-06-20 16:38:30 -07004888 @see WDI_PostAssocReq
4889 @return Result of the function call
4890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004892WDI_SendBeaconParamsReq
4893(
4894 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4895 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4896 void* pUserData
4897)
4898{
4899 WDI_EventInfoType wdiEventData;
4900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4901
4902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 ------------------------------------------------------------------------*/
4905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4906 {
4907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4908 "WDI API call before module is initialized - Fail request");
4909
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 }
4912
4913 /*------------------------------------------------------------------------
4914 Fill in Event data and post to the Main FSM
4915 ------------------------------------------------------------------------*/
4916 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004917 wdiEventData.pEventData = pwdiSendBeaconParams;
4918 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
4919 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 wdiEventData.pUserData = pUserData;
4921
4922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4923
4924}/*WDI_SendBeaconParamsReq*/
4925
4926/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004927 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07004928 upper MAC wants to update the probe response template to
4929 be transmitted as Soft AP
4930 Upon the call of this API the WLAN DAL will
4931 pack and send the probe rsp template message to the
4932 lower RIVA sub-system if DAL is in state STARTED.
4933
4934 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004935 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004936
4937
Jeff Johnsone7245742012-09-05 17:12:55 -07004938 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004940
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 wdiSendBeaconParamsRspCb: callback for passing back the
4942 response of the Send Beacon Params operation received
4943 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004944
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004946 callback
4947
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 @see WDI_AddBAReq
4949 @return Result of the function call
4950*/
4951
Jeff Johnsone7245742012-09-05 17:12:55 -07004952WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004953WDI_UpdateProbeRspTemplateReq
4954(
4955 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
4956 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
4957 void* pUserData
4958)
4959{
4960 WDI_EventInfoType wdiEventData;
4961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4962
4963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 ------------------------------------------------------------------------*/
4966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4967 {
4968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4969 "WDI API call before module is initialized - Fail request");
4970
Jeff Johnsone7245742012-09-05 17:12:55 -07004971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 }
4973
4974 /*------------------------------------------------------------------------
4975 Fill in Event data and post to the Main FSM
4976 ------------------------------------------------------------------------*/
4977 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004978 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
4979 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
4980 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004981 wdiEventData.pUserData = pUserData;
4982
4983 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4984
4985}/*WDI_UpdateProbeRspTemplateReq*/
4986
4987/**
4988 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
4989 to the NV memory.
4990
4991
4992 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
4993 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004994
Jeff Johnson295189b2012-06-20 16:38:30 -07004995 wdiNvDownloadRspCb: callback for passing back the response of
4996 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004997
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004999 callback
5000
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 @see WDI_PostAssocReq
5002 @return Result of the function call
5003*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005004WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005005WDI_NvDownloadReq
5006(
5007 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5008 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5009 void* pUserData
5010)
5011{
5012 WDI_EventInfoType wdiEventData;
5013
5014 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005015 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005016 ------------------------------------------------------------------------*/
5017 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5018 {
5019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5020 "WDI API call before module is initialized - Fail request");
5021
Jeff Johnsone7245742012-09-05 17:12:55 -07005022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005023 }
5024
5025 /*------------------------------------------------------------------------
5026 Fill in Event data and post to the Main FSM
5027 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5029 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5030 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5031 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005032 wdiEventData.pUserData = pUserData;
5033
5034 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5035
5036}/*WDI_NVDownloadReq*/
5037
5038#ifdef WLAN_FEATURE_P2P
5039/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005040 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005041 upper MAC wants to send Notice of Absence
5042 Upon the call of this API the WLAN DAL will
5043 pack and send the probe rsp template message to the
5044 lower RIVA sub-system if DAL is in state STARTED.
5045
5046 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005047 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005048
5049
Jeff Johnsone7245742012-09-05 17:12:55 -07005050 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005051 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005052
Jeff Johnson295189b2012-06-20 16:38:30 -07005053 wdiSendBeaconParamsRspCb: callback for passing back the
5054 response of the Send Beacon Params operation received
5055 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005056
Jeff Johnson295189b2012-06-20 16:38:30 -07005057 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005058 callback
5059
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 @see WDI_AddBAReq
5061 @return Result of the function call
5062*/
5063WDI_Status
5064WDI_SetP2PGONOAReq
5065(
5066 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5067 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5068 void* pUserData
5069)
5070{
5071 WDI_EventInfoType wdiEventData;
5072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5073
5074 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005075 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005076 ------------------------------------------------------------------------*/
5077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5078 {
5079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5080 "WDI API call before module is initialized - Fail request");
5081
Jeff Johnsone7245742012-09-05 17:12:55 -07005082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005083 }
5084
5085 /*------------------------------------------------------------------------
5086 Fill in Event data and post to the Main FSM
5087 ------------------------------------------------------------------------*/
5088 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005089 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5090 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5091 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 wdiEventData.pUserData = pUserData;
5093
5094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5095
5096}/*WDI_SetP2PGONOAReq*/
5097#endif
5098
5099/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005100 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 UMAC wanted to add STA self while opening any new session
5102 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005103 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005104
5105
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005107 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005108
Jeff Johnson295189b2012-06-20 16:38:30 -07005109 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005110 callback
5111
5112 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005113 @return Result of the function call
5114*/
5115WDI_Status
5116WDI_AddSTASelfReq
5117(
5118 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5119 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5120 void* pUserData
5121)
5122{
5123 WDI_EventInfoType wdiEventData;
5124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5125
5126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005128 ------------------------------------------------------------------------*/
5129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5130 {
5131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5132 "WDI API call before module is initialized - Fail request");
5133
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005135 }
5136
5137 /*------------------------------------------------------------------------
5138 Fill in Event data and post to the Main FSM
5139 ------------------------------------------------------------------------*/
5140 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5142 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5143 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 wdiEventData.pUserData = pUserData;
5145
5146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5147
5148}/*WDI_AddSTASelfReq*/
5149
5150
Jeff Johnsone7245742012-09-05 17:12:55 -07005151#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005152/**
5153 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5154 the device of a successful add TSpec negotiation. HW
5155 needs to receive the TSpec Info from the UMAC in order
5156 to configure properly the QoS data traffic. Upon the
5157 call of this API the WLAN DAL will pack and send a HAL
5158 Add TS request message to the lower RIVA sub-system if
5159 DAL is in state STARTED.
5160
5161 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005162 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005163
5164 WDI_PostAssocReq must have been called.
5165
5166 @param wdiAddTsReqParams: the add TS parameters as specified by
5167 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005168
Jeff Johnson295189b2012-06-20 16:38:30 -07005169 wdiAddTsRspCb: callback for passing back the response of
5170 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005171
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 callback
5174
Jeff Johnson295189b2012-06-20 16:38:30 -07005175 @see WDI_PostAssocReq
5176 @return Result of the function call
5177*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005178WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005179WDI_AggrAddTSReq
5180(
5181 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5182 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5183 void* pUserData
5184)
5185{
5186 WDI_EventInfoType wdiEventData;
5187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5188
5189 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005190 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005191 ------------------------------------------------------------------------*/
5192 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5193 {
5194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5195 "WDI API call before module is initialized - Fail request");
5196
Jeff Johnsone7245742012-09-05 17:12:55 -07005197 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005198 }
5199
5200 /*------------------------------------------------------------------------
5201 Fill in Event data and post to the Main FSM
5202 ------------------------------------------------------------------------*/
5203 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005204 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5205 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5206 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005207 wdiEventData.pUserData = pUserData;
5208
5209 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5210
5211}/*WDI_AggrAddTSReq*/
5212
5213#endif /* WLAN_FEATURE_VOWIFI_11R */
5214
5215#ifdef ANI_MANF_DIAG
5216/**
5217 @brief WDI_FTMCommandReq
5218 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005219
5220 @param ftmCommandReq: FTM Command Body
5221 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005223
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 @see
5225 @return Result of the function call
5226*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005227WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005228WDI_FTMCommandReq
5229(
5230 WDI_FTMCommandReqType *ftmCommandReq,
5231 WDI_FTMCommandRspCb ftmCommandRspCb,
5232 void *pUserData
5233)
5234{
5235 WDI_EventInfoType wdiEventData;
5236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5237
5238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005240 ------------------------------------------------------------------------*/
5241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5242 {
5243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5244 "WDI API call before module is initialized - Fail request");
5245
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005247 }
5248
5249 /*------------------------------------------------------------------------
5250 Fill in Event data and post to the Main FSM
5251 ------------------------------------------------------------------------*/
5252 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5253 wdiEventData.pEventData = (void *)ftmCommandReq;
5254 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5255 wdiEventData.pCBfnc = ftmCommandRspCb;
5256 wdiEventData.pUserData = pUserData;
5257
5258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5259}
Jeff Johnsone7245742012-09-05 17:12:55 -07005260#endif /* ANI_MANF_DIAG */
Jeff Johnson295189b2012-06-20 16:38:30 -07005261/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005262 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005263
5264 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005266
5267
5268 @param pwdiResumeReqParams: as specified by
5269 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005270
Jeff Johnson295189b2012-06-20 16:38:30 -07005271 wdiResumeReqRspCb: callback for passing back the response of
5272 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005273
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 callback
5276
5277 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005278 @return Result of the function call
5279*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005281WDI_HostResumeReq
5282(
5283 WDI_ResumeParamsType* pwdiResumeReqParams,
5284 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5285 void* pUserData
5286)
5287{
5288 WDI_EventInfoType wdiEventData;
5289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5290
5291 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005292 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005293 ------------------------------------------------------------------------*/
5294 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5295 {
5296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5297 "WDI API call before module is initialized - Fail request");
5298
Jeff Johnsone7245742012-09-05 17:12:55 -07005299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 }
5301
5302 /*------------------------------------------------------------------------
5303 Fill in Event data and post to the Main FSM
5304 ------------------------------------------------------------------------*/
5305 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 wdiEventData.pEventData = pwdiResumeReqParams;
5307 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5308 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005309 wdiEventData.pUserData = pUserData;
5310
5311 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5312
5313}/*WDI_HostResumeReq*/
5314
5315/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005317
5318 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005319 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005320
5321
5322 @param pwdiDelStaSelfReqParams: as specified by
5323 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005324
Jeff Johnson295189b2012-06-20 16:38:30 -07005325 wdiDelStaSelfRspCb: callback for passing back the response of
5326 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005327
Jeff Johnson295189b2012-06-20 16:38:30 -07005328 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005329 callback
5330
Jeff Johnson295189b2012-06-20 16:38:30 -07005331 @see WDI_PostAssocReq
5332 @return Result of the function call
5333*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005334WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005335WDI_DelSTASelfReq
5336(
5337 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5338 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5339 void* pUserData
5340)
5341{
5342 WDI_EventInfoType wdiEventData;
5343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5344
5345 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005346 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005347 ------------------------------------------------------------------------*/
5348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5349 {
5350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5351 "WDI API call before module is initialized - Fail request");
5352
Jeff Johnsone7245742012-09-05 17:12:55 -07005353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005354 }
5355
5356 /*------------------------------------------------------------------------
5357 Fill in Event data and post to the Main FSM
5358 ------------------------------------------------------------------------*/
5359 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005360 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5361 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5362 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005363 wdiEventData.pUserData = pUserData;
5364
5365 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5366
5367}/*WDI_AggrAddTSReq*/
5368
5369/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005370 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5371 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005372 Upon the call of this API the WLAN DAL will pack
5373 and send a HAL Set Tx Per Tracking request message to the
5374 lower RIVA sub-system if DAL is in state STARTED.
5375
5376 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005378
Jeff Johnsone7245742012-09-05 17:12:55 -07005379 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005380 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005381
Jeff Johnson295189b2012-06-20 16:38:30 -07005382 pwdiSetTxPerTrackingRspCb: callback for passing back the
5383 response of the set Tx PER Tracking configurations operation received
5384 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005385
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 callback
5388
Jeff Johnson295189b2012-06-20 16:38:30 -07005389 @return Result of the function call
5390*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005392WDI_SetTxPerTrackingReq
5393(
5394 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5395 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5396 void* pUserData
5397)
5398{
5399 WDI_EventInfoType wdiEventData;
5400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5401
5402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005404 ------------------------------------------------------------------------*/
5405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5406 {
5407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5408 "WDI API call before module is initialized - Fail request");
5409
Jeff Johnsone7245742012-09-05 17:12:55 -07005410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005411 }
5412
5413 /*------------------------------------------------------------------------
5414 Fill in Event data and post to the Main FSM
5415 ------------------------------------------------------------------------*/
5416 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005417 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005418 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 wdiEventData.pUserData = pUserData;
5421
5422 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5423
5424}/*WDI_SetTxPerTrackingReq*/
5425
5426/**
5427 @brief WDI_SetTmLevelReq
5428 If HW Thermal condition changed, driver should react based on new
5429 HW thermal condition.
5430
5431 @param pwdiSetTmLevelReq: New thermal condition information
5432
5433 pwdiSetTmLevelRspCb: callback
5434
5435 usrData: user data will be passed back with the
5436 callback
5437
5438 @return Result of the function call
5439*/
5440WDI_Status
5441WDI_SetTmLevelReq
5442(
5443 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5444 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5445 void *usrData
5446)
5447{
5448 WDI_EventInfoType wdiEventData;
5449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5450
5451 /*------------------------------------------------------------------------
5452 Sanity Check
5453 ------------------------------------------------------------------------*/
5454 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5455 {
5456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5457 "WDI API call before module is initialized - Fail request");
5458
5459 return WDI_STATUS_E_NOT_ALLOWED;
5460 }
5461
5462 /*------------------------------------------------------------------------
5463 Fill in Event data and post to the Main FSM
5464 ------------------------------------------------------------------------*/
5465 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5466 wdiEventData.pEventData = pwdiSetTmLevelReq;
5467 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5468 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5469 wdiEventData.pUserData = usrData;
5470
5471 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5472}
5473
5474/**
5475 @brief WDI_HostSuspendInd
5476
5477 Suspend Indication from the upper layer will be sent
5478 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005479
Jeff Johnson295189b2012-06-20 16:38:30 -07005480 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005481
5482 @see
5483
Jeff Johnson295189b2012-06-20 16:38:30 -07005484 @return Status of the request
5485*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005486WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005487WDI_HostSuspendInd
5488(
5489 WDI_SuspendParamsType* pwdiSuspendIndParams
5490)
5491{
5492
5493 WDI_EventInfoType wdiEventData;
5494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5495
5496 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005498 ------------------------------------------------------------------------*/
5499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5500 {
5501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5502 "WDI API call before module is initialized - Fail request");
5503
Jeff Johnsone7245742012-09-05 17:12:55 -07005504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005505 }
5506
5507 /*------------------------------------------------------------------------
5508 Fill in Event data and post to the Main FSM
5509 ------------------------------------------------------------------------*/
5510 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005511 wdiEventData.pEventData = pwdiSuspendIndParams;
5512 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5513 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005514 wdiEventData.pUserData = NULL;
5515
5516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5517
5518}/*WDI_HostSuspendInd*/
5519
5520/**
5521 @brief WDI_HALDumpCmdReq
5522 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005523
5524 @param halDumpCmdReqParams: Hal Dump Command Body
5525 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005526 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005527
Jeff Johnson295189b2012-06-20 16:38:30 -07005528 @see
5529 @return Result of the function call
5530*/
5531WDI_Status WDI_HALDumpCmdReq
5532(
5533 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5534 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5535 void *pUserData
5536)
5537{
5538 WDI_EventInfoType wdiEventData;
5539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5540
5541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005543 ------------------------------------------------------------------------*/
5544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5545 {
5546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5547 "WDI API call before module is initialized - Fail request");
5548
Jeff Johnsone7245742012-09-05 17:12:55 -07005549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005550 }
5551
5552 /*------------------------------------------------------------------------
5553 Fill in Event data and post to the Main FSM
5554 ------------------------------------------------------------------------*/
5555 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5556 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5557 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5558 wdiEventData.pCBfnc = halDumpCmdRspCb;
5559 wdiEventData.pUserData = pUserData;
5560
5561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5562}
5563
Jeff Johnsone7245742012-09-05 17:12:55 -07005564/*============================================================================
5565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005567
Jeff Johnson295189b2012-06-20 16:38:30 -07005568 ============================================================================*/
5569
5570/**
5571 @brief Main FSM Start function for all states except BUSY
5572
Jeff Johnsone7245742012-09-05 17:12:55 -07005573
5574 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005575 wdiEV: event posted to the main DAL FSM
5576 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 structure
5578
Jeff Johnson295189b2012-06-20 16:38:30 -07005579 @see
5580 @return Result of the function call
5581*/
5582WDI_Status
5583WDI_PostMainEvent
5584(
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 WDI_ControlBlockType* pWDICtx,
5586 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005588
Jeff Johnson295189b2012-06-20 16:38:30 -07005589)
5590{
Jeff Johnsone7245742012-09-05 17:12:55 -07005591 WDI_Status wdiStatus;
5592 WDI_MainFuncType pfnWDIMainEvHdlr;
5593 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5595
5596 /*-------------------------------------------------------------------------
5597 Sanity check
5598 -------------------------------------------------------------------------*/
5599 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5600 ( wdiEV >= WDI_MAX_EVENT ))
5601 {
5602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5603 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5604 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005606 }
5607
5608 /*Access to the global state must be locked */
5609 wpalMutexAcquire(&pWDICtx->wptMutex);
5610
5611 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005612 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005613
5614 wdiOldState = pWDICtx->uGlobalState;
5615
5616 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005617 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5618 response comes from CCPU for the request sent by host:
5619 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 -07005620 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 -07005621 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 CCPU:
5623 don't change the state */
5624 if ( WDI_RESPONSE_EVENT != wdiEV)
5625 {
5626 /*Transition to BUSY State - the request is now being processed by the FSM,
5627 if the request fails we shall transition back to the old state, if not
5628 the request will manage its own state transition*/
5629 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5630 }
5631 /* If the state function associated with the EV is NULL it means that this
5632 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 {
5635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005636 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005638 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005639 }
5640 else
5641 {
5642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005644 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005645 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005646 }
5647
5648 /* If a request handles itself well it will end up in a success or in a
5649 pending
5650 Success - means that the request was processed and the proper state
5651 transition already occurred or will occur when the resp is received
5652 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005653
Jeff Johnson295189b2012-06-20 16:38:30 -07005654 Pending - means the request could not be processed at this moment in time
5655 because the FSM was already busy so no state transition or dequeueing
5656 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005657
Jeff Johnson295189b2012-06-20 16:38:30 -07005658 Success for synchronous case means that the transition may occur and
5659 processing of pending requests may continue - so it should go through
5660 and restores the state and continue processing queued requests*/
5661 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5662 ( WDI_STATUS_PENDING != wdiStatus ))
5663 {
5664 if ( WDI_RESPONSE_EVENT != wdiEV)
5665 {
5666 /*The request has failed or could not be processed - transition back to
5667 the old state - check to see if anything was queued and try to execute
5668 The dequeue logic should post a message to a thread and return - no
5669 actual processing can occur */
5670 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5671 }
5672 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005673
Jeff Johnson295189b2012-06-20 16:38:30 -07005674 }
5675
5676 /* we have completed processing the event */
5677 wpalMutexRelease(&pWDICtx->wptMutex);
5678
Jeff Johnsone7245742012-09-05 17:12:55 -07005679 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005680
5681}/*WDI_PostMainEvent*/
5682
5683
5684/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005685 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005686--------------------------------------------------------------------------*/
5687/**
5688 @brief Main FSM Start function for all states except BUSY
5689
Jeff Johnsone7245742012-09-05 17:12:55 -07005690
5691 @param pWDICtx: pointer to the WLAN DAL context
5692 pEventData: pointer to the event information structure
5693
Jeff Johnson295189b2012-06-20 16:38:30 -07005694 @see
5695 @return Result of the function call
5696*/
5697WDI_Status
5698WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005699(
Jeff Johnson295189b2012-06-20 16:38:30 -07005700 WDI_ControlBlockType* pWDICtx,
5701 WDI_EventInfoType* pEventData
5702)
5703{
5704
5705 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005706 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005707 ----------------------------------------------------------------------*/
5708 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5709 {
5710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005712 pWDICtx, pEventData);
5713 return WDI_STATUS_E_FAILURE;
5714 }
5715
5716 wpalMutexAcquire(&pWDICtx->wptMutex);
5717
5718 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005719 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 ----------------------------------------------------------------------*/
5721 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5722 {
5723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5724 "Control Transport not yet Open - queueing the request");
5725
5726 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005728
5729 wpalMutexRelease(&pWDICtx->wptMutex);
5730 return WDI_STATUS_PENDING;
5731 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005732
Jeff Johnson295189b2012-06-20 16:38:30 -07005733 wpalMutexRelease(&pWDICtx->wptMutex);
5734
5735 /*Return Success*/
5736 return WDI_ProcessRequest( pWDICtx, pEventData );
5737
5738}/*WDI_MainStart*/
5739
5740/**
5741 @brief Main FSM Response function for state INIT
5742
Jeff Johnsone7245742012-09-05 17:12:55 -07005743
5744 @param pWDICtx: pointer to the WLAN DAL context
5745 pEventData: pointer to the event information structure
5746
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 @see
5748 @return Result of the function call
5749*/
5750WDI_Status
5751WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005752(
Jeff Johnson295189b2012-06-20 16:38:30 -07005753 WDI_ControlBlockType* pWDICtx,
5754 WDI_EventInfoType* pEventData
5755)
5756{
5757 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005759 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005760 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005761
5762 /*Return Success*/
5763 return WDI_STATUS_E_NOT_ALLOWED;
5764}/* WDI_MainRspInit */
5765
5766/**
5767 @brief Main FSM Close function for all states except BUSY
5768
Jeff Johnsone7245742012-09-05 17:12:55 -07005769
5770 @param pWDICtx: pointer to the WLAN DAL context
5771 pEventData: pointer to the event information structure
5772
Jeff Johnson295189b2012-06-20 16:38:30 -07005773 @see
5774 @return Result of the function call
5775*/
5776WDI_Status
5777WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005778(
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 WDI_ControlBlockType* pWDICtx,
5780 WDI_EventInfoType* pEventData
5781)
5782{
5783
5784 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005785 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005786 ----------------------------------------------------------------------*/
5787 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5788 {
5789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005790 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 pWDICtx, pEventData);
5792 return WDI_STATUS_E_FAILURE;
5793 }
5794
5795 /*Return Success*/
5796 return WDI_ProcessRequest( pWDICtx, pEventData );
5797
5798}/*WDI_MainClose*/
5799/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005800 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005801--------------------------------------------------------------------------*/
5802/**
5803 @brief Main FSM Start function for state STARTED
5804
Jeff Johnsone7245742012-09-05 17:12:55 -07005805
5806 @param pWDICtx: pointer to the WLAN DAL context
5807 pEventData: pointer to the event information structure
5808
Jeff Johnson295189b2012-06-20 16:38:30 -07005809 @see
5810 @return Result of the function call
5811*/
5812WDI_Status
5813WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005814(
Jeff Johnson295189b2012-06-20 16:38:30 -07005815 WDI_ControlBlockType* pWDICtx,
5816 WDI_EventInfoType* pEventData
5817)
5818{
5819 WDI_StartRspCb wdiStartRspCb = NULL;
5820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5821
5822 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005823 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 ----------------------------------------------------------------------*/
5825 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5826 {
5827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 pWDICtx, pEventData);
5830 return WDI_STATUS_E_FAILURE;
5831 }
5832
5833 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005834 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005835 ----------------------------------------------------------------------*/
5836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005837 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005838
5839 wpalMutexAcquire(&pWDICtx->wptMutex);
5840
5841 /*Transition back to started because the post function transitioned us to
5842 busy*/
5843 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5844
5845 /*Check to see if any request is pending*/
5846 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005847
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 wpalMutexRelease(&pWDICtx->wptMutex);
5849
5850 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005851 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5852
Jeff Johnson295189b2012-06-20 16:38:30 -07005853 /*Notify UMAC*/
5854 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5855
5856 /*Return Success*/
5857 return WDI_STATUS_SUCCESS;
5858
5859}/*WDI_MainStartStarted*/
5860
5861/**
5862 @brief Main FSM Stop function for state STARTED
5863
Jeff Johnsone7245742012-09-05 17:12:55 -07005864
5865 @param pWDICtx: pointer to the WLAN DAL context
5866 pEventData: pointer to the event information structure
5867
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 @see
5869 @return Result of the function call
5870*/
5871WDI_Status
5872WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005873(
Jeff Johnson295189b2012-06-20 16:38:30 -07005874 WDI_ControlBlockType* pWDICtx,
5875 WDI_EventInfoType* pEventData
5876)
5877{
5878 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005880 ----------------------------------------------------------------------*/
5881 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5882 {
5883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005884 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005885 pWDICtx, pEventData);
5886 return WDI_STATUS_E_FAILURE;
5887 }
5888
5889 /*State at this point is BUSY - because we enter this state before posting
5890 an event to the FSM in order to prevent potential race conditions*/
5891
5892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5893 "Processing stop request in FSM");
5894
5895 /*Return Success*/
5896 return WDI_ProcessRequest( pWDICtx, pEventData );
5897
5898}/*WDI_MainStopStarted*/
5899/**
5900 @brief Main FSM Request function for state started
5901
Jeff Johnsone7245742012-09-05 17:12:55 -07005902
5903 @param pWDICtx: pointer to the WLAN DAL context
5904 pEventData: pointer to the event information structure
5905
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 @see
5907 @return Result of the function call
5908*/
5909WDI_Status
5910WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005911(
Jeff Johnson295189b2012-06-20 16:38:30 -07005912 WDI_ControlBlockType* pWDICtx,
5913 WDI_EventInfoType* pEventData
5914)
5915{
5916
5917 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 ----------------------------------------------------------------------*/
5920 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5921 {
5922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005923 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005924 pWDICtx, pEventData);
5925 return WDI_STATUS_E_FAILURE;
5926 }
5927
5928 /*State at this point is BUSY - because we enter this state before posting
5929 an event to the FSM in order to prevent potential race conditions*/
5930
5931 /*Return Success*/
5932 return WDI_ProcessRequest( pWDICtx, pEventData );
5933
5934}/*WDI_MainReqStarted*/
5935
5936/**
5937 @brief Main FSM Response function for all states except INIT
5938
Jeff Johnsone7245742012-09-05 17:12:55 -07005939
5940 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005941 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07005942
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 @see
5944 @return Result of the function call
5945*/
5946WDI_Status
5947WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07005948(
Jeff Johnson295189b2012-06-20 16:38:30 -07005949 WDI_ControlBlockType* pWDICtx,
5950 WDI_EventInfoType* pEventData
5951)
5952{
Jeff Johnsone7245742012-09-05 17:12:55 -07005953 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005954 wpt_boolean expectedResponse;
5955
5956 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005957 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005958 ----------------------------------------------------------------------*/
5959 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5960 {
5961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005962 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 pWDICtx, pEventData);
5964 return WDI_STATUS_E_FAILURE;
5965 }
5966
5967 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
5968 {
5969 /* we received an expected response */
5970 expectedResponse = eWLAN_PAL_TRUE;
5971
5972 /*We expect that we will transition to started after this processing*/
5973 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
5974
5975 /* we are no longer expecting a response */
5976 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
5977 }
5978 else
5979 {
5980 /* we received an indication or unexpected response */
5981 expectedResponse = eWLAN_PAL_FALSE;
5982 /* for indications no need to update state from what it is right
5983 now, unless it explicitly does it in the indication handler (say
5984 for device failure ind) */
5985 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
5986 }
5987
5988 /*Process the response and indication */
5989 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
5990
5991 /*Lock the CB as we are about to do a state transition*/
5992 wpalMutexAcquire(&pWDICtx->wptMutex);
5993
5994 /*Transition to the expected state after the response processing
5995 - this should always be started state with the following exceptions:
5996 1. processing of a failed start response
5997 2. device failure detected while processing response
5998 3. stop response received*/
5999 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006000
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 /*Dequeue request that may have been queued while we were waiting for the
6002 response */
6003 if ( expectedResponse )
6004 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006005 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006006 }
6007
6008 wpalMutexRelease(&pWDICtx->wptMutex);
6009
6010 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006011 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006012
6013}/*WDI_MainRsp*/
6014
6015/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006016 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006017--------------------------------------------------------------------------*/
6018/**
6019 @brief Main FSM Stop function for state STOPPED
6020
Jeff Johnsone7245742012-09-05 17:12:55 -07006021
6022 @param pWDICtx: pointer to the WLAN DAL context
6023 pEventData: pointer to the event information structure
6024
Jeff Johnson295189b2012-06-20 16:38:30 -07006025 @see
6026 @return Result of the function call
6027*/
6028WDI_Status
6029WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006030(
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 WDI_ControlBlockType* pWDICtx,
6032 WDI_EventInfoType* pEventData
6033)
6034{
6035 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006036 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006037 ----------------------------------------------------------------------*/
6038 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6039 {
6040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006041 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006042 pWDICtx, pEventData);
6043 return WDI_STATUS_E_FAILURE;
6044 }
6045
6046 /*We should normally not get a STOP request if we are already stopped
6047 since we should normally be stopped by the UMAC. However in some
6048 error situations we put ourselves in the stopped state without the
6049 UMAC knowing, so when we get a STOP request in this state we still
6050 process it since we need to clean up the underlying state */
6051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6052 "Processing stop request while stopped in FSM");
6053
6054 /*Return Success*/
6055 return WDI_ProcessRequest( pWDICtx, pEventData );
6056
6057}/*WDI_MainStopStopped*/
6058
6059/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006060 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006061--------------------------------------------------------------------------*/
6062/**
6063 @brief Main FSM Start function for state BUSY
6064
Jeff Johnsone7245742012-09-05 17:12:55 -07006065
6066 @param pWDICtx: pointer to the WLAN DAL context
6067 pEventData: pointer to the event information structure
6068
Jeff Johnson295189b2012-06-20 16:38:30 -07006069 @see
6070 @return Result of the function call
6071*/
6072WDI_Status
6073WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006074(
Jeff Johnson295189b2012-06-20 16:38:30 -07006075 WDI_ControlBlockType* pWDICtx,
6076 WDI_EventInfoType* pEventData
6077)
6078{
6079 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006080 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006081 ----------------------------------------------------------------------*/
6082 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6083 {
6084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006085 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006086 pWDICtx, pEventData);
6087 return WDI_STATUS_E_FAILURE;
6088 }
6089
6090 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006091 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 ----------------------------------------------------------------------*/
6093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6094 "WDI Busy state - queue start request");
6095
6096 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006097 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006098
6099 /*Return Success*/
6100 return WDI_STATUS_PENDING;
6101}/*WDI_MainStartBusy*/
6102
6103/**
6104 @brief Main FSM Stop function for state BUSY
6105
Jeff Johnsone7245742012-09-05 17:12:55 -07006106
6107 @param pWDICtx: pointer to the WLAN DAL context
6108 pEventData: pointer to the event information structure
6109
Jeff Johnson295189b2012-06-20 16:38:30 -07006110 @see
6111 @return Result of the function call
6112*/
6113WDI_Status
6114WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006115(
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 WDI_ControlBlockType* pWDICtx,
6117 WDI_EventInfoType* pEventData
6118)
6119{
6120 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006121 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 ----------------------------------------------------------------------*/
6123 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6124 {
6125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006126 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006127 pWDICtx, pEventData);
6128 return WDI_STATUS_E_FAILURE;
6129 }
6130
6131 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 ----------------------------------------------------------------------*/
6134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6135 "WDI Busy state - queue stop request");
6136
Jeff Johnsone7245742012-09-05 17:12:55 -07006137 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006139
Jeff Johnson295189b2012-06-20 16:38:30 -07006140}/*WDI_MainStopBusy*/
6141
6142/**
6143 @brief Main FSM Request function for state BUSY
6144
Jeff Johnsone7245742012-09-05 17:12:55 -07006145
6146 @param pWDICtx: pointer to the WLAN DAL context
6147 pEventData: pointer to the event information structure
6148
Jeff Johnson295189b2012-06-20 16:38:30 -07006149 @see
6150 @return Result of the function call
6151*/
6152WDI_Status
6153WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006154(
Jeff Johnson295189b2012-06-20 16:38:30 -07006155 WDI_ControlBlockType* pWDICtx,
6156 WDI_EventInfoType* pEventData
6157)
6158{
6159 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006160 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006161 ----------------------------------------------------------------------*/
6162 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6163 {
6164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006165 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 pWDICtx, pEventData);
6167 return WDI_STATUS_E_FAILURE;
6168 }
6169
6170 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 ----------------------------------------------------------------------*/
6173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6174 "WDI Busy state - queue request %d because waiting for response %d",
6175 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6176
Jeff Johnsone7245742012-09-05 17:12:55 -07006177 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006178 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006179
Jeff Johnson295189b2012-06-20 16:38:30 -07006180}/*WDI_MainReqBusy*/
6181/**
6182 @brief Main FSM Close function for state BUSY
6183
Jeff Johnsone7245742012-09-05 17:12:55 -07006184
6185 @param pWDICtx: pointer to the WLAN DAL context
6186 pEventData: pointer to the event information structure
6187
Jeff Johnson295189b2012-06-20 16:38:30 -07006188 @see
6189 @return Result of the function call
6190*/
6191WDI_Status
6192WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006193(
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 WDI_ControlBlockType* pWDICtx,
6195 WDI_EventInfoType* pEventData
6196)
6197{
6198 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006200 ----------------------------------------------------------------------*/
6201 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6202 {
6203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006204 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 pWDICtx, pEventData);
6206 return WDI_STATUS_E_FAILURE;
6207 }
6208
6209 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006210 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 ----------------------------------------------------------------------*/
6212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6213 "WDI Busy state - queue close request");
6214
Jeff Johnsone7245742012-09-05 17:12:55 -07006215 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006216 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006217
Jeff Johnson295189b2012-06-20 16:38:30 -07006218}/*WDI_MainCloseBusy*/
6219
6220/**
6221 @brief Main FSM Shutdown function for INIT & STARTED states
6222
6223
6224 @param pWDICtx: pointer to the WLAN DAL context
6225 pEventData: pointer to the event information structure
6226
6227 @see
6228 @return Result of the function call
6229*/
6230WDI_Status
6231WDI_MainShutdown
6232(
6233 WDI_ControlBlockType* pWDICtx,
6234 WDI_EventInfoType* pEventData
6235)
6236{
6237 /*--------------------------------------------------------------------
6238 Sanity Check
6239 ----------------------------------------------------------------------*/
6240 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6241 {
6242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6243 "Invalid parameters on Main Start %x %x",
6244 pWDICtx, pEventData);
6245 return WDI_STATUS_E_FAILURE;
6246 }
6247
6248 /*State at this point is BUSY - because we enter this state before posting
6249 an event to the FSM in order to prevent potential race conditions*/
6250
6251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6252 "Processing shutdown request in FSM");
6253
6254 /*Return Success*/
6255 return WDI_ProcessRequest( pWDICtx, pEventData );
6256
6257}/*WDI_MainShutdown*/
6258
6259/**
6260 @brief Main FSM Shutdown function for BUSY state
6261
6262
6263 @param pWDICtx: pointer to the WLAN DAL context
6264 pEventData: pointer to the event information structure
6265
6266 @see
6267 @return Result of the function call
6268*/
6269WDI_Status
6270WDI_MainShutdownBusy
6271(
6272 WDI_ControlBlockType* pWDICtx,
6273 WDI_EventInfoType* pEventData
6274)
6275{
6276 /*--------------------------------------------------------------------
6277 Sanity Check
6278 ----------------------------------------------------------------------*/
6279 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6280 {
6281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6282 "Invalid parameters on Main Start %x %x",
6283 pWDICtx, pEventData);
6284 return WDI_STATUS_E_FAILURE;
6285 }
6286
6287 /* If you are waiting for a HAL response at this stage, you are not
6288 * going to get it. Riva is already shutdown/crashed.
6289 */
6290 wpalTimerStop(&gWDICb.wptResponseTimer);
6291
6292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6293 "Processing shutdown request in FSM: Busy state ");
6294
6295 return WDI_ProcessRequest( pWDICtx, pEventData );
6296
6297}/*WDI_MainShutdownBusy*/
6298
6299
Jeff Johnsone7245742012-09-05 17:12:55 -07006300/*=======================================================================
6301
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006303
Jeff Johnson295189b2012-06-20 16:38:30 -07006304*=======================================================================*/
6305
6306/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006307 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006308========================================================================*/
6309/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006310 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006312
6313 @param pWDICtx: pointer to the WLAN DAL context
6314 pEventData: pointer to the event information structure
6315
Jeff Johnson295189b2012-06-20 16:38:30 -07006316 @see
6317 @return Result of the function call
6318*/
6319WDI_Status
6320WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006321(
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 WDI_ControlBlockType* pWDICtx,
6323 WDI_EventInfoType* pEventData
6324)
6325{
6326 WDI_StartReqParamsType* pwdiStartParams = NULL;
6327 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006329 wpt_uint16 usDataOffset = 0;
6330 wpt_uint16 usSendSize = 0;
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 tHalMacStartReqMsg halStartReq;
6333 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6335
6336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006337 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006338 -------------------------------------------------------------------------*/
6339 if (( NULL == pEventData ) ||
6340 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6341 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6342 {
6343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6344 "%s: Invalid parameters", __FUNCTION__);
6345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 }
6348
6349 /*-----------------------------------------------------------------------
6350 Get message buffer
6351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 pwdiStartParams->usConfigBufferLen;
6354
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 usLen,
6357 &pSendBuffer, &usDataOffset, &usSendSize))||
6358 ( usSendSize < (usDataOffset + usLen )))
6359 {
6360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6361 "Unable to get send buffer in start req %x %x %x",
6362 pEventData, pwdiStartParams, wdiStartRspCb);
6363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006365 }
6366
6367 /*-----------------------------------------------------------------------
6368 Fill in the message
6369 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006370 halStartReq.startReqParams.driverType =
6371 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006372
Jeff Johnsone7245742012-09-05 17:12:55 -07006373 halStartReq.startReqParams.uConfigBufferLen =
6374 pwdiStartParams->usConfigBufferLen;
6375 wpalMemoryCopy( pSendBuffer+usDataOffset,
6376 &halStartReq.startReqParams,
6377 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006378
Jeff Johnsone7245742012-09-05 17:12:55 -07006379 usDataOffset += sizeof(halStartReq.startReqParams);
6380 wpalMemoryCopy( pSendBuffer+usDataOffset,
6381 pwdiStartParams->pConfigBuffer,
6382 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006383
6384 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006385 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006386
6387 /*Save Low Level Ind CB and associated user data - it will be used further
6388 on when an indication is coming from the lower MAC*/
6389 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006390 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006391
Jeff Johnsone7245742012-09-05 17:12:55 -07006392 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006396 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6398
Jeff Johnsone7245742012-09-05 17:12:55 -07006399
Jeff Johnson295189b2012-06-20 16:38:30 -07006400}/*WDI_ProcessStartReq*/
6401
6402/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006403 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006405
6406 @param pWDICtx: pointer to the WLAN DAL context
6407 pEventData: pointer to the event information structure
6408
Jeff Johnson295189b2012-06-20 16:38:30 -07006409 @see
6410 @return Result of the function call
6411*/
6412WDI_Status
6413WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006414(
Jeff Johnson295189b2012-06-20 16:38:30 -07006415 WDI_ControlBlockType* pWDICtx,
6416 WDI_EventInfoType* pEventData
6417)
6418{
6419 WDI_StopReqParamsType* pwdiStopParams = NULL;
6420 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006421 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 wpt_uint16 usDataOffset = 0;
6423 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006424 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006425 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6427
6428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006430 -------------------------------------------------------------------------*/
6431 if (( NULL == pEventData ) ||
6432 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6433 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6434 {
6435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6436 "%s: Invalid parameters", __FUNCTION__);
6437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 }
6440
6441 /*-----------------------------------------------------------------------
6442 Get message buffer
6443 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006445 sizeof(halStopReq.stopReqParams),
6446 &pSendBuffer, &usDataOffset, &usSendSize))||
6447 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6448 {
6449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6450 "Unable to get send buffer in stop req %x %x %x",
6451 pEventData, pwdiStopParams, wdiStopRspCb);
6452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006454 }
6455
6456 /*-----------------------------------------------------------------------
6457 Fill in the message
6458 -----------------------------------------------------------------------*/
6459 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6460 pwdiStopParams->wdiStopReason);
6461
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 wpalMemoryCopy( pSendBuffer+usDataOffset,
6463 &halStopReq.stopReqParams,
6464 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006465
6466 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006467 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006468
6469 /*! TO DO: stop the data services */
6470 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6471 {
6472 /*Stop the STA Table !UT- check this logic again
6473 It is safer to do it here than on the response - because a stop is imminent*/
6474 WDI_STATableStop(pWDICtx);
6475
6476 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006477 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6478 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006479 {
6480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6481 "WDI Init failed to reset power state event");
6482
Jeff Johnsone7245742012-09-05 17:12:55 -07006483 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006484 return VOS_STATUS_E_FAILURE;
6485 }
6486 /* Stop Transport Driver, DXE */
6487 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6488 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006489 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006490 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006491 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6492 WDI_SET_POWER_STATE_TIMEOUT);
6493 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006494 {
6495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6496 "WDI Init failed to wait on an event");
6497
Jeff Johnsone7245742012-09-05 17:12:55 -07006498 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006499 return VOS_STATUS_E_FAILURE;
6500 }
6501 }
6502
6503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006507 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6508
6509}/*WDI_ProcessStopReq*/
6510
6511/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006514
6515 @param pWDICtx: pointer to the WLAN DAL context
6516 pEventData: pointer to the event information structure
6517
Jeff Johnson295189b2012-06-20 16:38:30 -07006518 @see
6519 @return Result of the function call
6520*/
6521WDI_Status
6522WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006523(
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 WDI_ControlBlockType* pWDICtx,
6525 WDI_EventInfoType* pEventData
6526)
6527{
Jeff Johnsone7245742012-09-05 17:12:55 -07006528 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6530
6531 /*Lock control block for cleanup*/
6532 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006533
Jeff Johnson295189b2012-06-20 16:38:30 -07006534 /*Clear all pending request*/
6535 WDI_ClearPendingRequests(pWDICtx);
6536
6537 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006538 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006539
6540 /* Close Data transport*/
6541 /* FTM mode does not open Data Path */
6542 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6543 {
6544 WDTS_Close(pWDICtx);
6545 }
6546
6547 /*Close the STA Table !UT- check this logic again*/
6548 WDI_STATableClose(pWDICtx);
6549
6550 /*close the PAL */
6551 wptStatus = wpalClose(pWDICtx->pPALContext);
6552 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6553 {
6554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6555 "Failed to wpal Close %d", wptStatus);
6556 WDI_ASSERT(0);
6557 }
6558
6559 /*Transition back to init state*/
6560 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6561
6562 wpalMutexRelease(&pWDICtx->wptMutex);
6563
6564 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006565 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006566
Jeff Johnsone7245742012-09-05 17:12:55 -07006567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006568}/*WDI_ProcessCloseReq*/
6569
6570
6571/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006572 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006573===========================================================================*/
6574
6575/**
6576 @brief Process Init Scan Request function (called when Main FSM
6577 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006578
6579 @param pWDICtx: pointer to the WLAN DAL context
6580 pEventData: pointer to the event information structure
6581
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 @see
6583 @return Result of the function call
6584*/
6585WDI_Status
6586WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006587(
Jeff Johnson295189b2012-06-20 16:38:30 -07006588 WDI_ControlBlockType* pWDICtx,
6589 WDI_EventInfoType* pEventData
6590)
6591{
6592 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6593 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006594 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006595 wpt_uint16 usDataOffset = 0;
6596 wpt_uint16 usSendSize = 0;
6597 wpt_uint8 i = 0;
6598
6599 tHalInitScanReqMsg halInitScanReqMsg;
6600
Jeff Johnsone7245742012-09-05 17:12:55 -07006601 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 * It shold be removed once host and riva changes are in sync*/
6603 tHalInitScanConReqMsg halInitScanConReqMsg;
6604
6605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6606
6607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 -------------------------------------------------------------------------*/
6610 if (( NULL == pEventData ) ||
6611 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6612 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6613 {
6614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6615 "%s: Invalid parameters", __FUNCTION__);
6616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006618 }
6619
6620#if 0
6621 wpalMutexAcquire(&pWDICtx->wptMutex);
6622 /*-----------------------------------------------------------------------
6623 Check to see if SCAN is already in progress - if so reject the req
6624 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006625 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006626 -----------------------------------------------------------------------*/
6627 if ( pWDICtx->bScanInProgress )
6628 {
6629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6630 "Scan is already in progress - subsequent scan is not allowed"
6631 " until the first scan completes");
6632
6633 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006635 }
6636
Jeff Johnsone7245742012-09-05 17:12:55 -07006637 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6638 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006639
6640 wpalMutexRelease(&pWDICtx->wptMutex);
6641#endif
6642
6643 if (pwdiInitScanParams->wdiReqInfo.bUseNOA)
6644 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006645 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006646 * It shold be removed once host and riva changes are in sync*/
6647 /*-----------------------------------------------------------------------
6648 Get message buffer
6649 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006650 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006651 sizeof(halInitScanConReqMsg.initScanParams),
6652 &pSendBuffer, &usDataOffset, &usSendSize))||
6653 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6654 {
6655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6656 "Unable to get send buffer in init scan req %x %x %x",
6657 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006660 }
6661
6662
6663 /*-----------------------------------------------------------------------
6664 Fill in the message
6665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006666 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006667 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6668
6669 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6670 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6671
Jeff Johnsone7245742012-09-05 17:12:55 -07006672 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006673 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006674 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006675 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006676 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6678
6679 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6680 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6681
6682#ifdef WLAN_FEATURE_P2P
6683 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6684 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6685#endif
6686
Jeff Johnsone7245742012-09-05 17:12:55 -07006687 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6689
6690 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6691 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006692 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6694 }
6695
Jeff Johnsone7245742012-09-05 17:12:55 -07006696 wpalMemoryCopy( pSendBuffer+usDataOffset,
6697 &halInitScanConReqMsg.initScanParams,
6698 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006699 }
6700 else
6701 {
6702 /*-----------------------------------------------------------------------
6703 Get message buffer
6704 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006705 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006706 sizeof(halInitScanReqMsg.initScanParams),
6707 &pSendBuffer, &usDataOffset, &usSendSize))||
6708 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6709 {
6710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6711 "Unable to get send buffer in init scan req %x %x %x",
6712 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006715 }
6716
6717
6718 /*-----------------------------------------------------------------------
6719 Fill in the message
6720 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006721 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006722 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6723
6724 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6725 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6726
Jeff Johnsone7245742012-09-05 17:12:55 -07006727 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006728 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006729 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006730 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006732 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6733
6734 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6735 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6736
Jeff Johnsone7245742012-09-05 17:12:55 -07006737 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006738 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6739
6740 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6741 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6744 }
6745
Jeff Johnsone7245742012-09-05 17:12:55 -07006746 wpalMemoryCopy( pSendBuffer+usDataOffset,
6747 &halInitScanReqMsg.initScanParams,
6748 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 }
6750
6751 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006752 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006753
6754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006755 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006758 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6759
6760}/*WDI_ProcessInitScanReq*/
6761
6762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006763 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006764 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006765
6766 @param pWDICtx: pointer to the WLAN DAL context
6767 pEventData: pointer to the event information structure
6768
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 @see
6770 @return Result of the function call
6771*/
6772WDI_Status
6773WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006774(
Jeff Johnson295189b2012-06-20 16:38:30 -07006775 WDI_ControlBlockType* pWDICtx,
6776 WDI_EventInfoType* pEventData
6777)
6778{
6779 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6780 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 wpt_uint16 usDataOffset = 0;
6783 wpt_uint16 usSendSize = 0;
6784
Jeff Johnsone7245742012-09-05 17:12:55 -07006785 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6787
6788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006790 -------------------------------------------------------------------------*/
6791 if (( NULL == pEventData ) ||
6792 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6793 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6794 {
6795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6796 "%s: Invalid parameters", __FUNCTION__);
6797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 }
6800
6801#if 0
6802 wpalMutexAcquire(&pWDICtx->wptMutex);
6803 /*-----------------------------------------------------------------------
6804 Check to see if SCAN is already in progress - start scan is only
6805 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006806 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006808 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6810 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6811 {
6812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6813 "Scan start not allowed in this state %d %d",
6814 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006815
Jeff Johnson295189b2012-06-20 16:38:30 -07006816 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006818 }
6819
Jeff Johnsone7245742012-09-05 17:12:55 -07006820 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006821
6822 wpalMutexRelease(&pWDICtx->wptMutex);
6823#endif
6824
6825 /*-----------------------------------------------------------------------
6826 Get message buffer
6827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 sizeof(halStartScanReqMsg.startScanParams),
6830 &pSendBuffer, &usDataOffset, &usSendSize))||
6831 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6832 {
6833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6834 "Unable to get send buffer in start scan req %x %x %x",
6835 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006838 }
6839
Jeff Johnsone7245742012-09-05 17:12:55 -07006840 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006841 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006842 wpalMemoryCopy( pSendBuffer+usDataOffset,
6843 &halStartScanReqMsg.startScanParams,
6844 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006845
6846 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006848
6849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006850 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6854}/*WDI_ProcessStartScanReq*/
6855
6856
6857/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006858 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006859 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006860
6861 @param pWDICtx: pointer to the WLAN DAL context
6862 pEventData: pointer to the event information structure
6863
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 @see
6865 @return Result of the function call
6866*/
6867WDI_Status
6868WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006869(
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 WDI_ControlBlockType* pWDICtx,
6871 WDI_EventInfoType* pEventData
6872)
6873{
6874 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6875 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006876 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 wpt_uint16 usDataOffset = 0;
6878 wpt_uint16 usSendSize = 0;
6879
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6882
6883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 -------------------------------------------------------------------------*/
6886 if (( NULL == pEventData ) ||
6887 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6888 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6889 {
6890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6891 "%s: Invalid parameters", __FUNCTION__);
6892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006894 }
6895
Jeff Johnsone7245742012-09-05 17:12:55 -07006896 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6897 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006898 * forwarded to HAL and result in hang*/
6899#if 0
6900 wpalMutexAcquire(&pWDICtx->wptMutex);
6901 /*-----------------------------------------------------------------------
6902 Check to see if SCAN is already in progress - end scan is only
6903 allowed when a scan is ongoing and the state of the scan procedure
6904 is started
6905 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006906 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006907 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
6908 {
6909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6910 "End start not allowed in this state %d %d",
6911 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006912
Jeff Johnson295189b2012-06-20 16:38:30 -07006913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006915 }
6916
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918
6919 wpalMutexRelease(&pWDICtx->wptMutex);
6920#endif
6921
6922 /*-----------------------------------------------------------------------
6923 Get message buffer
6924 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 sizeof(halEndScanReqMsg.endScanParams),
6927 &pSendBuffer, &usDataOffset, &usSendSize))||
6928 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
6929 {
6930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6931 "Unable to get send buffer in start scan req %x %x %x",
6932 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
6933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 }
6936
6937 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
6938
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 wpalMemoryCopy( pSendBuffer+usDataOffset,
6940 &halEndScanReqMsg.endScanParams,
6941 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006942
6943 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006945
6946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006947 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006948 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006949 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
6951}/*WDI_ProcessEndScanReq*/
6952
6953
6954/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006957
6958 @param pWDICtx: pointer to the WLAN DAL context
6959 pEventData: pointer to the event information structure
6960
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 @see
6962 @return Result of the function call
6963*/
6964WDI_Status
6965WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006966(
Jeff Johnson295189b2012-06-20 16:38:30 -07006967 WDI_ControlBlockType* pWDICtx,
6968 WDI_EventInfoType* pEventData
6969)
6970{
6971 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
6972 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07006973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 wpt_uint16 usDataOffset = 0;
6975 wpt_uint16 usSendSize = 0;
6976 wpt_uint8 i = 0;
6977
Jeff Johnsone7245742012-09-05 17:12:55 -07006978 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6980
6981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006983 -------------------------------------------------------------------------*/
6984 if (( NULL == pEventData ) ||
6985 ( NULL == pEventData->pEventData) ||
6986 ( NULL == pEventData->pCBfnc))
6987 {
6988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6989 "%s: Invalid parameters", __FUNCTION__);
6990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006992 }
6993
6994 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
6995 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07006996 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6997 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 * forwarded to HAL and result in hang*/
6999#if 0
7000 wpalMutexAcquire(&pWDICtx->wptMutex);
7001 /*-----------------------------------------------------------------------
7002 Check to see if SCAN is already in progress
7003 Finish scan gets invoked any scan states. ie. abort scan
7004 It should be allowed in any states.
7005 -----------------------------------------------------------------------*/
7006 if ( !pWDICtx->bScanInProgress )
7007 {
7008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7009 "Finish start not allowed in this state %d",
7010 pWDICtx->bScanInProgress );
7011
7012 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 }
7015
7016 /*-----------------------------------------------------------------------
7017 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007018 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007019 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007020 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7021 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007022 wpalMutexRelease(&pWDICtx->wptMutex);
7023#endif
7024
7025 if ( pWDICtx->bInBmps )
7026 {
7027 // notify DTS that we are entering BMPS
7028 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7029 }
7030
7031 /*-----------------------------------------------------------------------
7032 Get message buffer
7033 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007035 sizeof(halFinishScanReqMsg.finishScanParams),
7036 &pSendBuffer, &usDataOffset, &usSendSize))||
7037 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7038 {
7039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7040 "Unable to get send buffer in start scan req %x %x %x",
7041 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007044 }
7045
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007050 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7051
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7054
7055 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7056 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7057
Jeff Johnsone7245742012-09-05 17:12:55 -07007058 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007062 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007063 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7064
Jeff Johnsone7245742012-09-05 17:12:55 -07007065 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7067
7068 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7069 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7072 }
7073
7074 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7075 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7076
Jeff Johnsone7245742012-09-05 17:12:55 -07007077 wpalMemoryCopy( pSendBuffer+usDataOffset,
7078 &halFinishScanReqMsg.finishScanParams,
7079 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007080
7081 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007083
7084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007085 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007087 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007088 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7089}/*WDI_ProcessFinishScanReq*/
7090
7091
7092/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007094==========================================================================*/
7095/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 @brief Process BSS Join for a given Session
7097
7098 @param pWDICtx: pointer to the WLAN DAL context
7099 pEventData: pointer to the event information structure
7100
Jeff Johnson295189b2012-06-20 16:38:30 -07007101 @see
7102 @return Result of the function call
7103*/
7104WDI_Status
7105WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007106(
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 WDI_ControlBlockType* pWDICtx,
7108 WDI_JoinReqParamsType* pwdiJoinParams,
7109 WDI_JoinRspCb wdiJoinRspCb,
7110 void* pUserData
7111)
7112{
7113 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 wpt_uint16 usDataOffset = 0;
7116 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007117 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007118
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7121
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007122 wpalMutexAcquire(&pWDICtx->wptMutex);
7123
Jeff Johnson295189b2012-06-20 16:38:30 -07007124 /*------------------------------------------------------------------------
7125 Check to see if we have any session with this BSSID already stored, we
7126 should not
7127 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7129 pwdiJoinParams->wdiReqInfo.macBSSID,
7130 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007131
7132 if ( NULL != pBSSSes )
7133 {
7134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007135 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7136 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007137
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007138 /*reset the bAssociationInProgress otherwise the next
7139 *join request will be queued*/
7140 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7141 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -07007142 /* Reload the driver if we hit this error condition */
7143 wpalWlanReload();
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 }
7146
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007151 if ( NULL == pBSSSes )
7152 {
7153
7154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7155 "DAL has no free sessions - cannot run another join");
7156
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007157 /*reset the bAssociationInProgress otherwise the next
7158 *join request will be queued*/
7159 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007161 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 }
7163
7164 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7166 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 WDI_MAC_ADDR_LEN);
7168
7169 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007170 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007172
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 wpalMutexRelease(&pWDICtx->wptMutex);
7174
7175 /*-----------------------------------------------------------------------
7176 Get message buffer
7177 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 sizeof(halJoinReqMsg.joinReqParams),
7180 &pSendBuffer, &usDataOffset, &usSendSize))||
7181 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7182 {
7183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7184 "Unable to get send buffer in join req %x %x %x",
7185 pUserData, pwdiJoinParams, wdiJoinRspCb);
7186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 }
7189
7190 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007191 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007192
7193 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 pwdiJoinParams->wdiReqInfo.macSTASelf,
7195 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007196
Jeff Johnsone7245742012-09-05 17:12:55 -07007197 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007198 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7199
7200 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7201
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007202#ifdef WLAN_FEATURE_VOWIFI
7203 halJoinReqMsg.joinReqParams.maxTxPower =
7204 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7205#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007207 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7208#endif
7209
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7212 wdiSecondaryChannelOffset);
7213
Jeff Johnsone7245742012-09-05 17:12:55 -07007214 wpalMemoryCopy( pSendBuffer+usDataOffset,
7215 &halJoinReqMsg.joinReqParams,
7216 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007217
7218 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007219 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007220
7221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7225 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007226
7227}/*WDI_ProcessBSSSessionJoinReq*/
7228
7229/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007230 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007232
7233 @param pWDICtx: pointer to the WLAN DAL context
7234 pEventData: pointer to the event information structure
7235
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 @see
7237 @return Result of the function call
7238*/
7239WDI_Status
7240WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007241(
Jeff Johnson295189b2012-06-20 16:38:30 -07007242 WDI_ControlBlockType* pWDICtx,
7243 WDI_EventInfoType* pEventData
7244)
7245{
7246 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7247 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7248 WDI_JoinRspCb wdiJoinRspCb = NULL;
7249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7250
7251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 -------------------------------------------------------------------------*/
7254 if (( NULL == pEventData ) ||
7255 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7256 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7257 {
7258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7259 "%s: Invalid parameters", __FUNCTION__);
7260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007262 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007263
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 /*-------------------------------------------------------------------------
7265 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 -------------------------------------------------------------------------*/
7268 wpalMutexAcquire(&pWDICtx->wptMutex);
7269
7270 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7271 {
7272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7273 "Association is currently in progress, queueing new join req");
7274
7275 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 pwdiJoinParams->wdiReqInfo.macBSSID);
7278
7279 wpalMutexRelease(&pWDICtx->wptMutex);
7280
Jeff Johnsone7245742012-09-05 17:12:55 -07007281 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 }
7283
7284 /*Starting a new association */
7285 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7286 wpalMutexRelease(&pWDICtx->wptMutex);
7287
7288 /*Process the Join Request*/
7289 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7290 wdiJoinRspCb,pEventData->pUserData);
7291
7292}/*WDI_ProcessJoinReq*/
7293
7294
7295/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007298
7299 @param pWDICtx: pointer to the WLAN DAL context
7300 pEventData: pointer to the event information structure
7301
Jeff Johnson295189b2012-06-20 16:38:30 -07007302 @see
7303 @return Result of the function call
7304*/
7305WDI_Status
7306WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007307(
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 WDI_ControlBlockType* pWDICtx,
7309 WDI_EventInfoType* pEventData
7310)
7311{
7312 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7313 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 wpt_uint16 uMsgSize = 0;
7317 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 wpt_uint16 usDataOffset = 0;
7319 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007321
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7324
7325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 -------------------------------------------------------------------------*/
7328 if (( NULL == pEventData ) ||
7329 ( NULL == pEventData->pEventData ) ||
7330 ( NULL == pEventData->pCBfnc ))
7331 {
7332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7333 "%s: Invalid parameters", __FUNCTION__);
7334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 }
7337
7338 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7339 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7340 /*-------------------------------------------------------------------------
7341 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007342 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 -------------------------------------------------------------------------*/
7344 wpalMutexAcquire(&pWDICtx->wptMutex);
7345
7346 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7350 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7351 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007352
Jeff Johnsone7245742012-09-05 17:12:55 -07007353 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007354 {
7355#ifdef WLAN_FEATURE_VOWIFI_11R
7356 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007359 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007360 if ( NULL == pBSSSes )
7361 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007362
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7364 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007365
Jeff Johnson295189b2012-06-20 16:38:30 -07007366 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007369
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7372 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007374
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7378#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007380 * Request in case of IBSS*/
7381 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7382 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7383 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7384 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7385 {
7386 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007387 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007388 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 if ( NULL == pBSSSes )
7391 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007392
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7394 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007395
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007399
Jeff Johnson295189b2012-06-20 16:38:30 -07007400 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7402 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007404
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7408 }
7409 else
7410 {
7411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007412 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7413 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7414 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7415
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 /* for IBSS testing */
7417 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007418 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 }
7420#endif
7421 }
7422
7423 /*------------------------------------------------------------------------
7424 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 ------------------------------------------------------------------------*/
7427 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7428 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7430 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7431 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7432 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007433
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007435
7436 wpalMutexRelease(&pWDICtx->wptMutex);
7437
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 }
7440
7441 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7443 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 sizeof(pWDICtx->wdiCachedConfigBssReq));
7445
7446 wpalMutexRelease(&pWDICtx->wptMutex);
7447
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7449#ifdef WLAN_FEATURE_11AC
7450 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007451 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 else
7453#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007454 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007455
7456 /*-----------------------------------------------------------------------
7457 Get message buffer
7458 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7461 ( usSendSize < (usDataOffset + uMsgSize )))
7462 {
7463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7464 "Unable to get send buffer in config bss req %x %x %x",
7465 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 }
7469
7470 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007471#ifdef WLAN_FEATURE_11AC
7472 if (WDI_getFwWlanFeatCaps(DOT11AC))
7473 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7474 &pwdiConfigBSSParams->wdiReqInfo);
7475 else
7476#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 &pwdiConfigBSSParams->wdiReqInfo);
7479
7480 /* Need to fill in the STA Index to invalid, since at this point we have not
7481 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007483
7484 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7486
7487 wpalMemoryCopy( pSendBuffer+usDataOffset,
7488 &halConfigBssReqMsg.uBssParams.configBssParams,
7489 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007490
7491 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007492 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007493
7494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007497 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7498 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007499 WDI_CONFIG_BSS_RESP);
7500
7501}/*WDI_ProcessConfigBSSReq*/
7502
7503
7504/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007507
7508 @param pWDICtx: pointer to the WLAN DAL context
7509 pEventData: pointer to the event information structure
7510
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 @see
7512 @return Result of the function call
7513*/
7514WDI_Status
7515WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007516(
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 WDI_ControlBlockType* pWDICtx,
7518 WDI_EventInfoType* pEventData
7519)
7520{
7521 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7522 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007523 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 wpt_uint16 usDataOffset = 0;
7527 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007528 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007529
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7532
7533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 -------------------------------------------------------------------------*/
7536 if (( NULL == pEventData ) ||
7537 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7538 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7539 {
7540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7541 "%s: Invalid parameters", __FUNCTION__);
7542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 }
7545
7546 /*-------------------------------------------------------------------------
7547 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 -------------------------------------------------------------------------*/
7550 wpalMutexAcquire(&pWDICtx->wptMutex);
7551
7552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007554 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7556 pwdiDelBSSParams->ucBssIdx,
7557 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 {
7561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007562 "%s: BSS does not yet exist. ucBssIdx %d",
7563 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -07007564 /* Allow the DEL_BSS to be processed by the HAL ,
7565 * This can come if some error condition happens
7566 * during the join process
7567 * Hit this condition if WDI cleans up BSS table
7568 * as part of the set link state with WDI_LINK_IDLE_STATE*/
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 }
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -07007570 else
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 {
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -07007572 /*------------------------------------------------------------------------
7573 Check if this BSS is being currently processed or queued,
7574 if queued - queue the new request as well
7575 ------------------------------------------------------------------------*/
7576 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7577 {
7578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7579 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7580 __func__, pwdiDelBSSParams->ucBssIdx);
7581
7582 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7583
7584 wpalMutexRelease(&pWDICtx->wptMutex);
7585
7586 return wdiStatus;
7587 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 /*-----------------------------------------------------------------------
7590 If we receive a Del BSS request for an association that is already in
7591 progress, it indicates that the assoc has failed => we no longer have
7592 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 -----------------------------------------------------------------------*/
7595 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7596 {
7597 /*We can switch to false here because even if a subsequent Join comes in
7598 it will only be processed when DAL transitions out of BUSY state which
7599 happens when the Del BSS request comes */
7600 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7601
7602 /*Former association is complete - prepare next pending assoc for
7603 processing */
7604 WDI_DequeueAssocRequest(pWDICtx);
7605 }
7606
7607 wpalMutexRelease(&pWDICtx->wptMutex);
7608 /*-----------------------------------------------------------------------
7609 Get message buffer
7610 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 sizeof(halBssReqMsg.deleteBssParams),
7613 &pSendBuffer, &usDataOffset, &usSendSize))||
7614 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7615 {
7616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7617 "Unable to get send buffer in start req %x %x %x",
7618 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 }
7622
7623 /*Fill in the message request structure*/
7624
7625 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -07007626 halBssReqMsg.deleteBssParams.bssIdx = pwdiDelBSSParams->ucBssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007627
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 wpalMemoryCopy( pSendBuffer+usDataOffset,
7629 &halBssReqMsg.deleteBssParams,
7630 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007631
7632 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007634
Jeff Johnsone7245742012-09-05 17:12:55 -07007635
Jeff Johnson295189b2012-06-20 16:38:30 -07007636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7641
Jeff Johnsone7245742012-09-05 17:12:55 -07007642
Jeff Johnson295189b2012-06-20 16:38:30 -07007643}/*WDI_ProcessDelBSSReq*/
7644
7645/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007646 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007648
7649 @param pWDICtx: pointer to the WLAN DAL context
7650 pEventData: pointer to the event information structure
7651
Jeff Johnson295189b2012-06-20 16:38:30 -07007652 @see
7653 @return Result of the function call
7654*/
7655WDI_Status
7656WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007657(
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 WDI_ControlBlockType* pWDICtx,
7659 WDI_EventInfoType* pEventData
7660)
7661{
7662 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7663 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007664 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007665 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007667 wpt_uint16 usDataOffset = 0;
7668 wpt_uint16 usSendSize = 0;
7669 wpt_uint16 uMsgSize = 0;
7670 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007672
Jeff Johnsone7245742012-09-05 17:12:55 -07007673 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7675
7676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 -------------------------------------------------------------------------*/
7679 if (( NULL == pEventData ) ||
7680 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7681 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7682 {
7683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7684 "%s: Invalid parameters", __FUNCTION__);
7685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 }
7688
7689 /*-------------------------------------------------------------------------
7690 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 -------------------------------------------------------------------------*/
7693 wpalMutexAcquire(&pWDICtx->wptMutex);
7694
7695 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7699 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7700 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007701
7702 if ( NULL == pBSSSes )
7703 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7705 "%s: Association sequence for this BSS does not yet exist - "
7706 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7707 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007708
7709 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 }
7712
7713 /*------------------------------------------------------------------------
7714 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 ------------------------------------------------------------------------*/
7717 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7718 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7720 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7721 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007722
Jeff Johnsone7245742012-09-05 17:12:55 -07007723 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007724
7725 wpalMutexRelease(&pWDICtx->wptMutex);
7726
Jeff Johnsone7245742012-09-05 17:12:55 -07007727 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 }
7729
7730 /*-----------------------------------------------------------------------
7731 If Post Assoc was not yet received - the current association must
7732 be in progress
7733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7736 {
7737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7738 "Association sequence for this BSS association no longer in "
7739 "progress - not allowed");
7740
7741 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 }
7744
7745 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 -----------------------------------------------------------------------*/
7748 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7749 {
7750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7751 "Post Assoc not allowed before JOIN - failing request");
7752
7753 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 }
7756
7757 wpalMutexRelease(&pWDICtx->wptMutex);
7758
7759 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7760 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7761 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7766 ( usSendSize < (usDataOffset + uMsgSize )))
7767 {
7768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7769 "Unable to get send buffer in start req %x %x %x",
7770 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 }
7774
7775 /*Copy the STA parameters */
7776 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7777 &pwdiPostAssocParams->wdiSTAParams );
7778
7779 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007780 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 WDI_STATableFindStaidByAddr(pWDICtx,
7782 pwdiPostAssocParams->wdiSTAParams.macSTA,
7783 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7784 {
7785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7786 "This station does not exist in the WDI Station Table %d");
7787 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 }
7790
7791 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 pBSSSes->ucBSSIdx;
7794
7795 /*Copy the BSS parameters */
7796 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7797 &pwdiPostAssocParams->wdiBSSParams);
7798
7799 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 WDI_STATableFindStaidByAddr(pWDICtx,
7802 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 {
7805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7806 "This station does not exist in the WDI Station Table %d");
7807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 }
7810
7811 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 pBSSSes->ucBSSIdx;
7814
Jeff Johnsone7245742012-09-05 17:12:55 -07007815
7816 wpalMemoryCopy( pSendBuffer+usDataOffset,
7817 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7818 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007819
7820 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7821
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7823 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7824 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007825
Jeff Johnsone7245742012-09-05 17:12:55 -07007826
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007828 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007829
Jeff Johnsone7245742012-09-05 17:12:55 -07007830
7831 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007834
7835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007836 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007837 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7840
Jeff Johnsone7245742012-09-05 17:12:55 -07007841
Jeff Johnson295189b2012-06-20 16:38:30 -07007842}/*WDI_ProcessPostAssocReq*/
7843
7844/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007847
7848 @param pWDICtx: pointer to the WLAN DAL context
7849 pEventData: pointer to the event information structure
7850
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 @see
7852 @return Result of the function call
7853*/
7854WDI_Status
7855WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007856(
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 WDI_ControlBlockType* pWDICtx,
7858 WDI_EventInfoType* pEventData
7859)
7860{
7861 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7862 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007865 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 wpt_uint16 usDataOffset = 0;
7867 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007868 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7870
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7873
7874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007876 -------------------------------------------------------------------------*/
7877 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7878 ( NULL == pEventData->pCBfnc ))
7879 {
7880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7881 "%s: Invalid parameters", __FUNCTION__);
7882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 }
7885
7886 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
7887 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
7888 /*-------------------------------------------------------------------------
7889 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 -------------------------------------------------------------------------*/
7892 wpalMutexAcquire(&pWDICtx->wptMutex);
7893
7894 /*------------------------------------------------------------------------
7895 Find the BSS for which the request is made and identify WDI session
7896 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
7898 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 &macBSSID))
7900 {
7901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7902 "This station does not exist in the WDI Station Table %d");
7903 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 }
7906
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
7908 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7911 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
7912 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007913
7914 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 }
7917
7918 /*------------------------------------------------------------------------
7919 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 ------------------------------------------------------------------------*/
7922 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7923 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7925 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7926 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007927
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007930 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 }
7932
7933 wpalMutexRelease(&pWDICtx->wptMutex);
7934 /*-----------------------------------------------------------------------
7935 Get message buffer
7936 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 sizeof(halDelStaReqMsg.delStaParams),
7939 &pSendBuffer, &usDataOffset, &usSendSize))||
7940 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
7941 {
7942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7943 "Unable to get send buffer in start req %x %x %x",
7944 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
7945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 }
7948
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
7950 wpalMemoryCopy( pSendBuffer+usDataOffset,
7951 &halDelStaReqMsg.delStaParams,
7952 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007953
7954 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007955 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007956
7957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
7962
7963}/*WDI_ProcessDelSTAReq*/
7964
7965
7966/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007968==========================================================================*/
7969/**
7970 @brief Process Set BSS Key Request function (called when Main FSM
7971 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007972
7973 @param pWDICtx: pointer to the WLAN DAL context
7974 pEventData: pointer to the event information structure
7975
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 @see
7977 @return Result of the function call
7978*/
7979WDI_Status
7980WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007981(
Jeff Johnson295189b2012-06-20 16:38:30 -07007982 WDI_ControlBlockType* pWDICtx,
7983 WDI_EventInfoType* pEventData
7984)
7985{
7986 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
7987 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 wpt_uint16 usDataOffset = 0;
7992 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007993 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
7995 wpt_uint8 keyIndex = 0;
7996
7997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7998
7999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 -------------------------------------------------------------------------*/
8002 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8003 ( NULL == pEventData->pCBfnc ))
8004 {
8005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8006 "%s: Invalid parameters", __FUNCTION__);
8007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 }
8010
8011 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8012 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8013 /*-------------------------------------------------------------------------
8014 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008015 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 -------------------------------------------------------------------------*/
8017 wpalMutexAcquire(&pWDICtx->wptMutex);
8018
8019 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8023 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8024 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008025
Jeff Johnsone7245742012-09-05 17:12:55 -07008026 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 {
8028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8030 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008031
8032 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 }
8035
8036 /*------------------------------------------------------------------------
8037 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008038 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 ------------------------------------------------------------------------*/
8040 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8041 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8043 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8044 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008045
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 }
8050
8051
8052 wpalMutexRelease(&pWDICtx->wptMutex);
8053 /*-----------------------------------------------------------------------
8054 Get message buffer
8055 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8058 &pSendBuffer, &usDataOffset, &usSendSize))||
8059 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8060 {
8061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8062 "Unable to get send buffer in set bss key req %x %x %x",
8063 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 }
8067
8068 /*-----------------------------------------------------------------------
8069 Copy the Key parameters into the HAL message
8070 -----------------------------------------------------------------------*/
8071
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008073
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8076
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8079
8080 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8081 keyIndex++)
8082 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8085 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8086 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8087 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8088 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8089 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008094 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8096 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 WDI_MAX_KEY_LENGTH);
8099 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008100
8101 wpalMemoryCopy( pSendBuffer+usDataOffset,
8102 &halSetBssKeyReqMsg.setBssKeyParams,
8103 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008104
8105 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008107
8108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8112 wdiSetBSSKeyRspCb, pEventData->pUserData,
8113 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008114
8115}/*WDI_ProcessSetBssKeyReq*/
8116
8117/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008120
8121 @param pWDICtx: pointer to the WLAN DAL context
8122 pEventData: pointer to the event information structure
8123
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 @see
8125 @return Result of the function call
8126*/
8127WDI_Status
8128WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008129(
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 WDI_ControlBlockType* pWDICtx,
8131 WDI_EventInfoType* pEventData
8132)
8133{
8134 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8135 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 wpt_uint16 usDataOffset = 0;
8140 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8144
8145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 -------------------------------------------------------------------------*/
8148 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8149 ( NULL == pEventData->pCBfnc ))
8150 {
8151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8152 "%s: Invalid parameters", __FUNCTION__);
8153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 }
8156
8157 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8158 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8159 /*-------------------------------------------------------------------------
8160 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 -------------------------------------------------------------------------*/
8163 wpalMutexAcquire(&pWDICtx->wptMutex);
8164
8165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8169 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8170 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008171
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 {
8174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8176 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008177
8178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 }
8181
8182 /*------------------------------------------------------------------------
8183 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 ------------------------------------------------------------------------*/
8186 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8187 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8189 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8190 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008191
Jeff Johnsone7245742012-09-05 17:12:55 -07008192 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 }
8196
8197
8198 wpalMutexRelease(&pWDICtx->wptMutex);
8199
8200 /*-----------------------------------------------------------------------
8201 Get message buffer
8202 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8205 &pSendBuffer, &usDataOffset, &usSendSize))||
8206 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8207 {
8208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8209 "Unable to get send buffer in set bss key req %x %x %x",
8210 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 }
8214 /*-----------------------------------------------------------------------
8215 Copy the Key parameters into the HAL message
8216 -----------------------------------------------------------------------*/
8217 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8218
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8221
8222 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8223
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8226
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 wpalMemoryCopy( pSendBuffer+usDataOffset,
8228 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8229 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008230
8231 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233
8234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008240}/*WDI_ProcessRemoveBssKeyReq*/
8241
8242/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008245
8246 @param pWDICtx: pointer to the WLAN DAL context
8247 pEventData: pointer to the event information structure
8248
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 @see
8250 @return Result of the function call
8251*/
8252WDI_Status
8253WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008254(
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 WDI_ControlBlockType* pWDICtx,
8256 WDI_EventInfoType* pEventData
8257)
8258{
8259 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8260 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8261 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 wpt_uint16 usDataOffset = 0;
8264 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8269 wpt_uint8 keyIndex = 0;
8270
8271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8272
8273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 -------------------------------------------------------------------------*/
8276 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8277 ( NULL == pEventData->pCBfnc ))
8278 {
8279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8280 "%s: Invalid parameters", __FUNCTION__);
8281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 }
8284
8285 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8286 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8287 /*-------------------------------------------------------------------------
8288 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 -------------------------------------------------------------------------*/
8291 wpalMutexAcquire(&pWDICtx->wptMutex);
8292
8293 /*------------------------------------------------------------------------
8294 Find the BSS for which the request is made and identify WDI session
8295 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8297 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 &macBSSID))
8299 {
8300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8301 "This station does not exist in the WDI Station Table %d");
8302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 }
8305
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8307 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8310 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8311 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008312
8313 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008316
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 /*------------------------------------------------------------------------
8318 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 ------------------------------------------------------------------------*/
8321 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8322 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8324 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8325 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008326
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 }
8331
8332
8333 wpalMutexRelease(&pWDICtx->wptMutex);
8334 /*-----------------------------------------------------------------------
8335 Get message buffer
8336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8339 &pSendBuffer, &usDataOffset, &usSendSize))||
8340 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8341 {
8342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8343 "Unable to get send buffer in set bss key req %x %x %x",
8344 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 }
8348 /*-----------------------------------------------------------------------
8349 Copy the STA Key parameters into the HAL message
8350 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8353
Jeff Johnsone7245742012-09-05 17:12:55 -07008354 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8356
8357 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8358
8359 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8360
8361 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8362
8363#ifdef WLAN_SOFTAP_FEATURE
8364 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8365 keyIndex++)
8366 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8369 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8370 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8371 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8372 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8373 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8380 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 WDI_MAX_KEY_LENGTH);
8383 }
8384#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8387 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8388 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8389 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8390 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8391 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8398 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 WDI_MAX_KEY_LENGTH);
8401#endif
8402
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 wpalMemoryCopy( pSendBuffer+usDataOffset,
8404 &halSetStaKeyReqMsg.setStaKeyParams,
8405 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008406
8407 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008409
8410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8414 wdiSetSTAKeyRspCb, pEventData->pUserData,
8415 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008416
8417}/*WDI_ProcessSetSTAKeyReq*/
8418
8419/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008421 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008422
8423 @param pWDICtx: pointer to the WLAN DAL context
8424 pEventData: pointer to the event information structure
8425
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 @see
8427 @return Result of the function call
8428*/
8429WDI_Status
8430WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008431(
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 WDI_ControlBlockType* pWDICtx,
8433 WDI_EventInfoType* pEventData
8434)
8435{
8436 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8437 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8438 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 wpt_uint16 usDataOffset = 0;
8441 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 wpt_macAddr macBSSID;
8444 wpt_uint8 ucCurrentBSSSesIdx;
8445 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8447
8448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 -------------------------------------------------------------------------*/
8451 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8452 ( NULL == pEventData->pCBfnc ))
8453 {
8454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8455 "%s: Invalid parameters", __FUNCTION__);
8456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 }
8459
8460 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8461 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8462 /*-------------------------------------------------------------------------
8463 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008465 -------------------------------------------------------------------------*/
8466 wpalMutexAcquire(&pWDICtx->wptMutex);
8467
8468 /*------------------------------------------------------------------------
8469 Find the BSS for which the request is made and identify WDI session
8470 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8472 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 &macBSSID))
8474 {
8475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8476 "This station does not exist in the WDI Station Table %d");
8477 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 }
8480
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8482 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008483 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8485 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8486 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008487
8488 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008491
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 /*------------------------------------------------------------------------
8493 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008494 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 ------------------------------------------------------------------------*/
8496 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8497 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8499 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8500 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008501
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 }
8506
8507
8508
8509 wpalMutexRelease(&pWDICtx->wptMutex);
8510 /*-----------------------------------------------------------------------
8511 Get message buffer
8512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8515 &pSendBuffer, &usDataOffset, &usSendSize))||
8516 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8517 {
8518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8519 "Unable to get send buffer in set bss key req %x %x %x",
8520 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008523 }
8524
8525 /*-----------------------------------------------------------------------
8526 Copy the Key parameters into the HAL message
8527 -----------------------------------------------------------------------*/
8528
Jeff Johnsone7245742012-09-05 17:12:55 -07008529 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8531
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8534
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8537
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8540
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 wpalMemoryCopy( pSendBuffer+usDataOffset,
8542 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8543 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008544
8545 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008547
8548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008554
8555}/*WDI_ProcessRemoveSTAKeyReq*/
8556
8557/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008560
8561 @param pWDICtx: pointer to the WLAN DAL context
8562 pEventData: pointer to the event information structure
8563
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 @see
8565 @return Result of the function call
8566*/
8567WDI_Status
8568WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008569(
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 WDI_ControlBlockType* pWDICtx,
8571 WDI_EventInfoType* pEventData
8572)
8573{
8574 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8575 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8576 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 wpt_uint16 usDataOffset = 0;
8579 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008581 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8584 wpt_uint8 keyIndex = 0;
8585
8586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8587
8588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 -------------------------------------------------------------------------*/
8591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8592 ( NULL == pEventData->pCBfnc ))
8593 {
8594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8595 "%s: Invalid parameters", __FUNCTION__);
8596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008598 }
8599
8600 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8601 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8602 /*-------------------------------------------------------------------------
8603 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008604 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 -------------------------------------------------------------------------*/
8606 wpalMutexAcquire(&pWDICtx->wptMutex);
8607
8608 /*------------------------------------------------------------------------
8609 Find the BSS for which the request is made and identify WDI session
8610 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8612 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 &macBSSID))
8614 {
8615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8616 "This station does not exist in the WDI Station Table %d");
8617 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 }
8620
Jeff Johnsone7245742012-09-05 17:12:55 -07008621 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8622 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 {
8624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008625 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8626 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008627
8628 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008631
Jeff Johnson295189b2012-06-20 16:38:30 -07008632 /*------------------------------------------------------------------------
8633 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 ------------------------------------------------------------------------*/
8636 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8637 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8639 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8640 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008641
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 }
8646
8647
8648 wpalMutexRelease(&pWDICtx->wptMutex);
8649 /*-----------------------------------------------------------------------
8650 Get message buffer
8651 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8654 &pSendBuffer, &usDataOffset, &usSendSize))||
8655 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8656 {
8657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8658 "Unable to get send buffer in set bss key req %x %x %x",
8659 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 }
8663 /*-----------------------------------------------------------------------
8664 Copy the STA Key parameters into the HAL message
8665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008666 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008667 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8668
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008670 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8671
8672 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8673
8674 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8675
8676 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8677
8678#ifdef WLAN_SOFTAP_FEATURE
8679 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8680 keyIndex++)
8681 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8684 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8685 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8686 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8687 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8688 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008691 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008692 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8695 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 WDI_MAX_KEY_LENGTH);
8698 }
8699#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008701 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8702 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8703 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8704 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8705 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8706 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8713 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 WDI_MAX_KEY_LENGTH);
8716#endif
8717
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 wpalMemoryCopy( pSendBuffer+usDataOffset,
8719 &halSetStaKeyReqMsg.setStaKeyParams,
8720 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008721
8722 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008724
8725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8729 wdiSetSTAKeyRspCb, pEventData->pUserData,
8730 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008731
8732}/*WDI_ProcessSetSTABcastKeyReq*/
8733
8734/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008737
8738 @param pWDICtx: pointer to the WLAN DAL context
8739 pEventData: pointer to the event information structure
8740
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 @see
8742 @return Result of the function call
8743*/
8744WDI_Status
8745WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008746(
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 WDI_ControlBlockType* pWDICtx,
8748 WDI_EventInfoType* pEventData
8749)
8750{
8751 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8752 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8753 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 wpt_uint16 usDataOffset = 0;
8756 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 wpt_macAddr macBSSID;
8759 wpt_uint8 ucCurrentBSSSesIdx;
8760 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8762
8763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 -------------------------------------------------------------------------*/
8766 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8767 ( NULL == pEventData->pCBfnc ))
8768 {
8769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8770 "%s: Invalid parameters", __FUNCTION__);
8771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 }
8774
8775 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8776 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8777 /*-------------------------------------------------------------------------
8778 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 -------------------------------------------------------------------------*/
8781 wpalMutexAcquire(&pWDICtx->wptMutex);
8782
8783 /*------------------------------------------------------------------------
8784 Find the BSS for which the request is made and identify WDI session
8785 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8787 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 &macBSSID))
8789 {
8790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8791 "This station does not exist in the WDI Station Table %d");
8792 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 }
8795
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8797 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8800 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8801 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008802
8803 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008806
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 /*------------------------------------------------------------------------
8808 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 ------------------------------------------------------------------------*/
8811 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8812 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8814 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8815 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008816
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 }
8821
8822
8823
8824 wpalMutexRelease(&pWDICtx->wptMutex);
8825 /*-----------------------------------------------------------------------
8826 Get message buffer
8827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8830 &pSendBuffer, &usDataOffset, &usSendSize))||
8831 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8832 {
8833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8834 "Unable to get send buffer in set bss key req %x %x %x",
8835 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 }
8839
8840 /*-----------------------------------------------------------------------
8841 Copy the Key parameters into the HAL message
8842 -----------------------------------------------------------------------*/
8843
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8846
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8849
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8852
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8855
Jeff Johnsone7245742012-09-05 17:12:55 -07008856 wpalMemoryCopy( pSendBuffer+usDataOffset,
8857 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8858 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008859
8860 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008862
8863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008869
8870}/*WDI_ProcessRemoveSTABcastKeyReq*/
8871
8872/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008874==========================================================================*/
8875/**
8876 @brief Process Add TSpec Request function (called when Main FSM
8877 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008878
8879 @param pWDICtx: pointer to the WLAN DAL context
8880 pEventData: pointer to the event information structure
8881
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 @see
8883 @return Result of the function call
8884*/
8885WDI_Status
8886WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008887(
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 WDI_ControlBlockType* pWDICtx,
8889 WDI_EventInfoType* pEventData
8890)
8891{
8892 WDI_AddTSReqParamsType* pwdiAddTSParams;
8893 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 wpt_uint16 usDataOffset = 0;
8898 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 wpt_macAddr macBSSID;
8901 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07008902
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8904
8905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 -------------------------------------------------------------------------*/
8908 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8909 ( NULL == pEventData->pCBfnc ))
8910 {
8911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8912 "%s: Invalid parameters", __FUNCTION__);
8913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 }
8916
8917 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
8918 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
8919 /*-------------------------------------------------------------------------
8920 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 -------------------------------------------------------------------------*/
8923 wpalMutexAcquire(&pWDICtx->wptMutex);
8924
8925 /*------------------------------------------------------------------------
8926 Find the BSS for which the request is made and identify WDI session
8927 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8929 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 &macBSSID))
8931 {
8932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8933 "This station does not exist in the WDI Station Table %d");
8934 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 }
8937
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8939 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8942 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8943 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008944
8945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008948
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 /*------------------------------------------------------------------------
8950 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 ------------------------------------------------------------------------*/
8953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8954 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8956 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008958
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 }
8963
8964 wpalMutexRelease(&pWDICtx->wptMutex);
8965 /*-----------------------------------------------------------------------
8966 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
8970 sizeof(halAddTsParams),
8971 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 &usSendSize))||
8973 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
8974 {
8975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8976 "Unable to get send buffer in set bss key req %x %x %x",
8977 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
8978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008980 }
8981
8982 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
8983 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
8984
8985 //TSPEC IE
8986 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
8987 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07008998 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9018
9019 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9034
9035 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009039 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9040
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 wpalMemoryCopy( pSendBuffer+usDataOffset,
9042 &halAddTsParams,
9043 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009044
9045 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009046 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009047
9048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009049 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009054}/*WDI_ProcessAddTSpecReq*/
9055
9056
9057/**
9058 @brief Process Del TSpec Request function (called when Main FSM
9059 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009060
9061 @param pWDICtx: pointer to the WLAN DAL context
9062 pEventData: pointer to the event information structure
9063
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 @see
9065 @return Result of the function call
9066*/
9067WDI_Status
9068WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009069(
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 WDI_ControlBlockType* pWDICtx,
9071 WDI_EventInfoType* pEventData
9072)
9073{
9074 WDI_DelTSReqParamsType* pwdiDelTSParams;
9075 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 wpt_uint16 usDataOffset = 0;
9080 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9083
9084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 -------------------------------------------------------------------------*/
9087 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9088 ( NULL == pEventData->pCBfnc ))
9089 {
9090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9091 "%s: Invalid parameters", __FUNCTION__);
9092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 }
9095
9096 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9097 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9098
9099 /*-------------------------------------------------------------------------
9100 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 -------------------------------------------------------------------------*/
9103 wpalMutexAcquire(&pWDICtx->wptMutex);
9104
9105 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9109 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9110 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009111
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9115 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9116 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9117
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 }
9121
9122 /*------------------------------------------------------------------------
9123 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 ------------------------------------------------------------------------*/
9126 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9127 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9129 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9130 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009131
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 }
9136
9137
9138 wpalMutexRelease(&pWDICtx->wptMutex);
9139 /*-----------------------------------------------------------------------
9140 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009141 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9145 &pSendBuffer, &usDataOffset, &usSendSize))||
9146 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9147 {
9148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9149 "Unable to get send buffer in set bss key req %x %x %x",
9150 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 }
9154
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 wpalMemoryCopy( pSendBuffer+usDataOffset,
9156 &pwdiDelTSParams->wdiDelTSInfo,
9157 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009158
9159 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009161
9162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9166 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009167}/*WDI_ProcessDelTSpecReq*/
9168
9169/**
9170 @brief Process Update EDCA Params Request function (called when
9171 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009172
9173 @param pWDICtx: pointer to the WLAN DAL context
9174 pEventData: pointer to the event information structure
9175
Jeff Johnson295189b2012-06-20 16:38:30 -07009176 @see
9177 @return Result of the function call
9178*/
9179WDI_Status
9180WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009181(
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 WDI_ControlBlockType* pWDICtx,
9183 WDI_EventInfoType* pEventData
9184)
9185{
9186 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9187 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 wpt_uint16 usDataOffset = 0;
9192 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9195
9196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 -------------------------------------------------------------------------*/
9199 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9200 ( NULL == pEventData->pCBfnc ))
9201 {
9202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9203 "%s: Invalid parameters", __FUNCTION__);
9204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 }
9207
9208 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9209 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9210 /*-------------------------------------------------------------------------
9211 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 -------------------------------------------------------------------------*/
9214 wpalMutexAcquire(&pWDICtx->wptMutex);
9215
9216 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9220 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9221 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009222
Jeff Johnsone7245742012-09-05 17:12:55 -07009223 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 {
9225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9227 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009228
9229 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009231 }
9232
9233 /*------------------------------------------------------------------------
9234 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 ------------------------------------------------------------------------*/
9237 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9238 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9240 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9241 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009242
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 }
9247
9248
9249 wpalMutexRelease(&pWDICtx->wptMutex);
9250 /*-----------------------------------------------------------------------
9251 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9256 &pSendBuffer, &usDataOffset, &usSendSize))||
9257 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9258 {
9259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9260 "Unable to get send buffer in set bss key req %x %x %x",
9261 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 }
9265
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 wpalMemoryCopy( pSendBuffer+usDataOffset,
9267 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9268 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009269
9270 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272
9273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9277 wdiUpdateEDCARspCb, pEventData->pUserData,
9278 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009279}/*WDI_ProcessUpdateEDCAParamsReq*/
9280
9281/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009284
9285 @param pWDICtx: pointer to the WLAN DAL context
9286 pEventData: pointer to the event information structure
9287
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 @see
9289 @return Result of the function call
9290*/
9291WDI_Status
9292WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009293(
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 WDI_ControlBlockType* pWDICtx,
9295 WDI_EventInfoType* pEventData
9296)
9297{
9298 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9299 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 wpt_uint16 usDataOffset = 0;
9304 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 wpt_macAddr macBSSID;
9307
9308 tAddBASessionReqMsg halAddBASessionReq;
9309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9310
9311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 -------------------------------------------------------------------------*/
9314 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9315 ( NULL == pEventData->pCBfnc ))
9316 {
9317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9318 "%s: Invalid parameters", __FUNCTION__);
9319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 }
9322
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9327 /*-------------------------------------------------------------------------
9328 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 -------------------------------------------------------------------------*/
9331 wpalMutexAcquire(&pWDICtx->wptMutex);
9332
9333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9337 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 &macBSSID))
9339 {
9340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9341 "This station does not exist in the WDI Station Table %d");
9342 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 }
9345
9346
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009348
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9352 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9353 __func__, MAC_ADDR_ARRAY(macBSSID));
9354
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 }
9358
9359 /*------------------------------------------------------------------------
9360 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 ------------------------------------------------------------------------*/
9363 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9364 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9366 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9367 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009368
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 }
9373
9374
9375 wpalMutexRelease(&pWDICtx->wptMutex);
9376 /*-----------------------------------------------------------------------
9377 Get message buffer
9378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9380 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 sizeof(halAddBASessionReq.addBASessionParams),
9382 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9385 {
9386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9387 "Unable to get send buffer in Add BA session req %x %x %x",
9388 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 }
9392
9393 halAddBASessionReq.addBASessionParams.staIdx =
9394 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9395 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9396 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9397 WDI_MAC_ADDR_LEN);
9398 halAddBASessionReq.addBASessionParams.baTID =
9399 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9400 halAddBASessionReq.addBASessionParams.baPolicy =
9401 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9402 halAddBASessionReq.addBASessionParams.baBufferSize =
9403 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9404 halAddBASessionReq.addBASessionParams.baTimeout =
9405 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9406 halAddBASessionReq.addBASessionParams.baSSN =
9407 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9408 halAddBASessionReq.addBASessionParams.baDirection =
9409 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9410
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 wpalMemoryCopy( pSendBuffer+usDataOffset,
9412 &halAddBASessionReq.addBASessionParams,
9413 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009414
9415 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009416 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009417
9418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9422 wdiAddBASessionRspCb, pEventData->pUserData,
9423 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009424}/*WDI_ProcessAddBASessionReq*/
9425
9426/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009429
9430 @param pWDICtx: pointer to the WLAN DAL context
9431 pEventData: pointer to the event information structure
9432
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 @see
9434 @return Result of the function call
9435*/
9436WDI_Status
9437WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009438(
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 WDI_ControlBlockType* pWDICtx,
9440 WDI_EventInfoType* pEventData
9441)
9442{
9443 WDI_DelBAReqParamsType* pwdiDelBAParams;
9444 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 wpt_uint16 usDataOffset = 0;
9449 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 wpt_macAddr macBSSID;
9452 tDelBAParams halDelBAparam;
9453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9454
9455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 -------------------------------------------------------------------------*/
9458 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9459 ( NULL == pEventData->pCBfnc ))
9460 {
9461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9462 "%s: Invalid parameters", __FUNCTION__);
9463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 }
9466
9467 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9468 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9469 /*-------------------------------------------------------------------------
9470 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 -------------------------------------------------------------------------*/
9473 wpalMutexAcquire(&pWDICtx->wptMutex);
9474
9475 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9479 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 &macBSSID))
9481 {
9482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9483 "This station does not exist in the WDI Station Table %d");
9484 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 }
9487
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009489
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9493 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9494 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009495
9496 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 }
9499
9500 /*------------------------------------------------------------------------
9501 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009502 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 ------------------------------------------------------------------------*/
9504 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9505 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9507 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9508 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009509
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 }
9514
9515 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 sizeof(halDelBAparam),
9518 &pSendBuffer, &usDataOffset, &usSendSize))||
9519 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9520 {
9521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9522 "Unable to get send buffer for DEL BA req %x %x %x",
9523 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 }
9527
9528 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9529 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9530 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9531
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 wpalMemoryCopy( pSendBuffer+usDataOffset,
9533 &halDelBAparam,
9534 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009535
9536 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009538
9539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9543 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009544}/*WDI_ProcessDelBAReq*/
9545
9546#ifdef FEATURE_WLAN_CCX
9547
9548WDI_Status
9549WDI_ProcessTSMStatsReq
9550(
9551 WDI_ControlBlockType* pWDICtx,
9552 WDI_EventInfoType* pEventData
9553)
9554{
9555 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9556 WDI_TsmRspCb wdiTSMRspCb;
9557 wpt_uint8 ucCurrentBSSSesIdx = 0;
9558 WDI_BSSSessionType* pBSSSes = NULL;
9559 wpt_uint8* pSendBuffer = NULL;
9560 wpt_uint16 usDataOffset = 0;
9561 wpt_uint16 usSendSize = 0;
9562 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9563 tTsmStatsParams halTsmStatsReqParams = {0};
9564
9565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9566
9567 /*-------------------------------------------------------------------------
9568 Sanity check
9569 -------------------------------------------------------------------------*/
9570 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9571 ( NULL == pEventData->pCBfnc ))
9572 {
9573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9574 "%s: Invalid parameters", __FUNCTION__);
9575 WDI_ASSERT(0);
9576 return WDI_STATUS_E_FAILURE;
9577 }
9578
9579 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9580 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9581 /*-------------------------------------------------------------------------
9582 Check to see if we are in the middle of an association, if so queue, if
9583 not it means it is free to process request
9584 -------------------------------------------------------------------------*/
9585 wpalMutexAcquire(&pWDICtx->wptMutex);
9586
9587 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9588 if ( NULL == pBSSSes )
9589 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9591 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9592 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009593
9594 wpalMutexRelease(&pWDICtx->wptMutex);
9595 return WDI_STATUS_E_NOT_ALLOWED;
9596 }
9597
9598 /*------------------------------------------------------------------------
9599 Check if this BSS is being currently processed or queued,
9600 if queued - queue the new request as well
9601 ------------------------------------------------------------------------*/
9602 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9603 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9605 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9606 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009607
9608 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9609 wpalMutexRelease(&pWDICtx->wptMutex);
9610 return wdiStatus;
9611 }
9612
9613 wpalMutexRelease(&pWDICtx->wptMutex);
9614 /*-----------------------------------------------------------------------
9615 Get message buffer
9616 ! TO DO : proper conversion into the HAL Message Request Format
9617 -----------------------------------------------------------------------*/
9618 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9619 sizeof(halTsmStatsReqParams),
9620 &pSendBuffer, &usDataOffset, &usSendSize))||
9621 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9622 {
9623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9624 "Unable to get send buffer in set bss key req %x %x %x",
9625 pEventData, pwdiTSMParams, wdiTSMRspCb);
9626 WDI_ASSERT(0);
9627 return WDI_STATUS_E_FAILURE;
9628 }
9629
9630 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9631 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9632 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9633 WDI_MAC_ADDR_LEN);
9634 wpalMemoryCopy( pSendBuffer+usDataOffset,
9635 &halTsmStatsReqParams,
9636 sizeof(halTsmStatsReqParams));
9637
9638 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9639 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9640
9641 /*-------------------------------------------------------------------------
9642 Send TSM Stats Request to HAL
9643 -------------------------------------------------------------------------*/
9644 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9645 wdiTSMRspCb, pEventData->pUserData,
9646 WDI_TSM_STATS_RESP);
9647}/*WDI_ProcessTSMStatsReq*/
9648
9649#endif
9650
9651
9652/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009655
9656 @param pWDICtx: pointer to the WLAN DAL context
9657 pEventData: pointer to the event information structure
9658
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 @see
9660 @return Result of the function call
9661*/
9662WDI_Status
9663WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009664(
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 WDI_ControlBlockType* pWDICtx,
9666 WDI_EventInfoType* pEventData
9667)
9668{
9669 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9670 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 wpt_uint16 usDataOffset = 0;
9673 wpt_uint16 usSendSize = 0;
9674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9675
9676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 -------------------------------------------------------------------------*/
9679 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9680 ( NULL == pEventData->pCBfnc ))
9681 {
9682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9683 "%s: Invalid parameters", __FUNCTION__);
9684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 }
9687
9688 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9689 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9690 /*-----------------------------------------------------------------------
9691 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9696 &pSendBuffer, &usDataOffset, &usSendSize))||
9697 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9698 {
9699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9700 "Unable to get send buffer in set bss key req %x %x %x",
9701 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 }
9705
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 wpalMemoryCopy( pSendBuffer+usDataOffset,
9707 &pwdiFlushAcParams->wdiFlushAcInfo,
9708 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009709
9710 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009712
9713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9717 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009718}/*WDI_ProcessFlushAcReq*/
9719
9720/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009723
9724 @param pWDICtx: pointer to the WLAN DAL context
9725 pEventData: pointer to the event information structure
9726
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 @see
9728 @return Result of the function call
9729*/
9730WDI_Status
9731WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009732(
Jeff Johnson295189b2012-06-20 16:38:30 -07009733 WDI_ControlBlockType* pWDICtx,
9734 WDI_EventInfoType* pEventData
9735)
9736{
9737 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9738 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 wpt_uint16 usDataOffset = 0;
9741 wpt_uint16 usSendSize = 0;
9742
9743 tBtAmpEventMsg haltBtAmpEventMsg;
9744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9745
9746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 -------------------------------------------------------------------------*/
9749 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9750 ( NULL == pEventData->pCBfnc ))
9751 {
9752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9753 "%s: Invalid parameters", __FUNCTION__);
9754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 }
9757
9758 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9759 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9760 /*-----------------------------------------------------------------------
9761 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9766 &pSendBuffer, &usDataOffset, &usSendSize))||
9767 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9768 {
9769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9770 "Unable to get send buffer in BT AMP event req %x %x %x",
9771 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 }
9775
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 wpalMemoryCopy( pSendBuffer+usDataOffset,
9779 &haltBtAmpEventMsg.btAmpEventParams,
9780 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009781
9782 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009784
9785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9789 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009790}/*WDI_ProcessBtAmpEventReq*/
9791
9792/**
9793 @brief Process Add STA self Request function (called when Main FSM
9794 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009795
9796 @param pWDICtx: pointer to the WLAN DAL context
9797 pEventData: pointer to the event information structure
9798
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 @see
9800 @return Result of the function call
9801*/
9802WDI_Status
9803WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009804(
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 WDI_ControlBlockType* pWDICtx,
9806 WDI_EventInfoType* pEventData
9807)
9808{
9809 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9810 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009811 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009812 wpt_uint16 usDataOffset = 0;
9813 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9816
9817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009819 -------------------------------------------------------------------------*/
9820 if (( NULL == pEventData ) ||
9821 ( NULL == pEventData->pEventData) ||
9822 ( NULL == pEventData->pCBfnc))
9823 {
9824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9825 "%s: Invalid parameters", __FUNCTION__);
9826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009828 }
9829
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9834 /*-----------------------------------------------------------------------
9835 Get message buffer
9836 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9838 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 sizeof(tAddStaSelfParams),
9840 &pSendBuffer, &usDataOffset, &usSendSize))||
9841 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9842 {
9843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9844 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9845 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 }
9849
9850 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9853
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9856
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9858 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009859
9860 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009862
9863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9867 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9868 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009869}/*WDI_ProcessAddSTASelfReq*/
9870
9871
9872
9873/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009876
9877 @param pWDICtx: pointer to the WLAN DAL context
9878 pEventData: pointer to the event information structure
9879
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 @see
9881 @return Result of the function call
9882*/
9883WDI_Status
9884WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009885(
Jeff Johnson295189b2012-06-20 16:38:30 -07009886 WDI_ControlBlockType* pWDICtx,
9887 WDI_EventInfoType* pEventData
9888)
9889{
9890 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
9891 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 wpt_uint16 usDataOffset = 0;
9894 wpt_uint16 usSendSize = 0;
9895 tDelStaSelfParams halSetDelSelfSTAParams;
9896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9897
9898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 -------------------------------------------------------------------------*/
9901 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9902 ( NULL == pEventData->pCBfnc ))
9903 {
9904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9905 "%s: Invalid parameters", __FUNCTION__);
9906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 }
9909
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009911 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
9912 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
9913
9914 /*-----------------------------------------------------------------------
9915 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
9920 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
9923 {
9924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9925 "Unable to get send buffer in Del Sta Self req %x %x %x",
9926 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
9927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009929 }
9930
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
9933
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
9935 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009936
9937 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009939
9940 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9944 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 WDI_DEL_STA_SELF_RESP);
9946
9947}
9948
Jeff Johnsone7245742012-09-05 17:12:55 -07009949#ifdef FEATURE_OEM_DATA_SUPPORT
9950/**
9951 @brief Process Start Oem Data Request function (called when Main
9952 FSM allows it)
9953
9954 @param pWDICtx: pointer to the WLAN DAL context
9955 pEventData: pointer to the event information structure
9956
9957 @see
9958 @return Result of the function call
9959*/
9960WDI_Status
9961WDI_ProcessStartOemDataReq
9962(
9963 WDI_ControlBlockType* pWDICtx,
9964 WDI_EventInfoType* pEventData
9965)
9966{
9967 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
9968 WDI_oemDataRspCb wdiOemDataRspCb;
9969 wpt_uint8* pSendBuffer = NULL;
9970 wpt_uint16 usDataOffset = 0;
9971 wpt_uint16 usSendSize = 0;
9972 wpt_uint16 reqLen;
9973 tStartOemDataReqParams* halStartOemDataReqParams;
9974
9975 /*-------------------------------------------------------------------------
9976 Sanity check
9977 -------------------------------------------------------------------------*/
9978 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9979 ( NULL == pEventData->pCBfnc ))
9980 {
9981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9982 "%s: Invalid parameters", __FUNCTION__);
9983 WDI_ASSERT(0);
9984 return WDI_STATUS_E_FAILURE;
9985 }
9986
9987 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
9988 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
9989
9990 /*-----------------------------------------------------------------------
9991 Get message buffer
9992 -----------------------------------------------------------------------*/
9993
9994 reqLen = sizeof(tStartOemDataReqParams);
9995
9996 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9997 WDI_START_OEM_DATA_REQ, reqLen,
9998 &pSendBuffer, &usDataOffset, &usSendSize))||
9999 (usSendSize < (usDataOffset + reqLen)))
10000 {
10001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10002 "Unable to get send buffer in Start Oem Data req %x %x %x",
10003 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10004 WDI_ASSERT(0);
10005 return WDI_STATUS_E_FAILURE;
10006 }
10007
10008 //copying WDI OEM DATA REQ PARAMS to shared memory
10009 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10010
10011 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10012 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10013
10014 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10015 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10016
10017 /*-------------------------------------------------------------------------
10018 Send Start Request to HAL
10019 -------------------------------------------------------------------------*/
10020 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10021 wdiOemDataRspCb, pEventData->pUserData,
10022 WDI_START_OEM_DATA_RESP);
10023}/*WDI_ProcessStartOemDataReq*/
10024#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010025
10026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010027 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010028 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010029
10030 @param pWDICtx: pointer to the WLAN DAL context
10031 pEventData: pointer to the event information structure
10032
Jeff Johnson295189b2012-06-20 16:38:30 -070010033 @see
10034 @return Result of the function call
10035*/
10036WDI_Status
10037WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010038(
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 WDI_ControlBlockType* pWDICtx,
10040 WDI_EventInfoType* pEventData
10041)
10042{
10043 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10044 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 wpt_uint16 usDataOffset = 0;
10047 wpt_uint16 usSendSize = 0;
10048 tHalWlanHostResumeReqParam halResumeReqParams;
10049
10050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10051
10052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010054 -------------------------------------------------------------------------*/
10055 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10056 ( NULL == pEventData->pCBfnc ))
10057 {
10058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10059 "%s: Invalid parameters ",__FUNCTION__);
10060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 }
10063
10064 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10065 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10066
10067 /*-----------------------------------------------------------------------
10068 Get message buffer
10069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10072 &pSendBuffer, &usDataOffset, &usSendSize))||
10073 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10074 {
10075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 }
10081
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010084
10085 wpalMemoryCopy( pSendBuffer+usDataOffset,
10086 &halResumeReqParams,
10087 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010088
10089 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010091
10092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010095 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10096 wdiHostResumeRspCb, pEventData->pUserData,
10097 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010098}/*WDI_ProcessHostResumeReq*/
10099
10100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010101 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010102 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010103
10104 @param pWDICtx: pointer to the WLAN DAL context
10105 pEventData: pointer to the event information structure
10106
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 @see
10108 @return Result of the function call
10109*/
10110WDI_Status
10111WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010112(
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 WDI_ControlBlockType* pWDICtx,
10114 WDI_EventInfoType* pEventData
10115)
10116{
10117 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10118 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 wpt_uint16 usDataOffset = 0;
10121 wpt_uint16 usSendSize = 0;
10122 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10124
10125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 -------------------------------------------------------------------------*/
10128 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10129 ( NULL == pEventData->pCBfnc ))
10130 {
10131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10132 "%s: Invalid parameters ",__FUNCTION__);
10133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 }
10136
10137 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10138 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010139
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 /*-----------------------------------------------------------------------
10141 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 sizeof(halTxPerTrackingReqParam),
10146 &pSendBuffer, &usDataOffset, &usSendSize))||
10147 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10148 {
10149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10150 "Unable to get send buffer in set tx per tracking req %x %x %x",
10151 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010155
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10157 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10158 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10159 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010160
10161 wpalMemoryCopy( pSendBuffer+usDataOffset,
10162 &halTxPerTrackingReqParam,
10163 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010164
10165 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010167
10168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10172 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010173}/*WDI_ProcessSetTxPerTrackingReq*/
10174
10175/*=========================================================================
10176 Indications
10177=========================================================================*/
10178
10179/**
10180 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010181
10182 @param pWDICtx: pointer to the WLAN DAL context
10183 pEventData: pointer to the event information structure
10184
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 @see
10186 @return Result of the function call
10187*/
10188WDI_Status
10189WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010190(
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 WDI_ControlBlockType* pWDICtx,
10192 WDI_EventInfoType* pEventData
10193)
10194{
10195 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 wpt_uint16 usDataOffset = 0;
10198 wpt_uint16 usSendSize = 0;
10199 WDI_Status wdiStatus;
10200 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10202
10203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 -------------------------------------------------------------------------*/
10206 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10207 {
10208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10209 "%s: Invalid parameters in Suspend ind",__FUNCTION__);
10210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 }
10213
10214 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10215
10216 /*-----------------------------------------------------------------------
10217 Get message buffer
10218 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10220 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 sizeof(halWlanSuspendIndparams),
10222 &pSendBuffer, &usDataOffset, &usSendSize))||
10223 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10224 {
10225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10226 "Unable to get send buffer in Suspend Ind ");
10227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 }
10230
10231 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10232 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10233
Jeff Johnsone7245742012-09-05 17:12:55 -070010234 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010235 WDI_GetActiveSessionsCount(pWDICtx);
10236
Jeff Johnsone7245742012-09-05 17:12:55 -070010237 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10238 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010239
10240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010241 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010242 -------------------------------------------------------------------------*/
10243 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010245
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10248}/*WDI_ProcessHostSuspendInd*/
10249
10250/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010252==========================================================================*/
10253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010256
10257 @param pWDICtx: pointer to the WLAN DAL context
10258 pEventData: pointer to the event information structure
10259
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 @see
10261 @return Result of the function call
10262*/
10263WDI_Status
10264WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010265(
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 WDI_ControlBlockType* pWDICtx,
10267 WDI_EventInfoType* pEventData
10268)
10269{
10270 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10271 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 wpt_uint16 usDataOffset = 0;
10274 wpt_uint16 usSendSize = 0;
10275 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10277
10278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 -------------------------------------------------------------------------*/
10281 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10282 ( NULL == pEventData->pCBfnc ))
10283 {
10284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10285 "%s: Invalid parameters", __FUNCTION__);
10286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 }
10289
10290 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10291 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10292 /*-----------------------------------------------------------------------
10293 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 sizeof(halSwitchChannelReq.switchChannelParams),
10298 &pSendBuffer, &usDataOffset, &usSendSize))||
10299 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10300 {
10301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10302 "Unable to get send buffer in channel switch req %x %x %x",
10303 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 }
10307
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010309 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010310#ifndef WLAN_FEATURE_VOWIFI
10311 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10313#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10316
10317#ifdef WLAN_FEATURE_VOWIFI
10318 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10321 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10322 WDI_MAC_ADDR_LEN);
10323 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10324 pwdiSwitchChParams->wdiChInfo.macBSSId,
10325 WDI_MAC_ADDR_LEN);
10326#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 wpalMemoryCopy( pSendBuffer+usDataOffset,
10328 &halSwitchChannelReq.switchChannelParams,
10329 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010330
10331 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010332 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010333
10334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10338 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010339}/*WDI_ProcessChannelSwitchReq*/
10340
10341/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010344
10345 @param pWDICtx: pointer to the WLAN DAL context
10346 pEventData: pointer to the event information structure
10347
Jeff Johnson295189b2012-06-20 16:38:30 -070010348 @see
10349 @return Result of the function call
10350*/
10351WDI_Status
10352WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010353(
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 WDI_ControlBlockType* pWDICtx,
10355 WDI_EventInfoType* pEventData
10356)
10357{
10358 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10359 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010361 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 wpt_uint16 usDataOffset = 0;
10364 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010366
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 tConfigStaReqMsg halConfigStaReqMsg;
10368 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10370
10371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010373 -------------------------------------------------------------------------*/
10374 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10375 ( NULL == pEventData->pCBfnc ))
10376 {
10377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10378 "%s: Invalid parameters", __FUNCTION__);
10379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 }
10382
10383 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10384 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10385 /*-------------------------------------------------------------------------
10386 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 -------------------------------------------------------------------------*/
10389 wpalMutexAcquire(&pWDICtx->wptMutex);
10390
10391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10395 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10396 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010397
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10401 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10402 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010403
10404 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 }
10407
10408 /*------------------------------------------------------------------------
10409 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010410 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010411 ------------------------------------------------------------------------*/
10412 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10413 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10415 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10416 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010417
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 }
10422
10423 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010424
10425 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10426#ifdef WLAN_FEATURE_11AC
10427 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010428 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 else
10430#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010431 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010432
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 /*-----------------------------------------------------------------------
10434 Get message buffer
10435 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10437 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 {
10441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10442 "Unable to get send buffer in config sta req %x %x %x",
10443 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 }
10447
10448 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 &pwdiConfigSTAParams->wdiReqInfo);
10451
10452 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10453 {
10454 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 WDI_STATableFindStaidByAddr(pWDICtx,
10457 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 {
10460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10461 "This station does not exist in the WDI Station Table %d");
10462 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010464 }
10465 }
10466 else
10467 {
10468 /* Need to fill in the STA Index to invalid, since at this point we have not
10469 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 }
10472
10473 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010475
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 wpalMemoryCopy( pSendBuffer+usDataOffset,
10477 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010478 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010479
10480 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010482
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10484 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 sizeof(pWDICtx->wdiCachedConfigStaReq));
10486
10487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10491 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010492}/*WDI_ProcessConfigStaReq*/
10493
10494
10495/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010498
10499 @param pWDICtx: pointer to the WLAN DAL context
10500 pEventData: pointer to the event information structure
10501
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 @see
10503 @return Result of the function call
10504*/
10505WDI_Status
10506WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010507(
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 WDI_ControlBlockType* pWDICtx,
10509 WDI_EventInfoType* pEventData
10510)
10511{
10512 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10513 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 wpt_uint16 usDataOffset = 0;
10518 wpt_uint16 usSendSize = 0;
10519 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10522
10523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 -------------------------------------------------------------------------*/
10526 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10527 ( NULL == pEventData->pCBfnc ))
10528 {
10529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10530 "%s: Invalid parameters", __FUNCTION__);
10531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 }
10534
10535 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10536 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10537 /*-------------------------------------------------------------------------
10538 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010539 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 -------------------------------------------------------------------------*/
10541 wpalMutexAcquire(&pWDICtx->wptMutex);
10542
10543 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010545 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10547 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10548 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010549
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10554 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 }
10556 else
10557 {
10558 /*------------------------------------------------------------------------
10559 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 ------------------------------------------------------------------------*/
10562 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10563 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10565 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10566 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10567
10568 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010569 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010570 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010571 }
10572 }
10573 /* If the link is set to enter IDLE - the Session allocated for this BSS
10574 will be deleted on the Set Link State response coming from HAL
10575 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10578
10579 wpalMutexRelease(&pWDICtx->wptMutex);
10580 /*-----------------------------------------------------------------------
10581 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010584
10585 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 sizeof(halLinkStateReqMsg),
10587 &pSendBuffer, &usDataOffset, &usSendSize))||
10588 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10589 {
10590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10591 "Unable to get send buffer in set bss key req %x %x %x",
10592 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 }
10596
10597 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10598 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10599
10600 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10601 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10602
Jeff Johnsone7245742012-09-05 17:12:55 -070010603 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010604 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10605
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 wpalMemoryCopy( pSendBuffer+usDataOffset,
10607 &halLinkStateReqMsg,
10608 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010609
10610 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010611 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010612
10613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010614 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10617 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010618}/*WDI_ProcessSetLinkStateReq*/
10619
10620
10621/**
10622 @brief Process Get Stats Request function (called when Main FSM
10623 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010624
10625 @param pWDICtx: pointer to the WLAN DAL context
10626 pEventData: pointer to the event information structure
10627
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 @see
10629 @return Result of the function call
10630*/
10631WDI_Status
10632WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010633(
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 WDI_ControlBlockType* pWDICtx,
10635 WDI_EventInfoType* pEventData
10636)
10637{
10638 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10639 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 wpt_uint16 usDataOffset = 0;
10642 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 WDI_BSSSessionType* pBSSSes = NULL;
10645 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 tHalStatsReqMsg halStatsReqMsg;
10648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10649
10650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 -------------------------------------------------------------------------*/
10653 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10654 ( NULL == pEventData->pCBfnc ) )
10655 {
10656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10657 "%s: Invalid parameters", __FUNCTION__);
10658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010660 }
10661
10662 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10663 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10664
10665 /*-------------------------------------------------------------------------
10666 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 -------------------------------------------------------------------------*/
10669 wpalMutexAcquire(&pWDICtx->wptMutex);
10670
10671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010672 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10675 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 &macBSSID))
10677 {
10678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10679 "This station does not exist in the WDI Station Table %d");
10680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010682 }
10683
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10685 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10688 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10689 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010690
10691 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010693 }
10694
10695 /*------------------------------------------------------------------------
10696 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 ------------------------------------------------------------------------*/
10699 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10700 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10702 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10703 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010704
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 }
10709
10710
10711 wpalMutexRelease(&pWDICtx->wptMutex);
10712
10713 /*-----------------------------------------------------------------------
10714 Get message buffer
10715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010717 sizeof(halStatsReqMsg.statsReqParams),
10718 &pSendBuffer, &usDataOffset, &usSendSize))||
10719 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10720 {
10721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10722 "Unable to get send buffer in set bss key req %x %x %x",
10723 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 }
10727
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 wpalMemoryCopy( pSendBuffer+usDataOffset,
10733 &halStatsReqMsg.statsReqParams,
10734 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010735
10736 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010738
10739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10743 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010744}/*WDI_ProcessGetStatsReq*/
10745
10746/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010749
10750 @param pWDICtx: pointer to the WLAN DAL context
10751 pEventData: pointer to the event information structure
10752
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 @see
10754 @return Result of the function call
10755*/
10756WDI_Status
10757WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010758(
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 WDI_ControlBlockType* pWDICtx,
10760 WDI_EventInfoType* pEventData
10761)
10762{
10763 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10764 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10765
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 wpt_uint16 usDataOffset = 0;
10768 wpt_uint16 usSendSize = 0;
10769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10770
10771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 -------------------------------------------------------------------------*/
10774 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10775 ( NULL == pEventData->pCBfnc))
10776 {
10777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10778 "%s: Invalid parameters", __FUNCTION__);
10779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 }
10782
10783 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10784 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10785
10786 /*-----------------------------------------------------------------------
10787 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 -----------------------------------------------------------------------*/
10790
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10793 &pSendBuffer, &usDataOffset, &usSendSize))||
10794 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10795 {
10796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10797 "Unable to get send buffer in set bss key req %x %x %x",
10798 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 }
10802
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 wpalMemoryCopy( pSendBuffer+usDataOffset,
10804 &pwdiUpdateCfgParams->uConfigBufferLen,
10805 sizeof(wpt_uint32));
10806 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
10807 pwdiUpdateCfgParams->pConfigBuffer,
10808 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070010809
10810 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010812
10813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 -------------------------------------------------------------------------*/
10816
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10818 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010819
10820}/*WDI_ProcessUpdateCfgReq*/
10821
10822
10823/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010824 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010826
10827 @param pWDICtx: pointer to the WLAN DAL context
10828 pEventData: pointer to the event information structure
10829
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 @see
10831 @return Result of the function call
10832*/
10833WDI_Status
10834WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010835(
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 WDI_ControlBlockType* pWDICtx,
10837 WDI_EventInfoType* pEventData
10838)
10839{
10840 WDI_AddBAReqParamsType* pwdiAddBAParams;
10841 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 wpt_uint16 usDataOffset = 0;
10846 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 wpt_macAddr macBSSID;
10849
10850 tAddBAReqMsg halAddBAReq;
10851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10852
10853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 -------------------------------------------------------------------------*/
10856 if (( NULL == pEventData ) ||
10857 ( NULL == pEventData->pEventData) ||
10858 ( NULL == pEventData->pCBfnc ))
10859 {
10860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10861 "%s: Invalid parameters", __FUNCTION__);
10862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 }
10865
10866 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
10867 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
10868
10869 /*-------------------------------------------------------------------------
10870 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 -------------------------------------------------------------------------*/
10873 wpalMutexAcquire(&pWDICtx->wptMutex);
10874
10875 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010876 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010877 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10879 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010880 &macBSSID))
10881 {
10882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10883 "This station does not exist in the WDI Station Table %d");
10884 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 }
10887
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10889 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10892 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10893 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010894
10895 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 }
10898
10899 /*------------------------------------------------------------------------
10900 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 ------------------------------------------------------------------------*/
10903 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10904 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10906 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10907 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010908
Jeff Johnsone7245742012-09-05 17:12:55 -070010909 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010910 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 }
10913
10914
10915 wpalMutexRelease(&pWDICtx->wptMutex);
10916 /*-----------------------------------------------------------------------
10917 Get message buffer
10918 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010920 sizeof(halAddBAReq.addBAParams),
10921 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
10924 {
10925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10926 "Unable to get send buffer in Add BA req %x %x %x",
10927 pEventData, pwdiAddBAParams, wdiAddBARspCb);
10928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010930 }
10931
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
10934 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
10935#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070010936 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070010937 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
10938#endif
10939
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 wpalMemoryCopy( pSendBuffer+usDataOffset,
10941 &halAddBAReq.addBAParams,
10942 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010943
10944 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010945 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010946
10947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10951 wdiAddBARspCb, pEventData->pUserData,
10952 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010953}/*WDI_ProcessAddBAReq*/
10954
10955
10956
10957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010958 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010959 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010960
10961 @param pWDICtx: pointer to the WLAN DAL context
10962 pEventData: pointer to the event information structure
10963
Jeff Johnson295189b2012-06-20 16:38:30 -070010964 @see
10965 @return Result of the function call
10966*/
10967WDI_Status
10968WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010969(
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 WDI_ControlBlockType* pWDICtx,
10971 WDI_EventInfoType* pEventData
10972)
10973{
10974 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
10975 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010976 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010978 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010979 wpt_uint16 usDataOffset = 0;
10980 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 wpt_uint16 index;
10983 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010984
Jeff Johnson295189b2012-06-20 16:38:30 -070010985 tTriggerBAReqMsg halTriggerBAReq;
10986 tTriggerBaReqCandidate* halTriggerBACandidate;
10987 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
10988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10989
10990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010992 -------------------------------------------------------------------------*/
10993 if (( NULL == pEventData ) ||
10994 ( NULL == pEventData->pEventData ) ||
10995 ( NULL == pEventData->pCBfnc ))
10996 {
10997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10998 "%s: Invalid parameters", __FUNCTION__);
10999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011001 }
11002
11003 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11004 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11005 /*-------------------------------------------------------------------------
11006 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011007 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011008 -------------------------------------------------------------------------*/
11009 wpalMutexAcquire(&pWDICtx->wptMutex);
11010
11011 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011012 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011013 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11015 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011016 &macBSSID))
11017 {
11018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11019 "This station does not exist in the WDI Station Table %d");
11020 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011022 }
11023
Jeff Johnsone7245742012-09-05 17:12:55 -070011024 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11025 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11028 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11029 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011030
11031 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 }
11034
11035 /*------------------------------------------------------------------------
11036 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011037 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011038 ------------------------------------------------------------------------*/
11039 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11040 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11042 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11043 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011044
Jeff Johnsone7245742012-09-05 17:12:55 -070011045 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011046 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011047 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011048 }
11049
11050
11051 wpalMutexRelease(&pWDICtx->wptMutex);
11052 /*-----------------------------------------------------------------------
11053 Get message buffer
11054 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011055 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11056 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011059 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11060 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011061 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011062 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11065 {
11066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11067 "Unable to get send buffer in Trigger BA req %x %x %x",
11068 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 }
11072
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011076 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11077
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 wpalMemoryCopy( pSendBuffer+usDataOffset,
11079 &halTriggerBAReq.triggerBAParams,
11080 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011081
Jeff Johnsone7245742012-09-05 17:12:55 -070011082 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011083 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11084 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11085 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011086
11087 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 index++)
11089 {
11090 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11091 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11092 halTriggerBACandidate++;
11093 wdiTriggerBACandidate++;
11094 }
11095
11096 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011098
11099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011102 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11103 wdiTriggerBARspCb, pEventData->pUserData,
11104 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011105}/*WDI_ProcessTriggerBAReq*/
11106
11107
11108
11109/**
11110 @brief Process Update Beacon Params Request function (called when Main FSM
11111 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011112
11113 @param pWDICtx: pointer to the WLAN DAL context
11114 pEventData: pointer to the event information structure
11115
Jeff Johnson295189b2012-06-20 16:38:30 -070011116 @see
11117 @return Result of the function call
11118*/
11119WDI_Status
11120WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011121(
Jeff Johnson295189b2012-06-20 16:38:30 -070011122 WDI_ControlBlockType* pWDICtx,
11123 WDI_EventInfoType* pEventData
11124)
11125{
11126 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11127 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011128 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011129 wpt_uint16 usDataOffset = 0;
11130 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011131 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11133
11134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011136 -------------------------------------------------------------------------*/
11137 if (( NULL == pEventData ) ||
11138 ( NULL == pEventData->pEventData) ||
11139 ( NULL == pEventData->pCBfnc))
11140 {
11141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11142 "%s: Invalid parameters", __FUNCTION__);
11143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 }
11146
11147 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11148 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11149 /*-----------------------------------------------------------------------
11150 Get message buffer
11151 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011152 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011153 sizeof(halUpdateBeaconParams),
11154 &pSendBuffer, &usDataOffset, &usSendSize))||
11155 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11156 {
11157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11158 "Unable to get send buffer in set bss key req %x %x %x",
11159 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 }
11163
11164 /*BSS Index of the BSS*/
11165 halUpdateBeaconParams.bssIdx =
11166 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11167 /*shortPreamble mode. HAL should update all the STA rates when it
11168 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011169 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11171 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011172 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011173 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11174 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11177
11178 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011183 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011187 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011188 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11191 halUpdateBeaconParams.fRIFSMode =
11192 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011194 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11195
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11197 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011198
11199 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011200 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011201
11202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11206 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011207}/*WDI_ProcessUpdateBeaconParamsReq*/
11208
11209
11210
11211/**
11212 @brief Process Send Beacon template Request function (called when Main FSM
11213 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011214
11215 @param pWDICtx: pointer to the WLAN DAL context
11216 pEventData: pointer to the event information structure
11217
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 @see
11219 @return Result of the function call
11220*/
11221WDI_Status
11222WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011223(
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 WDI_ControlBlockType* pWDICtx,
11225 WDI_EventInfoType* pEventData
11226)
11227{
11228 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11229 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011231 wpt_uint16 usDataOffset = 0;
11232 wpt_uint16 usSendSize = 0;
11233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11234
11235 tSendBeaconReqMsg halSendBeaconReq;
11236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011238 -------------------------------------------------------------------------*/
11239 if (( NULL == pEventData ) ||
11240 ( NULL == pEventData->pEventData ) ||
11241 ( NULL == pEventData->pCBfnc ))
11242 {
11243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11244 "%s: Invalid parameters", __FUNCTION__);
11245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 }
11248
11249 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11250 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11251 /*-----------------------------------------------------------------------
11252 Get message buffer
11253 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 sizeof(halSendBeaconReq.sendBeaconParam),
11256 &pSendBuffer, &usDataOffset, &usSendSize))||
11257 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11258 {
11259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11260 "Unable to get send buffer in send beacon req %x %x %x",
11261 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011264 }
11265
11266 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11267 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11268 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011270 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11271 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11272 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11273 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
11274#ifdef WLAN_SOFTAP_FEATURE
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
11277#endif
11278#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11281#endif
11282
Jeff Johnsone7245742012-09-05 17:12:55 -070011283 wpalMemoryCopy( pSendBuffer+usDataOffset,
11284 &halSendBeaconReq.sendBeaconParam,
11285 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011286
11287 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011289
11290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011291 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011293 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11294 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011295}/*WDI_ProcessSendBeaconParamsReq*/
11296
11297/**
11298 @brief Process Update Beacon Params Request function (called when Main FSM
11299 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011300
11301 @param pWDICtx: pointer to the WLAN DAL context
11302 pEventData: pointer to the event information structure
11303
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 @see
11305 @return Result of the function call
11306*/
11307WDI_Status
11308WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011309(
Jeff Johnson295189b2012-06-20 16:38:30 -070011310 WDI_ControlBlockType* pWDICtx,
11311 WDI_EventInfoType* pEventData
11312)
11313{
11314 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11315 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 wpt_uint16 usDataOffset = 0;
11318 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11321
11322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 -------------------------------------------------------------------------*/
11325 if (( NULL == pEventData ) ||
11326 ( NULL == pEventData->pEventData) ||
11327 ( NULL == pEventData->pCBfnc))
11328 {
11329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11330 "%s: Invalid parameters", __FUNCTION__);
11331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 }
11334
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11339 /*-----------------------------------------------------------------------
11340 Get message buffer
11341 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 sizeof(halUpdateProbeRspTmplParams),
11344 &pSendBuffer, &usDataOffset, &usSendSize))||
11345 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11346 {
11347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11348 "Unable to get send buffer in set bss key req %x %x %x",
11349 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 }
11353
11354 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011356 WDI_MAC_ADDR_LEN);
11357
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11360
11361 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11362 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011363 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011364
11365
11366 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11367 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11368 WDI_PROBE_REQ_BITMAP_IE_LEN);
11369
Jeff Johnsone7245742012-09-05 17:12:55 -070011370 wpalMemoryCopy( pSendBuffer+usDataOffset,
11371 &halUpdateProbeRspTmplParams,
11372 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011373
11374 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011376
11377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011380 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11381 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11382 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011383}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11384
11385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011388
11389 @param pWDICtx: pointer to the WLAN DAL context
11390 pEventData: pointer to the event information structure
11391
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 @see
11393 @return Result of the function call
11394*/
11395WDI_Status
11396WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011397(
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 WDI_ControlBlockType* pWDICtx,
11399 WDI_EventInfoType* pEventData
11400)
11401{
11402
11403 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11404 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11405
11406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011407 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 -------------------------------------------------------------------------*/
11409 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011413 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11414 {
11415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11416 "%s: Invalid parameters", __FUNCTION__);
11417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011419 }
11420
11421 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011423 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11424
11425 /*cache the wdi nv request message here if the the first fragment
11426 * To issue the request to HAL for the next fragment */
11427 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11428 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11430 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11432
11433 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11434 pWDICtx->pRspCBUserData = pEventData->pUserData;
11435 }
11436
11437 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11438}
11439
11440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011443
11444 @param pWDICtx: pointer to the WLAN DAL context
11445 pEventData: pointer to the event information structure
11446
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 @see
11448 @return Result of the function call
11449*/
11450WDI_Status WDI_ProcessSetMaxTxPowerReq
11451(
11452 WDI_ControlBlockType* pWDICtx,
11453 WDI_EventInfoType* pEventData
11454)
11455{
11456 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11457 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 wpt_uint16 usDataOffset = 0;
11460 wpt_uint16 usSendSize = 0;
11461 tSetMaxTxPwrReq halSetMaxTxPower;
11462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11463
11464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 -------------------------------------------------------------------------*/
11467 if (( NULL == pEventData ) ||
11468 ( NULL == pEventData->pEventData ) ||
11469 ( NULL == pEventData->pCBfnc ))
11470 {
11471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11472 "%s: Invalid parameters", __FUNCTION__);
11473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011477 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011478 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11480
11481 /*-----------------------------------------------------------------------
11482 Get message buffer
11483 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011484if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011485 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11486 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011488)))
11489 {
11490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11491 "Unable to get Set Max Tx Power req %x %x %x",
11492 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 }
11496
11497 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11498 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11499 WDI_MAC_ADDR_LEN);
11500
11501 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11502 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11503 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011504 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011506
11507 wpalMemoryCopy( pSendBuffer+usDataOffset,
11508 &halSetMaxTxPower.setMaxTxPwrParams,
11509 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011510
11511 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011512 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011513
11514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11518 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11519 WDI_SET_MAX_TX_POWER_RESP);
11520
Jeff Johnson295189b2012-06-20 16:38:30 -070011521}
11522
11523#ifdef WLAN_FEATURE_P2P
11524
11525/**
11526 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11527 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011528
11529 @param pWDICtx: pointer to the WLAN DAL context
11530 pEventData: pointer to the event information structure
11531
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 @see
11533 @return Result of the function call
11534*/
11535WDI_Status
11536WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011537(
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 WDI_ControlBlockType* pWDICtx,
11539 WDI_EventInfoType* pEventData
11540)
11541{
11542 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11543 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011544 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011545 wpt_uint16 usDataOffset = 0;
11546 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011547 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11549
11550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 -------------------------------------------------------------------------*/
11553 if (( NULL == pEventData ) ||
11554 ( NULL == pEventData->pEventData) ||
11555 ( NULL == pEventData->pCBfnc))
11556 {
11557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11558 "%s: Invalid parameters", __FUNCTION__);
11559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011561 }
11562
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11567 /*-----------------------------------------------------------------------
11568 Get message buffer
11569 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11571 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 sizeof(halSetP2PGONOAParams),
11573 &pSendBuffer, &usDataOffset, &usSendSize))||
11574 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11575 {
11576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11577 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11578 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 }
11582
Jeff Johnsone7245742012-09-05 17:12:55 -070011583 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011584 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11587 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011589 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011590 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011591 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11596
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 wpalMemoryCopy( pSendBuffer+usDataOffset,
11598 &halSetP2PGONOAParams,
11599 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011600
11601 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603
11604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11608 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11609 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011610}/*WDI_ProcessP2PGONOAReq*/
11611
11612#endif
11613
11614
11615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011618 @param None
11619
11620 @see
11621 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011622*/
11623void
11624WDI_SetPowerStateCb
11625(
11626 wpt_status status,
11627 unsigned int dxePhyAddr,
11628 void *pContext
11629)
11630{
11631 wpt_status wptStatus;
11632 WDI_ControlBlockType *pCB = NULL;
11633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11634 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11635 {
11636 //it shouldn't happen, put an error msg
11637 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 /*
11639 * Trigger the event to bring the Enter BMPS req function to come
11640 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011641*/
11642 if( NULL != pContext )
11643 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 }
11646 else
11647 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 pCB = &gWDICb;
11650 }
11651 pCB->dxePhyAddr = dxePhyAddr;
11652 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11653 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11654 {
11655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11656 "Failed to set an event");
11657
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011659 }
11660 return;
11661}
11662
11663
11664/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011665 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011666 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011667
11668 @param pWDICtx: pointer to the WLAN DAL context
11669 pEventData: pointer to the event information structure
11670
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 @see
11672 @return Result of the function call
11673*/
11674WDI_Status
11675WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011676(
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 WDI_ControlBlockType* pWDICtx,
11678 WDI_EventInfoType* pEventData
11679)
11680{
Jeff Johnson43971f52012-07-17 12:26:56 -070011681 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 wpt_uint16 usDataOffset = 0;
11685 wpt_uint16 usSendSize = 0;
11686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11687
11688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 -------------------------------------------------------------------------*/
11691 if (( NULL == pEventData ) ||
11692 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11693 {
11694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11695 "%s: Invalid parameters", __FUNCTION__);
11696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011698 }
11699
11700 /*-----------------------------------------------------------------------
11701 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011703 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 0,
11706 &pSendBuffer, &usDataOffset, &usSendSize))||
11707 ( usSendSize < (usDataOffset )))
11708 {
11709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11710 "Unable to get send buffer in Enter IMPS req %x %x",
11711 pEventData, wdiEnterImpsRspCb);
11712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011714 }
11715
11716 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011717 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11718 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011719 {
11720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11721 "WDI Init failed to reset an event");
11722
Jeff Johnsone7245742012-09-05 17:12:55 -070011723 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 return VOS_STATUS_E_FAILURE;
11725 }
11726
11727 // notify DTS that we are entering IMPS
11728 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11729
11730 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011731 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011732 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011733 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11734 WDI_SET_POWER_STATE_TIMEOUT);
11735 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 {
11737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11738 "WDI Init failed to wait on an event");
11739
Jeff Johnsone7245742012-09-05 17:12:55 -070011740 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011741 return VOS_STATUS_E_FAILURE;
11742 }
11743
11744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011745 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011746 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11748 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011749}/*WDI_ProcessEnterImpsReq*/
11750
11751/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011752 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011753 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011754
11755 @param pWDICtx: pointer to the WLAN DAL context
11756 pEventData: pointer to the event information structure
11757
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 @see
11759 @return Result of the function call
11760*/
11761WDI_Status
11762WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011763(
Jeff Johnson295189b2012-06-20 16:38:30 -070011764 WDI_ControlBlockType* pWDICtx,
11765 WDI_EventInfoType* pEventData
11766)
11767{
11768 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011770 wpt_uint16 usDataOffset = 0;
11771 wpt_uint16 usSendSize = 0;
11772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11773
11774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 -------------------------------------------------------------------------*/
11777 if (( NULL == pEventData ) ||
11778 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11779 {
11780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11781 "%s: Invalid parameters", __FUNCTION__);
11782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011784 }
11785
11786 /*-----------------------------------------------------------------------
11787 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011789 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011790 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011791 0,
11792 &pSendBuffer, &usDataOffset, &usSendSize))||
11793 ( usSendSize < (usDataOffset )))
11794 {
11795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11796 "Unable to get send buffer in Exit IMPS req %x %x",
11797 pEventData, wdiExitImpsRspCb);
11798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011800 }
11801
11802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011805 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11806 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011807}/*WDI_ProcessExitImpsReq*/
11808
11809/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011810 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011811 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011812
11813 @param pWDICtx: pointer to the WLAN DAL context
11814 pEventData: pointer to the event information structure
11815
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 @see
11817 @return Result of the function call
11818*/
11819WDI_Status
11820WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011821(
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 WDI_ControlBlockType* pWDICtx,
11823 WDI_EventInfoType* pEventData
11824)
11825{
11826 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
11827 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011828 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011829 wpt_uint16 usDataOffset = 0;
11830 wpt_uint16 usSendSize = 0;
11831 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070011832 wpt_status wptStatus;
11833
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11835
11836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011838 -------------------------------------------------------------------------*/
11839 if (( NULL == pEventData ) ||
11840 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
11841 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
11842 {
11843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11844 "%s: Invalid parameters", __FUNCTION__);
11845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011847 }
11848
11849 /*-----------------------------------------------------------------------
11850 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011851 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 sizeof(enterBmpsReq),
11855 &pSendBuffer, &usDataOffset, &usSendSize))||
11856 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
11857 {
11858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11859 "Unable to get send buffer in Enter BMPS req %x %x %x",
11860 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
11861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011863 }
11864
11865 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011866 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11867 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 {
11869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11870 "WDI Init failed to reset an event");
11871
Jeff Johnsone7245742012-09-05 17:12:55 -070011872 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 return VOS_STATUS_E_FAILURE;
11874 }
11875
11876 // notify DTS that we are entering BMPS
11877 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
11878
11879/*
Jeff Johnsone7245742012-09-05 17:12:55 -070011880 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011882 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11883 WDI_SET_POWER_STATE_TIMEOUT);
11884 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 {
11886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11887 "WDI Init failed to wait on an event");
11888
Jeff Johnsone7245742012-09-05 17:12:55 -070011889 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011890 return VOS_STATUS_E_FAILURE;
11891 }
11892
11893 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
11894
11895 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
11896 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
11897 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
11898 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
11899
11900 // For CCX and 11R Roaming
11901 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
11902 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
11903 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
11904
11905 wpalMemoryCopy( pSendBuffer+usDataOffset,
11906 &enterBmpsReq,
11907 sizeof(enterBmpsReq));
11908
11909 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011910 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011911
11912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011914 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011915 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11916 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011917}/*WDI_ProcessEnterBmpsReq*/
11918
11919/**
11920 @brief Process Exit BMPS Request function (called when Main FSM
11921 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011922
11923 @param pWDICtx: pointer to the WLAN DAL context
11924 pEventData: pointer to the event information structure
11925
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 @see
11927 @return Result of the function call
11928*/
11929WDI_Status
11930WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011931(
Jeff Johnson295189b2012-06-20 16:38:30 -070011932 WDI_ControlBlockType* pWDICtx,
11933 WDI_EventInfoType* pEventData
11934)
11935{
11936 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
11937 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011938 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011939 wpt_uint16 usDataOffset = 0;
11940 wpt_uint16 usSendSize = 0;
11941 tHalExitBmpsReqParams exitBmpsReq;
11942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11943
11944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 -------------------------------------------------------------------------*/
11947 if (( NULL == pEventData ) ||
11948 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
11949 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
11950 {
11951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11952 "%s: Invalid parameters", __FUNCTION__);
11953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 }
11956
11957 /*-----------------------------------------------------------------------
11958 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011960 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 sizeof(exitBmpsReq),
11963 &pSendBuffer, &usDataOffset, &usSendSize))||
11964 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
11965 {
11966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11967 "Unable to get send buffer in Exit BMPS req %x %x %x",
11968 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
11969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011971 }
11972 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
11973
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
11975
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 wpalMemoryCopy( pSendBuffer+usDataOffset,
11977 &exitBmpsReq,
11978 sizeof(exitBmpsReq));
11979
11980 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011981 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011982
11983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11987 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011988}/*WDI_ProcessExitBmpsReq*/
11989
11990/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011991 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011993
11994 @param pWDICtx: pointer to the WLAN DAL context
11995 pEventData: pointer to the event information structure
11996
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 @see
11998 @return Result of the function call
11999*/
12000WDI_Status
12001WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012002(
Jeff Johnson295189b2012-06-20 16:38:30 -070012003 WDI_ControlBlockType* pWDICtx,
12004 WDI_EventInfoType* pEventData
12005)
12006{
12007 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12008 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012009 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012010 wpt_uint16 usDataOffset = 0;
12011 wpt_uint16 usSendSize = 0;
12012 tUapsdReqParams enterUapsdReq;
12013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12014
12015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 -------------------------------------------------------------------------*/
12018 if (( NULL == pEventData ) ||
12019 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12020 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12021 {
12022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12023 "%s: Invalid parameters", __FUNCTION__);
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
12028 /*-----------------------------------------------------------------------
12029 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012030 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 sizeof(enterUapsdReq),
12034 &pSendBuffer, &usDataOffset, &usSendSize))||
12035 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12036 {
12037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12038 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12039 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012042 }
12043
12044 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12045 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12046 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12047 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12048 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12049 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12050 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12051 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012053
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 wpalMemoryCopy( pSendBuffer+usDataOffset,
12055 &enterUapsdReq,
12056 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012057
12058 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012060
12061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12065 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012066}/*WDI_ProcessEnterUapsdReq*/
12067
12068/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012069 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012071
12072 @param pWDICtx: pointer to the WLAN DAL context
12073 pEventData: pointer to the event information structure
12074
Jeff Johnson295189b2012-06-20 16:38:30 -070012075 @see
12076 @return Result of the function call
12077*/
12078WDI_Status
12079WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012080(
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 WDI_ControlBlockType* pWDICtx,
12082 WDI_EventInfoType* pEventData
12083)
12084{
12085 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012087 wpt_uint16 usDataOffset = 0;
12088 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012089 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12090 wpt_uint8 bssIdx = 0;
12091
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12093
12094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 -------------------------------------------------------------------------*/
12097 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012098 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12100 {
12101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12102 "%s: Invalid parameters", __FUNCTION__);
12103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 }
12106
12107 /*-----------------------------------------------------------------------
12108 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012112 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012114 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 {
12116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12117 "Unable to get send buffer in Exit UAPSD req %x %x",
12118 pEventData, wdiExitUapsdRspCb);
12119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012121 }
12122
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012123 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12124
12125 wpalMemoryCopy( pSendBuffer+usDataOffset,
12126 &bssIdx,
12127 sizeof(wpt_uint8));
12128
12129 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12130 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12131
Jeff Johnson295189b2012-06-20 16:38:30 -070012132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012135 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12136 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012137}/*WDI_ProcessExitUapsdReq*/
12138
12139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012140 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012141 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012142
12143 @param pWDICtx: pointer to the WLAN DAL context
12144 pEventData: pointer to the event information structure
12145
Jeff Johnson295189b2012-06-20 16:38:30 -070012146 @see
12147 @return Result of the function call
12148*/
12149WDI_Status
12150WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012151(
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 WDI_ControlBlockType* pWDICtx,
12153 WDI_EventInfoType* pEventData
12154)
12155{
12156 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12157 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 wpt_uint16 usDataOffset = 0;
12160 wpt_uint16 usSendSize = 0;
12161 tUapsdInfo uapsdAcParamsReq;
12162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12163
12164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 -------------------------------------------------------------------------*/
12167 if (( NULL == pEventData ) ||
12168 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12169 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12170 {
12171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12172 "%s: Invalid parameters", __FUNCTION__);
12173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012175 }
12176
12177 /*-----------------------------------------------------------------------
12178 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 sizeof(uapsdAcParamsReq),
12183 &pSendBuffer, &usDataOffset, &usSendSize))||
12184 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12185 {
12186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12187 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12188 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012191 }
12192
12193 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12194 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12195 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12196 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12197 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12198 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12199
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 wpalMemoryCopy( pSendBuffer+usDataOffset,
12201 &uapsdAcParamsReq,
12202 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012203
12204 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012206
12207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12211 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012212}/*WDI_ProcessSetUapsdAcParamsReq*/
12213
12214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012215 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012217
12218 @param pWDICtx: pointer to the WLAN DAL context
12219 pEventData: pointer to the event information structure
12220
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 @see
12222 @return Result of the function call
12223*/
12224WDI_Status
12225WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012226(
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 WDI_ControlBlockType* pWDICtx,
12228 WDI_EventInfoType* pEventData
12229)
12230{
12231 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12232 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 wpt_uint16 usDataOffset = 0;
12235 wpt_uint16 usSendSize = 0;
12236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12237
12238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 -------------------------------------------------------------------------*/
12241 if (( NULL == pEventData ) ||
12242 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12243 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12244 {
12245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12246 "%s: Invalid parameters", __FUNCTION__);
12247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 }
12250
12251 /*-----------------------------------------------------------------------
12252 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012256 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12257 &pSendBuffer, &usDataOffset, &usSendSize))||
12258 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12259 {
12260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12261 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12262 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 }
12266
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 wpalMemoryCopy( pSendBuffer+usDataOffset,
12268 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12269 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012270
12271 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012273
12274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012277 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12278 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012279}/*WDI_ProcessUpdateUapsdParamsReq*/
12280
12281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012282 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012284
12285 @param pWDICtx: pointer to the WLAN DAL context
12286 pEventData: pointer to the event information structure
12287
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 @see
12289 @return Result of the function call
12290*/
12291WDI_Status
12292WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012293(
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 WDI_ControlBlockType* pWDICtx,
12295 WDI_EventInfoType* pEventData
12296)
12297{
12298 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12299 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012300 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012301 wpt_uint16 usDataOffset = 0;
12302 wpt_uint16 usSendSize = 0;
12303 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12304
12305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12306
12307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 -------------------------------------------------------------------------*/
12310 if (( NULL == pEventData ) ||
12311 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12312 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12313 {
12314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12315 "%s: Invalid parameters", __FUNCTION__);
12316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 }
12319
12320 /*-----------------------------------------------------------------------
12321 Get message buffer
12322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 sizeof(halRxpFilterParams),
12325 &pSendBuffer, &usDataOffset, &usSendSize))||
12326 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12327 {
12328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12329 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12330 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 }
12334
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12339
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 wpalMemoryCopy( pSendBuffer+usDataOffset,
12341 &halRxpFilterParams,
12342 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012343
12344 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012346
12347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12351 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012352}/*WDI_ProcessConfigureRxpFilterReq*/
12353
12354/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012357
12358 @param pWDICtx: pointer to the WLAN DAL context
12359 pEventData: pointer to the event information structure
12360
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 @see
12362 @return Result of the function call
12363*/
12364WDI_Status
12365WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012366(
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 WDI_ControlBlockType* pWDICtx,
12368 WDI_EventInfoType* pEventData
12369)
12370{
12371 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12372 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 wpt_uint16 usDataOffset = 0;
12375 wpt_uint16 usSendSize = 0;
12376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12377
12378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 -------------------------------------------------------------------------*/
12381 if (( NULL == pEventData ) ||
12382 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12383 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12384 {
12385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12386 "%s: Invalid parameters", __FUNCTION__);
12387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 }
12390
12391 /*-----------------------------------------------------------------------
12392 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12397 &pSendBuffer, &usDataOffset, &usSendSize))||
12398 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12399 {
12400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12401 "Unable to get send buffer in Set beacon filter req %x %x %x",
12402 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 }
12406
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 wpalMemoryCopy( pSendBuffer+usDataOffset,
12408 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12409 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12410 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12411 &pwdiBeaconFilterParams->aFilters[0],
12412 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012413
12414 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012415 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012416
12417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012420 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12421 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012422}/*WDI_ProcessSetBeaconFilterReq*/
12423
12424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012427
12428 @param pWDICtx: pointer to the WLAN DAL context
12429 pEventData: pointer to the event information structure
12430
Jeff Johnson295189b2012-06-20 16:38:30 -070012431 @see
12432 @return Result of the function call
12433*/
12434WDI_Status
12435WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012436(
Jeff Johnson295189b2012-06-20 16:38:30 -070012437 WDI_ControlBlockType* pWDICtx,
12438 WDI_EventInfoType* pEventData
12439)
12440{
12441 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12442 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 wpt_uint16 usDataOffset = 0;
12445 wpt_uint16 usSendSize = 0;
12446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12447
12448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 -------------------------------------------------------------------------*/
12451 if (( NULL == pEventData ) ||
12452 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12453 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12454 {
12455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12456 "%s: Invalid parameters", __FUNCTION__);
12457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 }
12460
12461 /*-----------------------------------------------------------------------
12462 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012465 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012466 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12467 &pSendBuffer, &usDataOffset, &usSendSize))||
12468 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12469 {
12470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12471 "Unable to get send buffer in remove beacon filter req %x %x %x",
12472 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 }
12476
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 wpalMemoryCopy( pSendBuffer+usDataOffset,
12478 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12479 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012480
12481 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012483
12484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012485 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12488 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012489}
12490
12491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012492 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012494
12495 @param pWDICtx: pointer to the WLAN DAL context
12496 pEventData: pointer to the event information structure
12497
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 @see
12499 @return Result of the function call
12500*/
12501WDI_Status
12502WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012503(
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 WDI_ControlBlockType* pWDICtx,
12505 WDI_EventInfoType* pEventData
12506)
12507{
12508 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12509 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 wpt_uint16 usDataOffset = 0;
12512 wpt_uint16 usSendSize = 0;
12513 tHalRSSIThresholds rssiThresholdsReq;
12514 WDI_Status ret_status = 0;
12515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12516
12517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 -------------------------------------------------------------------------*/
12520 if (( NULL == pEventData ) ||
12521 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12522 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12523 {
12524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12525 "%s: Invalid parameters", __FUNCTION__);
12526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012528 }
12529
12530 /*-----------------------------------------------------------------------
12531 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 sizeof(rssiThresholdsReq),
12536 &pSendBuffer, &usDataOffset, &usSendSize))||
12537 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12538 {
12539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12540 "Unable to get send buffer in remove beacon filter req %x %x %x",
12541 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 }
12545
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12566
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 wpalMemoryCopy( pSendBuffer+usDataOffset,
12568 &rssiThresholdsReq,
12569 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012570
12571 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012573
12574 /*-------------------------------------------------------------------------
12575 Send Set threshold req to HAL
12576 -------------------------------------------------------------------------*/
12577 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12578 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12579 {
12580 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12581 // req. Then as a result of processing the threshold cross ind, we trigger
12582 // a Set threshold req, then we need to indicate to WDI that it needs to
12583 // go to busy state as a result of the indication as we sent a req in the
12584 // same WDI context.
12585 // Hence expected state transition is to busy.
12586 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12587 }
12588
12589 return ret_status;
12590}
12591
12592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012595
12596 @param pWDICtx: pointer to the WLAN DAL context
12597 pEventData: pointer to the event information structure
12598
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 @see
12600 @return Result of the function call
12601*/
12602WDI_Status
12603WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012604(
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 WDI_ControlBlockType* pWDICtx,
12606 WDI_EventInfoType* pEventData
12607)
12608{
12609 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12610 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 wpt_uint16 usDataOffset = 0;
12613 wpt_uint16 usSendSize = 0;
12614 tHalHostOffloadReq hostOffloadParams;
12615 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012616 wpt_uint8 ucCurrentBSSSesIdx = 0;
12617 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012618
12619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12620
12621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 -------------------------------------------------------------------------*/
12624 if (( NULL == pEventData ) ||
12625 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12626 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12627 {
12628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12629 "%s: Invalid parameters", __FUNCTION__);
12630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 }
12633
12634 /*-----------------------------------------------------------------------
12635 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12640 &pSendBuffer, &usDataOffset, &usSendSize))||
12641 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12642 {
12643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12644 "Unable to get send buffer in host offload req %x %x %x",
12645 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012648 }
12649
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012650 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12651 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12652 &pBSSSes);
12653 if ( NULL == pBSSSes )
12654 {
12655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12656 " %s : Association for this BSSID does not exist",__FUNCTION__);
12657 return WDI_STATUS_E_FAILURE;
12658 }
12659
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12661 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012662
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12664 {
12665 // ARP Offload
12666 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12667 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12668 4);
12669 }
12670 else
12671 {
12672 // NS Offload
12673 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12674 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12675 16);
12676
12677#ifdef WLAN_NS_OFFLOAD
12678 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12679 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12680 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12681 16);
12682 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12683 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12684 16);
12685 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12686 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12687 16);
12688 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12689 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12690 16);
12691 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12692 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12693 6);
12694 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12695 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12696 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012697
Jeff Johnson295189b2012-06-20 16:38:30 -070012698#endif // WLAN_NS_OFFLOAD
12699 }
12700
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012701 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12702
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 // copy hostOffloadParams into pSendBuffer
12704 wpalMemoryCopy( pSendBuffer+usDataOffset,
12705 &hostOffloadParams,
12706 sizeof(hostOffloadParams));
12707
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012708 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012710 // copy nsOffloadParams into pSendBuffer
12711 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 &nsOffloadParams,
12713 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012714 }
12715 else
12716 {
12717#ifdef WLAN_NS_OFFLOAD
12718 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12719 {
12720 // copy nsOffloadParams into pSendBuffer
12721 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12722 &nsOffloadParams,
12723 sizeof(nsOffloadParams));
12724 }
12725#endif
12726 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012727
12728 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012730
12731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012734 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12735 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012736}/*WDI_ProcessHostOffloadReq*/
12737
12738/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012741
12742 @param pWDICtx: pointer to the WLAN DAL context
12743 pEventData: pointer to the event information structure
12744
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 @see
12746 @return Result of the function call
12747*/
12748WDI_Status
12749WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012750(
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 WDI_ControlBlockType* pWDICtx,
12752 WDI_EventInfoType* pEventData
12753)
12754{
12755 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12756 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 wpt_uint16 usDataOffset = 0;
12759 wpt_uint16 usSendSize = 0;
12760 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012761 wpt_uint8 ucCurrentBSSSesIdx = 0;
12762 WDI_BSSSessionType* pBSSSes = NULL;
12763
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12765
12766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 -------------------------------------------------------------------------*/
12769 if (( NULL == pEventData ) ||
12770 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
12771 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
12772 {
12773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12774 "Invalid parameters in Keep Alive req");
12775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 }
12778
12779 /*-----------------------------------------------------------------------
12780 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 sizeof(keepAliveReq),
12785 &pSendBuffer, &usDataOffset, &usSendSize))||
12786 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
12787 {
12788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12789 "Unable to get send buffer in keep alive req %x %x %x",
12790 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
12791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 }
12794
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012795 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12796 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
12797 &pBSSSes);
12798 if ( NULL == pBSSSes )
12799 {
12800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12801 " %s : Association for this BSSID does not exist",__FUNCTION__);
12802 return WDI_STATUS_E_FAILURE;
12803 }
12804
Jeff Johnson295189b2012-06-20 16:38:30 -070012805 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
12806 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
12807
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012808 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012809
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
12811 {
12812 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
12813 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
12814 HAL_IPV4_ADDR_LEN);
12815 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
12816 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070012817 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070012818 wpalMemoryCopy(keepAliveReq.destMacAddr,
12819 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
12820 HAL_MAC_ADDR_LEN);
12821 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012822
12823 wpalMemoryCopy( pSendBuffer+usDataOffset,
12824 &keepAliveReq,
12825 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012826
12827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12828 "Process keep alive req %d",sizeof(keepAliveReq));
12829
12830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12831 "Process keep alive req time period %d",keepAliveReq.timePeriod);
12832
12833 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012835
12836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12837 "Sending keep alive req to HAL");
12838
12839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012841 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12843 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012844}/*WDI_ProcessKeepAliveReq*/
12845
12846
12847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012848 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012849 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012850
12851 @param pWDICtx: pointer to the WLAN DAL context
12852 pEventData: pointer to the event information structure
12853
Jeff Johnson295189b2012-06-20 16:38:30 -070012854 @see
12855 @return Result of the function call
12856*/
12857WDI_Status
12858WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012859(
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 WDI_ControlBlockType* pWDICtx,
12861 WDI_EventInfoType* pEventData
12862)
12863{
12864 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
12865 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 wpt_uint16 usDataOffset = 0;
12868 wpt_uint16 usSendSize = 0;
12869 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012870 wpt_uint8 ucCurrentBSSSesIdx = 0;
12871 WDI_BSSSessionType* pBSSSes = NULL;
12872
Jeff Johnson295189b2012-06-20 16:38:30 -070012873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12874
12875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 -------------------------------------------------------------------------*/
12878 if (( NULL == pEventData ) ||
12879 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
12880 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
12881 {
12882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12883 "%s: Invalid parameters", __FUNCTION__);
12884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 }
12887
12888 /*-----------------------------------------------------------------------
12889 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 sizeof(wowlAddBcPtrnReq),
12894 &pSendBuffer, &usDataOffset, &usSendSize))||
12895 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
12896 {
12897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12898 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
12899 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
12900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 }
12903
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012904 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12905 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
12906 &pBSSSes);
12907 if ( NULL == pBSSSes )
12908 {
12909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12910 " %s : Association for this BSSID does not exist",__FUNCTION__);
12911 return WDI_STATUS_E_FAILURE;
12912 }
12913
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070012916 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012921 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
12922
12923 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
12924 {
12925 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12926 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12927 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
12928 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
12929 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
12930 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
12931 }
12932 else
12933 {
12934 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12935 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12936 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12937 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
12938 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
12939 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12940
12941 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12942 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12943 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12944 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
12945 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
12946 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12947 }
12948
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012949 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
12950
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 wpalMemoryCopy( pSendBuffer+usDataOffset,
12952 &wowlAddBcPtrnReq,
12953 sizeof(wowlAddBcPtrnReq));
12954
12955 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012957
12958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12962 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012963}/*WDI_ProcessWowlAddBcPtrnReq*/
12964
12965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012968
12969 @param pWDICtx: pointer to the WLAN DAL context
12970 pEventData: pointer to the event information structure
12971
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 @see
12973 @return Result of the function call
12974*/
12975WDI_Status
12976WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012977(
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 WDI_ControlBlockType* pWDICtx,
12979 WDI_EventInfoType* pEventData
12980)
12981{
12982 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
12983 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 wpt_uint16 usDataOffset = 0;
12986 wpt_uint16 usSendSize = 0;
12987 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012988 wpt_uint8 ucCurrentBSSSesIdx = 0;
12989 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12991
12992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 -------------------------------------------------------------------------*/
12995 if (( NULL == pEventData ) ||
12996 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
12997 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
12998 {
12999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13000 "%s: Invalid parameters", __FUNCTION__);
13001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 }
13004
13005 /*-----------------------------------------------------------------------
13006 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 sizeof(wowlDelBcPtrnReq),
13011 &pSendBuffer, &usDataOffset, &usSendSize))||
13012 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13013 {
13014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13015 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13016 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 }
13020
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013021 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13022 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13023 &pBSSSes);
13024 if ( NULL == pBSSSes )
13025 {
13026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13027 " %s : Association for this BSSID does not exist",__FUNCTION__);
13028 return WDI_STATUS_E_FAILURE;
13029 }
13030
Jeff Johnsone7245742012-09-05 17:12:55 -070013031 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013033
13034 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13035
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 wpalMemoryCopy( pSendBuffer+usDataOffset,
13037 &wowlDelBcPtrnReq,
13038 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013039
13040 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013042
13043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13047 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013048}/*WDI_ProcessWowlDelBcPtrnReq*/
13049
13050/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013053
13054 @param pWDICtx: pointer to the WLAN DAL context
13055 pEventData: pointer to the event information structure
13056
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 @see
13058 @return Result of the function call
13059*/
13060WDI_Status
13061WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013062(
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 WDI_ControlBlockType* pWDICtx,
13064 WDI_EventInfoType* pEventData
13065)
13066{
13067 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13068 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013070 wpt_uint16 usDataOffset = 0;
13071 wpt_uint16 usSendSize = 0;
13072 tHalWowlEnterParams wowlEnterReq;
13073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13074
13075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013077 -------------------------------------------------------------------------*/
13078 if (( NULL == pEventData ) ||
13079 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13080 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13081 {
13082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13083 "%s: Invalid parameters", __FUNCTION__);
13084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 }
13087
13088 /*-----------------------------------------------------------------------
13089 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 sizeof(wowlEnterReq),
13094 &pSendBuffer, &usDataOffset, &usSendSize))||
13095 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13096 {
13097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13098 "Unable to get send buffer in Wowl enter req %x %x %x",
13099 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 }
13103
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013112 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013116 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013117 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013118 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13120
13121#ifdef WLAN_WAKEUP_EVENTS
13122 wowlEnterReq.ucWoWEAPIDRequestEnable =
13123 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13124
13125 wowlEnterReq.ucWoWEAPOL4WayEnable =
13126 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13127
13128 wowlEnterReq.ucWowNetScanOffloadMatch =
13129 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13130
13131 wowlEnterReq.ucWowGTKRekeyError =
13132 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13133
13134 wowlEnterReq.ucWoWBSSConnLoss =
13135 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13136#endif // WLAN_WAKEUP_EVENTS
13137
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013138 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13139
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13141 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13142 sizeof(tSirMacAddr));
13143
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 wpalMemoryCopy( pSendBuffer+usDataOffset,
13145 &wowlEnterReq,
13146 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013147
13148 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013149 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013150
13151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13155 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013156}/*WDI_ProcessWowlEnterReq*/
13157
13158/**
13159 @brief Process Wowl exit Request function (called when Main FSM
13160 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013161
13162 @param pWDICtx: pointer to the WLAN DAL context
13163 pEventData: pointer to the event information structure
13164
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 @see
13166 @return Result of the function call
13167*/
13168WDI_Status
13169WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013170(
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 WDI_ControlBlockType* pWDICtx,
13172 WDI_EventInfoType* pEventData
13173)
13174{
13175 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013176 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 wpt_uint16 usDataOffset = 0;
13179 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013180 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13182
13183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 -------------------------------------------------------------------------*/
13186 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013187 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13189 {
13190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13191 "%s: Invalid parameters", __FUNCTION__);
13192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 }
13195
13196 /*-----------------------------------------------------------------------
13197 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013201 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013203 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 {
13205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13206 "Unable to get send buffer in Wowl Exit req %x %x",
13207 pEventData, wdiWowlExitCb);
13208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 }
13211
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013212 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13213
13214 wpalMemoryCopy( pSendBuffer+usDataOffset,
13215 &wowlExitparams,
13216 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13221 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013222}/*WDI_ProcessWowlExitReq*/
13223
13224/**
13225 @brief Process Configure Apps Cpu Wakeup State Request function
13226 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013227
13228 @param pWDICtx: pointer to the WLAN DAL context
13229 pEventData: pointer to the event information structure
13230
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 @see
13232 @return Result of the function call
13233*/
13234WDI_Status
13235WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013236(
Jeff Johnson295189b2012-06-20 16:38:30 -070013237 WDI_ControlBlockType* pWDICtx,
13238 WDI_EventInfoType* pEventData
13239)
13240{
13241 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13242 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013243 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013244 wpt_uint16 usDataOffset = 0;
13245 wpt_uint16 usSendSize = 0;
13246 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13248
13249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013251 -------------------------------------------------------------------------*/
13252 if (( NULL == pEventData ) ||
13253 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13254 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13255 {
13256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13257 "%s: Invalid parameters", __FUNCTION__);
13258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 }
13261
13262 /*-----------------------------------------------------------------------
13263 Get message buffer
13264 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 sizeof(halCfgAppsCpuWakeupStateReqParams),
13267 &pSendBuffer, &usDataOffset, &usSendSize))||
13268 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13269 {
13270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13271 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13272 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 }
13276
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13279
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 wpalMemoryCopy( pSendBuffer+usDataOffset,
13281 &halCfgAppsCpuWakeupStateReqParams,
13282 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013283
13284 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013286
13287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13291 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13292 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013293}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13294
13295#ifdef WLAN_FEATURE_VOWIFI_11R
13296/**
13297 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13298 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013299
13300 @param pWDICtx: pointer to the WLAN DAL context
13301 pEventData: pointer to the event information structure
13302
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 @see
13304 @return Result of the function call
13305*/
13306WDI_Status
13307WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013308(
Jeff Johnson295189b2012-06-20 16:38:30 -070013309 WDI_ControlBlockType* pWDICtx,
13310 WDI_EventInfoType* pEventData
13311)
13312{
13313 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13314 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 wpt_uint16 usDataOffset = 0;
13319 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 wpt_macAddr macBSSID;
13322 tAggrAddTsReq halAggrAddTsReq;
13323 int i;
13324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13325
13326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013328 -------------------------------------------------------------------------*/
13329 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13330 ( NULL == pEventData->pCBfnc ))
13331 {
13332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13333 "%s: Invalid parameters", __FUNCTION__);
13334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013336 }
13337 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13338 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13339 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13340 /*-------------------------------------------------------------------------
13341 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 -------------------------------------------------------------------------*/
13344 wpalMutexAcquire(&pWDICtx->wptMutex);
13345
13346 /*------------------------------------------------------------------------
13347 Find the BSS for which the request is made and identify WDI session
13348 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13350 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013351 &macBSSID))
13352 {
13353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13354 "This station does not exist in the WDI Station Table %d");
13355 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 }
13358
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13360 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13363 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13364 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013365
13366 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013369
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 /*------------------------------------------------------------------------
13371 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 ------------------------------------------------------------------------*/
13374 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13375 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13377 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13378 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013379
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 }
13384
13385 wpalMutexRelease(&pWDICtx->wptMutex);
13386 /*-----------------------------------------------------------------------
13387 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 sizeof(tAggrAddTsParams),
13392 &pSendBuffer, &usDataOffset, &usSendSize))||
13393 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13394 {
13395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13396 "Unable to get send buffer in set bss key req %x %x %x",
13397 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 }
13401
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013404 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13406
13407 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13408 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013413 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13415 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13418 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013419 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13421 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13424 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013425 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13427 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13430 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13433 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13436 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013439 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013440 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441
13442
13443 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013449 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013450 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013461 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13473 }
13474
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 wpalMemoryCopy( pSendBuffer+usDataOffset,
13476 &halAggrAddTsReq,
13477 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013478
13479 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013481
13482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013488}/*WDI_ProcessAggrAddTSpecReq*/
13489#endif /* WLAN_FEATURE_VOWIFI_11R */
13490
13491/**
13492 @brief Process Shutdown Request function (called when Main FSM
13493 allows it)
13494
13495 @param pWDICtx: pointer to the WLAN DAL context
13496 pEventData: pointer to the event information structure
13497
13498 @see
13499 @return Result of the function call
13500*/
13501WDI_Status
13502WDI_ProcessShutdownReq
13503(
13504 WDI_ControlBlockType* pWDICtx,
13505 WDI_EventInfoType* pEventData
13506 )
13507{
13508 wpt_status wptStatus;
13509
13510
13511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13512
13513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 -------------------------------------------------------------------------*/
13516 if ( NULL == pEventData )
13517 {
13518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13519 "%s: Invalid parameters", __FUNCTION__);
13520 WDI_ASSERT(0);
13521 return WDI_STATUS_E_FAILURE;
13522 }
13523
13524 wpalMutexAcquire(&pWDICtx->wptMutex);
13525
13526
13527 gWDIInitialized = eWLAN_PAL_FALSE;
13528 /*! TO DO: stop the data services */
13529 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13530 {
13531 /*Stop the STA Table !UT- check this logic again
13532 It is safer to do it here than on the response - because a stop is imminent*/
13533 WDI_STATableStop(pWDICtx);
13534
13535 /* Stop Transport Driver, DXE */
13536 WDTS_Stop(pWDICtx);
13537 }
13538
13539 /*Clear all pending request*/
13540 WDI_ClearPendingRequests(pWDICtx);
13541 /* Close Data transport*/
13542 /* FTM mode does not open Data Path */
13543 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13544 {
13545 WDTS_Close(pWDICtx);
13546 }
13547 /*Close the STA Table !UT- check this logic again*/
13548 WDI_STATableClose(pWDICtx);
13549 /*close the PAL */
13550 wptStatus = wpalClose(pWDICtx->pPALContext);
13551 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13552 {
13553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13554 "Failed to wpal Close %d", wptStatus);
13555 WDI_ASSERT(0);
13556 }
13557
13558 /*Transition back to init state*/
13559 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13560
13561 wpalMutexRelease(&pWDICtx->wptMutex);
13562
13563 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013565
13566
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013568}/*WDI_ProcessShutdownReq*/
13569
13570/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013572========================================================================*/
13573
13574/**
13575 @brief Process Start Response function (called when a response
13576 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013577
13578 @param pWDICtx: pointer to the WLAN DAL context
13579 pEventData: pointer to the event information structure
13580
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 @see
13582 @return Result of the function call
13583*/
13584WDI_Status
13585WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013586(
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 WDI_ControlBlockType* pWDICtx,
13588 WDI_EventInfoType* pEventData
13589)
13590{
13591 WDI_StartRspParamsType wdiRspParams;
13592 WDI_StartRspCb wdiStartRspCb = NULL;
13593
13594 tHalMacStartRspParams* startRspParams;
13595
13596#ifndef HAL_SELF_STA_PER_BSS
13597 WDI_AddStaParams wdiAddSTAParam = {0};
13598#endif
13599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13600
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 -------------------------------------------------------------------------*/
13605 if (( NULL == pEventData ) ||
13606 ( NULL == pEventData->pEventData) ||
13607 ( NULL == wdiStartRspCb ))
13608 {
13609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13610 "%s: Invalid parameters", __FUNCTION__);
13611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 }
13614
13615 /*-------------------------------------------------------------------------
13616 Extract response and send it to UMAC
13617 -------------------------------------------------------------------------*/
13618 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13619 {
13620 // not enough data was received
13621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13622 "Invalid response length in Start Resp Expect %x Rcvd %x",
13623 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 }
13627
13628 /*-------------------------------------------------------------------------
13629 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 -------------------------------------------------------------------------*/
13632 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13633
13634 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13635 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13636 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13637 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13638 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13639 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13640 wdiRspParams.wlanReportedVersion.major =
13641 startRspParams->wcnssWlanVersion.major;
13642 wdiRspParams.wlanReportedVersion.minor =
13643 startRspParams->wcnssWlanVersion.minor;
13644 wdiRspParams.wlanReportedVersion.version =
13645 startRspParams->wcnssWlanVersion.version;
13646 wdiRspParams.wlanReportedVersion.revision =
13647 startRspParams->wcnssWlanVersion.revision;
13648 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13649 startRspParams->wcnssCrmVersionString,
13650 sizeof(wdiRspParams.wcnssSoftwareVersion));
13651 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13652 startRspParams->wcnssWlanVersionString,
13653 sizeof(wdiRspParams.wcnssHardwareVersion));
13654 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13655
13656 wpalMutexAcquire(&pWDICtx->wptMutex);
13657 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13658 {
13659 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13660
13661 /*Cache the start response for further use*/
13662 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013663 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013664 sizeof(pWDICtx->wdiCachedStartRspParams));
13665
13666 }
13667 else
13668 {
13669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13670 "Failed to start device with status %s(%d)",
13671 WDI_getHALStatusMsgString(startRspParams->status),
13672 startRspParams->status);
13673
13674 /*Set the expected state transition to stopped - because the start has
13675 failed*/
13676 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13677
13678 wpalMutexRelease(&pWDICtx->wptMutex);
13679
13680 /*Notify UMAC*/
13681 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013682
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13684
13685 /*Although the response is an error - it was processed by our function
13686 so as far as the caller is concerned this is a succesful reponse processing*/
13687 return WDI_STATUS_SUCCESS;
13688 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013689
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 wpalMutexRelease(&pWDICtx->wptMutex);
13691
13692 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13693 {
13694 /* FTM mode does not need to execute below */
13695 /* Notify UMAC */
13696 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13697 return WDI_STATUS_SUCCESS;
13698 }
13699
13700 /* START the Data transport */
13701 WDTS_startTransport(pWDICtx);
13702
13703 /*Start the STA Table !- check this logic again*/
13704 WDI_STATableStart(pWDICtx);
13705
13706#ifndef HAL_SELF_STA_PER_BSS
13707 /* Store the Self STA Index */
13708 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13709
13710 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13711 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13712 WDI_MAC_ADDR_LEN);
13713
13714 /* At this point add the self-STA */
13715
13716 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13717 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13718 /*! TO DO: wdiAddSTAParam.dpuSig */
13719 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13720 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13721 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13722
13723 //all DPU indices are the same for self STA
13724 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13725 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013726 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13728 WDI_MAC_ADDR_LEN);
13729 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13730 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13731
13732 /* Note: Since we don't get an explicit config STA request for self STA, we
13733 add the self STA upon receiving the Start response message. But the
13734 self STA entry in the table is deleted when WDI gets an explicit delete STA
13735 request */
13736 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13737#endif
13738
13739 /*Notify UMAC*/
13740 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13741
Jeff Johnsone7245742012-09-05 17:12:55 -070013742 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013743}/*WDI_ProcessStartRsp*/
13744
13745
13746/**
13747 @brief Process Stop Response function (called when a response
13748 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013749
13750 @param pWDICtx: pointer to the WLAN DAL context
13751 pEventData: pointer to the event information structure
13752
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 @see
13754 @return Result of the function call
13755*/
13756WDI_Status
13757WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013758(
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 WDI_ControlBlockType* pWDICtx,
13760 WDI_EventInfoType* pEventData
13761)
13762{
13763 WDI_Status wdiStatus;
13764 WDI_StopRspCb wdiStopRspCb = NULL;
13765
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13768
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 -------------------------------------------------------------------------*/
13773 if (( NULL == pEventData ) ||
13774 ( NULL == pEventData->pEventData) ||
13775 ( NULL == wdiStopRspCb ))
13776 {
13777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13778 "%s: Invalid parameters", __FUNCTION__);
13779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 }
13782
13783 /*-------------------------------------------------------------------------
13784 Extract response and send it to UMAC
13785 -------------------------------------------------------------------------*/
13786 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
13787 {
13788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13789 "Invalid response length in Stop Resp %x %x",
13790 pEventData->uEventDataSize);
13791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013793 }
13794
13795 /*-------------------------------------------------------------------------
13796 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013799 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
13800 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 sizeof(halMacStopRspMsg.stopRspParams));
13802
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013804
13805 wpalMutexAcquire(&pWDICtx->wptMutex);
13806
13807 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070013809 --------------------------------------------------------------------------*/
13810 if ( WDI_STATUS_SUCCESS != wdiStatus )
13811 {
13812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13813 "Failed to stop the device with status %s (%d)",
13814 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
13815 halMacStopRspMsg.stopRspParams.status);
13816
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
13818
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013822
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13824
13825 /*Transition now as WDI may get preempted imediately after it sends
13826 up the Stop Response and it will not get to process the state transition
13827 from Main Rsp function*/
13828 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
13829 wpalMutexRelease(&pWDICtx->wptMutex);
13830
13831 /*! TO DO: - STOP the Data transport */
13832
13833 /*Notify UMAC*/
13834 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
13835
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013837}/*WDI_ProcessStopRsp*/
13838
13839/**
13840 @brief Process Close Rsp function (called when a response
13841 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013842
13843 @param pWDICtx: pointer to the WLAN DAL context
13844 pEventData: pointer to the event information structure
13845
Jeff Johnson295189b2012-06-20 16:38:30 -070013846 @see
13847 @return Result of the function call
13848*/
13849WDI_Status
13850WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013851(
Jeff Johnson295189b2012-06-20 16:38:30 -070013852 WDI_ControlBlockType* pWDICtx,
13853 WDI_EventInfoType* pEventData
13854)
13855{
13856 /*There is no close response comming from HAL - function just kept for
13857 simmetry */
13858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013859 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013860}/*WDI_ProcessCloseRsp*/
13861
13862
13863/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070013865============================================================================*/
13866
13867/**
13868 @brief Process Init Scan Rsp function (called when a response
13869 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013870
13871 @param pWDICtx: pointer to the WLAN DAL context
13872 pEventData: pointer to the event information structure
13873
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 @see
13875 @return Result of the function call
13876*/
13877WDI_Status
13878WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013879(
Jeff Johnson295189b2012-06-20 16:38:30 -070013880 WDI_ControlBlockType* pWDICtx,
13881 WDI_EventInfoType* pEventData
13882)
13883{
13884 WDI_Status wdiStatus;
13885 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013886 tHalInitScanRspMsg halInitScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13888
13889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 -------------------------------------------------------------------------*/
13892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
13893 ( NULL == pEventData->pEventData))
13894 {
13895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13896 "%s: Invalid parameters", __FUNCTION__);
13897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 }
13900
13901 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
13902 if( NULL == wdiInitScanRspCb)
13903 {
13904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13905 "%s: call back function is NULL", __FUNCTION__);
13906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013908 }
13909
13910 /*-------------------------------------------------------------------------
13911 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013912 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013913 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
13915 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 sizeof(halInitScanRspMsg.initScanRspParams));
13917
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013919
13920 if ( pWDICtx->bInBmps )
13921 {
13922 // notify DTS that we are entering Full power
13923 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
13924 }
13925
13926 /*Notify UMAC*/
13927 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
13928
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013930}/*WDI_ProcessInitScanRsp*/
13931
13932
13933/**
13934 @brief Process Start Scan Rsp function (called when a response
13935 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013936
13937 @param pWDICtx: pointer to the WLAN DAL context
13938 pEventData: pointer to the event information structure
13939
Jeff Johnson295189b2012-06-20 16:38:30 -070013940 @see
13941 @return Result of the function call
13942*/
13943WDI_Status
13944WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013945(
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 WDI_ControlBlockType* pWDICtx,
13947 WDI_EventInfoType* pEventData
13948)
13949{
13950 WDI_StartScanRspParamsType wdiStartScanParams;
13951 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013952
13953 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13955
13956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 -------------------------------------------------------------------------*/
13959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
13960 ( NULL == pEventData->pEventData))
13961 {
13962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13963 "%s: Invalid parameters", __FUNCTION__);
13964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 }
13967
13968 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
13969 if( NULL == wdiStartScanRspCb)
13970 {
13971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13972 "%s: call back function is NULL", __FUNCTION__);
13973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 }
13976
13977 /*-------------------------------------------------------------------------
13978 Extract response and send it to UMAC
13979 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013980 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
13981 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 sizeof(halStartScanRspMsg.startScanRspParams));
13983
13984 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
13985 halStartScanRspMsg.startScanRspParams.status);
13986#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 halStartScanRspMsg.startScanRspParams.startTSF,
13991 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070013992#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070013993
13994 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
13995 {
13996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13997 "Start scan failed with status %s (%d)",
13998 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
13999 halStartScanRspMsg.startScanRspParams.status);
14000 /* send the status to UMAC, don't return from here*/
14001 }
14002
14003 /*Notify UMAC*/
14004 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14005
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014007
14008}/*WDI_ProcessStartScanRsp*/
14009
14010
14011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014014
14015 @param pWDICtx: pointer to the WLAN DAL context
14016 pEventData: pointer to the event information structure
14017
Jeff Johnson295189b2012-06-20 16:38:30 -070014018 @see
14019 @return Result of the function call
14020*/
14021WDI_Status
14022WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014023(
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 WDI_ControlBlockType* pWDICtx,
14025 WDI_EventInfoType* pEventData
14026)
14027{
14028 WDI_Status wdiStatus;
14029 tHalEndScanRspMsg halEndScanRspMsg;
14030 WDI_EndScanRspCb wdiEndScanRspCb;
14031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14032
14033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 -------------------------------------------------------------------------*/
14036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14037 ( NULL == pEventData->pEventData))
14038 {
14039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14040 "%s: Invalid parameters", __FUNCTION__);
14041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 }
14044
14045 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14046
14047 /*-------------------------------------------------------------------------
14048 Extract response and send it to UMAC
14049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014050 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14051 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 sizeof(halEndScanRspMsg.endScanRspParams));
14053
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014055
14056 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14057 {
14058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14059 "End Scan failed with status %s (%d )",
14060 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14061 halEndScanRspMsg.endScanRspParams.status);
14062 /* send the status to UMAC, don't return from here*/
14063 }
14064
14065 /*Notify UMAC*/
14066 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14067
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014069}/*WDI_ProcessEndScanRsp*/
14070
14071
14072/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014074 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014075
14076 @param pWDICtx: pointer to the WLAN DAL context
14077 pEventData: pointer to the event information structure
14078
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 @see
14080 @return Result of the function call
14081*/
14082WDI_Status
14083WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014084(
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 WDI_ControlBlockType* pWDICtx,
14086 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014087)
Jeff Johnson295189b2012-06-20 16:38:30 -070014088{
14089 WDI_Status wdiStatus;
14090 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014091
14092 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14094
14095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 -------------------------------------------------------------------------*/
14098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14099 ( NULL == pEventData->pEventData))
14100 {
14101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14102 "%s: Invalid parameters", __FUNCTION__);
14103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 }
14106
14107 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14108
14109 /*-------------------------------------------------------------------------
14110 Extract response and send it to UMAC
14111 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14113 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14115
Jeff Johnsone7245742012-09-05 17:12:55 -070014116 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014117
14118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 halFinishScanRspMsg.finishScanRspParams.status);
14121
14122 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14123 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14124 {
14125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14126 "Finish Scan failed with status %s (%d)",
14127 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14128 halFinishScanRspMsg.finishScanRspParams.status);
14129 /* send the status to UMAC, don't return from here*/
14130 }
14131
14132 /*Notify UMAC*/
14133 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14134
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014136}/*WDI_ProcessFinishScanRsp*/
14137
14138/**
14139 @brief Process Join Response function (called when a response
14140 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014141
14142 @param pWDICtx: pointer to the WLAN DAL context
14143 pEventData: pointer to the event information structure
14144
Jeff Johnson295189b2012-06-20 16:38:30 -070014145 @see
14146 @return Result of the function call
14147*/
14148WDI_Status
14149WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014150(
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 WDI_ControlBlockType* pWDICtx,
14152 WDI_EventInfoType* pEventData
14153)
14154{
14155 WDI_Status wdiStatus;
14156 WDI_JoinRspCb wdiJoinRspCb;
14157 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014158
14159 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14161
14162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 -------------------------------------------------------------------------*/
14165 if (( NULL == pWDICtx ) ||
14166 ( NULL == pWDICtx->pfncRspCB ) ||
14167 ( NULL == pEventData ) ||
14168 ( NULL == pEventData->pEventData))
14169 {
14170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14171 "%s: Invalid parameters", __FUNCTION__);
14172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 }
14175
14176 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14177
14178 /*-------------------------------------------------------------------------
14179 Extract response and send it to UMAC
14180 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014181 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14182 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 sizeof(halJoinRspMsg.joinRspParams));
14184
Jeff Johnsone7245742012-09-05 17:12:55 -070014185 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014186
14187 wpalMutexAcquire(&pWDICtx->wptMutex);
14188
14189 /*-----------------------------------------------------------------------
14190 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14195 {
14196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014197 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14198 "association no longer in progress %d - mysterious HAL response",
14199 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014200
Jeff Johnsone7245742012-09-05 17:12:55 -070014201 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014204 }
14205
14206 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14207
14208 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014210 -----------------------------------------------------------------------*/
14211 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14212 {
14213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14214 "Join only allowed in Joining state - failure state is %d "
14215 "strange HAL response", pBSSSes->wdiAssocState);
14216
Jeff Johnsone7245742012-09-05 17:12:55 -070014217 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14218
Jeff Johnson295189b2012-06-20 16:38:30 -070014219 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014221 }
14222
14223
14224 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 -----------------------------------------------------------------------*/
14227 if ( WDI_STATUS_SUCCESS != wdiStatus )
14228 {
14229 /*Association was failed by HAL - remove session*/
14230 WDI_DeleteSession(pWDICtx, pBSSSes);
14231
14232 /*Association no longer in progress */
14233 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14234
14235 /*Association no longer in progress - prepare pending assoc for processing*/
14236 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014237
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 }
14239 else
14240 {
14241 /*Transition to state Joining - this may be redundant as we are supposed
14242 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014243 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 }
14245
14246 wpalMutexRelease(&pWDICtx->wptMutex);
14247
14248 /*Notify UMAC*/
14249 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14250
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014252}/*WDI_ProcessJoinRsp*/
14253
14254
14255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014258
14259 @param pWDICtx: pointer to the WLAN DAL context
14260 pEventData: pointer to the event information structure
14261
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 @see
14263 @return Result of the function call
14264*/
14265WDI_Status
14266WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014267(
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 WDI_ControlBlockType* pWDICtx,
14269 WDI_EventInfoType* pEventData
14270)
14271{
14272 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14273 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 WDI_BSSSessionType* pBSSSes = NULL;
14276
Jeff Johnsone7245742012-09-05 17:12:55 -070014277 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14279 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014280
Jeff Johnson295189b2012-06-20 16:38:30 -070014281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14282
14283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 -------------------------------------------------------------------------*/
14286 if (( NULL == pEventData ) ||
14287 ( NULL == pEventData->pEventData))
14288 {
14289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14290 "%s: Invalid parameters", __FUNCTION__);
14291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 }
14294
14295 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14296
14297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14301 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 sizeof(halConfigBssRspMsg.configBssRspParams));
14303
14304 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14305 halConfigBssRspMsg.configBssRspParams.status);
14306 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14307 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014308 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14310 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014311
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014313
14314 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014316
14317 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014319
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014321
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14325 #endif
14326 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14327 halConfigBssRspMsg.configBssRspParams.staMac,
14328 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014329
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 wpalMutexAcquire(&pWDICtx->wptMutex);
14331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014332 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14335 wdiConfigBSSParams.macBSSID,
14336 &pBSSSes);
14337
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 /*-----------------------------------------------------------------------
14339 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014340 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 -----------------------------------------------------------------------*/
14342 if ( NULL == pBSSSes )
14343 {
14344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14345 "Association sequence for this BSS does not yet exist "
14346 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014347
14348 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14349
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014353
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 /*Save data for this BSS*/
14355 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14356 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014357 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014359 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014360 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014361 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14367 pBSSSes->bcastStaIdx =
14368 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014369
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014371
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 /*-------------------------------------------------------------------------
14373 Add Peer STA
14374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014375 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14377 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014378
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 wdiAddSTAParam.ucHTCapable =
14383 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14384 wdiAddSTAParam.ucStaType =
14385 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14386
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014388 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14389 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014391
14392 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14393 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14394 WDI_MAC_ADDR_LEN);
14395
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014397 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014409
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14411 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014412
Jeff Johnson295189b2012-06-20 16:38:30 -070014413 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14414 /*-------------------------------------------------------------------------
14415 Add Broadcast STA only in AP mode
14416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 WDI_BSS_OPERATIONAL_MODE_AP )
14419 {
14420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14421 "Add BCAST STA to table for index: %d",
14422 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014423
14424 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014426
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14428 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14429 }
14430 wpalMutexRelease(&pWDICtx->wptMutex);
14431 }
14432 else
14433 {
14434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14435 "Config BSS RSP failed with status : %s(%d)",
14436 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014437 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 halConfigBssRspMsg.configBssRspParams.status);
14439
Jeff Johnsone7245742012-09-05 17:12:55 -070014440
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 /*Association was failed by HAL - remove session*/
14442 WDI_DeleteSession(pWDICtx, pBSSSes);
14443
14444 /*Association no longer in progress */
14445 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14446
14447 /*Association no longer in progress - prepare pending assoc for processing*/
14448 WDI_DequeueAssocRequest(pWDICtx);
14449
14450 }
14451
14452 /*Notify UMAC*/
14453 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14454
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456}/*WDI_ProcessConfigBSSRsp*/
14457
14458
14459/**
14460 @brief Process Del BSS Response function (called when a response
14461 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014462
14463 @param pWDICtx: pointer to the WLAN DAL context
14464 pEventData: pointer to the event information structure
14465
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 @see
14467 @return Result of the function call
14468*/
14469WDI_Status
14470WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014471(
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 WDI_ControlBlockType* pWDICtx,
14473 WDI_EventInfoType* pEventData
14474)
14475{
14476 WDI_DelBSSRspParamsType wdiDelBSSParams;
14477 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 WDI_BSSSessionType* pBSSSes = NULL;
14480
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14483
14484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 -------------------------------------------------------------------------*/
14487 if (( NULL == pEventData ) ||
14488 ( NULL == pEventData->pEventData))
14489 {
14490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14491 "%s: Invalid parameters", __FUNCTION__);
14492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 }
14495
14496 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14497
14498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014499 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14502 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 sizeof(halDelBssRspMsg.deleteBssRspParams));
14504
14505
14506 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014507 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014508
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014509 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14510
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 wpalMutexAcquire(&pWDICtx->wptMutex);
14512
14513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014516 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14517 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14518 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014519
14520 /*-----------------------------------------------------------------------
14521 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014522 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 -----------------------------------------------------------------------*/
14524 if ( NULL == pBSSSes )
14525 {
14526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14527 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014528 "association no longer in progress ");
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 }
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014530 else
Jeff Johnson295189b2012-06-20 16:38:30 -070014531 {
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014532 /*Extract BSSID for the response to UMAC*/
14533 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14534 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014535
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014536 /*-----------------------------------------------------------------------
14537 The current session will be deleted
14538 -----------------------------------------------------------------------*/
14539 WDI_DeleteSession(pWDICtx, pBSSSes);
14540
14541
14542 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14543 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
14544 {
14545 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
14546 }
14547
14548 /* Delete the STA's in this BSS */
14549 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14550 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 wpalMutexRelease(&pWDICtx->wptMutex);
14552
14553 /*Notify UMAC*/
14554 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14555
Jeff Johnsone7245742012-09-05 17:12:55 -070014556 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014557}/*WDI_ProcessDelBSSRsp*/
14558
14559/**
14560 @brief Process Post Assoc Rsp function (called when a response
14561 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014562
14563 @param pWDICtx: pointer to the WLAN DAL context
14564 pEventData: pointer to the event information structure
14565
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 @see
14567 @return Result of the function call
14568*/
14569WDI_Status
14570WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014571(
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 WDI_ControlBlockType* pWDICtx,
14573 WDI_EventInfoType* pEventData
14574)
14575{
14576 WDI_PostAssocRspParamsType wdiPostAssocParams;
14577 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14582
14583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 -------------------------------------------------------------------------*/
14586 if (( NULL == pEventData ) ||
14587 ( NULL == pEventData->pEventData))
14588 {
14589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14590 "%s: Invalid parameters", __FUNCTION__);
14591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 }
14594
14595 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14596
14597 /*-------------------------------------------------------------------------
14598 Extract response and send it to UMAC
14599 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014600 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14601 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 sizeof(halPostAssocRspMsg.postAssocRspParams));
14603
14604 /*Extract the Post Assoc STA Params */
14605
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14612
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 wdiPostAssocParams.wdiStatus =
14614 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014615
14616 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14617 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14619 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 WDI_MAC_ADDR_LEN);
14621
14622 /* Extract Post Assoc BSS Params */
14623
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14625 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14626 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014627
14628 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14629 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14632 .macSTA, WDI_MAC_ADDR_LEN);
14633
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14636
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14639
14640 wdiPostAssocParams.bssParams.ucBSSIdx =
14641 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14642
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14645
14646 wpalMutexAcquire(&pWDICtx->wptMutex);
14647
14648 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014654
14655 /*-----------------------------------------------------------------------
14656 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 -----------------------------------------------------------------------*/
14659 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14662 {
14663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14664 "Association sequence for this BSS does not yet exist or "
14665 "association no longer in progress - mysterious HAL response");
14666
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14668
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 }
14672
14673 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 -----------------------------------------------------------------------*/
14676 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14677 {
14678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14679 "Post Assoc not allowed before JOIN - failing request "
14680 "strange HAL response");
14681
Jeff Johnsone7245742012-09-05 17:12:55 -070014682 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14683
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 }
14687
14688 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 -----------------------------------------------------------------------*/
14691 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14692 {
14693 /*Association was failed by HAL - remove session*/
14694 WDI_DeleteSession(pWDICtx, pBSSSes);
14695 }
14696 else
14697 {
14698 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014700
14701 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014702 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14710
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014712 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14713 }
14714
14715 /*Association no longer in progress */
14716 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14717
14718 /*Association no longer in progress - prepare pending assoc for processing*/
14719 WDI_DequeueAssocRequest(pWDICtx);
14720
14721 wpalMutexRelease(&pWDICtx->wptMutex);
14722
14723 /*Notify UMAC*/
14724 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14725
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014727}/*WDI_ProcessPostAssocRsp*/
14728
14729/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014732
14733 @param pWDICtx: pointer to the WLAN DAL context
14734 pEventData: pointer to the event information structure
14735
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 @see
14737 @return Result of the function call
14738*/
14739WDI_Status
14740WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014741(
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 WDI_ControlBlockType* pWDICtx,
14743 WDI_EventInfoType* pEventData
14744)
14745{
14746 WDI_DelSTARspParamsType wdiDelSTARsp;
14747 WDI_DelSTARspCb wdiDelSTARspCb;
14748 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014749 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14751
14752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 -------------------------------------------------------------------------*/
14755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14756 ( NULL == pEventData->pEventData))
14757 {
14758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14759 "%s: Invalid parameters", __FUNCTION__);
14760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 }
14763
14764 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
14765
14766 /*-------------------------------------------------------------------------
14767 Extract response and send it to UMAC
14768 -------------------------------------------------------------------------*/
14769 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 sizeof(halDelStaRspMsg.delStaRspParams));
14772
14773 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 wdiDelSTARsp.wdiStatus =
14775 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014776
14777 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
14778
14779 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
14780 if(staType == WDI_STA_ENTRY_SELF)
14781 {
14782 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
14783
14784 /* At this point add the self-STA */
14785
14786 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14787 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14788 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14789
14790#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
14791#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
14792
14793 //all DPU indices are the same for self STA
14794 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14795 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14796 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14797 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14798 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14799 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070014800
14801 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 }
14803 else
14804 {
14805 //Delete the station in the table
14806 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
14807 }
14808
14809 /*Notify UMAC*/
14810 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
14811
Jeff Johnsone7245742012-09-05 17:12:55 -070014812 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014813}/*WDI_ProcessDelSTARsp*/
14814
14815
14816/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070014818==========================================================================*/
14819
14820/**
14821 @brief Process Set BSS Key Rsp function (called when a response
14822 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014823
14824 @param pWDICtx: pointer to the WLAN DAL context
14825 pEventData: pointer to the event information structure
14826
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 @see
14828 @return Result of the function call
14829*/
14830WDI_Status
14831WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014832(
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 WDI_ControlBlockType* pWDICtx,
14834 WDI_EventInfoType* pEventData
14835)
14836{
14837 WDI_Status wdiStatus;
14838 eHalStatus halStatus;
14839 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
14840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14841
14842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 -------------------------------------------------------------------------*/
14845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14846 ( NULL == pEventData->pEventData))
14847 {
14848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14849 "%s: Invalid parameters", __FUNCTION__);
14850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014852 }
14853
14854 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
14855
14856 /*-------------------------------------------------------------------------
14857 Extract response and send it to UMAC
14858 -------------------------------------------------------------------------*/
14859 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014861
14862 if ( eHAL_STATUS_SUCCESS != halStatus )
14863 {
14864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14865 "Set BSS Key failed with status %s (%d)",
14866 WDI_getHALStatusMsgString(halStatus),
14867 halStatus);
14868 /* send the status to UMAC, don't return from here*/
14869 }
14870
14871 /*Notify UMAC*/
14872 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14873
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014875}/*WDI_ProcessSetBssKeyRsp*/
14876
14877/**
14878 @brief Process Remove BSS Key Rsp function (called when a response
14879 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014880
14881 @param pWDICtx: pointer to the WLAN DAL context
14882 pEventData: pointer to the event information structure
14883
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 @see
14885 @return Result of the function call
14886*/
14887WDI_Status
14888WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014889(
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 WDI_ControlBlockType* pWDICtx,
14891 WDI_EventInfoType* pEventData
14892)
14893{
14894 WDI_Status wdiStatus;
14895 eHalStatus halStatus;
14896 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
14897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14898
14899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 -------------------------------------------------------------------------*/
14902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14903 ( NULL == pEventData->pEventData))
14904 {
14905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14906 "%s: Invalid parameters", __FUNCTION__);
14907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 }
14910
14911 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
14912
14913 /*-------------------------------------------------------------------------
14914 Extract response and send it to UMAC
14915 -------------------------------------------------------------------------*/
14916 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014918
14919 if ( eHAL_STATUS_SUCCESS != halStatus )
14920 {
14921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14922 "Remove BSS Key failed with status %s (%d )",
14923 WDI_getHALStatusMsgString(halStatus),
14924 halStatus);
14925 /* send the status to UMAC, don't return from here*/
14926 }
14927
14928 /*Notify UMAC*/
14929 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14930
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014932}/*WDI_ProcessSetBssKeyRsp*/
14933
14934
14935/**
14936 @brief Process Set STA Key Rsp function (called when a response
14937 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014938
14939 @param pWDICtx: pointer to the WLAN DAL context
14940 pEventData: pointer to the event information structure
14941
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 @see
14943 @return Result of the function call
14944*/
14945WDI_Status
14946WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014947(
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 WDI_ControlBlockType* pWDICtx,
14949 WDI_EventInfoType* pEventData
14950)
14951{
14952 WDI_Status wdiStatus;
14953 eHalStatus halStatus;
14954 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
14955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14956
14957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 -------------------------------------------------------------------------*/
14960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14961 ( NULL == pEventData->pEventData))
14962 {
14963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14964 "%s: Invalid parameters", __FUNCTION__);
14965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014967 }
14968
14969 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
14970
14971 /*-------------------------------------------------------------------------
14972 Extract response and send it to UMAC
14973 -------------------------------------------------------------------------*/
14974 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014976
14977 if ( eHAL_STATUS_SUCCESS != halStatus )
14978 {
14979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14980 "Set STA Key failed with status %s (%d)",
14981 WDI_getHALStatusMsgString(halStatus),
14982 halStatus);
14983 /* send the status to UMAC, don't return from here*/
14984 }
14985
14986 /*Notify UMAC*/
14987 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14988
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014990}/*WDI_ProcessSetSTAKeyRsp*/
14991
14992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014993 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014994 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014995
14996 @param pWDICtx: pointer to the WLAN DAL context
14997 pEventData: pointer to the event information structure
14998
Jeff Johnson295189b2012-06-20 16:38:30 -070014999 @see
15000 @return Result of the function call
15001*/
15002WDI_Status
15003WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015004(
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 WDI_ControlBlockType* pWDICtx,
15006 WDI_EventInfoType* pEventData
15007)
15008{
15009 WDI_Status wdiStatus;
15010 eHalStatus halStatus;
15011 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15013
15014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 -------------------------------------------------------------------------*/
15017 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15018 ( NULL == pEventData->pEventData))
15019 {
15020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15021 "%s: Invalid parameters", __FUNCTION__);
15022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015024 }
15025
15026 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15027
15028 /*-------------------------------------------------------------------------
15029 Extract response and send it to UMAC
15030 -------------------------------------------------------------------------*/
15031 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015033
15034 if ( eHAL_STATUS_SUCCESS != halStatus )
15035 {
15036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15037 "Remove STA Key failed with status %s (%d)",
15038 WDI_getHALStatusMsgString(halStatus),
15039 halStatus);
15040 /* send the status to UMAC, don't return from here*/
15041 }
15042
15043 /*Notify UMAC*/
15044 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15045
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015047}/*WDI_ProcessRemoveStaKeyRsp*/
15048
15049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015050 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015052
15053 @param pWDICtx: pointer to the WLAN DAL context
15054 pEventData: pointer to the event information structure
15055
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 @see
15057 @return Result of the function call
15058*/
15059WDI_Status
15060WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015061(
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 WDI_ControlBlockType* pWDICtx,
15063 WDI_EventInfoType* pEventData
15064)
15065{
15066 WDI_Status wdiStatus;
15067 eHalStatus halStatus;
15068 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15070
15071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 -------------------------------------------------------------------------*/
15074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15075 ( NULL == pEventData->pEventData))
15076 {
15077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15078 "%s: Invalid parameters", __FUNCTION__);
15079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 }
15082
15083 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15084
15085 /*-------------------------------------------------------------------------
15086 Extract response and send it to UMAC
15087 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 wpalMemoryCopy( &halStatus,
15089 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 sizeof(halStatus));
15091
Jeff Johnsone7245742012-09-05 17:12:55 -070015092 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015093
15094 if ( eHAL_STATUS_SUCCESS != halStatus )
15095 {
15096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15097 "Set STA Key failed with status %s (%d)",
15098 WDI_getHALStatusMsgString(halStatus),
15099 halStatus);
15100 /* send the status to UMAC, don't return from here*/
15101 }
15102
15103 /*Notify UMAC*/
15104 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15105
Jeff Johnsone7245742012-09-05 17:12:55 -070015106 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015107}/*WDI_ProcessSetSTABcastKeyRsp*/
15108
15109/**
15110 @brief Process Remove STA Bcast Key Rsp function (called when a
15111 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015112
15113 @param pWDICtx: pointer to the WLAN DAL context
15114 pEventData: pointer to the event information structure
15115
Jeff Johnson295189b2012-06-20 16:38:30 -070015116 @see
15117 @return Result of the function call
15118*/
15119WDI_Status
15120WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015121(
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 WDI_ControlBlockType* pWDICtx,
15123 WDI_EventInfoType* pEventData
15124)
15125{
15126 WDI_Status wdiStatus;
15127 eHalStatus halStatus;
15128 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15130
15131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 -------------------------------------------------------------------------*/
15134 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15135 ( NULL == pEventData->pEventData))
15136 {
15137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15138 "%s: Invalid parameters", __FUNCTION__);
15139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 }
15142
15143 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15144
15145 /*-------------------------------------------------------------------------
15146 Extract response and send it to UMAC
15147 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015148 wpalMemoryCopy( &halStatus,
15149 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 sizeof(halStatus));
15151
Jeff Johnsone7245742012-09-05 17:12:55 -070015152 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015153
15154 if ( eHAL_STATUS_SUCCESS != halStatus )
15155 {
15156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15157 "Remove STA Key failed with status %s (%d)",
15158 WDI_getHALStatusMsgString(halStatus),
15159 halStatus);
15160 /* send the status to UMAC, don't return from here*/
15161 }
15162
15163 /*Notify UMAC*/
15164 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15165
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015167}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15168
15169
15170/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015172==========================================================================*/
15173
15174/**
15175 @brief Process Add TSpec Rsp function (called when a response
15176 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015177
15178 @param pWDICtx: pointer to the WLAN DAL context
15179 pEventData: pointer to the event information structure
15180
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 @see
15182 @return Result of the function call
15183*/
15184WDI_Status
15185WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015186(
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 WDI_ControlBlockType* pWDICtx,
15188 WDI_EventInfoType* pEventData
15189)
15190{
15191 WDI_Status wdiStatus;
15192 eHalStatus halStatus;
15193 WDI_AddTsRspCb wdiAddTsRspCb;
15194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15195
15196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 -------------------------------------------------------------------------*/
15199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15200 ( NULL == pEventData->pEventData))
15201 {
15202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15203 "%s: Invalid parameters", __FUNCTION__);
15204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 }
15207
15208 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15209
15210 /*-------------------------------------------------------------------------
15211 Extract response and send it to UMAC
15212 -------------------------------------------------------------------------*/
15213 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015215
15216 /*Notify UMAC*/
15217 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15218
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015220}/*WDI_ProcessAddTSpecRsp*/
15221
15222
15223/**
15224 @brief Process Del TSpec Rsp function (called when a response
15225 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015226
15227 @param pWDICtx: pointer to the WLAN DAL context
15228 pEventData: pointer to the event information structure
15229
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 @see
15231 @return Result of the function call
15232*/
15233WDI_Status
15234WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015235(
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 WDI_ControlBlockType* pWDICtx,
15237 WDI_EventInfoType* pEventData
15238)
15239{
15240 WDI_Status wdiStatus;
15241 eHalStatus halStatus;
15242 WDI_DelTsRspCb wdiDelTsRspCb;
15243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15244
15245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 -------------------------------------------------------------------------*/
15248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15249 ( NULL == pEventData->pEventData))
15250 {
15251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15252 "%s: Invalid parameters", __FUNCTION__);
15253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 }
15256
15257 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15258
15259 /*-------------------------------------------------------------------------
15260 Extract response and send it to UMAC
15261 -------------------------------------------------------------------------*/
15262 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015263 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015264
15265 /*Notify UMAC*/
15266 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15267
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015269}/*WDI_ProcessDelTSpecRsp*/
15270
15271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015274
15275 @param pWDICtx: pointer to the WLAN DAL context
15276 pEventData: pointer to the event information structure
15277
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 @see
15279 @return Result of the function call
15280*/
15281WDI_Status
15282WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015283(
Jeff Johnson295189b2012-06-20 16:38:30 -070015284 WDI_ControlBlockType* pWDICtx,
15285 WDI_EventInfoType* pEventData
15286)
15287{
15288 WDI_Status wdiStatus;
15289 eHalStatus halStatus;
15290 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15292
15293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 -------------------------------------------------------------------------*/
15296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15297 ( NULL == pEventData->pEventData))
15298 {
15299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15300 "%s: Invalid parameters", __FUNCTION__);
15301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 }
15304
15305 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15306
15307 /*-------------------------------------------------------------------------
15308 Extract response and send it to UMAC
15309 -------------------------------------------------------------------------*/
15310 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015312
15313 /*Notify UMAC*/
15314 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15315
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015317}/*WDI_ProcessUpdateEDCAParamsRsp*/
15318
15319
15320/**
15321 @brief Process Add BA Rsp function (called when a response
15322 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015323
15324 @param pWDICtx: pointer to the WLAN DAL context
15325 pEventData: pointer to the event information structure
15326
Jeff Johnson295189b2012-06-20 16:38:30 -070015327 @see
15328 @return Result of the function call
15329*/
15330WDI_Status
15331WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015332(
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 WDI_ControlBlockType* pWDICtx,
15334 WDI_EventInfoType* pEventData
15335)
15336{
15337 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15338
15339 tAddBASessionRspParams halBASessionRsp;
15340 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15341
Jeff Johnsone7245742012-09-05 17:12:55 -070015342
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15344
15345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 -------------------------------------------------------------------------*/
15348 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15349 ( NULL == pEventData->pEventData))
15350 {
15351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15352 "%s: Invalid parameters", __FUNCTION__);
15353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 }
15356
15357 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15358
15359 /*-------------------------------------------------------------------------
15360 Extract response and send it to UMAC
15361 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 wpalMemoryCopy( &halBASessionRsp,
15363 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 sizeof(halBASessionRsp));
15365
15366 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15367
Jeff Johnson43971f52012-07-17 12:26:56 -070015368 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 {
15370 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15371 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15372 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15373 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15374 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15375 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15376 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15377 }
15378
15379 /*Notify UMAC*/
15380 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15381
Jeff Johnsone7245742012-09-05 17:12:55 -070015382 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015383}/*WDI_ProcessAddSessionBARsp*/
15384
15385
15386/**
15387 @brief Process Del BA Rsp function (called when a response
15388 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015389
15390 @param pWDICtx: pointer to the WLAN DAL context
15391 pEventData: pointer to the event information structure
15392
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 @see
15394 @return Result of the function call
15395*/
15396WDI_Status
15397WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015398(
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 WDI_ControlBlockType* pWDICtx,
15400 WDI_EventInfoType* pEventData
15401)
15402{
15403 WDI_Status wdiStatus;
15404 eHalStatus halStatus;
15405 WDI_DelBARspCb wdiDelBARspCb;
15406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15407
15408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 -------------------------------------------------------------------------*/
15411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15412 ( NULL == pEventData->pEventData))
15413 {
15414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15415 "%s: Invalid parameters", __FUNCTION__);
15416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 }
15419
15420 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15421
15422 /*-------------------------------------------------------------------------
15423 Extract response and send it to UMAC
15424 -------------------------------------------------------------------------*/
15425 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015426 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015427
15428 if ( eHAL_STATUS_SUCCESS == halStatus )
15429 {
15430 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15431 }
15432
15433 /*Notify UMAC*/
15434 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15435
Jeff Johnsone7245742012-09-05 17:12:55 -070015436 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015437}/*WDI_ProcessDelBARsp*/
15438
15439#ifdef FEATURE_WLAN_CCX
15440/**
15441 @brief Process TSM Stats Rsp function (called when a response
15442 is being received over the bus from HAL)
15443
15444 @param pWDICtx: pointer to the WLAN DAL context
15445 pEventData: pointer to the event information structure
15446
15447 @see
15448 @return Result of the function call
15449*/
15450WDI_Status
15451WDI_ProcessTsmStatsRsp
15452(
15453 WDI_ControlBlockType* pWDICtx,
15454 WDI_EventInfoType* pEventData
15455)
15456{
15457 WDI_TsmRspCb wdiTsmStatsRspCb;
15458 tTsmStatsRspMsg halTsmStatsRspMsg;
15459 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15461
15462 /*-------------------------------------------------------------------------
15463 Sanity check
15464 -------------------------------------------------------------------------*/
15465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15466 ( NULL == pEventData->pEventData))
15467 {
15468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15469 "%s: Invalid parameters", __FUNCTION__);
15470 WDI_ASSERT(0);
15471 return WDI_STATUS_E_FAILURE;
15472 }
15473
15474 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15475
15476 /*-------------------------------------------------------------------------
15477 Unpack HAL Response Message - the header was already extracted by the
15478 main Response Handling procedure
15479 -------------------------------------------------------------------------*/
15480 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15481 pEventData->pEventData,
15482 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15483
15484 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15485 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15486 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15487 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15488 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15489 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15490 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15491 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15492 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15493 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15494 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15495 halTsmStatsRspMsg.tsmStatsRspParams.status);
15496
15497 /*Notify UMAC*/
15498 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15499
15500 return WDI_STATUS_SUCCESS;
15501}/*WDI_ProcessTsmStatsRsp*/
15502
15503#endif
15504
15505
15506
15507/**
15508 @brief Process Flush AC Rsp function (called when a response
15509 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015510
15511 @param pWDICtx: pointer to the WLAN DAL context
15512 pEventData: pointer to the event information structure
15513
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 @see
15515 @return Result of the function call
15516*/
15517WDI_Status
15518WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015519(
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 WDI_ControlBlockType* pWDICtx,
15521 WDI_EventInfoType* pEventData
15522)
15523{
15524 WDI_Status wdiStatus;
15525 eHalStatus halStatus;
15526 WDI_FlushAcRspCb wdiFlushAcRspCb;
15527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15528
15529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015531 -------------------------------------------------------------------------*/
15532 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15533 ( NULL == pEventData->pEventData))
15534 {
15535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15536 "%s: Invalid parameters", __FUNCTION__);
15537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 }
15540
15541 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15542
15543 /*-------------------------------------------------------------------------
15544 Extract response and send it to UMAC
15545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015546 wpalMemoryCopy( &halStatus,
15547 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015548 sizeof(halStatus));
15549
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015551
15552 /*Notify UMAC*/
15553 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15554
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015556}/*WDI_ProcessFlushAcRsp*/
15557
15558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015561
15562 @param pWDICtx: pointer to the WLAN DAL context
15563 pEventData: pointer to the event information structure
15564
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 @see
15566 @return Result of the function call
15567*/
15568WDI_Status
15569WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015570(
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 WDI_ControlBlockType* pWDICtx,
15572 WDI_EventInfoType* pEventData
15573)
15574{
15575 WDI_Status wdiStatus;
15576 eHalStatus halStatus;
15577 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15579
15580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 -------------------------------------------------------------------------*/
15583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15584 ( NULL == pEventData->pEventData))
15585 {
15586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15587 "%s: Invalid parameters", __FUNCTION__);
15588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 }
15591
15592 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15593
15594 /*-------------------------------------------------------------------------
15595 Extract response and send it to UMAC
15596 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 wpalMemoryCopy( &halStatus,
15598 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 sizeof(halStatus));
15600
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015602
15603 /*Notify UMAC*/
15604 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15605
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015607}/*WDI_ProcessBtAmpEventRsp*/
15608
15609
15610/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015612 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015613
15614 @param pWDICtx: pointer to the WLAN DAL context
15615 pEventData: pointer to the event information structure
15616
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 @see
15618 @return Result of the function call
15619*/
15620WDI_Status
15621WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015622(
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 WDI_ControlBlockType* pWDICtx,
15624 WDI_EventInfoType* pEventData
15625)
15626{
15627 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15628 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15629 tAddStaSelfRspMsg halAddStaSelfRsp;
15630 WDI_AddStaParams wdiAddSTAParam = {0};
15631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15632
15633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 -------------------------------------------------------------------------*/
15636 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15637 ( NULL == pEventData->pEventData))
15638 {
15639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15640 "%s: Invalid parameters", __FUNCTION__);
15641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 }
15644
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15647
15648 /*-------------------------------------------------------------------------
15649 Extract response and send it to UMAC
15650 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15652 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15654
15655
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 wdiAddSTASelfParams.wdiStatus =
15657 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015658
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15665
15666 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15667 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15668 WDI_MAC_ADDR_LEN);
15669
15670
15671#ifdef HAL_SELF_STA_PER_BSS
15672
15673 /* At this point add the self-STA */
15674
15675 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15676 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15677 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15678
15679 //all DPU indices are the same for self STA
15680
15681 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15684 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15685 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15686 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15687 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15688
15689 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15690 WDI_MAC_ADDR_LEN);
15691
15692 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15693 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15694
Jeff Johnsone7245742012-09-05 17:12:55 -070015695 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15697 {
15698 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15699 }
15700#endif
15701
15702 /*Notify UMAC*/
15703 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15704
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015706}/*WDI_ProcessAddSTASelfRsp*/
15707
15708
15709
15710/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015713
15714 @param pWDICtx: pointer to the WLAN DAL context
15715 pEventData: pointer to the event information structure
15716
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 @see
15718 @return Result of the function call
15719*/
15720WDI_Status
15721WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015722(
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 WDI_ControlBlockType* pWDICtx,
15724 WDI_EventInfoType* pEventData
15725)
15726{
15727 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15728 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15729 tDelStaSelfRspParams delStaSelfRspParams;
15730 wpt_uint8 ucStaIdx;
15731
15732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15733
15734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015736 -------------------------------------------------------------------------*/
15737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15738 ( NULL == pEventData->pEventData))
15739 {
15740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15741 "%s: Invalid parameters", __FUNCTION__);
15742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 }
15745
15746 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
15747
15748 /*-------------------------------------------------------------------------
15749 Extract response and send it to UMAC
15750 -------------------------------------------------------------------------*/
15751
Jeff Johnsone7245742012-09-05 17:12:55 -070015752 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 (wpt_uint8*)pEventData->pEventData,
15754 sizeof(tDelStaSelfRspParams));
15755
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 wdiDelStaSelfRspParams.wdiStatus =
15757 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015758
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
15761 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
15762 {
15763 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 delStaSelfRspParams.selfMacAddr,
15766 &ucStaIdx);
15767 if(WDI_STATUS_E_FAILURE == wdiStatus)
15768 {
15769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15770 "%s: Unable to extract the STA Idx ", __FUNCTION__);
15771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015773 }
15774 WDI_STATableDelSta(pWDICtx, ucStaIdx);
15775 }
15776
15777 /*Notify UMAC*/
15778 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
15779
15780 return WDI_STATUS_SUCCESS;
15781}
15782
Jeff Johnsone7245742012-09-05 17:12:55 -070015783#ifdef FEATURE_OEM_DATA_SUPPORT
15784/**
15785 @brief Start Oem Data Rsp function (called when a
15786 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070015787
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 @param pWDICtx: pointer to the WLAN DAL context
15789 pEventData: pointer to the event information structure
15790
15791 @see
15792 @return Result of the function call
15793*/
15794#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
15795
15796WDI_Status
15797WDI_ProcessStartOemDataRsp
15798(
15799 WDI_ControlBlockType* pWDICtx,
15800 WDI_EventInfoType* pEventData
15801)
15802{
15803 WDI_oemDataRspCb wdiOemDataRspCb;
15804 WDI_oemDataRspParamsType* wdiOemDataRspParams;
15805 tStartOemDataRspParams* halStartOemDataRspParams;
15806
15807 /*-------------------------------------------------------------------------
15808 Sanity check
15809 -------------------------------------------------------------------------*/
15810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15811 ( NULL == pEventData->pEventData))
15812 {
15813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15814 "%s: Invalid parameters", __FUNCTION__);
15815 WDI_ASSERT(0);
15816 return WDI_STATUS_E_FAILURE;
15817 }
15818
15819 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
15820
15821 /*-------------------------------------------------------------------------
15822 Extract response and send it to UMAC
15823 -------------------------------------------------------------------------*/
15824 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
15825
15826
15827 //It is the responsibility of the application code to check for failure
15828 //conditions!
15829
15830 //Allocate memory for WDI OEM DATA RSP structure
15831 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
15832
15833 if(NULL == wdiOemDataRspParams)
15834 {
15835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15836 "Failed to allocate memory in OEM DATA Response %x %x %x ",
15837 pWDICtx, pEventData, pEventData->pEventData);
15838 WDI_ASSERT(0);
15839 return WDI_STATUS_E_FAILURE;
15840 }
15841
15842 /* Populate WDI structure members */
15843 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
15844
15845 /*Notify UMAC*/
15846 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
15847
15848 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
15849 wpalMemoryFree(wdiOemDataRspParams);
15850
15851 return WDI_STATUS_SUCCESS;
15852}/*WDI_PrcoessStartOemDataRsp*/
15853#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015854
15855/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015857===========================================================================*/
15858
15859/**
15860 @brief Process Channel Switch Rsp function (called when a response
15861 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015862
15863 @param pWDICtx: pointer to the WLAN DAL context
15864 pEventData: pointer to the event information structure
15865
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 @see
15867 @return Result of the function call
15868*/
15869WDI_Status
15870WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015871(
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 WDI_ControlBlockType* pWDICtx,
15873 WDI_EventInfoType* pEventData
15874)
15875{
15876 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
15877 WDI_SwitchChRspCb wdiChSwitchRspCb;
15878 tSwitchChannelRspParams halSwitchChannelRsp;
15879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15880
15881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 -------------------------------------------------------------------------*/
15884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15885 ( NULL == pEventData->pEventData))
15886 {
15887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15888 "%s: Invalid parameters", __FUNCTION__);
15889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 }
15892
15893 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
15894
15895 /*-------------------------------------------------------------------------
15896 Extract response and send it to UMAC
15897 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 (wpt_uint8*)pEventData->pEventData,
15900 sizeof(halSwitchChannelRsp));
15901
Jeff Johnsone7245742012-09-05 17:12:55 -070015902 wdiSwitchChRsp.wdiStatus =
15903 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
15905
15906#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070015908#endif
15909
15910 /*Notify UMAC*/
15911 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
15912
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015914}/*WDI_ProcessChannelSwitchRsp*/
15915
15916
15917/**
15918 @brief Process Config STA Rsp function (called when a response
15919 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015920
15921 @param pWDICtx: pointer to the WLAN DAL context
15922 pEventData: pointer to the event information structure
15923
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 @see
15925 @return Result of the function call
15926*/
15927WDI_Status
15928WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015929(
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 WDI_ControlBlockType* pWDICtx,
15931 WDI_EventInfoType* pEventData
15932)
15933{
15934 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
15935 WDI_ConfigSTARspCb wdiConfigSTARspCb;
15936 WDI_AddStaParams wdiAddSTAParam;
15937
15938 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070015942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15943
15944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015946 -------------------------------------------------------------------------*/
15947 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15948 ( NULL == pEventData->pEventData))
15949 {
15950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15951 "%s: Invalid parameters", __FUNCTION__);
15952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 }
15955
15956 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
15957
15958 /*-------------------------------------------------------------------------
15959 Extract response and send it to UMAC
15960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
15962 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 sizeof(halConfigStaRsp.configStaRspParams));
15964
15965
15966 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
15967 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
15968 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
15969 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
15970 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
15971
15972 /* MAC Address of STA - take from cache as it does not come back in the
15973 response*/
15974 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015977
15978 wdiCfgSTAParams.wdiStatus =
15979 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015980
15981 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
15982 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
15983 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
15984
15985 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
15986 {
15987 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
15988 {
15989 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
15992 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070015993
Jeff Johnson295189b2012-06-20 16:38:30 -070015994 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015995 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015996 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 wdiAddSTAParam.ucHTCapable =
15998 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
15999 wdiAddSTAParam.ucStaType =
16000 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16001
Jeff Johnson295189b2012-06-20 16:38:30 -070016002 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016003 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16004 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016006
16007 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16008 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16009 WDI_MAC_ADDR_LEN);
16010
16011 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16012 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16013 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016014
16015 if ( NULL == pBSSSes )
16016 {
16017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16018 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016019
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016021 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 }
16023
16024 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016025 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016026 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016032 halConfigStaRsp.configStaRspParams.ucBcastSig;
16033 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16034 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016035
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16037 }
16038 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16039 {
16040 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16041
Jeff Johnsone7245742012-09-05 17:12:55 -070016042 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016044 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016046 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016047 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016048 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016049 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 halConfigStaRsp.configStaRspParams.ucUcastSig;
16056 }
16057 }
16058
16059 /*Notify UMAC*/
16060 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16061
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016063}/*WDI_ProcessConfigStaRsp*/
16064
16065
16066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016069
16070 @param pWDICtx: pointer to the WLAN DAL context
16071 pEventData: pointer to the event information structure
16072
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 @see
16074 @return Result of the function call
16075*/
16076WDI_Status
16077WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016078(
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 WDI_ControlBlockType* pWDICtx,
16080 WDI_EventInfoType* pEventData
16081)
16082{
16083 WDI_Status wdiStatus;
16084 eHalStatus halStatus;
16085 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16086
16087 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016088 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16090
16091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 -------------------------------------------------------------------------*/
16094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16095 ( NULL == pEventData->pEventData))
16096 {
16097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16098 "%s: Invalid parameters", __FUNCTION__);
16099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 }
16102
16103 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16104
16105 wpalMutexAcquire(&pWDICtx->wptMutex);
16106
16107 /*If the link is being transitioned to idle - the BSS is to be deleted
16108 - this type of ending a session is possible when UMAC has failed an
16109 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16112 {
16113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016114 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16117 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16118 &pBSSSes);
16119
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 /*-----------------------------------------------------------------------
16121 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 -----------------------------------------------------------------------*/
16124 if ( NULL == pBSSSes )
16125 {
16126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16127 "Set link response received outside association session");
16128 }
16129 else
16130 {
16131 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16132 will be del BSS coming after this to stop the beaconing & cleaning up the
16133 sessions*/
16134 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16135 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16136 {
16137 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 -----------------------------------------------------------------------*/
16140 WDI_DeleteSession(pWDICtx, pBSSSes);
16141
16142 /*-----------------------------------------------------------------------
16143 Check to see if this association is in progress - if so disable the
16144 flag as this has ended
16145 -----------------------------------------------------------------------*/
16146 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 /*Association no longer in progress */
16149 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16150 /*Association no longer in progress - prepare pending assoc for processing*/
16151 WDI_DequeueAssocRequest(pWDICtx);
16152 }
16153 }
16154 }
16155 }
16156 /* If the link state has been set to POST ASSOC, reset the "association in
16157 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16160 {
16161 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16162 WDI_DequeueAssocRequest(pWDICtx);
16163 }
16164
16165 wpalMutexRelease(&pWDICtx->wptMutex);
16166
16167 /*-------------------------------------------------------------------------
16168 Extract response and send it to UMAC
16169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 wpalMemoryCopy( &halStatus,
16171 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 sizeof(halStatus));
16173
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016175
16176 /*Notify UMAC*/
16177 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16178
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016180}/*WDI_ProcessSetLinkStateRsp*/
16181
16182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016185
16186 @param pWDICtx: pointer to the WLAN DAL context
16187 pEventData: pointer to the event information structure
16188
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 @see
16190 @return Result of the function call
16191*/
16192WDI_Status
16193WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016194(
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 WDI_ControlBlockType* pWDICtx,
16196 WDI_EventInfoType* pEventData
16197)
16198{
16199 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16200 WDI_GetStatsRspCb wdiGetStatsRspCb;
16201 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016202
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16204
16205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 -------------------------------------------------------------------------*/
16208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16209 ( NULL == pEventData->pEventData))
16210 {
16211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16212 "%s: Invalid parameters", __FUNCTION__);
16213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016215 }
16216
16217 /*-------------------------------------------------------------------------
16218 Extract response and send it to UMAC
16219 -------------------------------------------------------------------------*/
16220 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16221
16222 /*allocate the stats response buffer */
16223 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16224 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16225 + sizeof(WDI_GetStatsRspParamsType));
16226
16227 if(NULL == wdiGetStatsRsp)
16228 {
16229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16230 "Failed to allocate memory in Get Stats Response %x %x %x ",
16231 pWDICtx, pEventData, pEventData->pEventData);
16232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 }
16235
16236 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16237
16238 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16239 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16240 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16241 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16242 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16243 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16244
16245 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16246 wpalMemoryCopy(wdiGetStatsRsp + 1,
16247 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16248 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16249
16250 /*Notify UMAC*/
16251 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16252
16253 wpalMemoryFree(wdiGetStatsRsp);
16254
Jeff Johnsone7245742012-09-05 17:12:55 -070016255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016256}/*WDI_ProcessGetStatsRsp*/
16257
16258
16259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016262
16263 @param pWDICtx: pointer to the WLAN DAL context
16264 pEventData: pointer to the event information structure
16265
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 @see
16267 @return Result of the function call
16268*/
16269WDI_Status
16270WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016271(
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 WDI_ControlBlockType* pWDICtx,
16273 WDI_EventInfoType* pEventData
16274)
16275{
16276 WDI_Status wdiStatus;
16277 eHalStatus halStatus;
16278 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16280
16281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 -------------------------------------------------------------------------*/
16284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16285 ( NULL == pEventData->pEventData))
16286 {
16287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16288 "%s: Invalid parameters", __FUNCTION__);
16289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 }
16292
16293 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16294
16295 /*-------------------------------------------------------------------------
16296 Extract response and send it to UMAC
16297 -------------------------------------------------------------------------*/
16298 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016299 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300
16301 /*Notify UMAC*/
16302 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16303
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016305}/*WDI_ProcessUpdateCfgRsp*/
16306
16307
16308
16309/**
16310 @brief Process Add BA Rsp function (called when a response
16311 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016312
16313 @param pWDICtx: pointer to the WLAN DAL context
16314 pEventData: pointer to the event information structure
16315
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 @see
16317 @return Result of the function call
16318*/
16319WDI_Status
16320WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016321(
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 WDI_ControlBlockType* pWDICtx,
16323 WDI_EventInfoType* pEventData
16324)
16325{
16326 WDI_AddBARspCb wdiAddBARspCb;
16327
16328 tAddBARspParams halAddBARsp;
16329 WDI_AddBARspinfoType wdiAddBARsp;
16330
16331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16332
16333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016335 -------------------------------------------------------------------------*/
16336 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16337 ( NULL == pEventData->pEventData))
16338 {
16339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16340 "%s: Invalid parameters", __FUNCTION__);
16341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016343 }
16344
16345 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16346
16347 /*-------------------------------------------------------------------------
16348 Extract response and send it to UMAC
16349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016350 wpalMemoryCopy( &halAddBARsp,
16351 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 sizeof(halAddBARsp));
16353
16354 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16355
Jeff Johnson43971f52012-07-17 12:26:56 -070016356 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016357 {
16358 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16359 }
16360
16361 /*Notify UMAC*/
16362 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16363
Jeff Johnsone7245742012-09-05 17:12:55 -070016364 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016365}/*WDI_ProcessAddSessionBARsp*/
16366
16367/**
16368 @brief Process Add BA Rsp function (called when a response
16369 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016370
16371 @param pWDICtx: pointer to the WLAN DAL context
16372 pEventData: pointer to the event information structure
16373
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 @see
16375 @return Result of the function call
16376*/
16377WDI_Status
16378WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016379(
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 WDI_ControlBlockType* pWDICtx,
16381 WDI_EventInfoType* pEventData
16382)
16383{
16384 WDI_TriggerBARspCb wdiTriggerBARspCb;
16385
16386 tTriggerBARspParams* halTriggerBARsp;
16387 tTriggerBaRspCandidate* halBaCandidate;
16388 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16389 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16390 wpt_uint16 index;
16391 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016392
Jeff Johnson295189b2012-06-20 16:38:30 -070016393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16394
16395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016397 -------------------------------------------------------------------------*/
16398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16399 ( NULL == pEventData->pEventData))
16400 {
16401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16402 "%s: Invalid parameters", __FUNCTION__);
16403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 }
16406
16407 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16408
16409 /*-------------------------------------------------------------------------
16410 Extract response and send it to UMAC
16411 -------------------------------------------------------------------------*/
16412 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16413
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16415 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016416 sizeof(WDI_TriggerBARspCandidateType));
16417 if(NULL == wdiTriggerBARsp)
16418 {
16419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16420 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16421 pWDICtx, pEventData, pEventData->pEventData);
16422 wpalMemoryFree(halTriggerBARsp);
16423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016425 }
16426
16427 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16428
16429 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16430 {
16431 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016432 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16434
16435 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16436 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16437
16438 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16439 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016440 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016441 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16442 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16443 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016446 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016447 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16448 }
16449 wdiTriggerBARspCandidate++;
16450 halBaCandidate++;
16451 }
16452 }
16453
16454 /*Notify UMAC*/
16455 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16456
16457 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016459}/*WDI_ProcessAddSessionBARsp*/
16460
16461/**
16462 @brief Process Update Beacon Params Rsp function (called when a response
16463 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016464
16465 @param pWDICtx: pointer to the WLAN DAL context
16466 pEventData: pointer to the event information structure
16467
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 @see
16469 @return Result of the function call
16470*/
16471WDI_Status
16472WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016473(
Jeff Johnson295189b2012-06-20 16:38:30 -070016474 WDI_ControlBlockType* pWDICtx,
16475 WDI_EventInfoType* pEventData
16476)
16477{
16478 WDI_Status wdiStatus;
16479 eHalStatus halStatus;
16480 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16482
16483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 -------------------------------------------------------------------------*/
16486 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16487 ( NULL == pEventData->pEventData))
16488 {
16489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16490 "%s: Invalid parameters", __FUNCTION__);
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 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16496
16497 /*-------------------------------------------------------------------------
16498 Extract response and send it to UMAC
16499 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 wpalMemoryCopy( &halStatus,
16501 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016502 sizeof(halStatus));
16503
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016505
16506 /*Notify UMAC*/
16507 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16508
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016510}/*WDI_ProcessUpdateBeaconParamsRsp*/
16511
16512/**
16513 @brief Process Send Beacon template Rsp function (called when a response
16514 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016515
16516 @param pWDICtx: pointer to the WLAN DAL context
16517 pEventData: pointer to the event information structure
16518
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 @see
16520 @return Result of the function call
16521*/
16522WDI_Status
16523WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016524(
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 WDI_ControlBlockType* pWDICtx,
16526 WDI_EventInfoType* pEventData
16527)
16528{
16529 WDI_Status wdiStatus;
16530 eHalStatus halStatus;
16531 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16533
16534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 -------------------------------------------------------------------------*/
16537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16538 ( NULL == pEventData->pEventData))
16539 {
16540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16541 "%s: Invalid parameters", __FUNCTION__);
16542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016544 }
16545
16546 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16547
16548 /*-------------------------------------------------------------------------
16549 Extract response and send it to UMAC
16550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 wpalMemoryCopy( &halStatus,
16552 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 sizeof(halStatus));
16554
Jeff Johnsone7245742012-09-05 17:12:55 -070016555 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016556
16557 /*Notify UMAC*/
16558 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16559
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016561}/*WDI_ProcessSendBeaconParamsRsp*/
16562
Jeff Johnsone7245742012-09-05 17:12:55 -070016563
Jeff Johnson295189b2012-06-20 16:38:30 -070016564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016565 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016566 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016567
16568 @param pWDICtx: pointer to the WLAN DAL context
16569 pEventData: pointer to the event information structure
16570
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 @see
16572 @return Result of the function call
16573*/
16574WDI_Status
16575WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016576(
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 WDI_ControlBlockType* pWDICtx,
16578 WDI_EventInfoType* pEventData
16579)
16580{
16581 WDI_Status wdiStatus;
16582 eHalStatus halStatus;
16583 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16585
16586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 -------------------------------------------------------------------------*/
16589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16590 ( NULL == pEventData->pEventData))
16591 {
16592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16593 "%s: Invalid parameters", __FUNCTION__);
16594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016596 }
16597
16598 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16599
16600 /*-------------------------------------------------------------------------
16601 Extract response and send it to UMAC
16602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016603 wpalMemoryCopy( &halStatus,
16604 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 sizeof(halStatus));
16606
Jeff Johnsone7245742012-09-05 17:12:55 -070016607 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016608
16609 /*Notify UMAC*/
16610 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16611
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016613}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16614
16615 /**
16616 @brief Process Set Max Tx Power Rsp function (called when a response
16617 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016618
16619 @param pWDICtx: pointer to the WLAN DAL context
16620 pEventData: pointer to the event information structure
16621
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 @see
16623 @return Result of the function call
16624*/
16625WDI_Status
16626WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016627(
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ControlBlockType* pWDICtx,
16629 WDI_EventInfoType* pEventData
16630)
16631{
16632 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016633
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016635
Jeff Johnson295189b2012-06-20 16:38:30 -070016636 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16638
16639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 -------------------------------------------------------------------------*/
16642 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16643 ( NULL == pEventData->pEventData))
16644 {
16645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16646 "%s: Invalid parameters", __FUNCTION__);
16647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 }
16650
16651 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16652
16653 /*-------------------------------------------------------------------------
16654 Extract response and send it to UMAC
16655 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016656 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16657 pEventData->pEventData,
16658 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016659
16660 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16661 {
16662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16663 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 }
16667
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016670 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016671
16672 /*Notify UMAC*/
16673 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16674
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016676}
16677
16678#ifdef WLAN_FEATURE_P2P
16679/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016680 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016682
16683 @param pWDICtx: pointer to the WLAN DAL context
16684 pEventData: pointer to the event information structure
16685
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 @see
16687 @return Result of the function call
16688*/
16689WDI_Status
16690WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016691(
Jeff Johnson295189b2012-06-20 16:38:30 -070016692 WDI_ControlBlockType* pWDICtx,
16693 WDI_EventInfoType* pEventData
16694)
16695{
16696 WDI_Status wdiStatus;
16697 eHalStatus halStatus;
16698 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16700
16701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016703 -------------------------------------------------------------------------*/
16704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16705 ( NULL == pEventData->pEventData))
16706 {
16707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16708 "%s: Invalid parameters", __FUNCTION__);
16709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 }
16712
16713 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16714
16715 /*-------------------------------------------------------------------------
16716 Extract response and send it to UMAC
16717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 wpalMemoryCopy( &halStatus,
16719 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 sizeof(halStatus));
16721
Jeff Johnsone7245742012-09-05 17:12:55 -070016722 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016723
16724 /*Notify UMAC*/
16725 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16726
Jeff Johnsone7245742012-09-05 17:12:55 -070016727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016728}/*WDI_ProcessP2PGONOARsp*/
16729#endif
16730/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016733
16734 @param pWDICtx: pointer to the WLAN DAL context
16735 pEventData: pointer to the event information structure
16736
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 @see
16738 @return Result of the function call
16739*/
16740WDI_Status
16741WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016742(
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 WDI_ControlBlockType* pWDICtx,
16744 WDI_EventInfoType* pEventData
16745)
16746{
16747 WDI_Status wdiStatus;
16748 eHalStatus halStatus;
16749 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
16750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16751
16752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 -------------------------------------------------------------------------*/
16755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16756 ( NULL == pEventData->pEventData))
16757 {
16758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16759 "%s: Invalid parameters", __FUNCTION__);
16760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 }
16763
16764 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
16765
16766 /*-------------------------------------------------------------------------
16767 Extract response and send it to UMAC
16768 -------------------------------------------------------------------------*/
16769 halStatus = *((eHalStatus*)pEventData->pEventData);
16770
Jeff Johnsone7245742012-09-05 17:12:55 -070016771 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016772
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016773 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
16774 * Other module states are taken care by PMC.
16775 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
16776 */
16777 if (wdiStatus != WDI_STATUS_SUCCESS) {
16778
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16780 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
16781 halStatus);
16782 /* Call Back is not required as we are putting the DXE in FULL
16783 * and riva is already in full (IMPS RSP Failed)*/
16784 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016785 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 /*Notify UMAC*/
16787 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16788
Jeff Johnsone7245742012-09-05 17:12:55 -070016789 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016790}/*WDI_ProcessEnterImpsRsp*/
16791
16792/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016793 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016795
16796 @param pWDICtx: pointer to the WLAN DAL context
16797 pEventData: pointer to the event information structure
16798
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 @see
16800 @return Result of the function call
16801*/
16802WDI_Status
16803WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016804(
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 WDI_ControlBlockType* pWDICtx,
16806 WDI_EventInfoType* pEventData
16807)
16808{
16809 WDI_Status wdiStatus;
16810 eHalStatus halStatus;
16811 WDI_ExitImpsRspCb wdiExitImpsRspCb;
16812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16813
16814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 -------------------------------------------------------------------------*/
16817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16818 ( NULL == pEventData->pEventData))
16819 {
16820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16821 "%s: Invalid parameters", __FUNCTION__);
16822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 }
16825
16826 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
16827
16828 /*-------------------------------------------------------------------------
16829 Extract response and send it to UMAC
16830 -------------------------------------------------------------------------*/
16831 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016832 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016833
16834 // notify DTS that we are entering Full power
16835 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16836
16837 /*Notify UMAC*/
16838 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16839
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016841}/*WDI_ProcessExitImpsRsp*/
16842
16843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016846
16847 @param pWDICtx: pointer to the WLAN DAL context
16848 pEventData: pointer to the event information structure
16849
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 @see
16851 @return Result of the function call
16852*/
16853WDI_Status
16854WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016855(
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 WDI_ControlBlockType* pWDICtx,
16857 WDI_EventInfoType* pEventData
16858)
16859{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016860 eHalStatus halStatus = eHAL_STATUS_FAILURE;
16861 tHalEnterBmpsRspParams halEnterBmpsRsp;
16862 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
16863 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
16864
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16866
16867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 -------------------------------------------------------------------------*/
16870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16871 ( NULL == pEventData->pEventData))
16872 {
16873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16874 "%s: Invalid parameters", __FUNCTION__);
16875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 }
16878
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016880 Extract response and send it to UMAC
16881 -------------------------------------------------------------------------*/
16882 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
16883 {
16884 wpalMemoryCopy( &halEnterBmpsRsp,
16885 pEventData->pEventData,
16886 sizeof(halEnterBmpsRsp));
16887
16888 //Used to print debug message
16889 halStatus = halEnterBmpsRsp.status;
16890 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
16891 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
16892 }
16893 else
16894 {
16895 halStatus = *((eHalStatus*)pEventData->pEventData);
16896 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
16897 }
16898
16899 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016900
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016901 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
16902 * Other module states are taken care by PMC.
16903 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
16904 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016905 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
16906 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016907
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016909 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
16910 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016911 /* Call Back is not required as we are putting the DXE in FULL
16912 * and riva is already in FULL (BMPS RSP Failed)*/
16913 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16914 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016915 }
16916
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016918 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016919
Jeff Johnsone7245742012-09-05 17:12:55 -070016920 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016921}/*WDI_ProcessEnterBmpsRsp*/
16922
16923/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016924 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016926
16927 @param pWDICtx: pointer to the WLAN DAL context
16928 pEventData: pointer to the event information structure
16929
Jeff Johnson295189b2012-06-20 16:38:30 -070016930 @see
16931 @return Result of the function call
16932*/
16933WDI_Status
16934WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016935(
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 WDI_ControlBlockType* pWDICtx,
16937 WDI_EventInfoType* pEventData
16938)
16939{
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 eHalStatus halStatus;
16941 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016942 tHalExitBmpsRspParams halExitBmpsRsp;
16943 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16945
16946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 -------------------------------------------------------------------------*/
16949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16950 ( NULL == pEventData->pEventData))
16951 {
16952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16953 "%s: Invalid parameters", __FUNCTION__);
16954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 }
16957
16958 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
16959
16960 /*-------------------------------------------------------------------------
16961 Extract response and send it to UMAC
16962 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016963
16964 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
16965 {
16966 wpalMemoryCopy( &halExitBmpsRsp,
16967 pEventData->pEventData,
16968 sizeof(halExitBmpsRsp));
16969
16970 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
16971 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
16972 }
16973 else
16974 {
16975 halStatus = *((eHalStatus*)pEventData->pEventData);
16976 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
16977 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016978
16979 // notify DTS that we are entering Full power
16980 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16981
16982 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
16983
16984 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016985 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016986
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016988}/*WDI_ProcessExitBmpsRsp*/
16989
16990/**
16991 @brief Process Enter UAPSD Rsp function (called when a response
16992 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016993
16994 @param pWDICtx: pointer to the WLAN DAL context
16995 pEventData: pointer to the event information structure
16996
Jeff Johnson295189b2012-06-20 16:38:30 -070016997 @see
16998 @return Result of the function call
16999*/
17000WDI_Status
17001WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017002(
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 WDI_ControlBlockType* pWDICtx,
17004 WDI_EventInfoType* pEventData
17005)
17006{
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017008 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017010 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17011
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17013
17014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017016 -------------------------------------------------------------------------*/
17017 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17018 ( NULL == pEventData->pEventData))
17019 {
17020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17021 "%s: Invalid parameters", __FUNCTION__);
17022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 }
17025
17026 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17027
17028 /*-------------------------------------------------------------------------
17029 Extract response and send it to UMAC
17030 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017031 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17032 {
17033 wpalMemoryCopy( &halEnterUapsdRsp,
17034 pEventData->pEventData,
17035 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017036
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017037 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17038 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17039 }
17040 else
17041 {
17042 halStatus = *((eHalStatus*)pEventData->pEventData);
17043 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17044 }
17045
17046 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 {
17048 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17049 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17050 // the traffic to decide when to suspend the trigger frames when there is no traffic
17051 // activity on the trigger enabled ACs
17052 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17053
17054#ifdef WLAN_PERF
17055 // Increment the BD signature to refresh the fast path BD utilization
17056 pWDICtx->uBdSigSerialNum++;
17057#endif
17058 }
17059
17060 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017061 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017062
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017064}/*WDI_ProcessEnterUapsdRsp*/
17065
17066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017069
17070 @param pWDICtx: pointer to the WLAN DAL context
17071 pEventData: pointer to the event information structure
17072
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 @see
17074 @return Result of the function call
17075*/
17076WDI_Status
17077WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017078(
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 WDI_ControlBlockType* pWDICtx,
17080 WDI_EventInfoType* pEventData
17081)
17082{
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 eHalStatus halStatus;
17084 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017085 tHalExitUapsdRspParams halExitUapsdRsp;
17086 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17088
17089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 -------------------------------------------------------------------------*/
17092 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17093 ( NULL == pEventData->pEventData))
17094 {
17095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17096 "%s: Invalid parameters", __FUNCTION__);
17097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 }
17100
17101 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17102
17103 /*-------------------------------------------------------------------------
17104 Extract response and send it to UMAC
17105 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017106 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17107 {
17108 wpalMemoryCopy( &halExitUapsdRsp,
17109 pEventData->pEventData,
17110 sizeof(halExitUapsdRsp));
17111
17112 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17113 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17114 }
17115 else
17116 {
17117 halStatus = *((eHalStatus*)pEventData->pEventData);
17118 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17119 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17121 // directly instead of the FW WQ.
17122 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17123
17124#ifdef WLAN_PERF
17125 // Increment the BD signature to refresh the fast path BD utilization
17126 pWDICtx->uBdSigSerialNum++;
17127#endif
17128
17129 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017130 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017131
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017133}/*WDI_ProcessExitUapsdRsp*/
17134
17135/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017136 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017137 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017138
17139 @param pWDICtx: pointer to the WLAN DAL context
17140 pEventData: pointer to the event information structure
17141
Jeff Johnson295189b2012-06-20 16:38:30 -070017142 @see
17143 @return Result of the function call
17144*/
17145WDI_Status
17146WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017147(
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 WDI_ControlBlockType* pWDICtx,
17149 WDI_EventInfoType* pEventData
17150)
17151{
17152 WDI_Status wdiStatus;
17153 eHalStatus halStatus;
17154 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17156
17157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 -------------------------------------------------------------------------*/
17160 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17161 ( NULL == pEventData->pEventData))
17162 {
17163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17164 "%s: Invalid parameters", __FUNCTION__);
17165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 }
17168
17169 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17170
17171 /*-------------------------------------------------------------------------
17172 Extract response and send it to UMAC
17173 -------------------------------------------------------------------------*/
17174 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017175 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017176
17177 /*Notify UMAC*/
17178 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17179
Jeff Johnsone7245742012-09-05 17:12:55 -070017180 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017181}/*WDI_ProcessSetUapsdAcParamsRsp*/
17182
17183/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017186
17187 @param pWDICtx: pointer to the WLAN DAL context
17188 pEventData: pointer to the event information structure
17189
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 @see
17191 @return Result of the function call
17192*/
17193WDI_Status
17194WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017195(
Jeff Johnson295189b2012-06-20 16:38:30 -070017196 WDI_ControlBlockType* pWDICtx,
17197 WDI_EventInfoType* pEventData
17198)
17199{
17200 WDI_Status wdiStatus;
17201 eHalStatus halStatus;
17202 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17204
17205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017207 -------------------------------------------------------------------------*/
17208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17209 ( NULL == pEventData->pEventData))
17210 {
17211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17212 "%s: Invalid parameters", __FUNCTION__);
17213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 }
17216
17217 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17218
17219 /*-------------------------------------------------------------------------
17220 Extract response and send it to UMAC
17221 -------------------------------------------------------------------------*/
17222 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017223 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017224
17225 /*Notify UMAC*/
17226 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17227
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017229}/*WDI_ProcessUpdateUapsdParamsRsp*/
17230
17231/**
17232 @brief Process Configure RXP filter Rsp function (called when a
17233 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017234
17235 @param pWDICtx: pointer to the WLAN DAL context
17236 pEventData: pointer to the event information structure
17237
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 @see
17239 @return Result of the function call
17240*/
17241WDI_Status
17242WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017243(
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 WDI_ControlBlockType* pWDICtx,
17245 WDI_EventInfoType* pEventData
17246)
17247{
17248 WDI_Status wdiStatus;
17249 eHalStatus halStatus;
17250 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17252
17253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 -------------------------------------------------------------------------*/
17256 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17257 ( NULL == pEventData->pEventData))
17258 {
17259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17260 "%s: Invalid parameters", __FUNCTION__);
17261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 }
17264
17265 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17266
17267 /*-------------------------------------------------------------------------
17268 Extract response and send it to UMAC
17269 -------------------------------------------------------------------------*/
17270 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017272
17273 /*Notify UMAC*/
17274 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17275
Jeff Johnsone7245742012-09-05 17:12:55 -070017276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017277}/*WDI_ProcessConfigureRxpFilterRsp*/
17278
17279/**
17280 @brief Process Set beacon filter Rsp function (called when a
17281 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017282
17283 @param pWDICtx: pointer to the WLAN DAL context
17284 pEventData: pointer to the event information structure
17285
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 @see
17287 @return Result of the function call
17288*/
17289WDI_Status
17290WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017291(
Jeff Johnson295189b2012-06-20 16:38:30 -070017292 WDI_ControlBlockType* pWDICtx,
17293 WDI_EventInfoType* pEventData
17294)
17295{
17296 WDI_Status wdiStatus;
17297 eHalStatus halStatus;
17298 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17300
17301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 -------------------------------------------------------------------------*/
17304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17305 ( NULL == pEventData->pEventData))
17306 {
17307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17308 "%s: Invalid parameters", __FUNCTION__);
17309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 }
17312
17313 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17314
17315 /*-------------------------------------------------------------------------
17316 Extract response and send it to UMAC
17317 -------------------------------------------------------------------------*/
17318 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017319 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017320
17321 /*Notify UMAC*/
17322 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17323
Jeff Johnsone7245742012-09-05 17:12:55 -070017324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017325}/*WDI_ProcessSetBeaconFilterRsp*/
17326
17327/**
17328 @brief Process remove beacon filter Rsp function (called when a
17329 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017330
17331 @param pWDICtx: pointer to the WLAN DAL context
17332 pEventData: pointer to the event information structure
17333
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 @see
17335 @return Result of the function call
17336*/
17337WDI_Status
17338WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017339(
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 WDI_ControlBlockType* pWDICtx,
17341 WDI_EventInfoType* pEventData
17342)
17343{
17344 WDI_Status wdiStatus;
17345 eHalStatus halStatus;
17346 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17348
17349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 -------------------------------------------------------------------------*/
17352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17353 ( NULL == pEventData->pEventData))
17354 {
17355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17356 "%s: Invalid parameters", __FUNCTION__);
17357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 }
17360
17361 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17362
17363 /*-------------------------------------------------------------------------
17364 Extract response and send it to UMAC
17365 -------------------------------------------------------------------------*/
17366 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017367 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017368
17369 /*Notify UMAC*/
17370 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17371
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017373}/*WDI_ProcessRemBeaconFilterRsp*/
17374
17375/**
17376 @brief Process set RSSI thresholds Rsp function (called when a
17377 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017378
17379 @param pWDICtx: pointer to the WLAN DAL context
17380 pEventData: pointer to the event information structure
17381
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 @see
17383 @return Result of the function call
17384*/
17385WDI_Status
17386WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017387(
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 WDI_ControlBlockType* pWDICtx,
17389 WDI_EventInfoType* pEventData
17390)
17391{
17392 WDI_Status wdiStatus;
17393 eHalStatus halStatus;
17394 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17396
17397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 -------------------------------------------------------------------------*/
17400 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17401 ( NULL == pEventData->pEventData))
17402 {
17403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17404 "%s: Invalid parameters", __FUNCTION__);
17405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 }
17408
17409 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17410
17411 /*-------------------------------------------------------------------------
17412 Extract response and send it to UMAC
17413 -------------------------------------------------------------------------*/
17414 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017416
17417 /*Notify UMAC*/
17418 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17419
Jeff Johnsone7245742012-09-05 17:12:55 -070017420 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017421}/*WDI_ProcessSetRSSIThresoldsRsp*/
17422
17423/**
17424 @brief Process host offload Rsp function (called when a
17425 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017426
17427 @param pWDICtx: pointer to the WLAN DAL context
17428 pEventData: pointer to the event information structure
17429
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 @see
17431 @return Result of the function call
17432*/
17433WDI_Status
17434WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017435(
Jeff Johnson295189b2012-06-20 16:38:30 -070017436 WDI_ControlBlockType* pWDICtx,
17437 WDI_EventInfoType* pEventData
17438)
17439{
17440 WDI_Status wdiStatus;
17441 eHalStatus halStatus;
17442 WDI_HostOffloadCb wdiHostOffloadCb;
17443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17444
17445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 -------------------------------------------------------------------------*/
17448 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17449 ( NULL == pEventData->pEventData))
17450 {
17451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17452 "%s: Invalid parameters", __FUNCTION__);
17453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017455 }
17456
17457 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17458
17459 /*-------------------------------------------------------------------------
17460 Extract response and send it to UMAC
17461 -------------------------------------------------------------------------*/
17462 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017464
17465 /*Notify UMAC*/
17466 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17467
Jeff Johnsone7245742012-09-05 17:12:55 -070017468 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017469}/*WDI_ProcessHostOffloadRsp*/
17470
17471/**
17472 @brief Process keep alive Rsp function (called when a
17473 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017474
17475 @param pWDICtx: pointer to the WLAN DAL context
17476 pEventData: pointer to the event information structure
17477
Jeff Johnson295189b2012-06-20 16:38:30 -070017478 @see
17479 @return Result of the function call
17480*/
17481WDI_Status
17482WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017483(
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 WDI_ControlBlockType* pWDICtx,
17485 WDI_EventInfoType* pEventData
17486)
17487{
17488 WDI_Status wdiStatus;
17489 eHalStatus halStatus;
17490 WDI_KeepAliveCb wdiKeepAliveCb;
17491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17493 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17494
17495
17496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 -------------------------------------------------------------------------*/
17499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17500 ( NULL == pEventData->pEventData))
17501 {
17502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17503 "%s: Invalid parameters", __FUNCTION__);
17504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 }
17507
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17509
Jeff Johnson295189b2012-06-20 16:38:30 -070017510 /*-------------------------------------------------------------------------
17511 Extract response and send it to UMAC
17512 -------------------------------------------------------------------------*/
17513 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017514 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017515
17516 /*Notify UMAC*/
17517 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17518
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017520}/*WDI_ProcessKeepAliveRsp*/
17521
17522/**
17523 @brief Process wowl add ptrn Rsp function (called when a
17524 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017525
17526 @param pWDICtx: pointer to the WLAN DAL context
17527 pEventData: pointer to the event information structure
17528
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 @see
17530 @return Result of the function call
17531*/
17532WDI_Status
17533WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017534(
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 WDI_ControlBlockType* pWDICtx,
17536 WDI_EventInfoType* pEventData
17537)
17538{
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 eHalStatus halStatus;
17540 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017541 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17542 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17543
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17545
17546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 -------------------------------------------------------------------------*/
17549 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17550 ( NULL == pEventData->pEventData))
17551 {
17552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17553 "%s: Invalid parameters", __FUNCTION__);
17554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017556 }
17557
17558 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17559
17560 /*-------------------------------------------------------------------------
17561 Extract response and send it to UMAC
17562 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017563 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17564 {
17565 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17566 pEventData->pEventData,
17567 sizeof(halAddWowlBcastPtrRsp));
17568
17569 wdiWowlAddBcPtrRsp.wdiStatus =
17570 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17571 }
17572 else
17573 {
17574 halStatus = *((eHalStatus*)pEventData->pEventData);
17575 wdiWowlAddBcPtrRsp.wdiStatus =
17576 WDI_HAL_2_WDI_STATUS(halStatus);
17577 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017578
17579 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017580 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017581
Jeff Johnsone7245742012-09-05 17:12:55 -070017582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017583}/*WDI_ProcessWowlAddBcPtrnRsp*/
17584
17585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017586 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017587 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017588
17589 @param pWDICtx: pointer to the WLAN DAL context
17590 pEventData: pointer to the event information structure
17591
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 @see
17593 @return Result of the function call
17594*/
17595WDI_Status
17596WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017597(
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 WDI_ControlBlockType* pWDICtx,
17599 WDI_EventInfoType* pEventData
17600)
17601{
Jeff Johnson295189b2012-06-20 16:38:30 -070017602 eHalStatus halStatus;
17603 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017604 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17605 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17607
17608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 -------------------------------------------------------------------------*/
17611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17612 ( NULL == pEventData->pEventData))
17613 {
17614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17615 "%s: Invalid parameters", __FUNCTION__);
17616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 }
17619
17620 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17621
17622 /*-------------------------------------------------------------------------
17623 Extract response and send it to UMAC
17624 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017625 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17626 {
17627 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17628 pEventData->pEventData,
17629 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017630
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017631 wdiWowlDelBcstPtrRsp.wdiStatus =
17632 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17633 }
17634 else
17635 {
17636 halStatus = *((eHalStatus*)pEventData->pEventData);
17637 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17638 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017639 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017640 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017641
Jeff Johnsone7245742012-09-05 17:12:55 -070017642 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017643}/*WDI_ProcessWowlDelBcPtrnRsp*/
17644
17645/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017648
17649 @param pWDICtx: pointer to the WLAN DAL context
17650 pEventData: pointer to the event information structure
17651
Jeff Johnson295189b2012-06-20 16:38:30 -070017652 @see
17653 @return Result of the function call
17654*/
17655WDI_Status
17656WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017657(
Jeff Johnson295189b2012-06-20 16:38:30 -070017658 WDI_ControlBlockType* pWDICtx,
17659 WDI_EventInfoType* pEventData
17660)
17661{
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 eHalStatus halStatus;
17663 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017664 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17665 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17667
17668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 -------------------------------------------------------------------------*/
17671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17672 ( NULL == pEventData->pEventData))
17673 {
17674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17675 "%s: Invalid parameters", __FUNCTION__);
17676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 }
17679
17680 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17681
17682 /*-------------------------------------------------------------------------
17683 Extract response and send it to UMAC
17684 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017685 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17686 {
17687 wpalMemoryCopy( &halEnterWowlRspParams,
17688 (wpt_uint8*)pEventData->pEventData,
17689 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017690
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017691 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17692 wdiwowlEnterRsp.status =
17693 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17694 }
17695 else
17696 {
17697 halStatus = *((eHalStatus*)pEventData->pEventData);
17698 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17699 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017701 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017702
Jeff Johnsone7245742012-09-05 17:12:55 -070017703 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017704}/*WDI_ProcessWowlEnterRsp*/
17705
17706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017709
17710 @param pWDICtx: pointer to the WLAN DAL context
17711 pEventData: pointer to the event information structure
17712
Jeff Johnson295189b2012-06-20 16:38:30 -070017713 @see
17714 @return Result of the function call
17715*/
17716WDI_Status
17717WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017718(
Jeff Johnson295189b2012-06-20 16:38:30 -070017719 WDI_ControlBlockType* pWDICtx,
17720 WDI_EventInfoType* pEventData
17721)
17722{
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 eHalStatus halStatus;
17724 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017725 tHalExitWowlRspParams halExitWowlRspParams;
17726 WDI_WowlExitRspParamsType wdiWowlExitRsp;
17727
Jeff Johnson295189b2012-06-20 16:38:30 -070017728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17729
17730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017731 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017732 -------------------------------------------------------------------------*/
17733 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17734 ( NULL == pEventData->pEventData))
17735 {
17736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17737 "%s: Invalid parameters", __FUNCTION__);
17738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017740 }
17741
17742 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
17743
17744 /*-------------------------------------------------------------------------
17745 Extract response and send it to UMAC
17746 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017747 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17748 {
17749 wpalMemoryCopy( &halExitWowlRspParams,
17750 pEventData->pEventData,
17751 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017752
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017753 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
17754 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
17755
17756 }
17757 else
17758 {
17759 halStatus = *((eHalStatus*)pEventData->pEventData);
17760 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17761 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017763 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017764
Jeff Johnsone7245742012-09-05 17:12:55 -070017765 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017766}/*WDI_ProcessWowlExitRsp*/
17767
17768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017769 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070017770 (called when a response is being received over the bus
17771 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017772
17773 @param pWDICtx: pointer to the WLAN DAL context
17774 pEventData: pointer to the event information structure
17775
Jeff Johnson295189b2012-06-20 16:38:30 -070017776 @see
17777 @return Result of the function call
17778*/
17779WDI_Status
17780WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017781(
Jeff Johnson295189b2012-06-20 16:38:30 -070017782 WDI_ControlBlockType* pWDICtx,
17783 WDI_EventInfoType* pEventData
17784)
17785{
17786 WDI_Status wdiStatus;
17787 eHalStatus halStatus;
17788 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
17789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17790
17791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 -------------------------------------------------------------------------*/
17794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17795 ( NULL == pEventData->pEventData))
17796 {
17797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17798 "%s: Invalid parameters", __FUNCTION__);
17799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017801 }
17802
17803 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
17804
17805 /*-------------------------------------------------------------------------
17806 Extract response and send it to UMAC
17807 -------------------------------------------------------------------------*/
17808 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017810
17811 /*Notify UMAC*/
17812 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
17813
Jeff Johnsone7245742012-09-05 17:12:55 -070017814 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017815}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
17816
17817
17818/**
17819 @brief Process Nv download(called when a response
17820 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070017821
17822 @param pWDICtx: pointer to the WLAN DAL context
17823 pEventData: pointer to the event information structure
17824
Jeff Johnson295189b2012-06-20 16:38:30 -070017825 @see
17826 @return Result of the function call
17827*/
17828WDI_Status
17829WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017830(
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 WDI_ControlBlockType* pWDICtx,
17832 WDI_EventInfoType* pEventData
17833)
17834{
17835
17836 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
17837 tHalNvImgDownloadRspParams halNvDownloadRsp;
17838 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
17839
17840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017842 -------------------------------------------------------------------------*/
17843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17844 ( NULL == pEventData->pEventData))
17845 {
17846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17847 "%s: Invalid parameters", __FUNCTION__);
17848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 }
17851
17852 /*-------------------------------------------------------------------------
17853 Extract response and send it to UMAC
17854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017855 wpalMemoryCopy( &halNvDownloadRsp,
17856 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 sizeof(halNvDownloadRsp));
17858
17859 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
17860
17861 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070017862 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
17863 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 {
17865 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070017866 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017867 }
17868 else
17869 {
17870 /*Reset the Nv related global information in WDI context information */
17871 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
17872 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
17873 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
17874 /*call WDA callback function for last fragment */
17875 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
17876 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
17877 }
17878
Jeff Johnsone7245742012-09-05 17:12:55 -070017879 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017880}
17881#ifdef WLAN_FEATURE_VOWIFI_11R
17882/**
17883 @brief Process Add TSpec Rsp function (called when a response
17884 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017885
17886 @param pWDICtx: pointer to the WLAN DAL context
17887 pEventData: pointer to the event information structure
17888
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 @see
17890 @return Result of the function call
17891*/
17892WDI_Status
17893WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017894(
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 WDI_ControlBlockType* pWDICtx,
17896 WDI_EventInfoType* pEventData
17897)
17898{
17899 WDI_Status wdiStatus;
17900 tAggrAddTsRspParams aggrAddTsRsp;
17901 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
17902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17903
17904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 -------------------------------------------------------------------------*/
17907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17908 ( NULL == pEventData->pEventData))
17909 {
17910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17911 "%s: Invalid parameters", __FUNCTION__);
17912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017914 }
17915
17916 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17917
17918 /*-------------------------------------------------------------------------
17919 Extract response and send it to UMAC
17920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017921 wpalMemoryCopy( &aggrAddTsRsp,
17922 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 sizeof(aggrAddTsRsp));
17924
17925 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017926 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070017927
17928 /*Notify UMAC*/
17929 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17930
Jeff Johnsone7245742012-09-05 17:12:55 -070017931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017932}/*WDI_ProcessAddTSpecRsp*/
17933#endif /* WLAN_FEATURE_VOWIFI_11R */
17934
17935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017936 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017938
17939 @param pWDICtx: pointer to the WLAN DAL context
17940 pEventData: pointer to the event information structure
17941
Jeff Johnson295189b2012-06-20 16:38:30 -070017942 @see
17943 @return Result of the function call
17944*/
17945WDI_Status
17946WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017947(
Jeff Johnson295189b2012-06-20 16:38:30 -070017948 WDI_ControlBlockType* pWDICtx,
17949 WDI_EventInfoType* pEventData
17950)
17951{
17952 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
17953 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
17954 tHalHostResumeRspParams hostResumeRspMsg;
17955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17956
17957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017959 -------------------------------------------------------------------------*/
17960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17961 ( NULL == pEventData->pEventData))
17962 {
17963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17964 "%s: Invalid parameters", __FUNCTION__);
17965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017967 }
17968
17969 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
17970
17971 /*-------------------------------------------------------------------------
17972 Extract response and send it to UMAC
17973 -------------------------------------------------------------------------*/
17974
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 (wpt_uint8*)pEventData->pEventData,
17977 sizeof(hostResumeRspMsg));
17978
Jeff Johnsone7245742012-09-05 17:12:55 -070017979 wdiResumeRspParams.wdiStatus =
17980 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017981
17982 /*Notify UMAC*/
17983 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
17984
17985 return WDI_STATUS_SUCCESS;
17986}
17987
17988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017989 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017991
17992 @param pWDICtx: pointer to the WLAN DAL context
17993 pEventData: pointer to the event information structure
17994
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 @see
17996 @return Result of the function call
17997*/
17998WDI_Status
17999WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018000(
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 WDI_ControlBlockType* pWDICtx,
18002 WDI_EventInfoType* pEventData
18003)
18004{
18005 WDI_Status wdiStatus;
18006 eHalStatus halStatus;
18007 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18009
18010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018012 -------------------------------------------------------------------------*/
18013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18014 ( NULL == pEventData->pEventData))
18015 {
18016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18017 "%s: Invalid parameters", __FUNCTION__);
18018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018021
18022 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018023
18024 /*-------------------------------------------------------------------------
18025 Extract response and send it to UMAC
18026 -------------------------------------------------------------------------*/
18027 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018029
18030 /*Notify UMAC*/
18031 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18032
Jeff Johnsone7245742012-09-05 17:12:55 -070018033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018034}/*WDI_ProcessSetTxPerTrackingRsp*/
18035
18036/*==========================================================================
18037 Indications from HAL
18038 ==========================================================================*/
18039/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018040 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 indication of this kind is being received over the bus
18042 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018043
18044 @param pWDICtx: pointer to the WLAN DAL context
18045 pEventData: pointer to the event information structure
18046
Jeff Johnson295189b2012-06-20 16:38:30 -070018047 @see
18048 @return Result of the function call
18049*/
18050WDI_Status
18051WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018052(
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 WDI_ControlBlockType* pWDICtx,
18054 WDI_EventInfoType* pEventData
18055)
18056{
18057 WDI_LowLevelIndType wdiInd;
18058 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18060
18061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 -------------------------------------------------------------------------*/
18064 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18065 ( NULL == pEventData->pEventData))
18066 {
18067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18068 "%s: Invalid parameters", __FUNCTION__);
18069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018071 }
18072
18073 /*-------------------------------------------------------------------------
18074 Extract indication and send it to UMAC
18075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18077 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 sizeof(tHalRSSINotification));
18079
18080 /*Fill in the indication parameters*/
18081 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18082 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18083 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18084 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18085 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18086 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18087 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18088 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18089 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18090 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18091 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18092 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18093 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
18094
18095 /*Notify UMAC*/
18096 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018097
18098 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018099}/*WDI_ProcessLowRSSIInd*/
18100
18101
18102/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018103 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018104 an indication of this kind is being received over the
18105 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018106
18107 @param pWDICtx: pointer to the WLAN DAL context
18108 pEventData: pointer to the event information structure
18109
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 @see
18111 @return Result of the function call
18112*/
18113WDI_Status
18114WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018115(
Jeff Johnson295189b2012-06-20 16:38:30 -070018116 WDI_ControlBlockType* pWDICtx,
18117 WDI_EventInfoType* pEventData
18118)
18119{
18120 WDI_Status wdiStatus;
18121 eHalStatus halStatus;
18122 WDI_LowLevelIndType wdiInd;
18123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18124
18125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018127 -------------------------------------------------------------------------*/
18128 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18129 ( NULL == pEventData->pEventData))
18130 {
18131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18132 "%s: Invalid parameters", __FUNCTION__);
18133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018135 }
18136
18137 /*-------------------------------------------------------------------------
18138 Extract indication and send it to UMAC
18139 -------------------------------------------------------------------------*/
18140 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18141 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018142 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018143
18144 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
18146
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 /*Notify UMAC*/
18148 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018149
18150 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018151}/*WDI_ProcessMissedBeaconInd*/
18152
18153
18154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 an indication of this kind is being received over the
18157 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018158
18159 @param pWDICtx: pointer to the WLAN DAL context
18160 pEventData: pointer to the event information structure
18161
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 @see
18163 @return Result of the function call
18164*/
18165WDI_Status
18166WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018167(
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 WDI_ControlBlockType* pWDICtx,
18169 WDI_EventInfoType* pEventData
18170)
18171{
18172 WDI_Status wdiStatus;
18173 eHalStatus halStatus;
18174 WDI_LowLevelIndType wdiInd;
18175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18176
18177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018179 -------------------------------------------------------------------------*/
18180 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18181 ( NULL == pEventData->pEventData))
18182 {
18183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18184 "%s: Invalid parameters", __FUNCTION__);
18185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 }
18188
18189 /*-------------------------------------------------------------------------
18190 Extract indication and send it to UMAC
18191 -------------------------------------------------------------------------*/
18192 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18193 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018194 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018195
18196 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018197 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 /* ! TO DO - fill in from HAL struct:
18199 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18200
18201 /*Notify UMAC*/
18202 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018203
18204 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018205}/*WDI_ProcessUnkAddrFrameInd*/
18206
18207
18208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 indication of this kind is being received over the bus
18211 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018212
18213 @param pWDICtx: pointer to the WLAN DAL context
18214 pEventData: pointer to the event information structure
18215
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 @see
18217 @return Result of the function call
18218*/
18219WDI_Status
18220WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018221(
Jeff Johnson295189b2012-06-20 16:38:30 -070018222 WDI_ControlBlockType* pWDICtx,
18223 WDI_EventInfoType* pEventData
18224)
18225{
18226 WDI_LowLevelIndType wdiInd;
18227 tpSirMicFailureInd pHalMicFailureInd;
18228
18229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18230
18231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 -------------------------------------------------------------------------*/
18234 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18235 ( NULL == pEventData->pEventData))
18236 {
18237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18238 "%s: Invalid parameters", __FUNCTION__);
18239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018242
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18244 /*-------------------------------------------------------------------------
18245 Extract indication and send it to UMAC
18246 -------------------------------------------------------------------------*/
18247
18248 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018249 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018250 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18251 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18252 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18253 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18254 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18255 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18256 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18257 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018260 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018261 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018262 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018263 pHalMicFailureInd->info.keyId;
18264 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18265 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18266 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18267 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
18268 /*Notify UMAC*/
18269 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018270
18271 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018272}/*WDI_ProcessMicFailureInd*/
18273
18274
18275/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 an indication of this kind is being received over the
18278 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018279
18280 @param pWDICtx: pointer to the WLAN DAL context
18281 pEventData: pointer to the event information structure
18282
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 @see
18284 @return Result of the function call
18285*/
18286WDI_Status
18287WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018288(
Jeff Johnson295189b2012-06-20 16:38:30 -070018289 WDI_ControlBlockType* pWDICtx,
18290 WDI_EventInfoType* pEventData
18291)
18292{
18293 WDI_Status wdiStatus;
18294 eHalStatus halStatus;
18295 WDI_LowLevelIndType wdiInd;
18296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18297
18298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 -------------------------------------------------------------------------*/
18301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18302 ( NULL == pEventData->pEventData))
18303 {
18304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18305 "%s: Invalid parameters", __FUNCTION__);
18306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 }
18309
18310 /*-------------------------------------------------------------------------
18311 Extract indication and send it to UMAC
18312 -------------------------------------------------------------------------*/
18313
18314 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18315 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018316 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018317
18318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18319 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018320
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018322 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18323 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018324
18325 /*Notify UMAC*/
18326 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018327
18328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018329}/*WDI_ProcessFatalErrorInd*/
18330
18331/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018332 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018333 an indication of this kind is being received over the
18334 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018335
18336 @param pWDICtx: pointer to the WLAN DAL context
18337 pEventData: pointer to the event information structure
18338
Jeff Johnson295189b2012-06-20 16:38:30 -070018339 @see
18340 @return Result of the function call
18341*/
18342WDI_Status
18343WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018344(
Jeff Johnson295189b2012-06-20 16:38:30 -070018345 WDI_ControlBlockType* pWDICtx,
18346 WDI_EventInfoType* pEventData
18347)
18348{
18349 tDeleteStaContextParams halDelSTACtx;
18350 WDI_LowLevelIndType wdiInd;
18351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18352
18353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018355 -------------------------------------------------------------------------*/
18356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18357 ( NULL == pEventData->pEventData))
18358 {
18359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18360 "%s: Invalid parameters", __FUNCTION__);
18361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018363 }
18364
18365 /*-------------------------------------------------------------------------
18366 Extract indication and send it to UMAC
18367 -------------------------------------------------------------------------*/
18368
18369 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 wpalMemoryCopy( &halDelSTACtx,
18371 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 sizeof(halDelSTACtx));
18373
18374 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018375 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018376
18377 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18378 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18379 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18380 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18381
Jeff Johnsone7245742012-09-05 17:12:55 -070018382 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018383 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018384 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018386 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18387 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018388
18389 /*Notify UMAC*/
18390 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018391
18392 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018393}/*WDI_ProcessDelSTAInd*/
18394
18395/**
18396*@brief Process Coex Indication function (called when
18397 an indication of this kind is being received over the
18398 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018399
18400 @param pWDICtx: pointer to the WLAN DAL context
18401 pEventData: pointer to the event information structure
18402
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 @see
18404 @return Result of the function call
18405*/
18406WDI_Status
18407WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018408(
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 WDI_ControlBlockType* pWDICtx,
18410 WDI_EventInfoType* pEventData
18411)
18412{
18413 WDI_LowLevelIndType wdiInd;
18414 tCoexIndMsg halCoexIndMsg;
18415 wpt_uint32 index;
18416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18417
18418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 -------------------------------------------------------------------------*/
18421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18422 ( NULL == pEventData->pEventData ))
18423 {
18424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18425 "%s: Invalid parameters", __FUNCTION__);
18426 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018428 }
18429
18430 /*-------------------------------------------------------------------------
18431 Extract indication and send it to UMAC
18432 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018433 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18434 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 sizeof(halCoexIndMsg.coexIndParams) );
18436
18437 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018438 wdiInd.wdiIndicationType = WDI_COEX_IND;
18439 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18441 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018442 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 }
18444
18445 // DEBUG
18446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18447 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018448 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18449 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18450 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18451 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18452 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018453
18454 /*Notify UMAC*/
18455 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018456
18457 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018458}/*WDI_ProcessCoexInd*/
18459
18460/**
18461*@brief Process Tx Complete Indication function (called when
18462 an indication of this kind is being received over the
18463 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018464
18465 @param pWDICtx: pointer to the WLAN DAL context
18466 pEventData: pointer to the event information structure
18467
Jeff Johnson295189b2012-06-20 16:38:30 -070018468 @see
18469 @return Result of the function call
18470*/
18471WDI_Status
18472WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018473(
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 WDI_ControlBlockType* pWDICtx,
18475 WDI_EventInfoType* pEventData
18476)
18477{
18478 WDI_LowLevelIndType wdiInd;
18479 tTxComplIndMsg halTxComplIndMsg;
18480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18481
18482 /*-------------------------------------------------------------------------
18483 Sanity check
18484 -------------------------------------------------------------------------*/
18485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18486 ( NULL == pEventData->pEventData ))
18487 {
18488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18489 "%s: Invalid parameters", __FUNCTION__);
18490 WDI_ASSERT( 0 );
18491 return WDI_STATUS_E_FAILURE;
18492 }
18493
18494 /*-------------------------------------------------------------------------
18495 Extract indication and send it to UMAC
18496 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018497 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18498 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 sizeof(halTxComplIndMsg.txComplParams) );
18500
18501 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018502 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18503 wdiInd.wdiIndicationData.tx_complete_status
18504 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018505
18506 /*Notify UMAC*/
18507 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018508
18509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018510}/*WDI_ProcessTxCompleteInd*/
18511
18512#ifdef WLAN_FEATURE_P2P
18513/**
18514*@brief Process Noa Attr Indication function (called when
18515 an indication of this kind is being received over the
18516 bus from HAL)
18517
18518 @param pWDICtx: pointer to the WLAN DAL context
18519 pEventData: pointer to the event information structure
18520
18521 @see
18522 @return Result of the function call
18523*/
18524WDI_Status
18525WDI_ProcessP2pNoaAttrInd
18526(
18527 WDI_ControlBlockType* pWDICtx,
18528 WDI_EventInfoType* pEventData
18529)
18530{
18531 WDI_LowLevelIndType wdiInd;
18532 tNoaAttrIndMsg halNoaAttrIndMsg;
18533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18534
18535 /*-------------------------------------------------------------------------
18536 Sanity check
18537 -------------------------------------------------------------------------*/
18538 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18539 ( NULL == pEventData->pEventData ))
18540 {
18541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18542 "%s: Invalid parameters", __FUNCTION__);
18543 WDI_ASSERT( 0 );
18544 return WDI_STATUS_E_FAILURE;
18545 }
18546
18547 /*-------------------------------------------------------------------------
18548 Extract indication and send it to UMAC
18549 -------------------------------------------------------------------------*/
18550 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18551 pEventData->pEventData,
18552 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18553
18554 /*Fill in the indication parameters*/
18555 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018556
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18558 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018559
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18561 = halNoaAttrIndMsg.noaAttrIndParams.index;
18562 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18563 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18564 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18565 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018566
Jeff Johnson295189b2012-06-20 16:38:30 -070018567 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18568 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18569 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18570 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18571 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18572 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18573 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18574 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018575
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18577 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18578 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18579 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18580 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18581 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18582 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18583 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18584
18585 /*Notify UMAC*/
18586 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18587
18588 return WDI_STATUS_SUCCESS;
18589}/*WDI_ProcessNoaAttrInd*/
18590#endif
18591
18592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018593 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 an indication of this kind is being received over the
18595 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018596
18597 @param pWDICtx: pointer to the WLAN DAL context
18598 pEventData: pointer to the event information structure
18599
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 @see
18601 @return Result of the function call
18602*/
18603WDI_Status
18604WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018605(
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 WDI_ControlBlockType* pWDICtx,
18607 WDI_EventInfoType* pEventData
18608)
18609{
18610 WDI_LowLevelIndType wdiInd;
18611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018612
Jeff Johnson295189b2012-06-20 16:38:30 -070018613 /*-------------------------------------------------------------------------
18614 Extract indication and send it to UMAC
18615 -------------------------------------------------------------------------*/
18616 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18618
Jeff Johnson295189b2012-06-20 16:38:30 -070018619 /*Notify UMAC*/
18620 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18621
Jeff Johnsone7245742012-09-05 17:12:55 -070018622 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018623}/*WDI_ProcessTxPerHitInd*/
18624
18625#ifdef ANI_MANF_DIAG
18626/**
18627 @brief WDI_ProcessFTMCommandReq
18628 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018629
18630 @param pWDICtx: pointer to the WLAN DAL context
18631 pEventData: pointer to the event information structure
18632
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 @see
18634 @return Result of the function call
18635*/
18636WDI_Status
18637WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018638(
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 WDI_ControlBlockType* pWDICtx,
18640 WDI_EventInfoType* pEventData
18641)
18642{
18643 WDI_FTMCommandReqType *ftmCommandReq = NULL;
18644 wpt_uint8 *ftmCommandBuffer = NULL;
18645 wpt_uint16 dataOffset;
18646 wpt_uint16 bufferSize;
18647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018648 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 -------------------------------------------------------------------------*/
18650 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18651 ( NULL == pEventData->pEventData))
18652
18653 {
18654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18655 "%s: Invalid parameters", __FUNCTION__);
18656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018658 }
18659
18660 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
18661
18662 /* Get MSG Buffer */
18663 WDI_GetMessageBuffer(pWDICtx,
18664 WDI_FTM_CMD_REQ,
18665 ftmCommandReq->bodyLength,
18666 &ftmCommandBuffer,
18667 &dataOffset,
18668 &bufferSize);
18669
18670 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
18671 ftmCommandReq->FTMCommandBody,
18672 ftmCommandReq->bodyLength);
18673
18674 /* Send MSG */
18675 return WDI_SendMsg(pWDICtx,
18676 ftmCommandBuffer,
18677 bufferSize,
18678 pEventData->pCBfnc,
18679 pEventData->pUserData,
18680 WDI_FTM_CMD_RESP);
18681}
18682
18683/**
18684 @brief WDI_ProcessFTMCommandRsp
18685 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070018686
18687 @param pWDICtx: pointer to the WLAN DAL context
18688 pEventData: pointer to the event information structure
18689
Jeff Johnson295189b2012-06-20 16:38:30 -070018690 @see
18691 @return Result of the function call
18692*/
18693WDI_Status
18694WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018695(
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 WDI_ControlBlockType* pWDICtx,
18697 WDI_EventInfoType* pEventData
18698)
18699{
18700 WDI_FTMCommandRspCb ftmCMDRspCb;
18701 tProcessPttRspParams *ftmCMDRspData = NULL;
18702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18703
18704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018706 -------------------------------------------------------------------------*/
18707 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18708 ( NULL == pEventData->pEventData))
18709 {
18710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18711 "%s: Invalid parameters", __FUNCTION__);
18712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018714 }
18715
18716 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
18717
18718 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
18719
Jeff Johnsone7245742012-09-05 17:12:55 -070018720 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
18721 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070018722 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
18723
18724 /*Notify UMAC*/
18725 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
18726
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018728}
18729#endif /* ANI_MANF_DIAG */
18730/**
18731 @brief WDI_ProcessHalDumpCmdReq
18732 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018733
18734 @param pWDICtx: pointer to the WLAN DAL context
18735 pEventData: pointer to the event information structure
18736
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 @see
18738 @return Result of the function call
18739*/
18740WDI_Status
18741WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018742(
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 WDI_ControlBlockType* pWDICtx,
18744 WDI_EventInfoType* pEventData
18745)
18746{
18747 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
18748 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
18749 wpt_uint16 usDataOffset = 0;
18750 wpt_uint16 usSendSize = 0;
18751 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070018753
18754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 -------------------------------------------------------------------------*/
18757 if (( NULL == pEventData ) ||
18758 ( NULL == pEventData->pEventData) ||
18759 ( NULL == pEventData->pCBfnc ))
18760 {
18761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18762 "%s: Invalid parameters", __FUNCTION__);
18763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 }
18766
18767 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
18768 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
18769
18770 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018771 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018772 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070018773 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018774 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018775 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070018777 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018778 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070018779 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070018781
Jeff Johnson295189b2012-06-20 16:38:30 -070018782 /*-----------------------------------------------------------------------
18783 Get message buffer
18784 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018785 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
18787 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070018788 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
18790 {
18791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18792 "Unable to get send buffer in HAL Dump Command req %x %x %x",
18793 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
18794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 }
18797
Jeff Johnsone7245742012-09-05 17:12:55 -070018798 wpalMemoryCopy( pSendBuffer+usDataOffset,
18799 &halDumpCmdReqMsg.dumpCmdReqParams,
18800 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018801
18802 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070018803 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018804
18805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
18809 wdiHALDumpCmdRspCb, pEventData->pUserData,
18810 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070018811}
18812
18813/**
18814 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018815 Process hal Dump Command Response from HAL, simply route to HDD
18816
18817 @param pWDICtx: pointer to the WLAN DAL context
18818 pEventData: pointer to the event information structure
18819
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 @see
18821 @return Result of the function call
18822*/
18823WDI_Status
18824WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018825(
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 WDI_ControlBlockType* pWDICtx,
18827 WDI_EventInfoType* pEventData
18828)
18829{
18830 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
18831 tpHalDumpCmdRspParams halDumpCmdRspParams;
18832 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
18833
18834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018836 -------------------------------------------------------------------------*/
18837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18838 ( NULL == pEventData->pEventData))
18839 {
18840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18841 "%s: Invalid parameters", __FUNCTION__);
18842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018844 }
18845
Jeff Johnsone7245742012-09-05 17:12:55 -070018846 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018847
18848 /*Initialize the WDI Response structure */
18849 wdiHALDumpCmdRsp.usBufferLen = 0;
18850 wdiHALDumpCmdRsp.pBuffer = NULL;
18851
18852 halDumpCmdRspParams = (tHalDumpCmdRspParams *)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070018853
18854 wdiHALDumpCmdRsp.wdiStatus =
18855 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams->status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018856
18857 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
18858 (halDumpCmdRspParams->rspLength != 0))
18859 {
18860 /* Copy the response data */
18861 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams->rspLength;
18862 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams->rspLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 wpalMemoryCopy( &halDumpCmdRspParams->rspBuffer,
18864 wdiHALDumpCmdRsp.pBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 sizeof(wdiHALDumpCmdRsp.usBufferLen));
18866 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018867
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 /*Notify UMAC*/
18869 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
18870
18871 if(wdiHALDumpCmdRsp.pBuffer != NULL)
18872 {
18873 /* Free the allocated buffer */
18874 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
18875 }
18876 return WDI_STATUS_SUCCESS;
18877}
18878
18879/*==========================================================================
18880 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070018881
Jeff Johnson295189b2012-06-20 16:38:30 -070018882 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070018883 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070018884==========================================================================*/
18885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018886 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 when it wishes to send up a notification like the ones
18888 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070018889
Jeff Johnson295189b2012-06-20 16:38:30 -070018890 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070018891
18892 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070018894 wctsNotifyCBData: the callback data of the user
18895
Jeff Johnson295189b2012-06-20 16:38:30 -070018896 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070018897
18898 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070018899*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018900void
Jeff Johnson295189b2012-06-20 16:38:30 -070018901WDI_NotifyMsgCTSCB
18902(
Jeff Johnsone7245742012-09-05 17:12:55 -070018903 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070018904 WCTS_NotifyEventType wctsEvent,
18905 void* wctsNotifyCBData
18906)
18907{
Jeff Johnsone7245742012-09-05 17:12:55 -070018908 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18910
18911 if (NULL == pWDICtx )
18912 {
18913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18914 "%s: Invalid parameters", __FUNCTION__);
18915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018916 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 }
18918
18919 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
18920 {
18921 /* callback presumably occurred after close */
18922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18923 "%s: Invalid control block", __FUNCTION__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 }
18926
18927 if ( WCTS_EVENT_OPEN == wctsEvent )
18928 {
18929 /*Flag must be set atomically as it is checked from incoming request
18930 functions*/
18931 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070018932 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018933
18934 /*Nothing to do - so try to dequeue any pending request that may have
18935 occurred while we were trying to establish this*/
18936 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070018937 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018939 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070018940 {
18941 /*Flag must be set atomically as it is checked from incoming request
18942 functions*/
18943 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070018944 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018945
18946 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018947 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 wpalMutexRelease(&pWDICtx->wptMutex);
18949
18950 /*Notify that the Control Channel is closed */
18951 wpalEventSet(&pWDICtx->wctsActionEvent);
18952 }
18953
18954}/*WDI_NotifyMsgCTSCB*/
18955
18956
18957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018958 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 when it wishes to send up a packet received over the
18960 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070018961
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070018963
18964 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 pMsg: the packet
18966 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 wctsRxMsgCBData: the callback data of the user
18968
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070018970
18971 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070018972*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018973void
18974WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070018975(
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 void* pMsg,
18978 wpt_uint32 uLen,
18979 void* wctsRxMsgCBData
18980)
18981{
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 tHalMsgHeader *pHalMsgHeader;
18983 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018984 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
18985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
18986
18987 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018989 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018990 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 ( uLen < sizeof(tHalMsgHeader)))
18992 {
18993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18994 "%s: Invalid parameters", __FUNCTION__);
18995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018996 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070018997 }
18998
18999 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19000 {
19001 /* callback presumably occurred after close */
19002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19003 "%s: Invalid control block", __FUNCTION__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019005 }
19006
Jeff Johnsone7245742012-09-05 17:12:55 -070019007 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019008 context - so no serialization is necessary here
19009 ! - revisit this assumption */
19010
19011 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19012
19013 if ( uLen != pHalMsgHeader->msgLen )
19014 {
19015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19016 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19018 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 }
19020
19021 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19022
19023 /*The message itself starts after the header*/
19024 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19025 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19026 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19027 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19028
19029
19030 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19031 {
19032 /*Stop the timer as the response was received */
19033 /*!UT - check for potential race conditions between stop and response */
19034 wpalTimerStop(&pWDICtx->wptResponseTimer);
19035 }
19036 /* Check if we receive a response message which is not expected */
19037 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19038 {
19039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19040 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19041 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019043 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19044 pWDICtx->wdiExpectedResponse);
19045 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19046 return;
19047 }
19048
19049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19050 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19051
19052 /*Post response event to the state machine*/
19053 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19054
19055}/*WDI_RXMsgCTSCB*/
19056
19057
19058/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019059 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019060========================================================================*/
19061
19062/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019063 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019065
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 @param pWDICtx - pointer to the control block
19067
19068 @return Result of the function call
19069*/
19070WPT_INLINE WDI_Status
19071WDI_CleanCB
19072(
19073 WDI_ControlBlockType* pWDICtx
19074)
19075{
19076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19077
19078 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019080
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19083 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19084
19085 WDI_ResetAssocSessions( pWDICtx );
19086
19087 return WDI_STATUS_SUCCESS;
19088}/*WDI_CleanCB*/
19089
19090
19091/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019093
Jeff Johnsone7245742012-09-05 17:12:55 -070019094
19095 @param pWDICtx: pointer to the WLAN DAL context
19096 pEventData: pointer to the event information structure
19097
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 @see
19099 @return Result of the function call
19100*/
19101WPT_INLINE WDI_Status
19102WDI_ProcessRequest
19103(
19104 WDI_ControlBlockType* pWDICtx,
19105 WDI_EventInfoType* pEventData
19106)
19107{
19108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19109
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 already checked these pointers*/
19112
19113 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19114 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019115 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19117 "Calling request processing function for req %s (%d) %x",
19118 WDI_getReqMsgString(pEventData->wdiRequest),
19119 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19120 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19121 }
19122 else
19123 {
19124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019125 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019126 pEventData->wdiRequest);
19127 return WDI_STATUS_E_NOT_IMPLEMENT;
19128 }
19129}/*WDI_ProcessRequest*/
19130
19131
19132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019133 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019134 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019135 prefixes it with a send message header
19136
19137 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 wdiReqType: type of the request being sent
19139 uBufferLen: message buffer len
19140 pMsgBuffer: resulting allocated buffer
19141 pusDataOffset: offset in the buffer where the caller
19142 can start copying its message data
19143 puBufferSize: the resulting buffer size (offset+buff
19144 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019145
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 @see
19147 @return Result of the function call
19148*/
19149WDI_Status
19150WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019151(
19152 WDI_ControlBlockType* pWDICtx,
19153 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019155 wpt_uint8** pMsgBuffer,
19156 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 wpt_uint16* pusBufferSize
19158)
19159{
19160 tHalMsgHeader halMsgHeader;
19161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19162
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 again*/
19165
19166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019167 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019169 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19171 if ( NULL == *pMsgBuffer )
19172 {
19173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19174 "Unable to allocate message buffer for req %s (%d)",
19175 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019176 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019178 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019179 }
19180
19181 /*-------------------------------------------------------------------------
19182 Fill in the message header
19183 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019184 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19185 /* Fill msgVersion */
19186#ifdef WLAN_FEATURE_11AC
19187 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019188 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019189 else
19190#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019191 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019192
Jeff Johnsone7245742012-09-05 17:12:55 -070019193 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19194 *pusDataOffset = sizeof(halMsgHeader);
19195 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19196
19197 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019198}/*WDI_GetMessageBuffer*/
19199
19200
19201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019202 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019203 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019204 the CB
19205
19206 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019208
Jeff Johnson295189b2012-06-20 16:38:30 -070019209 usSendSize size of the buffer to be sent
19210 pRspCb: response callback - save in the WDI
19211 CB
19212 pUserData: user data associated with the
19213 callback
19214 wdiExpectedResponse: the code of the response that is
19215 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019216
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 @see
19218 @return Result of the function call
19219*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019220WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019221WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019222(
19223 WDI_ControlBlockType* pWDICtx,
19224 wpt_uint8* pSendBuffer,
19225 wpt_uint32 usSendSize,
19226 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 void* pUserData,
19228 WDI_ResponseEnumType wdiExpectedResponse
19229)
19230{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019231 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19233
19234 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019235 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 ------------------------------------------------------------------------*/
19237 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019238 pWDICtx->pfncRspCB = pRspCb;
19239 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019240
19241 /*-----------------------------------------------------------------------
19242 Call the CTS to send this message over - free message afterwards
19243 - notify transport failure
19244 Note: CTS is reponsible for freeing the message buffer.
19245 -----------------------------------------------------------------------*/
19246 if ( 0 != WCTS_SendMessage( pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize ))
19247 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 "Failed to send message over the bus - catastrophic failure");
19250
Jeff Johnsond13512a2012-07-17 11:42:19 -070019251 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019252 }
19253
Jeff Johnsond13512a2012-07-17 11:42:19 -070019254 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019255 if ( NULL != pWDICtx->wdiReqStatusCB )
19256 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019257 /*Inform originator whether request went through or not*/
19258 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19259 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 pWDICtx->wdiReqStatusCB = NULL;
19261 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019262 callback(wdiStatus, callbackContext);
19263
19264 /*For WDI requests which have registered a request callback,
19265 inform the WDA caller of the same via setting the return value
19266 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19267 end up repeating the functonality in the req callback for the
19268 WDI_STATUS_E_FAILURE case*/
19269 if (wdiStatus == WDI_STATUS_E_FAILURE)
19270 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019271 }
19272
Jeff Johnsond13512a2012-07-17 11:42:19 -070019273 if ( wdiStatus == WDI_STATUS_SUCCESS )
19274 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 /*Start timer for the expected response */
19276 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Jeff Johnsond13512a2012-07-17 11:42:19 -070019277 }
19278 else
19279 {
19280 /*Inform upper stack layers that a transport fatal error occured*/
19281 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19282 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019283
Jeff Johnsond13512a2012-07-17 11:42:19 -070019284 return wdiStatus;
19285
Jeff Johnson295189b2012-06-20 16:38:30 -070019286}/*WDI_SendMsg*/
19287
19288
19289
19290/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019291 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019292 the bus using the control transport and saves some info
19293 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019294
19295 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 pSendBuffer: buffer to be sent
19297 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019298
Jeff Johnson295189b2012-06-20 16:38:30 -070019299 @see
19300 @return Result of the function call
19301*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019302WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019303WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019304(
19305 WDI_ControlBlockType* pWDICtx,
19306 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019307 wpt_uint32 usSendSize
19308)
19309{
19310 wpt_uint32 uStatus ;
19311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19312
19313 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019314 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 Note: CTS is reponsible for freeing the message buffer.
19316 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 (void*)pSendBuffer, usSendSize );
19319
19320 /*Inform Upper MAC about the outcome of the request*/
19321 if ( NULL != pWDICtx->wdiReqStatusCB )
19322 {
19323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19324 "Send indication status : %d", uStatus);
19325
19326 pWDICtx->wdiReqStatusCB( (uStatus != 0 ) ? WDI_STATUS_E_FAILURE:
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 WDI_STATUS_SUCCESS,
19328 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019329 }
19330
19331 /*If sending of the message failed - it is considered catastrophic and
19332 indicates an error with the device*/
19333 if ( 0 != uStatus)
19334 {
19335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019336 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019337
19338 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19339 return WDI_STATUS_E_FAILURE;
19340 }
19341
Jeff Johnsone7245742012-09-05 17:12:55 -070019342 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019343}/*WDI_SendIndication*/
19344
19345
19346/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019347 @brief WDI_DetectedDeviceError - called internally by DAL when
19348 it has detected a failure in the device
19349
19350 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 usErrorCode: error code detected by WDI or received
19352 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019353
Jeff Johnson295189b2012-06-20 16:38:30 -070019354 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019355 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019356*/
19357void
19358WDI_DetectedDeviceError
19359(
19360 WDI_ControlBlockType* pWDICtx,
19361 wpt_uint16 usErrorCode
19362)
19363{
19364 WDI_LowLevelIndType wdiInd;
19365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19366
19367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19368 "Device Error detected code: %d - transitioning to stopped state",
19369 usErrorCode);
19370
19371 wpalMutexAcquire(&pWDICtx->wptMutex);
19372
19373 WDI_STATableStop(pWDICtx);
19374
19375 WDI_ResetAssocSessions(pWDICtx);
19376
19377 /*Set the expected state transition to stopped - because the device
19378 experienced a failure*/
19379 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19380
19381 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019382 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019383
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019385
19386 /*TO DO: - there should be an attempt to reset the device here*/
19387
19388 wpalMutexRelease(&pWDICtx->wptMutex);
19389
19390 /*------------------------------------------------------------------------
19391 Notify UMAC if a handler is registered
19392 ------------------------------------------------------------------------*/
19393 if (pWDICtx->wdiLowLevelIndCB)
19394 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019395 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19396 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019397
19398 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19399 }
19400}/*WDI_DetectedDeviceError*/
19401
19402/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019403 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 we started on send message has expire - this should
19405 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019406 reply - trigger catastrophic failure
19407 @param
19408
Jeff Johnson295189b2012-06-20 16:38:30 -070019409 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019410
19411 @see
19412 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019413*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019414void
Jeff Johnson295189b2012-06-20 16:38:30 -070019415WDI_ResponseTimerCB
19416(
19417 void *pUserData
19418)
19419{
19420 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19422
19423 if (NULL == pWDICtx )
19424 {
19425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19426 "%s: Invalid parameters", __FUNCTION__);
19427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019428 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 }
19430
19431 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19432 {
19433
19434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19435 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 " - catastrophic failure",
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19438 pWDICtx->wdiExpectedResponse);
19439 /* WDI timeout means Riva is not responding or SMD communication to Riva
19440 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019441 * is to initiate SSR from APPS
19442 * There is also an option to re-enable wifi, which will eventually
19443 * trigger SSR
19444 */
19445#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019446 wpalWcnssResetIntr();
19447 /* if this timer fires, it means Riva did not receive the FIQ */
19448 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019449#else
19450 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19451 wpalWlanReload();
19452#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019453 }
19454 else
19455 {
19456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19457 "Timeout occurred but not waiting for any response %d",
19458 pWDICtx->wdiExpectedResponse);
19459 }
19460
19461 return;
19462
19463}/*WDI_ResponseTimerCB*/
19464
19465
19466/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019467 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019468
Jeff Johnsone7245742012-09-05 17:12:55 -070019469
19470 @param pWDICtx: pointer to the WLAN DAL context
19471 pEventData: pointer to the event information structure
19472
Jeff Johnson295189b2012-06-20 16:38:30 -070019473 @see
19474 @return Result of the function call
19475*/
19476WPT_INLINE WDI_Status
19477WDI_ProcessResponse
19478(
19479 WDI_ControlBlockType* pWDICtx,
19480 WDI_EventInfoType* pEventData
19481)
19482{
19483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19484
Jeff Johnsone7245742012-09-05 17:12:55 -070019485 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019486 already checked these pointers
19487 ! - revisit this assumption */
19488 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19489 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019490 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019492 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019493 WDI_getRespMsgString(pEventData->wdiResponse),
19494 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19495 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19496 }
19497 else
19498 {
19499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019500 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019501 pEventData->wdiResponse);
19502 return WDI_STATUS_E_NOT_IMPLEMENT;
19503 }
19504}/*WDI_ProcessResponse*/
19505
19506
19507/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019508 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019509=========================================================================*/
19510
19511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 @brief Utility function used by the DAL Core to help queue a
19513 request that cannot be processed right away.
19514 @param
19515
Jeff Johnson295189b2012-06-20 16:38:30 -070019516 pWDICtx: - pointer to the WDI control block
19517 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019518 queued
19519
19520 @see
19521 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019522*/
19523WDI_Status
19524WDI_QueuePendingReq
19525(
19526 WDI_ControlBlockType* pWDICtx,
19527 WDI_EventInfoType* pEventData
19528)
19529{
Jeff Johnsone7245742012-09-05 17:12:55 -070019530 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019531 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19534
19535 if ( NULL == pEventDataQueue )
19536 {
19537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019538 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019539 WDI_ASSERT(0);
19540 return WDI_STATUS_MEM_FAILURE;
19541 }
19542
19543 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19544 pEventDataQueue->pUserData = pEventData->pUserData;
19545 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19546 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019547 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019548
19549 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19550 {
19551 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019552
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 if ( NULL == pEventInfo )
19554 {
19555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019556 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 WDI_ASSERT(0);
19558 wpalMemoryFree(pEventDataQueue);
19559 return WDI_STATUS_MEM_FAILURE;
19560 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019561
Jeff Johnson295189b2012-06-20 16:38:30 -070019562 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19563
19564 }
19565 pEventDataQueue->pEventData = pEventInfo;
19566
19567 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019568 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019569
Jeff Johnsone7245742012-09-05 17:12:55 -070019570 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019571
19572 return WDI_STATUS_SUCCESS;
19573}/*WDI_QueuePendingReq*/
19574
19575/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019577 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019578 @param
19579
19580 pMsg - pointer to the message
19581
19582 @see
19583 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019584*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019585void
Jeff Johnson295189b2012-06-20 16:38:30 -070019586WDI_PALCtrlMsgCB
19587(
19588 wpt_msg *pMsg
19589)
19590{
19591 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019592 WDI_ControlBlockType* pWDICtx = NULL;
19593 WDI_Status wdiStatus;
19594 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019595 void* pUserData;
19596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19597
19598 if (( NULL == pMsg )||
19599 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19600 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19601 {
19602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019603 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019605 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019606 }
19607
19608 /*Transition back to the state that we had before serialization
19609 - serialization transitions us to BUSY to stop any incomming requests
19610 ! TO DO L: possible race condition here if a request comes in between the
19611 state transition and the post function*/
19612
Jeff Johnsone7245742012-09-05 17:12:55 -070019613 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019614
19615 /*-----------------------------------------------------------------------
19616 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019617 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 -----------------------------------------------------------------------*/
19619 switch ( pEventData->wdiRequest )
19620 {
19621
Jeff Johnsone7245742012-09-05 17:12:55 -070019622 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
19624 break;
19625
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 case WDI_NV_DOWNLOAD_REQ:
19627 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
19628 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
19629 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
19630 {
19631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19632 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __FUNCTION__);
19633 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19634 }
19635 else
19636 {
19637 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
19638 }
19639
19640 break;
19641
19642 default:
19643 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19644 break;
19645 }/*switch ( pEventData->wdiRequest )*/
19646
19647 if ( WDI_STATUS_SUCCESS != wdiStatus )
19648 {
19649 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
19650
19651 if ( NULL != pfnReqStatusCB )
19652 {
19653 /*Fail the request*/
19654 pfnReqStatusCB( wdiStatus, pUserData);
19655 }
19656 }
19657
19658 /* Free data - that was allocated when queueing*/
19659 if( pEventData != NULL )
19660 {
19661 if( pEventData->pEventData != NULL )
19662 {
19663 wpalMemoryFree(pEventData->pEventData);
19664 }
19665 wpalMemoryFree(pEventData);
19666 }
19667
19668 if( pMsg != NULL )
19669 {
19670 wpalMemoryFree(pMsg);
19671 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019672
Jeff Johnson295189b2012-06-20 16:38:30 -070019673}/*WDI_PALCtrlMsgCB*/
19674
19675/**
19676 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070019677 and schedule for execution a pending request
19678 @param
19679
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 pWDICtx: - pointer to the WDI control block
19681 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019682 queued
19683
19684 @see
19685 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019686*/
19687WDI_Status
19688WDI_DequeuePendingReq
19689(
19690 WDI_ControlBlockType* pWDICtx
19691)
19692{
Jeff Johnsone7245742012-09-05 17:12:55 -070019693 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019694 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019695 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070019696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19697
Jeff Johnsone7245742012-09-05 17:12:55 -070019698 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019699
19700 if ( NULL == pNode )
19701 {
19702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070019703 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 return WDI_STATUS_SUCCESS;
19705 }
19706
19707 /*The node actually points to the 1st element inside the Event Data struct -
19708 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019709 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019710
19711 /*Serialize processing in the control thread
19712 !TO DO: - check to see if these are all the messages params that need
19713 to be filled in*/
19714 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
19715
19716 if ( NULL == palMsg )
19717 {
19718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 palMsg->callback = WDI_PALCtrlMsgCB;
19725 palMsg->ptr = pEventData;
19726
19727 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019728 palMsg->val = pWDICtx->uGlobalState;
19729
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 /*Transition back to BUSY as we need to handle a queued request*/
19731 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070019732
Jeff Johnson295189b2012-06-20 16:38:30 -070019733 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
19734
19735 return WDI_STATUS_PENDING;
19736}/*WDI_DequeuePendingReq*/
19737
19738
19739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019741 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070019742 away.- The assoc requests will be queued by BSSID
19743 @param
19744
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 pWDICtx: - pointer to the WDI control block
19746 pEventData: pointer to the evnt info that needs to be queued
19747 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070019748
19749 @see
19750 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019751*/
19752WDI_Status
19753WDI_QueueNewAssocRequest
19754(
19755 WDI_ControlBlockType* pWDICtx,
19756 WDI_EventInfoType* pEventData,
19757 wpt_macAddr macBSSID
19758)
19759{
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 wpt_uint8 i;
19761 WDI_BSSSessionType* pSession = NULL;
19762 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019763 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070019764 void* pEventInfo;
19765 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070019767
Jeff Johnsone7245742012-09-05 17:12:55 -070019768
19769 /*------------------------------------------------------------------------
19770 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 ------------------------------------------------------------------------*/
19772 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
19773 {
19774 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
19775 {
19776 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019777 pSession = &pWDICtx->aBSSSessions[i];
19778 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 }
19780 }
19781
19782 if ( i >= WDI_MAX_BSS_SESSIONS )
19783 {
19784 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019787
Jeff Johnson295189b2012-06-20 16:38:30 -070019788 /*------------------------------------------------------------------------
19789 Fill in the BSSID for this session and set the usage flag
19790 ------------------------------------------------------------------------*/
19791 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019792 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019793
19794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019795 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 ------------------------------------------------------------------------*/
19797 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
19798 if ( NULL == pEventDataQueue )
19799 {
19800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19801 "%s: Cannot allocate memory for queue node", __FUNCTION__);
19802 WDI_ASSERT(0);
19803 return WDI_STATUS_MEM_FAILURE;
19804 }
19805
19806 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
19807 if ( NULL == pSessionIdElement )
19808 {
19809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19810 "%s: Cannot allocate memory for session ID", __FUNCTION__);
19811 WDI_ASSERT(0);
19812 wpalMemoryFree(pEventDataQueue);
19813 return WDI_STATUS_MEM_FAILURE;
19814 }
19815
19816 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
19817 if ( NULL == pEventInfo )
19818 {
19819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19820 "%s: Cannot allocate memory for event data info", __FUNCTION__);
19821 WDI_ASSERT(0);
19822 wpalMemoryFree(pSessionIdElement);
19823 wpalMemoryFree(pEventDataQueue);
19824 return WDI_STATUS_MEM_FAILURE;
19825 }
19826
19827 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19828 pEventDataQueue->pUserData = pEventData->pUserData;
19829 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19830 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019831 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019832
19833 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19834 pEventDataQueue->pEventData = pEventInfo;
19835
19836 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019837 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019838
19839 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019840 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019841
Jeff Johnsone7245742012-09-05 17:12:55 -070019842 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019843
19844 /*We need to maintain a separate list that keeps track of the order in which
19845 the new assoc requests are being queued such that we can start processing
19846 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 pSessionIdElement->ucIndex = i;
19848 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019849
19850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19851 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019853
19854 /*Return pending as this is what the status of the request is since it has
19855 been queued*/
19856 return WDI_STATUS_PENDING;
19857}/*WDI_QueueNewAssocRequest*/
19858
19859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019860 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070019862 away.- The assoc requests will be queued by BSSID
19863 @param
19864
Jeff Johnson295189b2012-06-20 16:38:30 -070019865 pWDICtx: - pointer to the WDI control block
19866 pSession: - session in which to queue
19867 pEventData: pointer to the event info that needs to be
19868 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070019869
19870 @see
19871 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019872*/
19873WDI_Status
19874WDI_QueueAssocRequest
19875(
19876 WDI_ControlBlockType* pWDICtx,
19877 WDI_BSSSessionType* pSession,
19878 WDI_EventInfoType* pEventData
19879)
19880{
Jeff Johnsone7245742012-09-05 17:12:55 -070019881 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019882 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070019883 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070019884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019885
19886 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070019887 Sanity check
19888 ------------------------------------------------------------------------*/
19889 if (( NULL == pSession ) || ( NULL == pWDICtx ))
19890 {
19891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19892 "%s: Invalid parameters", __FUNCTION__);
19893
Jeff Johnsone7245742012-09-05 17:12:55 -070019894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019895 }
19896
19897 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019898 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019899 ------------------------------------------------------------------------*/
19900 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
19901 if ( NULL == pEventDataQueue )
19902 {
19903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019904 "%s: Cannot allocate memory for queueing", __FUNCTION__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 WDI_ASSERT(0);
19906 return WDI_STATUS_MEM_FAILURE;
19907 }
19908
19909 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
19910 if ( NULL == pEventInfo )
19911 {
19912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19913 "%s: Cannot allocate memory for queueing event data info",
19914 __FUNCTION__);
19915 WDI_ASSERT(0);
19916 wpalMemoryFree(pEventDataQueue);
19917 return WDI_STATUS_MEM_FAILURE;
19918 }
19919
19920 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19921 pEventDataQueue->pUserData = pEventData->pUserData;
19922 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19923 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 pEventDataQueue->pEventData = pEventInfo;
19926
19927 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19928
19929 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019930 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019931
19932 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019933 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019934
Jeff Johnsone7245742012-09-05 17:12:55 -070019935 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019936
19937 /*The result of this operation is pending because the request has been
19938 queued and it will be processed at a later moment in time */
19939 return WDI_STATUS_PENDING;
19940}/*WDI_QueueAssocRequest*/
19941
19942/**
19943 @brief Utility function used by the DAL Core to help dequeue
19944 an association request that was pending
19945 The request will be queued up in front of the main
19946 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070019947 @param
19948
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070019950
19951
19952 @see
19953 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019954*/
19955WDI_Status
19956WDI_DequeueAssocRequest
19957(
19958 WDI_ControlBlockType* pWDICtx
19959)
19960{
Jeff Johnsone7245742012-09-05 17:12:55 -070019961 wpt_list_node* pNode = NULL;
19962 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 WDI_BSSSessionType* pSession;
19964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019965
19966 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070019967 Sanity check
19968 ------------------------------------------------------------------------*/
19969 if ( NULL == pWDICtx )
19970 {
19971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19972 "%s: Invalid parameters", __FUNCTION__);
19973
Jeff Johnsone7245742012-09-05 17:12:55 -070019974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 }
19976
19977 /*------------------------------------------------------------------------
19978 An association has been completed => a new association can occur
19979 Check to see if there are any pending associations ->
19980 If so , transfer all the pending requests into the busy queue for
19981 processing
19982 These requests have arrived prior to the requests in the busy queue
19983 (bc they needed to be processed in order to be placed in this queue)
19984 => they will be placed at the front of the busy queue
19985 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019986 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019987
19988 if ( NULL == pNode )
19989 {
19990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070019991 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070019992 return WDI_STATUS_SUCCESS;
19993 }
19994
19995 /*The node actually points to the 1st element inside the Session Id struct -
19996 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019997 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019998
19999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20000 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20001
20002 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20003 {
20004 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020005
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020007 the front of the main waiting queue for subsequent execution*/
20008 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 while ( NULL != pNode )
20010 {
20011 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020012 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20013 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020015 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 }
20017 else
20018 {
20019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020020 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 WPAL_ASSERT(0);
20022 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020024 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020025
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20027 wpalMemoryFree(pSessionIdElement);
20028 return WDI_STATUS_SUCCESS;
20029}/*WDI_DequeueAssocRequest*/
20030
20031/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020032 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020033 pending requests - all req cb will be called with
20034 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020035 @param
20036
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020038
20039 @see
20040 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020041*/
20042WDI_Status
20043WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020044(
Jeff Johnson295189b2012-06-20 16:38:30 -070020045 WDI_ControlBlockType* pWDICtx
20046)
20047{
Jeff Johnsone7245742012-09-05 17:12:55 -070020048 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020050 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020051 void* pUserData;
20052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20053
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020055
20056 /*------------------------------------------------------------------------
20057 Go through all the requests and fail them - this will only be called
20058 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 ------------------------------------------------------------------------*/
20061 while( pNode )
20062 {
20063 /*The node actually points to the 1st element inside the Event Data struct -
20064 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 pEventDataQueue = (WDI_EventInfoType*)pNode;
20066
Jeff Johnson295189b2012-06-20 16:38:30 -070020067 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20068 if ( NULL != pfnReqStatusCB )
20069 {
20070 /*Fail the request*/
20071 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20072 }
20073 /* Free data - that was allocated when queueing */
20074 if ( pEventDataQueue->pEventData != NULL )
20075 {
20076 wpalMemoryFree(pEventDataQueue->pEventData);
20077 }
20078 wpalMemoryFree(pEventDataQueue);
20079
20080 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20081 {
20082 break;
20083 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020084 }
20085
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 return WDI_STATUS_SUCCESS;
20087}/*WDI_ClearPendingRequests*/
20088
20089/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020090 @brief Helper routine used to init the BSS Sessions in the WDI control block
20091
20092
20093 @param pWDICtx: pointer to the WLAN DAL context
20094
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 @see
20096*/
20097void
20098WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020099(
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 WDI_ControlBlockType* pWDICtx
20101)
20102{
Jeff Johnsone7245742012-09-05 17:12:55 -070020103 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20105
20106 /*-------------------------------------------------------------------------
20107 No Sanity check
20108 -------------------------------------------------------------------------*/
20109 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20110 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020111 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20113 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20114 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20115 }
20116}/*WDI_ResetAssocSessions*/
20117
20118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020119 @brief Helper routine used to find a session based on the BSSID
20120
20121
20122 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020123 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020124 pSession: pointer to the session (if found)
20125
Jeff Johnson295189b2012-06-20 16:38:30 -070020126 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020128*/
20129wpt_uint8
20130WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020131(
Jeff Johnson295189b2012-06-20 16:38:30 -070020132 WDI_ControlBlockType* pWDICtx,
20133 wpt_macAddr macBSSID,
20134 WDI_BSSSessionType** ppSession
20135)
20136{
Jeff Johnsone7245742012-09-05 17:12:55 -070020137 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20139
20140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020142 -------------------------------------------------------------------------*/
20143 if ( NULL == ppSession )
20144 {
20145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20146 "%s: Invalid parameters", __FUNCTION__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020147 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020148 }
20149
Jeff Johnsone7245742012-09-05 17:12:55 -070020150 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020151
Jeff Johnsone7245742012-09-05 17:12:55 -070020152 /*------------------------------------------------------------------------
20153 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020154 ------------------------------------------------------------------------*/
20155 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20156 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020157 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20158 (eWLAN_PAL_TRUE ==
20159 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20160 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 {
20162 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020163 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 return i;
20165 }
20166 }
20167
Jeff Johnsone7245742012-09-05 17:12:55 -070020168 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020169}/*WDI_FindAssocSession*/
20170
20171/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 @brief Helper routine used to find a session based on the BSSID
20173
20174
20175 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 ucBSSIdx: BSS Index of the session
20177 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020178
Jeff Johnson295189b2012-06-20 16:38:30 -070020179 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020180 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020181*/
20182wpt_uint8
20183WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020184(
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 WDI_ControlBlockType* pWDICtx,
20186 wpt_uint16 ucBSSIdx,
20187 WDI_BSSSessionType** ppSession
20188)
20189{
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20192
20193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020195 -------------------------------------------------------------------------*/
20196 if ( NULL == ppSession )
20197 {
20198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20199 "%s: Invalid parameters", __FUNCTION__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020200 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020201 }
20202
Jeff Johnsone7245742012-09-05 17:12:55 -070020203 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020204
Jeff Johnsone7245742012-09-05 17:12:55 -070020205 /*------------------------------------------------------------------------
20206 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 ------------------------------------------------------------------------*/
20208 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20209 {
20210 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20211 {
20212 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020214 return i;
20215 }
20216 }
20217
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020219}/*WDI_FindAssocSessionByBSSIdx*/
20220
20221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020222 @brief Helper routine used to find a session based on the BSSID
20223
20224
20225 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 ucBSSIdx: BSS Index of the session
20227 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020228
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020230 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020231*/
20232wpt_uint8
20233WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020234(
Jeff Johnson295189b2012-06-20 16:38:30 -070020235 WDI_ControlBlockType* pWDICtx,
20236 wpt_uint16 usIdx,
20237 WDI_BSSSessionType** ppSession
20238)
20239{
20240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20241
20242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 -------------------------------------------------------------------------*/
20245 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20246 {
20247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20248 "%s: Invalid parameters", __FUNCTION__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 }
20251
20252 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020253 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020254
20255 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020256
Jeff Johnson295189b2012-06-20 16:38:30 -070020257}/*WDI_FindAssocSessionByBSSIdx*/
20258
20259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020260 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020262
20263
20264 @param pWDICtx: pointer to the WLAN DAL context
20265 pSession: pointer to the session (if found)
20266
Jeff Johnson295189b2012-06-20 16:38:30 -070020267 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020268 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020269*/
20270wpt_uint8
20271WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020272(
Jeff Johnson295189b2012-06-20 16:38:30 -070020273 WDI_ControlBlockType* pWDICtx,
20274 WDI_BSSSessionType** ppSession
20275)
20276{
Jeff Johnsone7245742012-09-05 17:12:55 -070020277 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 -------------------------------------------------------------------------*/
20282 if ( NULL == ppSession )
20283 {
20284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20285 "%s: Invalid parameters", __FUNCTION__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020286 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020287 }
20288
Jeff Johnsone7245742012-09-05 17:12:55 -070020289 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020290
Jeff Johnsone7245742012-09-05 17:12:55 -070020291 /*------------------------------------------------------------------------
20292 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 ------------------------------------------------------------------------*/
20294 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20295 {
20296 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20297 {
20298 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020300 return i;
20301 }
20302 }
20303
Jeff Johnsone7245742012-09-05 17:12:55 -070020304 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020305}/*WDI_FindEmptySession*/
20306
20307
20308/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020311
20312
20313 @param pWDICtx: pointer to the WLAN DAL context
20314
Jeff Johnson295189b2012-06-20 16:38:30 -070020315 @see
20316 @return Number of sessions in use
20317*/
20318wpt_uint8
20319WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020320(
Jeff Johnson295189b2012-06-20 16:38:30 -070020321 WDI_ControlBlockType* pWDICtx
20322)
20323{
Jeff Johnsone7245742012-09-05 17:12:55 -070020324 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020326
20327 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 Count all sessions in use
20329 ------------------------------------------------------------------------*/
20330 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20331 {
20332 if ( pWDICtx->aBSSSessions[i].bInUse )
20333 {
20334 ucCount++;
20335 }
20336 }
20337
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020339}/*WDI_GetActiveSessionsCount*/
20340
20341/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020342 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020343 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020344
20345
20346 @param pWDICtx: pointer to the WLAN DAL context
20347 pSession: pointer to the session (if found)
20348
Jeff Johnson295189b2012-06-20 16:38:30 -070020349 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020350 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020351*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020352void
Jeff Johnson295189b2012-06-20 16:38:30 -070020353WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020354(
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 WDI_ControlBlockType* pWDICtx,
20356 WDI_BSSSessionType* ppSession
20357)
20358{
20359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 -------------------------------------------------------------------------*/
20362 if ( NULL == ppSession )
20363 {
20364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20365 "%s: Invalid parameters", __FUNCTION__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 }
20368
Jeff Johnsone7245742012-09-05 17:12:55 -070020369 /*------------------------------------------------------------------------
20370 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020371 ------------------------------------------------------------------------*/
20372 wpal_list_destroy(&ppSession->wptPendingQueue);
20373 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020374 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20375 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20377 wpal_list_init(&ppSession->wptPendingQueue);
20378
20379}/*WDI_DeleteSession*/
20380
20381/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020382 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020384 @param
20385
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 WDI_AddStaParams: - pointer to the WDI Add STA params
20387 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020388
20389 @see
20390 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020391*/
20392void
20393WDI_AddBcastSTAtoSTATable
20394(
20395 WDI_ControlBlockType* pWDICtx,
20396 WDI_AddStaParams * staParams,
20397 wpt_uint16 usBcastStaIdx
20398)
20399{
20400 WDI_AddStaParams wdiAddSTAParam = {0};
20401 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20403
20404 /*---------------------------------------------------------------------
20405 Sanity check
20406 ---------------------------------------------------------------------*/
20407 if ( NULL == staParams )
20408 {
20409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20410 "%s: Invalid parameters", __FUNCTION__);
20411
Jeff Johnsone7245742012-09-05 17:12:55 -070020412 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 }
20414
20415 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20416 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20417 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20418 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20419 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20420 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20421 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20422 WDI_MAC_ADDR_LEN );
20423 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20424 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20425 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20426 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20427 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20428 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20429 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020430
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20432}
20433
20434/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020435 @brief NV blob will be divided into fragments of size 4kb and
20436 Sent to HAL
20437
20438 @param pWDICtx: pointer to the WLAN DAL context
20439 pEventData: pointer to the event information structure
20440
Jeff Johnson295189b2012-06-20 16:38:30 -070020441 @see
20442 @return Result of the function call
20443 */
20444
20445WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020446(
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 WDI_ControlBlockType* pWDICtx,
20448 WDI_EventInfoType* pEventData
20449)
20450{
20451
20452 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20453 wpt_uint8* pSendBuffer = NULL;
20454 wpt_uint16 usDataOffset = 0;
20455 wpt_uint16 usSendSize = 0;
20456 wpt_uint16 usCurrentFragmentSize =0;
20457 wpt_uint8* pSrcBuffer = NULL;
20458 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20459 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20460
20461 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20462 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20463 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20464
Jeff Johnsone7245742012-09-05 17:12:55 -070020465 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20467
20468 /* Update the current Fragment Number */
20469 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20470
20471 /*Update the HAL REQ structure */
20472 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20473 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20474 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20475
20476 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 image will be sent to HAL*/
20479
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20486 usCurrentFragmentSize = FRAGMENT_SIZE;
20487
20488 /*Update the HAL REQ structure */
20489 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20490 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20491
20492 }
20493 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020494 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020495 usCurrentFragmentSize = FRAGMENT_SIZE;
20496
20497 /*Update the HAL REQ structure */
20498 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20499 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20500 }
20501
20502 /*-----------------------------------------------------------------------
20503 Get message buffer
20504 -----------------------------------------------------------------------*/
20505 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20506 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20507 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020509 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20510 {
20511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20512 "Unable to get send buffer in NV Download req %x %x ",
20513 pEventData, pwdiNvDownloadReqParams);
20514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 }
20517
20518 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020520 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20521
20522 /* Appending the NV image fragment */
20523 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20524 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20525 usCurrentFragmentSize);
20526
20527 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020528 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020529
Jeff Johnsone7245742012-09-05 17:12:55 -070020530 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20531 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 WDI_NV_DOWNLOAD_RESP);
20533
20534}
Jeff Johnsone7245742012-09-05 17:12:55 -070020535/*============================================================================
20536 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 ============================================================================*/
20538/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020539 @brief Helper routine used to find a session based on the BSSID
20540 @param pContext: pointer to the WLAN DAL context
20541 @param pDPContext: pointer to the Datapath context
20542
Jeff Johnson295189b2012-06-20 16:38:30 -070020543 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020544 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020545*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020546WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020547WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20548{
20549 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20550
20551 pCB->pDPContext = pDPContext;
20552 return;
20553}
20554
20555/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 @brief Helper routine used to find a session based on the BSSID
20557
20558
20559 @param pContext: pointer to the WLAN DAL context
20560
Jeff Johnson295189b2012-06-20 16:38:30 -070020561 @see
20562 @return pointer to Datapath context
20563*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020564WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020565WDI_DS_GetDatapathContext (void *pContext)
20566{
20567 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20568 return pCB->pDPContext;
20569}
20570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 @brief Helper routine used to find a session based on the BSSID
20572
20573
20574 @param pContext: pointer to the WLAN DAL context
20575 @param pDTDriverContext: pointer to the Transport Driver context
20576
Jeff Johnson295189b2012-06-20 16:38:30 -070020577 @see
20578 @return void
20579*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020580WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020581WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20582{
20583 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20584
20585 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020586 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020587}
20588
20589/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020590 @brief Helper routine used to find a session based on the BSSID
20591
20592
20593 @param pWDICtx: pointer to the WLAN DAL context
20594
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020596 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020597*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020598WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020599WDT_GetTransportDriverContext (void *pContext)
20600{
20601 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020603}
20604
Jeff Johnsone7245742012-09-05 17:12:55 -070020605/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 Helper inline converters
20607 ============================================================================*/
20608/*Convert WDI driver type into HAL driver type*/
20609WPT_STATIC WPT_INLINE WDI_Status
20610WDI_HAL_2_WDI_STATUS
20611(
20612 eHalStatus halStatus
20613)
20614{
Jeff Johnsone7245742012-09-05 17:12:55 -070020615 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020616 the chances of getting inlined*/
20617 switch( halStatus )
20618 {
20619 case eHAL_STATUS_SUCCESS:
20620 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20621 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20622 return WDI_STATUS_SUCCESS;
20623 case eHAL_STATUS_FAILURE:
20624 return WDI_STATUS_E_FAILURE;
20625 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070020626 return WDI_STATUS_MEM_FAILURE;
20627 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020629 default:
20630 return WDI_STATUS_DEV_INTERNAL_FAILURE;
20631 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020632
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020634}/*WDI_HAL_2_WDI_STATUS*/
20635
20636/*Convert WDI request type into HAL request type*/
20637WPT_STATIC WPT_INLINE tHalHostMsgType
20638WDI_2_HAL_REQ_TYPE
20639(
20640 WDI_RequestEnumType wdiReqType
20641)
20642{
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 the chances of getting inlined*/
20645 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070020646 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020648 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020649 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020652 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020654 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020655 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020656 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020658 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020659 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020664 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020666 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020670 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020672 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020676 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020678 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020679 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020680 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020681 return WLAN_HAL_RMV_STAKEY_REQ;
20682 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 case WDI_DEL_BA_REQ:
20691 return WLAN_HAL_DEL_BA_REQ;
20692#ifdef FEATURE_WLAN_CCX
20693 case WDI_TSM_STATS_REQ:
20694 return WLAN_HAL_TSM_STATS_REQ;
20695#endif
20696 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020697 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020699 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020700 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020702 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 case WDI_ADD_BA_SESSION_REQ:
20707 return WLAN_HAL_ADD_BA_SESSION_REQ;
20708 case WDI_TRIGGER_BA_REQ:
20709 return WLAN_HAL_TRIGGER_BA_REQ;
20710 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020711 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020713 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
20715 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
20716 case WDI_SET_MAX_TX_POWER_REQ:
20717 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
20718#ifdef WLAN_FEATURE_P2P
20719 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
20720 return WLAN_HAL_SET_P2P_GONOA_REQ;
20721#endif
20722 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020723 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020731 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020739 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020740 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020741 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 case WDI_REM_BEACON_FILTER_REQ:
20743 return WLAN_HAL_REM_BCN_FILTER_REQ;
20744 case WDI_SET_RSSI_THRESHOLDS_REQ:
20745 return WLAN_HAL_SET_RSSI_THRESH_REQ;
20746 case WDI_HOST_OFFLOAD_REQ:
20747 return WLAN_HAL_HOST_OFFLOAD_REQ;
20748 case WDI_WOWL_ADD_BC_PTRN_REQ:
20749 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
20750 case WDI_WOWL_DEL_BC_PTRN_REQ:
20751 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
20752 case WDI_WOWL_ENTER_REQ:
20753 return WLAN_HAL_ENTER_WOWL_REQ;
20754 case WDI_WOWL_EXIT_REQ:
20755 return WLAN_HAL_EXIT_WOWL_REQ;
20756 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
20757 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
20758 case WDI_NV_DOWNLOAD_REQ:
20759 return WLAN_HAL_DOWNLOAD_NV_REQ;
20760 case WDI_FLUSH_AC_REQ:
20761 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
20762 case WDI_BTAMP_EVENT_REQ:
20763 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
20764#ifdef WLAN_FEATURE_VOWIFI_11R
20765 case WDI_AGGR_ADD_TS_REQ:
20766 return WLAN_HAL_AGGR_ADD_TS_REQ;
20767#endif /* WLAN_FEATURE_VOWIFI_11R */
20768#ifdef ANI_MANF_DIAG
20769 case WDI_FTM_CMD_REQ:
20770 return WLAN_HAL_PROCESS_PTT_REQ;
20771#endif /* ANI_MANF_DIAG */
20772 case WDI_ADD_STA_SELF_REQ:
20773 return WLAN_HAL_ADD_STA_SELF_REQ;
20774 case WDI_DEL_STA_SELF_REQ:
20775 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070020776#ifdef FEATURE_OEM_DATA_SUPPORT
20777 case WDI_START_OEM_DATA_REQ:
20778 return WLAN_HAL_START_OEM_DATA_REQ;
20779#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070020780 case WDI_HOST_RESUME_REQ:
20781 return WLAN_HAL_HOST_RESUME_REQ;
20782 case WDI_HOST_SUSPEND_IND:
20783 return WLAN_HAL_HOST_SUSPEND_IND;
20784 case WDI_KEEP_ALIVE_REQ:
20785 return WLAN_HAL_KEEP_ALIVE_REQ;
20786
20787#ifdef FEATURE_WLAN_SCAN_PNO
20788 case WDI_SET_PREF_NETWORK_REQ:
20789 return WLAN_HAL_SET_PREF_NETWORK_REQ;
20790 case WDI_SET_RSSI_FILTER_REQ:
20791 return WLAN_HAL_SET_RSSI_FILTER_REQ;
20792 case WDI_UPDATE_SCAN_PARAMS_REQ:
20793 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
20794#endif // FEATURE_WLAN_SCAN_PNO
20795 case WDI_SET_TX_PER_TRACKING_REQ:
20796 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
20797#ifdef WLAN_FEATURE_PACKET_FILTERING
20798 case WDI_8023_MULTICAST_LIST_REQ:
20799 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
20800 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020802 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
20803 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
20804 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
20805 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
20806#endif // WLAN_FEATURE_PACKET_FILTERING
20807 case WDI_HAL_DUMP_CMD_REQ:
20808 return WLAN_HAL_DUMP_COMMAND_REQ;
20809#ifdef WLAN_FEATURE_GTK_OFFLOAD
20810 case WDI_GTK_OFFLOAD_REQ:
20811 return WLAN_HAL_GTK_OFFLOAD_REQ;
20812 case WDI_GTK_OFFLOAD_GETINFO_REQ:
20813 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
20814#endif /* WLAN_FEATURE_GTK_OFFLOAD */
20815
20816 case WDI_INIT_SCAN_CON_REQ:
20817 return WLAN_HAL_INIT_SCAN_CON_REQ;
20818 case WDI_SET_POWER_PARAMS_REQ:
20819 return WLAN_HAL_SET_POWER_PARAMS_REQ;
20820 case WDI_SET_TM_LEVEL_REQ:
20821 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
20822 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
20823 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070020824#ifdef WLAN_FEATURE_11AC
20825 case WDI_UPDATE_VHT_OP_MODE_REQ:
20826 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
20827#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020831
Jeff Johnson295189b2012-06-20 16:38:30 -070020832}/*WDI_2_HAL_REQ_TYPE*/
20833
20834/*Convert WDI response type into HAL response type*/
20835WPT_STATIC WPT_INLINE WDI_ResponseEnumType
20836HAL_2_WDI_RSP_TYPE
20837(
20838 tHalHostMsgType halMsg
20839)
20840{
Jeff Johnsone7245742012-09-05 17:12:55 -070020841 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020842 the chances of getting inlined*/
20843 switch( halMsg )
20844 {
20845 case WLAN_HAL_START_RSP:
20846 return WDI_START_RESP;
20847 case WLAN_HAL_STOP_RSP:
20848 return WDI_STOP_RESP;
20849 case WLAN_HAL_INIT_SCAN_RSP:
20850 return WDI_INIT_SCAN_RESP;
20851 case WLAN_HAL_START_SCAN_RSP:
20852 return WDI_START_SCAN_RESP;
20853 case WLAN_HAL_END_SCAN_RSP:
20854 return WDI_END_SCAN_RESP;
20855 case WLAN_HAL_FINISH_SCAN_RSP:
20856 return WDI_FINISH_SCAN_RESP;
20857 case WLAN_HAL_CONFIG_STA_RSP:
20858 return WDI_CONFIG_STA_RESP;
20859 case WLAN_HAL_DELETE_STA_RSP:
20860 return WDI_DEL_STA_RESP;
20861 case WLAN_HAL_CONFIG_BSS_RSP:
20862 return WDI_CONFIG_BSS_RESP;
20863 case WLAN_HAL_DELETE_BSS_RSP:
20864 return WDI_DEL_BSS_RESP;
20865 case WLAN_HAL_JOIN_RSP:
20866 return WDI_JOIN_RESP;
20867 case WLAN_HAL_POST_ASSOC_RSP:
20868 return WDI_POST_ASSOC_RESP;
20869 case WLAN_HAL_SET_BSSKEY_RSP:
20870 return WDI_SET_BSS_KEY_RESP;
20871 case WLAN_HAL_SET_STAKEY_RSP:
20872 return WDI_SET_STA_KEY_RESP;
20873 case WLAN_HAL_RMV_BSSKEY_RSP:
20874 return WDI_RMV_BSS_KEY_RESP;
20875 case WLAN_HAL_RMV_STAKEY_RSP:
20876 return WDI_RMV_STA_KEY_RESP;
20877 case WLAN_HAL_SET_BCASTKEY_RSP:
20878 return WDI_SET_STA_BCAST_KEY_RESP;
20879 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
20880 // return WDI_RMV_STA_BCAST_KEY_RESP;
20881 case WLAN_HAL_ADD_TS_RSP:
20882 return WDI_ADD_TS_RESP;
20883 case WLAN_HAL_DEL_TS_RSP:
20884 return WDI_DEL_TS_RESP;
20885 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
20886 return WDI_UPD_EDCA_PRMS_RESP;
20887 case WLAN_HAL_ADD_BA_RSP:
20888 return WDI_ADD_BA_RESP;
20889 case WLAN_HAL_DEL_BA_RSP:
20890 return WDI_DEL_BA_RESP;
20891#ifdef FEATURE_WLAN_CCX
20892 case WLAN_HAL_TSM_STATS_RSP:
20893 return WDI_TSM_STATS_RESP;
20894#endif
20895 case WLAN_HAL_CH_SWITCH_RSP:
20896 return WDI_CH_SWITCH_RESP;
20897 case WLAN_HAL_SET_LINK_ST_RSP:
20898 return WDI_SET_LINK_ST_RESP;
20899 case WLAN_HAL_GET_STATS_RSP:
20900 return WDI_GET_STATS_RESP;
20901 case WLAN_HAL_UPDATE_CFG_RSP:
20902 return WDI_UPDATE_CFG_RESP;
20903 case WLAN_HAL_ADD_BA_SESSION_RSP:
20904 return WDI_ADD_BA_SESSION_RESP;
20905 case WLAN_HAL_TRIGGER_BA_RSP:
20906 return WDI_TRIGGER_BA_RESP;
20907 case WLAN_HAL_UPDATE_BEACON_RSP:
20908 return WDI_UPD_BCON_PRMS_RESP;
20909 case WLAN_HAL_SEND_BEACON_RSP:
20910 return WDI_SND_BCON_RESP;
20911 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
20912 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
20913 /*Indications*/
20914 case WLAN_HAL_RSSI_NOTIFICATION_IND:
20915 return WDI_HAL_RSSI_NOTIFICATION_IND;
20916 case WLAN_HAL_MISSED_BEACON_IND:
20917 return WDI_HAL_MISSED_BEACON_IND;
20918 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
20919 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
20920 case WLAN_HAL_MIC_FAILURE_IND:
20921 return WDI_HAL_MIC_FAILURE_IND;
20922 case WLAN_HAL_FATAL_ERROR_IND:
20923 return WDI_HAL_FATAL_ERROR_IND;
20924 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
20925 return WDI_HAL_DEL_STA_IND;
20926 case WLAN_HAL_COEX_IND:
20927 return WDI_HAL_COEX_IND;
20928 case WLAN_HAL_OTA_TX_COMPL_IND:
20929 return WDI_HAL_TX_COMPLETE_IND;
20930#ifdef WLAN_FEATURE_P2P
20931 case WLAN_HAL_P2P_NOA_ATTR_IND:
20932 return WDI_HAL_P2P_NOA_ATTR_IND;
20933#endif
20934 case WLAN_HAL_TX_PER_HIT_IND:
20935 return WDI_HAL_TX_PER_HIT_IND;
20936 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
20937 return WDI_SET_MAX_TX_POWER_RESP;
20938#ifdef WLAN_FEATURE_P2P
20939 case WLAN_HAL_SET_P2P_GONOA_RSP:
20940 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
20941#endif
20942 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020945 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020947 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020948 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020949 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020953 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020955 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020956 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070020959 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070020960 case WLAN_HAL_ADD_BCN_FILTER_RSP:
20961 return WDI_SET_BEACON_FILTER_RESP;
20962 case WLAN_HAL_REM_BCN_FILTER_RSP:
20963 return WDI_REM_BEACON_FILTER_RESP;
20964 case WLAN_HAL_SET_RSSI_THRESH_RSP:
20965 return WDI_SET_RSSI_THRESHOLDS_RESP;
20966 case WLAN_HAL_HOST_OFFLOAD_RSP:
20967 return WDI_HOST_OFFLOAD_RESP;
20968 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
20969 return WDI_WOWL_ADD_BC_PTRN_RESP;
20970 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
20971 return WDI_WOWL_DEL_BC_PTRN_RESP;
20972 case WLAN_HAL_ENTER_WOWL_RSP:
20973 return WDI_WOWL_ENTER_RESP;
20974 case WLAN_HAL_EXIT_WOWL_RSP:
20975 return WDI_WOWL_EXIT_RESP;
20976 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
20977 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
20978 case WLAN_HAL_DOWNLOAD_NV_RSP:
20979 return WDI_NV_DOWNLOAD_RESP;
20980 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
20981 return WDI_FLUSH_AC_RESP;
20982 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
20983 return WDI_BTAMP_EVENT_RESP;
20984#ifdef ANI_MANF_DIAG
20985 case WLAN_HAL_PROCESS_PTT_RSP:
20986 return WDI_FTM_CMD_RESP;
20987#endif /* ANI_MANF_DIAG */
20988 case WLAN_HAL_ADD_STA_SELF_RSP:
20989 return WDI_ADD_STA_SELF_RESP;
20990case WLAN_HAL_DEL_STA_SELF_RSP:
20991 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070020992#ifdef FEATURE_OEM_DATA_SUPPORT
20993 case WLAN_HAL_START_OEM_DATA_RSP:
20994 return WDI_START_OEM_DATA_RESP;
20995#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 case WLAN_HAL_HOST_RESUME_RSP:
20997 return WDI_HOST_RESUME_RESP;
20998 case WLAN_HAL_KEEP_ALIVE_RSP:
20999 return WDI_KEEP_ALIVE_RESP;
21000#ifdef FEATURE_WLAN_SCAN_PNO
21001 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21002 return WDI_SET_PREF_NETWORK_RESP;
21003 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021004 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21006 return WDI_UPDATE_SCAN_PARAMS_RESP;
21007 case WLAN_HAL_PREF_NETW_FOUND_IND:
21008 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21009#endif // FEATURE_WLAN_SCAN_PNO
21010 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21011 return WDI_SET_TX_PER_TRACKING_RESP;
21012#ifdef WLAN_FEATURE_PACKET_FILTERING
21013 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21014 return WDI_8023_MULTICAST_LIST_RESP;
21015 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21016 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21017 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21018 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21019 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21020 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21021#endif // WLAN_FEATURE_PACKET_FILTERING
21022
21023 case WLAN_HAL_DUMP_COMMAND_RSP:
21024 return WDI_HAL_DUMP_CMD_RESP;
21025 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21026 return WDI_SET_POWER_PARAMS_RESP;
21027#ifdef WLAN_FEATURE_VOWIFI_11R
21028 case WLAN_HAL_AGGR_ADD_TS_RSP:
21029 return WDI_AGGR_ADD_TS_RESP;
21030#endif
21031
21032#ifdef WLAN_FEATURE_GTK_OFFLOAD
21033 case WLAN_HAL_GTK_OFFLOAD_RSP:
21034 return WDI_GTK_OFFLOAD_RESP;
21035 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21036 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21037#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21038#ifdef WLAN_WAKEUP_EVENTS
21039 case WLAN_HAL_WAKE_REASON_IND:
21040 return WDI_HAL_WAKE_REASON_IND;
21041#endif // WLAN_WAKEUP_EVENTS
21042
21043 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21044 return WDI_SET_TM_LEVEL_RESP;
21045 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21046 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021047#ifdef WLAN_FEATURE_11AC
21048 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21049 return WDI_UPDATE_VHT_OP_MODE_RESP;
21050#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 }
21054
21055}/*HAL_2_WDI_RSP_TYPE*/
21056
21057
21058/*Convert WDI driver type into HAL driver type*/
21059WPT_STATIC WPT_INLINE tDriverType
21060WDI_2_HAL_DRV_TYPE
21061(
21062 WDI_DriverType wdiDriverType
21063)
21064{
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 the chances of getting inlined*/
21067 switch( wdiDriverType )
21068 {
21069 case WDI_DRIVER_TYPE_PRODUCTION:
21070 return eDRIVER_TYPE_PRODUCTION;
21071 case WDI_DRIVER_TYPE_MFG:
21072 return eDRIVER_TYPE_MFG;
21073 case WDI_DRIVER_TYPE_DVT:
21074 return eDRIVER_TYPE_DVT;
21075 }
21076
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021078}/*WDI_2_HAL_DRV_TYPE*/
21079
21080
21081/*Convert WDI stop reason into HAL stop reason*/
21082WPT_STATIC WPT_INLINE tHalStopType
21083WDI_2_HAL_STOP_REASON
21084(
21085 WDI_StopType wdiDriverType
21086)
21087{
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 the chances of getting inlined*/
21090 switch( wdiDriverType )
21091 {
21092 case WDI_STOP_TYPE_SYS_RESET:
21093 return HAL_STOP_TYPE_SYS_RESET;
21094 case WDI_DRIVER_TYPE_MFG:
21095 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21096 case WDI_STOP_TYPE_RF_KILL:
21097 return HAL_STOP_TYPE_RF_KILL;
21098 }
21099
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021101}/*WDI_2_HAL_STOP_REASON*/
21102
21103
21104/*Convert WDI scan mode type into HAL scan mode type*/
21105WPT_STATIC WPT_INLINE eHalSysMode
21106WDI_2_HAL_SCAN_MODE
21107(
21108 WDI_ScanMode wdiScanMode
21109)
21110{
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 the chances of getting inlined*/
21113 switch( wdiScanMode )
21114 {
21115 case WDI_SCAN_MODE_NORMAL:
21116 return eHAL_SYS_MODE_NORMAL;
21117 case WDI_SCAN_MODE_LEARN:
21118 return eHAL_SYS_MODE_LEARN;
21119 case WDI_SCAN_MODE_SCAN:
21120 return eHAL_SYS_MODE_SCAN;
21121 case WDI_SCAN_MODE_PROMISC:
21122 return eHAL_SYS_MODE_PROMISC;
21123 case WDI_SCAN_MODE_SUSPEND_LINK:
21124 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021125 case WDI_SCAN_MODE_ROAM_SCAN:
21126 return eHAL_SYS_MODE_ROAM_SCAN;
21127 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21128 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 }
21130
Jeff Johnsone7245742012-09-05 17:12:55 -070021131 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021132}/*WDI_2_HAL_SCAN_MODE*/
21133
21134/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021135WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021136WDI_2_HAL_SEC_CH_OFFSET
21137(
21138 WDI_HTSecondaryChannelOffset wdiSecChOffset
21139)
21140{
Jeff Johnsone7245742012-09-05 17:12:55 -070021141 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021142 the chances of getting inlined*/
21143 switch( wdiSecChOffset )
21144 {
21145 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021146 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021147 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21151#ifdef WLAN_FEATURE_11AC
21152 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21153 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21154 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21155 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21156 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21157 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21158 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21159 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21160 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21161 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21162 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21163 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21164 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21165 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21166#endif
21167 default:
21168 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021169 }
21170
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021172}/*WDI_2_HAL_SEC_CH_OFFSET*/
21173
21174/*Convert WDI BSS type into HAL BSS type*/
21175WPT_STATIC WPT_INLINE tSirBssType
21176WDI_2_HAL_BSS_TYPE
21177(
21178 WDI_BssType wdiBSSType
21179)
21180{
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 the chances of getting inlined*/
21183 switch( wdiBSSType )
21184 {
21185 case WDI_INFRASTRUCTURE_MODE:
21186 return eSIR_INFRASTRUCTURE_MODE;
21187 case WDI_INFRA_AP_MODE:
21188 return eSIR_INFRA_AP_MODE;
21189 case WDI_IBSS_MODE:
21190 return eSIR_IBSS_MODE;
21191 case WDI_BTAMP_STA_MODE:
21192 return eSIR_BTAMP_STA_MODE;
21193 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 case WDI_BSS_AUTO_MODE:
21196 return eSIR_AUTO_MODE;
21197 }
21198
Jeff Johnsone7245742012-09-05 17:12:55 -070021199 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021200}/*WDI_2_HAL_BSS_TYPE*/
21201
21202/*Convert WDI NW type into HAL NW type*/
21203WPT_STATIC WPT_INLINE tSirNwType
21204WDI_2_HAL_NW_TYPE
21205(
21206 WDI_NwType wdiNWType
21207)
21208{
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 the chances of getting inlined*/
21211 switch( wdiNWType )
21212 {
21213 case WDI_11A_NW_TYPE:
21214 return eSIR_11A_NW_TYPE;
21215 case WDI_11B_NW_TYPE:
21216 return eSIR_11B_NW_TYPE;
21217 case WDI_11G_NW_TYPE:
21218 return eSIR_11G_NW_TYPE;
21219 case WDI_11N_NW_TYPE:
21220 return eSIR_11N_NW_TYPE;
21221 }
21222
Jeff Johnsone7245742012-09-05 17:12:55 -070021223 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021224}/*WDI_2_HAL_NW_TYPE*/
21225
21226/*Convert WDI chanel bonding type into HAL cb type*/
21227WPT_STATIC WPT_INLINE ePhyChanBondState
21228WDI_2_HAL_CB_STATE
21229(
21230 WDI_PhyChanBondState wdiCbState
21231)
21232{
Jeff Johnsone7245742012-09-05 17:12:55 -070021233 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021234 the chances of getting inlined*/
21235 switch ( wdiCbState )
21236 {
21237 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21238 return PHY_SINGLE_CHANNEL_CENTERED;
21239 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21240 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21241 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21242 return PHY_DOUBLE_CHANNEL_CENTERED;
21243 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21244 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021245#ifdef WLAN_FEATURE_11AC
21246 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21247 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21248 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21249 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21250 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21251 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21252 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21253 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21254 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21255 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21256 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21257 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21258 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21259 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21260#endif
21261 case WDI_MAX_CB_STATE:
21262 default:
21263 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021265
Jeff Johnson295189b2012-06-20 16:38:30 -070021266 return PHY_CHANNEL_BONDING_STATE_MAX;
21267}/*WDI_2_HAL_CB_STATE*/
21268
21269/*Convert WDI chanel bonding type into HAL cb type*/
21270WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21271WDI_2_HAL_HT_OPER_MODE
21272(
21273 WDI_HTOperatingMode wdiHTOperMode
21274)
21275{
Jeff Johnsone7245742012-09-05 17:12:55 -070021276 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021277 the chances of getting inlined*/
21278 switch ( wdiHTOperMode )
21279 {
21280 case WDI_HT_OP_MODE_PURE:
21281 return eSIR_HT_OP_MODE_PURE;
21282 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21283 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21284 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21285 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21286 case WDI_HT_OP_MODE_MIXED:
21287 return eSIR_HT_OP_MODE_MIXED;
21288 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021289
Jeff Johnson295189b2012-06-20 16:38:30 -070021290 return eSIR_HT_OP_MODE_MAX;
21291}/*WDI_2_HAL_HT_OPER_MODE*/
21292
21293/*Convert WDI mimo PS type into HAL mimo PS type*/
21294WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21295WDI_2_HAL_MIMO_PS
21296(
21297 WDI_HTMIMOPowerSaveState wdiHTOperMode
21298)
21299{
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 the chances of getting inlined*/
21302 switch ( wdiHTOperMode )
21303 {
21304 case WDI_HT_MIMO_PS_STATIC:
21305 return eSIR_HT_MIMO_PS_STATIC;
21306 case WDI_HT_MIMO_PS_DYNAMIC:
21307 return eSIR_HT_MIMO_PS_DYNAMIC;
21308 case WDI_HT_MIMO_PS_NA:
21309 return eSIR_HT_MIMO_PS_NA;
21310 case WDI_HT_MIMO_PS_NO_LIMIT:
21311 return eSIR_HT_MIMO_PS_NO_LIMIT;
21312 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021313
Jeff Johnson295189b2012-06-20 16:38:30 -070021314 return eSIR_HT_MIMO_PS_MAX;
21315}/*WDI_2_HAL_MIMO_PS*/
21316
21317/*Convert WDI ENC type into HAL ENC type*/
21318WPT_STATIC WPT_INLINE tAniEdType
21319WDI_2_HAL_ENC_TYPE
21320(
21321 WDI_EncryptType wdiEncType
21322)
21323{
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021325 the chances of getting inlined*/
21326 switch ( wdiEncType )
21327 {
21328 case WDI_ENCR_NONE:
21329 return eSIR_ED_NONE;
21330
21331 case WDI_ENCR_WEP40:
21332 return eSIR_ED_WEP40;
21333
21334 case WDI_ENCR_WEP104:
21335 return eSIR_ED_WEP104;
21336
21337 case WDI_ENCR_TKIP:
21338 return eSIR_ED_TKIP;
21339
21340 case WDI_ENCR_CCMP:
21341 return eSIR_ED_CCMP;
21342
21343 case WDI_ENCR_AES_128_CMAC:
21344 return eSIR_ED_AES_128_CMAC;
21345#if defined(FEATURE_WLAN_WAPI)
21346 case WDI_ENCR_WPI:
21347 return eSIR_ED_WPI;
21348#endif
21349 default:
21350 return eSIR_ED_NOT_IMPLEMENTED;
21351 }
21352
21353}/*WDI_2_HAL_ENC_TYPE*/
21354
21355/*Convert WDI WEP type into HAL WEP type*/
21356WPT_STATIC WPT_INLINE tAniWepType
21357WDI_2_HAL_WEP_TYPE
21358(
21359 WDI_WepType wdiWEPType
21360)
21361{
Jeff Johnsone7245742012-09-05 17:12:55 -070021362 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021363 the chances of getting inlined*/
21364 switch ( wdiWEPType )
21365 {
21366 case WDI_WEP_STATIC:
21367 return eSIR_WEP_STATIC;
21368
21369 case WDI_WEP_DYNAMIC:
21370 return eSIR_WEP_DYNAMIC;
21371 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021372
Jeff Johnson295189b2012-06-20 16:38:30 -070021373 return eSIR_WEP_MAX;
21374}/*WDI_2_HAL_WEP_TYPE*/
21375
21376WPT_STATIC WPT_INLINE tSirLinkState
21377WDI_2_HAL_LINK_STATE
21378(
21379 WDI_LinkStateType wdiLinkState
21380)
21381{
Jeff Johnsone7245742012-09-05 17:12:55 -070021382 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021383 the chances of getting inlined*/
21384 switch ( wdiLinkState )
21385 {
21386 case WDI_LINK_IDLE_STATE:
21387 return eSIR_LINK_IDLE_STATE;
21388
21389 case WDI_LINK_PREASSOC_STATE:
21390 return eSIR_LINK_PREASSOC_STATE;
21391
21392 case WDI_LINK_POSTASSOC_STATE:
21393 return eSIR_LINK_POSTASSOC_STATE;
21394
21395 case WDI_LINK_AP_STATE:
21396 return eSIR_LINK_AP_STATE;
21397
21398 case WDI_LINK_IBSS_STATE:
21399 return eSIR_LINK_IBSS_STATE;
21400
21401 case WDI_LINK_BTAMP_PREASSOC_STATE:
21402 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21403
21404 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21405 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21406
21407 case WDI_LINK_BTAMP_AP_STATE:
21408 return eSIR_LINK_BTAMP_AP_STATE;
21409
21410 case WDI_LINK_BTAMP_STA_STATE:
21411 return eSIR_LINK_BTAMP_STA_STATE;
21412
21413 case WDI_LINK_LEARN_STATE:
21414 return eSIR_LINK_LEARN_STATE;
21415
21416 case WDI_LINK_SCAN_STATE:
21417 return eSIR_LINK_SCAN_STATE;
21418
21419 case WDI_LINK_FINISH_SCAN_STATE:
21420 return eSIR_LINK_FINISH_SCAN_STATE;
21421
21422 case WDI_LINK_INIT_CAL_STATE:
21423 return eSIR_LINK_INIT_CAL_STATE;
21424
21425 case WDI_LINK_FINISH_CAL_STATE:
21426 return eSIR_LINK_FINISH_CAL_STATE;
21427
21428#ifdef WLAN_FEATURE_P2P
21429 case WDI_LINK_LISTEN_STATE:
21430 return eSIR_LINK_LISTEN_STATE;
21431#endif
21432
21433 default:
21434 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021435 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021436}
21437
Jeff Johnsone7245742012-09-05 17:12:55 -070021438/*Translate a STA Context from WDI into HAL*/
21439WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021440void
21441WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021442(
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 tConfigStaParams* phalConfigSta,
21444 WDI_ConfigStaReqInfoType* pwdiConfigSta
21445)
21446{
21447 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021448#ifdef WLAN_FEATURE_11AC
21449 /* Get the Version 1 Handler */
21450 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21451 if (WDI_getFwWlanFeatCaps(DOT11AC))
21452 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021453 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 }
21455#endif
21456 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 the chances of getting inlined*/
21458
Jeff Johnsone7245742012-09-05 17:12:55 -070021459 wpalMemoryCopy(phalConfigSta->bssId,
21460 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21461
21462 wpalMemoryCopy(phalConfigSta->staMac,
21463 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021464
21465 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21466 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21467 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21468 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21469 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21470 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21471 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21472 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21473 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21474 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21475 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21476 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21477 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21478 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21479 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21480 phalConfigSta->action = pwdiConfigSta->wdiAction;
21481 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21482 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21483 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21484 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21485 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21486 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21487 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021488
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21490
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 pwdiConfigSta->wdiSupportedRates.opRateMode;
21493 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21494 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21497 }
21498 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21499 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21502 }
21503 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21504 {
21505 phalConfigSta->supportedRates.aniLegacyRates[i] =
21506 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21507 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021508 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21510 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21511 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021512 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021513 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21514 }
21515 phalConfigSta->supportedRates.rxHighestDataRate =
21516 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21517
Jeff Johnsone7245742012-09-05 17:12:55 -070021518#ifdef WLAN_FEATURE_11AC
21519 if(phalConfigSta_V1 != NULL)
21520 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021521 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21522 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21523 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21524 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021525 }
21526#endif
21527
Jeff Johnson295189b2012-06-20 16:38:30 -070021528#ifdef WLAN_FEATURE_P2P
21529 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21530#endif
21531
Jeff Johnsone7245742012-09-05 17:12:55 -070021532#ifdef WLAN_FEATURE_11AC
21533 if(phalConfigSta_V1 != NULL)
21534 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021535 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21536 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Jeff Johnsone7245742012-09-05 17:12:55 -070021537 }
21538#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021539}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021540
21541/*Translate a Rate set info from WDI into HAL*/
21542WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021543WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021544(
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 tSirMacRateSet* pHalRateSet,
21546 WDI_RateSet* pwdiRateSet
21547)
21548{
Jeff Johnsone7245742012-09-05 17:12:55 -070021549 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21551
21552 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21553 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21554
21555 for ( i = 0; i < pHalRateSet->numRates; i++ )
21556 {
21557 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21558 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021559
Jeff Johnson295189b2012-06-20 16:38:30 -070021560}/*WDI_CopyWDIRateSetToHALRateSet*/
21561
21562
21563/*Translate an EDCA Parameter Record from WDI into HAL*/
21564WPT_STATIC WPT_INLINE void
21565WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021566(
Jeff Johnson295189b2012-06-20 16:38:30 -070021567 tSirMacEdcaParamRecord* phalEdcaParam,
21568 WDI_EdcaParamRecord* pWDIEdcaParam
21569)
21570{
Jeff Johnsone7245742012-09-05 17:12:55 -070021571 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021572 the chances of getting inlined*/
21573
21574 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21575 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21576 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21577 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21578
21579 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21580 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21581 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21582}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21583
21584
21585/*Copy a management frame header from WDI fmt into HAL fmt*/
21586WPT_STATIC WPT_INLINE void
21587WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21588(
21589 tSirMacMgmtHdr* pmacMgmtHdr,
21590 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21591)
21592{
21593 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21594 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21595 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21596 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21597 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21598 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21599 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21600 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21601 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21602 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21603 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21604
21605 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21606 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21607
Jeff Johnsone7245742012-09-05 17:12:55 -070021608 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021609 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021612 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 pwdiMacMgmtHdr->bssId, 6);
21614
21615 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
21616 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
21617 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
21618
21619}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
21620
21621
21622/*Copy config bss parameters from WDI fmt into HAL fmt*/
21623WPT_STATIC WPT_INLINE void
21624WDI_CopyWDIConfigBSSToHALConfigBSS
21625(
21626 tConfigBssParams* phalConfigBSS,
21627 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
21628)
21629{
21630
21631 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021632#ifdef WLAN_FEATURE_11AC
21633 /* Get the Version 1 Handler */
21634 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
21635 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021636 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070021637#endif
21638
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 wpalMemoryCopy( phalConfigBSS->bssId,
21640 pwdiConfigBSS->macBSSID,
21641 WDI_MAC_ADDR_LEN);
21642
21643#ifdef HAL_SELF_STA_PER_BSS
21644 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
21645 pwdiConfigBSS->macSelfAddr,
21646 WDI_MAC_ADDR_LEN);
21647#endif
21648
21649 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
21650
21651 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
21652 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
21653
Jeff Johnsone7245742012-09-05 17:12:55 -070021654 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 pwdiConfigBSS->ucShortSlotTimeSupported;
21656 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
21657 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
21658 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
21659 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
21660 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070021662 pwdiConfigBSS->ucTXOPProtectionFullSupport;
21663 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
21664 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
21665 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
21666 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
21667 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
21668 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
21669 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
21670 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
21671 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
21672 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
21673
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 phalConfigBSS->htOperMode =
21675 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070021676
21677 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
21678 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
21679 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
21680 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
21681
21682#ifdef WLAN_FEATURE_VOWIFI
21683 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
21684#endif
21685
21686 /*! Used 32 as magic number because that is how the ssid is declared inside the
21687 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
21690 pwdiConfigBSS->wdiSSID.ucLength : 32;
21691 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 pwdiConfigBSS->wdiSSID.sSSID,
21693 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070021694
21695 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
21696 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070021697
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
21699 &pwdiConfigBSS->wdiRateSet);
21700
21701 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
21702
21703 if(phalConfigBSS->edcaParamsValid)
21704 {
21705 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
21706 &pwdiConfigBSS->wdiBEEDCAParams);
21707 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
21708 &pwdiConfigBSS->wdiBKEDCAParams);
21709 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
21710 &pwdiConfigBSS->wdiVIEDCAParams);
21711 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
21712 &pwdiConfigBSS->wdiVOEDCAParams);
21713 }
21714
Jeff Johnsone7245742012-09-05 17:12:55 -070021715 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070021716
21717 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
21718
21719#ifdef WLAN_FEATURE_VOWIFI_11R
21720
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070021723
Jeff Johnson295189b2012-06-20 16:38:30 -070021724 if( phalConfigBSS->extSetStaKeyParamValid )
21725 {
21726 /*-----------------------------------------------------------------------
21727 Copy the STA Key parameters into the HAL message
21728 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021729 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
21731
Jeff Johnsone7245742012-09-05 17:12:55 -070021732 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
21734
21735 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
21736
21737 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
21738
21739 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
21740
21741#ifdef WLAN_SOFTAP_FEATURE
21742 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
21743 keyIndex++)
21744 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021746 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
21747 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
21748 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
21749 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
21750 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
21751 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021756 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021757 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
21758 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 WDI_MAX_KEY_LENGTH);
21761 }
21762#else
Jeff Johnsone7245742012-09-05 17:12:55 -070021763 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021764 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
21765 phalConfigBSS->extSetStaKeyParam.key.unicast =
21766 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
21767 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
21768 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
21769 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021770 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
21776 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021777 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021778 WDI_MAX_KEY_LENGTH);
21779#endif
21780 }
21781 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
21782 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021783 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 sizeof(phalConfigBSS->extSetStaKeyParam) );
21785 }
21786
21787#endif /*WLAN_FEATURE_VOWIFI_11R*/
21788
Jeff Johnsone7245742012-09-05 17:12:55 -070021789#ifdef WLAN_FEATURE_11AC
21790 if(phalConfigBSS_V1 != NULL)
21791 {
21792 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
21793 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
21794 }
21795#endif
21796
Jeff Johnson295189b2012-06-20 16:38:30 -070021797}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
21798
21799
Jeff Johnsone7245742012-09-05 17:12:55 -070021800/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070021801 pointed to by user data */
21802WPT_STATIC WPT_INLINE void
21803WDI_ExtractRequestCBFromEvent
21804(
21805 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070021806 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070021807 void** ppUserData
21808)
21809{
21810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21811 switch ( pEvent->wdiRequest )
21812 {
21813 case WDI_START_REQ:
21814 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21815 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
21816 break;
21817 case WDI_STOP_REQ:
21818 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21819 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
21820 break;
21821 case WDI_INIT_SCAN_REQ:
21822 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21823 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
21824 break;
21825 case WDI_START_SCAN_REQ:
21826 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21827 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
21828 break;
21829 case WDI_END_SCAN_REQ:
21830 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21831 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
21832 break;
21833 case WDI_FINISH_SCAN_REQ:
21834 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21835 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
21836 break;
21837 case WDI_JOIN_REQ:
21838 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21839 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
21840 break;
21841 case WDI_CONFIG_BSS_REQ:
21842 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21843 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
21844 break;
21845 case WDI_DEL_BSS_REQ:
21846 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21847 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
21848 break;
21849 case WDI_POST_ASSOC_REQ:
21850 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21851 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
21852 break;
21853 case WDI_DEL_STA_REQ:
21854 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21855 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
21856 break;
21857 case WDI_DEL_STA_SELF_REQ:
21858 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21859 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
21860 break;
21861
21862 case WDI_SET_BSS_KEY_REQ:
21863 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21864 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
21865 break;
21866 case WDI_RMV_BSS_KEY_REQ:
21867 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21868 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
21869 break;
21870 case WDI_SET_STA_KEY_REQ:
21871 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21872 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
21873 break;
21874 case WDI_RMV_STA_KEY_REQ:
21875 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21876 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
21877 break;
21878 case WDI_ADD_TS_REQ:
21879 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21880 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
21881 break;
21882 case WDI_DEL_TS_REQ:
21883 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21884 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
21885 break;
21886 case WDI_UPD_EDCA_PRMS_REQ:
21887 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21888 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
21889 break;
21890 case WDI_ADD_BA_SESSION_REQ:
21891 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21892 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
21893 break;
21894 case WDI_DEL_BA_REQ:
21895 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21896 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
21897 break;
21898#ifdef FEATURE_WLAN_CCX
21899 case WDI_TSM_STATS_REQ:
21900 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21901 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
21902 break;
21903#endif
21904 case WDI_CH_SWITCH_REQ:
21905 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21906 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
21907 break;
21908 case WDI_CONFIG_STA_REQ:
21909 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21910 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
21911 break;
21912 case WDI_SET_LINK_ST_REQ:
21913 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21914 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
21915 break;
21916 case WDI_GET_STATS_REQ:
21917 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21918 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
21919 break;
21920 case WDI_UPDATE_CFG_REQ:
21921 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21922 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
21923 break;
21924 case WDI_ADD_BA_REQ:
21925 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21926 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
21927 break;
21928 case WDI_TRIGGER_BA_REQ:
21929 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21930 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
21931 break;
21932 case WDI_UPD_BCON_PRMS_REQ:
21933 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21934 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
21935 break;
21936 case WDI_SND_BCON_REQ:
21937 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21938 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
21939 break;
21940 case WDI_ENTER_BMPS_REQ:
21941 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21942 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
21943 break;
21944 case WDI_EXIT_BMPS_REQ:
21945 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21946 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
21947 break;
21948 case WDI_ENTER_UAPSD_REQ:
21949 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21950 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
21951 break;
21952 case WDI_UPDATE_UAPSD_PARAM_REQ:
21953 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21954 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
21955 break;
21956 case WDI_CONFIGURE_RXP_FILTER_REQ:
21957 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21958 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
21959 break;
21960 case WDI_SET_BEACON_FILTER_REQ:
21961 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21962 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
21963 break;
21964 case WDI_REM_BEACON_FILTER_REQ:
21965 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21966 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 case WDI_SET_RSSI_THRESHOLDS_REQ:
21969 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21970 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
21971 break;
21972 case WDI_HOST_OFFLOAD_REQ:
21973 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21974 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
21975 break;
21976 case WDI_WOWL_ADD_BC_PTRN_REQ:
21977 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21978 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
21979 break;
21980 case WDI_WOWL_DEL_BC_PTRN_REQ:
21981 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21982 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
21983 break;
21984 case WDI_WOWL_ENTER_REQ:
21985 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21986 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
21987 break;
21988 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21989 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21990 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
21991 break;
21992 case WDI_FLUSH_AC_REQ:
21993 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21994 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
21995 break;
21996 case WDI_BTAMP_EVENT_REQ:
21997 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21998 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
21999 break;
22000 case WDI_KEEP_ALIVE_REQ:
22001 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22002 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22003 break;
22004 case WDI_SET_TX_PER_TRACKING_REQ:
22005 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22006 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22007 default:
22008 *ppfnReqCB = NULL;
22009 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 }
22012}/*WDI_ExtractRequestCBFromEvent*/
22013
22014
22015/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022016 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022017 frame xtl is enabled for a particular STA.
22018
22019 WDI_PostAssocReq must have been called.
22020
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 @param uSTAIdx: STA index
22022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 @see WDI_PostAssocReq
22024 @return Result of the function call
22025*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022026wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022027WDI_IsHwFrameTxTranslationCapable
22028(
22029 wpt_uint8 uSTAIdx
22030)
22031{
Jeff Johnsone7245742012-09-05 17:12:55 -070022032 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 uma value*/
22034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 ------------------------------------------------------------------------*/
22037 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22038 {
22039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22040 "WDI API call before module is initialized - Fail request");
22041
Jeff Johnsone7245742012-09-05 17:12:55 -070022042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 }
22044
Jeff Johnsone7245742012-09-05 17:12:55 -070022045
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 return gWDICb.bFrameTransEnabled;
22047}/*WDI_IsHwFrameTxTranslationCapable*/
22048
22049#ifdef FEATURE_WLAN_SCAN_PNO
22050/**
22051 @brief WDI_SetPreferredNetworkList
22052
Jeff Johnsone7245742012-09-05 17:12:55 -070022053 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022054 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022055
Jeff Johnson295189b2012-06-20 16:38:30 -070022056 wdiPNOScanCb: callback for passing back the response
22057 of the Set PNO operation received from the
22058 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022059
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022061 callback
22062
Jeff Johnson295189b2012-06-20 16:38:30 -070022063 @return Result of the function call
22064*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022065WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022066WDI_SetPreferredNetworkReq
22067(
22068 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22069 WDI_PNOScanCb wdiPNOScanCb,
22070 void* pUserData
22071)
22072{
22073 WDI_EventInfoType wdiEventData = {{0}};
22074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22075
22076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 ------------------------------------------------------------------------*/
22079 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22080 {
22081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22082 "WDI API call before module is initialized - Fail request");
22083
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 }
22086
22087 /*------------------------------------------------------------------------
22088 Fill in Event data and post to the Main FSM
22089 ------------------------------------------------------------------------*/
22090 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022094 wdiEventData.pUserData = pUserData;
22095
22096 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22097}
22098
22099
22100/**
22101 @brief WDI_SetRssiFilterReq
22102
Jeff Johnsone7245742012-09-05 17:12:55 -070022103 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022105
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 wdiRssiFilterCb: callback for passing back the response
22107 of the Set RSSI Filter operation received from the
22108 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022109
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 callback
22112
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 @return Result of the function call
22114*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022115WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022116WDI_SetRssiFilterReq
22117(
22118 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22119 WDI_RssiFilterCb wdiRssiFilterCb,
22120 void* pUserData
22121)
22122{
22123 WDI_EventInfoType wdiEventData = {{0}};
22124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22125
22126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022128 ------------------------------------------------------------------------*/
22129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22130 {
22131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22132 "WDI API call before module is initialized - Fail request");
22133
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 }
22136
22137 /*------------------------------------------------------------------------
22138 Fill in Event data and post to the Main FSM
22139 ------------------------------------------------------------------------*/
22140 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022143 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022144 wdiEventData.pUserData = pUserData;
22145
22146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22147}/*WDI_SetRssiFilterReq*/
22148
22149/**
22150 @brief WDI_UpdateScanParamsReq
22151
Jeff Johnsone7245742012-09-05 17:12:55 -070022152 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022154
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 wdiUpdateScanParamsCb: callback for passing back the response
22156 of the Set PNO operation received from the
22157 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022158
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 callback
22161
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 @return Result of the function call
22163*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022165WDI_UpdateScanParamsReq
22166(
22167 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22168 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22169 void* pUserData
22170)
22171{
22172 WDI_EventInfoType wdiEventData = {{0}};
22173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22174
22175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022177 ------------------------------------------------------------------------*/
22178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22179 {
22180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22181 "WDI API call before module is initialized - Fail request");
22182
Jeff Johnsone7245742012-09-05 17:12:55 -070022183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022184 }
22185
22186 /*------------------------------------------------------------------------
22187 Fill in Event data and post to the Main FSM
22188 ------------------------------------------------------------------------*/
22189 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022190 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022192 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 wdiEventData.pUserData = pUserData;
22194
22195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22196}
22197
22198/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022201
22202 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022203 pwdiPNOScanReqParams: pointer to the info received
22204 from upper layers
22205 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022206 and its size
22207
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 @return Result of the function call
22209*/
22210
22211WDI_Status
22212WDI_PackPreferredNetworkList
22213(
22214 WDI_ControlBlockType* pWDICtx,
22215 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22216 wpt_uint8** ppSendBuffer,
22217 wpt_uint16* pSize
22218)
22219{
Jeff Johnsone7245742012-09-05 17:12:55 -070022220 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 wpt_uint16 usDataOffset = 0;
22222 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022223 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022224 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022225 /*-----------------------------------------------------------------------
22226 Get message buffer
22227 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022228 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022229 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022230 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022231 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022232 {
22233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22234 "Unable to get send buffer in Set PNO req %x ",
22235 pwdiPNOScanReqParams);
22236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022238 }
22239
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022240 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22241
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 /*-------------------------------------------------------------------------
22243 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22244 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022245 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022247 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022248 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22249
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022250 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022253 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22255
22256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022257 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22259 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22260 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22261
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022262 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022263 {
22264 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022265 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022266 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22267
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022268 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022269 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022270 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022271
22272 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022273 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022275
22276 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022277 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022279
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022282 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022283 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22284 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22285 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22286 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022287
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022288 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022290 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022291
22292 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022293 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22295
22296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022298 pPrefNetwListParams->aNetworks[i].ssId.length,
22299 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 }
22301
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022302 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022303 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22305 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22306 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22307
22308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022310 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22312 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22313
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022314 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022316 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022317 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022318 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022319 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22320 }
22321
22322 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022323 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22325 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22326 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022327 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022328
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022329 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022331 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022332
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022333 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022334 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22335 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22336 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022337 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022338
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022339 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022341 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022342
22343 /*Set the output values*/
22344 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022346
22347 return WDI_STATUS_SUCCESS;
22348}/*WDI_PackPreferredNetworkList*/
22349
22350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022351 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022353
22354 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022355 pwdiPNOScanReqParams: pointer to the info received
22356 from upper layers
22357 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022358 and its size
22359
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 @return Result of the function call
22361*/
22362
22363WDI_Status
22364WDI_PackPreferredNetworkListNew
22365(
22366 WDI_ControlBlockType* pWDICtx,
22367 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22368 wpt_uint8** ppSendBuffer,
22369 wpt_uint16* pSize
22370)
22371{
Jeff Johnsone7245742012-09-05 17:12:55 -070022372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022373 wpt_uint16 usDataOffset = 0;
22374 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022375 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022377
22378 /*-----------------------------------------------------------------------
22379 Get message buffer
22380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022382 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022384 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 {
22386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22387 "Unable to get send buffer in Set PNO req %x ",
22388 pwdiPNOScanReqParams);
22389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 }
22392
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022393 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22394
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 /*-------------------------------------------------------------------------
22396 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22397 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022398 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022399 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022400 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022401 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22402
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022403 pPrefNetwListParams->ucNetworksCount =
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)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022406 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022407 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22408
22409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22412 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22413 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22414
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022415 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 {
22417 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022418 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22420
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022421 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022423 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022424
22425 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022426 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022428
22429 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022430 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022432
22433 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022434 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022435 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022436
Jeff Johnsone7245742012-09-05 17:12:55 -070022437 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022439 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22441
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022442 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022444 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022445
22446 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022447 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22449
22450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022451 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022452 pPrefNetwListParams->aNetworks[i].ssId.length,
22453 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 }
22455
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022456 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022457 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22459 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22460 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22461
22462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022464 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22466 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22467
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022468 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022470 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022472 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22474 }
22475
22476 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022477 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22479 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22480 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022482
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022483 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022485 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022486
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022487 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22489 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22490 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022493 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022494 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022495 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022496
Jeff Johnson295189b2012-06-20 16:38:30 -070022497
22498 /*Set the output values*/
22499 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022501
22502 return WDI_STATUS_SUCCESS;
22503}/*WDI_PackPreferredNetworkListNew*/
22504
22505/**
22506 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022507
22508 @param pWDICtx: pointer to the WLAN DAL context
22509 pEventData: pointer to the event information structure
22510
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 @return Result of the function call
22512*/
22513WDI_Status
22514WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022515(
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 WDI_ControlBlockType* pWDICtx,
22517 WDI_EventInfoType* pEventData
22518)
22519{
22520 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22521 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022525
22526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022528 -------------------------------------------------------------------------*/
22529 if (( NULL == pEventData ) ||
22530 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22531 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22532 {
22533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22534 "%s: Invalid parameters", __FUNCTION__);
22535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 }
22538
22539 /*-------------------------------------------------------------------------
22540 Pack the PNO request structure based on version
22541 -------------------------------------------------------------------------*/
22542 if ( pWDICtx->wdiPNOVersion > 0 )
22543 {
22544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022545 "%s: PNO new version %d ", __FUNCTION__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 pWDICtx->wdiPNOVersion);
22547
22548 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22549 &pSendBuffer, &usSendSize);
22550 }
22551 else
22552 {
22553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022554 "%s: PNO old version %d ", __FUNCTION__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022555 pWDICtx->wdiPNOVersion);
22556
22557 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22558 &pSendBuffer, &usSendSize);
22559 }
22560
22561 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22562 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22563 {
22564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22565 "%s: failed to pack request parameters", __FUNCTION__);
22566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022568 }
22569
22570 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022571 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022572
22573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022574 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22577 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022578}
22579
22580/**
22581 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022582
22583 @param pWDICtx: pointer to the WLAN DAL context
22584 pEventData: pointer to the event information structure
22585
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 @see
22587 @return Result of the function call
22588*/
22589WDI_Status
22590WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022591(
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 WDI_ControlBlockType* pWDICtx,
22593 WDI_EventInfoType* pEventData
22594)
22595{
22596 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22597 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 wpt_uint16 usDataOffset = 0;
22600 wpt_uint16 usSendSize = 0;
22601 wpt_uint8 ucRssiThreshold;
22602
22603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022605 -------------------------------------------------------------------------*/
22606 if (( NULL == pEventData ) ||
22607 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
22608 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
22609 {
22610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22611 "%s: Invalid parameters", __FUNCTION__);
22612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022614 }
22615
22616 /*-----------------------------------------------------------------------
22617 Get message buffer
22618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 sizeof(ucRssiThreshold),
22621 &pSendBuffer, &usDataOffset, &usSendSize))||
22622 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
22623 {
22624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22625 "Unable to get send buffer in Set PNO req %x %x %x",
22626 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
22627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 }
22630
22631 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
22632
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 wpalMemoryCopy( pSendBuffer+usDataOffset,
22634 &ucRssiThreshold,
22635 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070022636
22637 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022638 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022639
22640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022641 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022643 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22644 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022645}
22646
22647
22648/**
22649 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070022650
22651 @param pWDICtx: pointer to the WLAN DAL context
22652 pEventData: pointer to the event information structure
22653
Jeff Johnson295189b2012-06-20 16:38:30 -070022654 @see
22655 @return Result of the function call
22656*/
22657WDI_Status
22658WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022659(
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 WDI_ControlBlockType* pWDICtx,
22661 WDI_EventInfoType* pEventData
22662)
22663{
22664 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
22665 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022666 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 wpt_uint16 usDataOffset = 0;
22668 wpt_uint16 usSendSize = 0;
22669 tUpdateScanParams updateScanParams = {0};
22670
22671
22672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 -------------------------------------------------------------------------*/
22675 if (( NULL == pEventData ) ||
22676 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
22677 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
22678 {
22679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22680 "%s: Invalid parameters", __FUNCTION__);
22681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022683 }
22684
22685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22686 "Begin WDI Update Scan Parameters");
22687 /*-----------------------------------------------------------------------
22688 Get message buffer
22689 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 sizeof(updateScanParams),
22692 &pSendBuffer, &usDataOffset, &usSendSize))||
22693 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22694 {
22695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22696 "Unable to get send buffer in Update Scan Params req %x %x %x",
22697 pEventData, pwdiUpdateScanParams, wdiUpdateScanParamsCb);
22698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 }
22701
22702 //
22703 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22704 //
22705
22706 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22707 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
Jeff Johnsone7245742012-09-05 17:12:55 -070022708 updateScanParams.ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22710 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22711 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22712 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
22713
Jeff Johnsone7245742012-09-05 17:12:55 -070022714 wpalMemoryCopy( updateScanParams.aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022715 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22716 updateScanParams.ucChannelCount);
22717
22718 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22719 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22720 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22721 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22722 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22723
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 wpalMemoryCopy( pSendBuffer+usDataOffset,
22725 &updateScanParams,
22726 sizeof(updateScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022727
22728 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022730
22731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22732 "End Update Scan Parameters");
22733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22737 wdiUpdateScanParamsCb, pEventData->pUserData, WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022738}
22739
22740/**
22741 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070022742
22743 @param pWDICtx: pointer to the WLAN DAL context
22744 pEventData: pointer to the event information structure
22745
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 @see
22747 @return Result of the function call
22748*/
22749WDI_Status
22750WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022751(
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 WDI_ControlBlockType* pWDICtx,
22753 WDI_EventInfoType* pEventData
22754)
22755{
22756 WDI_LowLevelIndType wdiInd;
22757 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
22758
22759
22760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 -------------------------------------------------------------------------*/
22763 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22764 ( NULL == pEventData->pEventData ))
22765 {
22766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22767 "%s: Invalid parameters", __FUNCTION__);
22768 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 }
22771
22772 /*-------------------------------------------------------------------------
22773 Extract indication and send it to UMAC
22774 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022775 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
22776 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 sizeof(tPrefNetwFoundParams));
22778
22779 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022780 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022781
22782 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
22783
Jeff Johnsone7245742012-09-05 17:12:55 -070022784 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070022786 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070022787
Jeff Johnsone7245742012-09-05 17:12:55 -070022788 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
22789 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
22791
22792 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
22793 prefNetwFoundInd.prefNetwFoundParams.rssi;
22794
22795 // DEBUG
22796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22797 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
22798 wdiInd.wdiIndicationType,
22799 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
22800 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
22801
22802 /*Notify UMAC*/
22803 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070022804
22805 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022806}
22807
22808/**
22809 @brief Process PNO Rsp function (called when a
22810 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022811
22812 @param pWDICtx: pointer to the WLAN DAL context
22813 pEventData: pointer to the event information structure
22814
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 @see
22816 @return Result of the function call
22817*/
22818WDI_Status
22819WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022820(
Jeff Johnson295189b2012-06-20 16:38:30 -070022821 WDI_ControlBlockType* pWDICtx,
22822 WDI_EventInfoType* pEventData
22823)
22824{
22825 WDI_Status wdiStatus;
22826 eHalStatus halStatus;
22827 WDI_PNOScanCb wdiPNOScanCb = NULL;
22828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22829
22830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022831 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 -------------------------------------------------------------------------*/
22833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22834 ( NULL == pEventData->pEventData ))
22835 {
22836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22837 "%s: Invalid parameters", __FUNCTION__);
22838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 }
22841
22842
Jeff Johnsone7245742012-09-05 17:12:55 -070022843 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022844
22845 /*-------------------------------------------------------------------------
22846 Extract response and send it to UMAC
22847 -------------------------------------------------------------------------*/
22848 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022850
22851 /*Notify UMAC*/
22852 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
22853
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022855}/*WDI_ProcessSetPreferredNetworkRsp*/
22856
22857/**
22858 @brief Process RSSI Filter Rsp function (called when a
22859 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022860
22861 @param pWDICtx: pointer to the WLAN DAL context
22862 pEventData: pointer to the event information structure
22863
Jeff Johnson295189b2012-06-20 16:38:30 -070022864 @see
22865 @return Result of the function call
22866*/
22867WDI_Status
22868WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022869(
Jeff Johnson295189b2012-06-20 16:38:30 -070022870 WDI_ControlBlockType* pWDICtx,
22871 WDI_EventInfoType* pEventData
22872)
22873{
22874 WDI_Status wdiStatus;
22875 eHalStatus halStatus;
22876 WDI_RssiFilterCb wdiRssiFilterCb;
22877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22878
22879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 -------------------------------------------------------------------------*/
22882 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22883 ( NULL == pEventData->pEventData ))
22884 {
22885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22886 "%s: Invalid parameters", __FUNCTION__);
22887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 }
22890
Jeff Johnsone7245742012-09-05 17:12:55 -070022891 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022892
22893 /*-------------------------------------------------------------------------
22894 Extract response and send it to UMAC
22895 -------------------------------------------------------------------------*/
22896 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070022897 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022898
22899 /*Notify UMAC*/
22900 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
22901
Jeff Johnsone7245742012-09-05 17:12:55 -070022902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022903}/*WDI_ProcessSetRssiFilterRsp*/
22904
22905/**
22906 @brief Process Update Scan Params Rsp function (called when a
22907 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022908
22909 @param pWDICtx: pointer to the WLAN DAL context
22910 pEventData: pointer to the event information structure
22911
Jeff Johnson295189b2012-06-20 16:38:30 -070022912 @see
22913 @return Result of the function call
22914*/
22915WDI_Status
22916WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022917(
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 WDI_ControlBlockType* pWDICtx,
22919 WDI_EventInfoType* pEventData
22920)
22921{
22922 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070022923 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022924 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022925 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22927
22928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 -------------------------------------------------------------------------*/
22931 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22932 ( NULL == pEventData->pEventData ))
22933 {
22934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22935 "%s: Invalid parameters", __FUNCTION__);
22936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 }
22939
22940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22941 "Process UPD scan params ptr : %x", __FUNCTION__);
22942
Jeff Johnsone7245742012-09-05 17:12:55 -070022943 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022944
22945 /*-------------------------------------------------------------------------
22946 Extract response and send it to UMAC
22947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022948 wpalMemoryCopy( (void *)&halUpdScanParams.status,
22949 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022950 sizeof(halUpdScanParams.status));
22951
22952 uStatus = halUpdScanParams.status;
22953
22954 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070022955 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022956
22957 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022958 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070022959
Jeff Johnsone7245742012-09-05 17:12:55 -070022960 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022961
22962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022963 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022964 halUpdScanParams.status);
22965
22966 /*Notify UMAC*/
22967 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
22968
Jeff Johnsone7245742012-09-05 17:12:55 -070022969 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022970}
22971#endif // FEATURE_WLAN_SCAN_PNO
22972
22973#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070022974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022975WDI_8023MulticastListReq
22976(
22977 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
22978 WDI_8023MulticastListCb wdi8023MulticastListCallback,
22979 void* pUserData
22980)
22981{
22982 WDI_EventInfoType wdiEventData;
22983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22984
22985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22986 "%s", __FUNCTION__);
22987
22988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 ------------------------------------------------------------------------*/
22991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22992 {
22993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22994 "WDI API call before module is initialized - Fail request");
22995
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022997 }
22998
22999 /*------------------------------------------------------------------------
23000 Fill in Event data and post to the Main FSM
23001 ------------------------------------------------------------------------*/
23002 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023003 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023004 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 wdiEventData.pUserData = pUserData;
23007
23008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23009}
23010
Jeff Johnsone7245742012-09-05 17:12:55 -070023011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023012WDI_ReceiveFilterSetFilterReq
23013(
23014 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23015 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23016 void* pUserData
23017)
23018{
23019 WDI_EventInfoType wdiEventData;
23020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23021
23022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23023 "%s",__FUNCTION__);
23024
23025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023026 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 ------------------------------------------------------------------------*/
23028 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23029 {
23030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23031 "WDI API call before module is initialized - Fail request");
23032
Jeff Johnsone7245742012-09-05 17:12:55 -070023033 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023034 }
23035
23036 /*------------------------------------------------------------------------
23037 Fill in Event data and post to the Main FSM
23038 ------------------------------------------------------------------------*/
23039 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023040 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23041 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23042 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023043 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023044 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 wdiEventData.pUserData = pUserData;
23046
23047
23048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23049}
23050
Jeff Johnsone7245742012-09-05 17:12:55 -070023051WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023052WDI_FilterMatchCountReq
23053(
23054 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23055 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23056 void* pUserData
23057)
23058{
23059 WDI_EventInfoType wdiEventData;
23060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23061
23062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23063 "%s",__FUNCTION__);
23064
23065 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 ------------------------------------------------------------------------*/
23068 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23069 {
23070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23071 "WDI API call before module is initialized - Fail request");
23072
Jeff Johnsone7245742012-09-05 17:12:55 -070023073 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 }
23075
23076 /*------------------------------------------------------------------------
23077 Fill in Event data and post to the Main FSM
23078 ------------------------------------------------------------------------*/
23079 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 wdiEventData.pUserData = pUserData;
23084
23085
23086 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23087}
23088
Jeff Johnsone7245742012-09-05 17:12:55 -070023089WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023090WDI_ReceiveFilterClearFilterReq
23091(
23092 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23093 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23094 void* pUserData
23095)
23096{
23097 WDI_EventInfoType wdiEventData;
23098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23099
23100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23101 "%s",__FUNCTION__);
23102
23103 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023104 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 ------------------------------------------------------------------------*/
23106 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23107 {
23108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23109 "WDI API call before module is initialized - Fail request");
23110
Jeff Johnsone7245742012-09-05 17:12:55 -070023111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023112 }
23113
23114 /*------------------------------------------------------------------------
23115 Fill in Event data and post to the Main FSM
23116 ------------------------------------------------------------------------*/
23117 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023118 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023119 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023120 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023121 wdiEventData.pUserData = pUserData;
23122
23123
23124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23125}
23126
23127/**
23128 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023129
23130 @param pWDICtx: pointer to the WLAN DAL context
23131 pEventData: pointer to the event information structure
23132
Jeff Johnson295189b2012-06-20 16:38:30 -070023133 @see
23134 @return Result of the function call
23135*/
23136WDI_Status
23137WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023138(
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 WDI_ControlBlockType* pWDICtx,
23140 WDI_EventInfoType* pEventData
23141)
23142{
23143 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23144 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023145 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 wpt_uint16 usDataOffset = 0;
23147 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023148 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023149 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023150 wpt_uint8 ucCurrentBSSSesIdx = 0;
23151 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023152
23153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23154 "%s",__FUNCTION__);
23155
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023156 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23157 if( NULL == pRcvFltMcAddrListType )
23158 {
23159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23160 "Failed to alloc in WDI_Process8023MulticastListReq");
23161 return WDI_STATUS_E_FAILURE;
23162 }
23163
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023166 -------------------------------------------------------------------------*/
23167 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023168 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023169 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023170 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023171 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23172 {
23173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23174 "%s: Invalid parameters", __FUNCTION__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023175 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023177 return WDI_STATUS_E_FAILURE;
23178 }
23179
23180 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23181 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23182 &pBSSSes);
23183 if ( NULL == pBSSSes )
23184 {
23185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23186 " %s : Association for this BSSID does not exist",__FUNCTION__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023187 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 }
23190
23191 /*-----------------------------------------------------------------------
23192 Get message buffer
23193 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23195 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 sizeof(tHalRcvFltMcAddrListType),
23197 &pSendBuffer, &usDataOffset, &usSendSize))||
23198 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23199 {
23200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23201 "Unable to get send buffer in "
23202 "WDI_Process8023MulticastListReq() %x %x %x",
23203 pEventData, pwdiFltPktSetMcListReqParamsType,
23204 wdi8023MulticastListCb);
23205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 }
23208
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023209 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023210 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023211 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023213 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23215 sizeof(tSirMacAddr));
23216 }
23217
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023218 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023220 pRcvFltMcAddrListType,
23221 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023222
23223 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023224 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023225
23226
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023227 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023229 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023233 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023234}
23235
23236/**
23237 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023238
23239 @param pWDICtx: pointer to the WLAN DAL context
23240 pEventData: pointer to the event information structure
23241
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 @see
23243 @return Result of the function call
23244*/
23245WDI_Status
23246WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023247(
Jeff Johnson295189b2012-06-20 16:38:30 -070023248 WDI_ControlBlockType* pWDICtx,
23249 WDI_EventInfoType* pEventData
23250)
23251{
23252 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23253 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023255 wpt_uint16 usDataOffset = 0;
23256 wpt_uint16 usSendSize = 0;
23257 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023258 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 wpt_uint8 ucCurrentBSSSesIdx = 0;
23261 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023262 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23263 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023264
23265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23266 "%s",__FUNCTION__);
23267
23268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 -------------------------------------------------------------------------*/
23271 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023272 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23276 {
23277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23278 "%s: Invalid parameters", __FUNCTION__);
23279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 return WDI_STATUS_E_FAILURE;
23281 }
23282
23283 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23284 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23285 &pBSSSes);
23286 if ( NULL == pBSSSes )
23287 {
23288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23289 " %s : Association for this BSSID does not exist",__FUNCTION__);
23290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023291 }
23292
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023293 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23294 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023295
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023296 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23297 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23298 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23299
23300 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23301 usSessRcvPktFilterCfgSize);
23302
23303 if(NULL == pSessRcvPktFilterCfg)
23304 {
23305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23306 "%s: Failed to allocate memory for "
23307 "tHalRcvPktFilterCfgType: %x %x %x ",
23308 __FUNCTION__, pWDICtx, pEventData, pEventData->pEventData);
23309 WDI_ASSERT(0);
23310 return WDI_STATUS_E_FAILURE;
23311 }
23312
23313 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23314
23315 /*-----------------------------------------------------------------------
23316 Get message buffer
23317 -----------------------------------------------------------------------*/
23318
23319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23320 usSessRcvPktFilterCfgSize,
23321 &pSendBuffer, &usDataOffset, &usSendSize))||
23322 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23323 {
23324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23325 "Unable to get send buffer in "
23326 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23327 pEventData, pwdiSetRcvPktFilterReqInfo,
23328 wdiReceiveFilterSetFilterCb);
23329 WDI_ASSERT(0);
23330 wpalMemoryFree(pSessRcvPktFilterCfg);
23331 return WDI_STATUS_E_FAILURE;
23332 }
23333
23334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23335 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23336 usSendSize,pSessRcvPktFilterCfg);
23337
23338 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23339 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23340 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23341 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23342
23343 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23344
23345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23346 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23347 pSessRcvPktFilterCfg->filterType);
23348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23349 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23350 pSessRcvPktFilterCfg->coleasceTime);
23351
23352 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23353 {
23354 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23355 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23356 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23357 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23358 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23359 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23360 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23361 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23362
23363 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23364 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23365 8);
23366 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23367 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23368 8);
23369
23370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23371 "Out:Proto %d Comp Flag %d \n",
23372 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23373 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23374
23375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23376 "Data Offset %d Data Len %d\n",
23377 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23378 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23379
23380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23381 "CData: %d:%d:%d:%d:%d:%d\n",
23382 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23383 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23384 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23385 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23386 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23387 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23388
23389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23390 "MData: %d:%d:%d:%d:%d:%d\n",
23391 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23392 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23393 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23394 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23395 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23396 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23397 }
23398
23399 wpalMemoryCopy( pSendBuffer+usDataOffset,
23400 pSessRcvPktFilterCfg,
23401 usSessRcvPktFilterCfgSize);
23402
23403
23404 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23405 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23406
23407 wpalMemoryFree(pSessRcvPktFilterCfg);
23408
23409 }
23410 /*If SLM_SESSIONIZATION is not supported then do this */
23411 else
23412 {
23413 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23414 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23415 * sizeof(tHalRcvPktFilterParams));
23416
23417 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 usRcvPktFilterCfgSize);
23419
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023420 if(NULL == pRcvPktFilterCfg)
23421 {
23422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23423 "%s: Failed to allocate memory for "
23424 "tHalRcvPktFilterCfgType: %x %x %x ",
23425 __FUNCTION__, pWDICtx, pEventData, pEventData->pEventData);
23426 WDI_ASSERT(0);
23427 return WDI_STATUS_E_FAILURE;
23428 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023429
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023430 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023431
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023432 /*-----------------------------------------------------------------------
23433 Get message buffer
23434 -----------------------------------------------------------------------*/
23435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023436 usRcvPktFilterCfgSize,
23437 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023438 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23439 {
23440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 "Unable to get send buffer in "
23442 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23443 pEventData, pwdiSetRcvPktFilterReqInfo,
23444 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023445 WDI_ASSERT(0);
23446 wpalMemoryFree(pRcvPktFilterCfg);
23447 return WDI_STATUS_E_FAILURE;
23448 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023449
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 usSendSize,usRcvPktFilterCfgSize);
23453
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023454 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23455 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23456 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23457 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070023458
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023460 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023463 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023464 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023465
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023466 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
23467 {
23468 pRcvPktFilterCfg->paramsData[i].protocolLayer =
23469 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23470 pRcvPktFilterCfg->paramsData[i].cmpFlag =
23471 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23472 pRcvPktFilterCfg->paramsData[i].dataOffset =
23473 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23474 pRcvPktFilterCfg->paramsData[i].dataLength =
23475 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070023476
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023477 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23479 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023480 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23482 8);
23483
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070023486 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023487 pRcvPktFilterCfg->paramsData[i].cmpFlag);
23488
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23490 "Data Offset %d Data Len %d\n",
23491 pRcvPktFilterCfg->paramsData[i].dataOffset,
23492 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023493
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23495 "CData: %d:%d:%d:%d:%d:%d\n",
23496 pRcvPktFilterCfg->paramsData[i].compareData[0],
23497 pRcvPktFilterCfg->paramsData[i].compareData[1],
23498 pRcvPktFilterCfg->paramsData[i].compareData[2],
23499 pRcvPktFilterCfg->paramsData[i].compareData[3],
23500 pRcvPktFilterCfg->paramsData[i].compareData[4],
23501 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070023502
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23504 "MData: %d:%d:%d:%d:%d:%d\n",
23505 pRcvPktFilterCfg->paramsData[i].dataMask[0],
23506 pRcvPktFilterCfg->paramsData[i].dataMask[1],
23507 pRcvPktFilterCfg->paramsData[i].dataMask[2],
23508 pRcvPktFilterCfg->paramsData[i].dataMask[3],
23509 pRcvPktFilterCfg->paramsData[i].dataMask[4],
23510 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
23511 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023512
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023513 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070023514 pRcvPktFilterCfg,
23515 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023516
23517
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023518 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23519 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023520
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23522 "%s",__FUNCTION__);
23523 wpalMemoryFree(pRcvPktFilterCfg);
23524 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023528 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023530 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023531}
23532
23533/**
23534 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023535
23536 @param pWDICtx: pointer to the WLAN DAL context
23537 pEventData: pointer to the event information structure
23538
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 @see
23540 @return Result of the function call
23541*/
23542WDI_Status
23543WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023544(
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 WDI_ControlBlockType* pWDICtx,
23546 WDI_EventInfoType* pEventData
23547)
23548{
23549 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
23550 NULL;
23551 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
23552 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;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023556 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
23557 wpt_uint8 ucCurrentBSSSesIdx = 0;
23558 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023559
23560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23561 "%s",__FUNCTION__);
23562
23563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 -------------------------------------------------------------------------*/
23566 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023567 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023569 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023570 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
23571 {
23572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23573 "%s: Invalid parameters", __FUNCTION__);
23574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 }
23577
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023578 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23579 pwdiRcvFltPktMatchCntReqParamsType->bssId,
23580 &pBSSSes);
23581 if ( NULL == pBSSSes )
23582 {
23583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23584 " %s : Association for this BSSID does not exist",__FUNCTION__);
23585 return WDI_STATUS_E_FAILURE;
23586 }
23587
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 /*-----------------------------------------------------------------------
23589 Get message buffer
23590 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23592 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023593 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023595 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 {
23597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23598 "Unable to get send buffer in "
23599 "WDI_ProcessFilterMatchCountReq() %x %x %x",
23600 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
23601 wdiFilterMatchCountCb);
23602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 }
23605
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023606 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
23607 wpalMemoryCopy( pSendBuffer+usDataOffset,
23608 &rcvFltPktMatchCntReqParam,
23609 sizeof(rcvFltPktMatchCntReqParam));
23610
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 //
23612 // Don't need to fill send buffer other than header
23613 //
23614 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616
23617
23618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023621 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23622 wdiFilterMatchCountCb,
23623 pEventData->pUserData,
23624 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023625}
23626
23627/**
23628 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023629
23630 @param pWDICtx: pointer to the WLAN DAL context
23631 pEventData: pointer to the event information structure
23632
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 @see
23634 @return Result of the function call
23635*/
23636WDI_Status
23637WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023638(
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 WDI_ControlBlockType* pWDICtx,
23640 WDI_EventInfoType* pEventData
23641)
Jeff Johnsone7245742012-09-05 17:12:55 -070023642{
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
23644 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 wpt_uint16 usDataOffset = 0;
23647 wpt_uint16 usSendSize = 0;
23648 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023649 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023651
23652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23653 "%s",__FUNCTION__);
23654
23655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 -------------------------------------------------------------------------*/
23658 if (( NULL == pEventData ) ||
23659 ( NULL == (pwdiRcvFltPktClearReqParamsType =
23660 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023661 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023662 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
23663 {
23664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23665 "%s: Invalid parameters", __FUNCTION__);
23666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023667 return WDI_STATUS_E_FAILURE;
23668 }
23669
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023670 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070023671 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
23672 &pBSSSes);
23673 if ( NULL == pBSSSes )
23674 {
23675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23676 " %s : Association for this BSSID does not exist",__FUNCTION__);
23677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 }
23679
23680 /*-----------------------------------------------------------------------
23681 Get message buffer
23682 -----------------------------------------------------------------------*/
23683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070023684 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023685 sizeof(tHalRcvFltPktClearParam),
23686 &pSendBuffer, &usDataOffset, &usSendSize))||
23687 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
23688 {
23689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23690 "Unable to get send buffer in "
23691 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
23692 pEventData, pwdiRcvFltPktClearReqParamsType,
23693 wdiRcvFltPktClearFilterCb);
23694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023696 }
23697
23698
23699 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070023701 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070023703
Jeff Johnsone7245742012-09-05 17:12:55 -070023704 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
23705 wpalMemoryCopy( pSendBuffer+usDataOffset,
23706 &rcvFltPktClearParam,
23707 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070023708
23709 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023710 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023711
23712
23713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023718 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023719}
23720
23721/**
23722 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070023723
23724 @param pWDICtx: pointer to the WLAN DAL context
23725 pEventData: pointer to the event information structure
23726
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 @see
23728 @return Result of the function call
23729*/
23730WDI_Status
23731WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023732(
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 WDI_ControlBlockType* pWDICtx,
23734 WDI_EventInfoType* pEventData
23735)
23736{
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 eHalStatus halStatus;
23738 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023739 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
23740 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23742
23743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23744 "%s",__FUNCTION__);
23745
23746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023748 -------------------------------------------------------------------------*/
23749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23750 ( NULL == pEventData->pEventData ))
23751 {
23752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23753 "%s: Invalid parameters", __FUNCTION__);
23754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 }
23757
Jeff Johnsone7245742012-09-05 17:12:55 -070023758 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023759
23760 /*-------------------------------------------------------------------------
23761 Extract response and send it to UMAC
23762 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023763 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
23764 {
23765 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
23766 pEventData->pEventData,
23767 sizeof(halRcvFltPktSetMcListRsp));
23768
23769 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
23770 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
23771 wdiRcvFltPktSetMcListRspInfo.bssIdx =
23772 halRcvFltPktSetMcListRsp.bssIdx;
23773 }
23774 else
23775 {
23776 halStatus = *((eHalStatus*)pEventData->pEventData);
23777 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
23778 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023779
23780 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023781 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070023782
Jeff Johnsone7245742012-09-05 17:12:55 -070023783 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023784}
23785
23786/**
23787 @brief Process Set Rsp function (called when a
23788 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023789
23790 @param pWDICtx: pointer to the WLAN DAL context
23791 pEventData: pointer to the event information structure
23792
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 @see
23794 @return Result of the function call
23795*/
23796WDI_Status
23797WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023798(
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 WDI_ControlBlockType* pWDICtx,
23800 WDI_EventInfoType* pEventData
23801)
23802{
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 eHalStatus halStatus;
23804 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023805 tHalSetPktFilterRspParams halSetPktFilterRspParams;
23806 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23808
23809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23810 "%s",__FUNCTION__);
23811
23812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 -------------------------------------------------------------------------*/
23815 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23816 ( NULL == pEventData->pEventData ))
23817 {
23818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23819 "%s: Invalid parameters", __FUNCTION__);
23820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 }
23823
23824 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070023825 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023826
23827 /*-------------------------------------------------------------------------
23828 Extract response and send it to UMAC
23829 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023830 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
23831 {
23832 wpalMemoryCopy( &halSetPktFilterRspParams,
23833 pEventData->pEventData,
23834 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070023835
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023836 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
23837 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
23838 }
23839 else
23840 {
23841 halStatus = *((eHalStatus*)pEventData->pEventData);
23842 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
23843 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023844 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023845 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070023846
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023848}
23849
23850/**
23851 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070023852
23853 @param pWDICtx: pointer to the WLAN DAL context
23854 pEventData: pointer to the event information structure
23855
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 @see
23857 @return Result of the function call
23858*/
23859WDI_Status
23860WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023861(
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 WDI_ControlBlockType* pWDICtx,
23863 WDI_EventInfoType* pEventData
23864)
23865{
Jeff Johnson295189b2012-06-20 16:38:30 -070023866 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023868 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
23869 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023870
23871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23872
23873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23874 "%s",__FUNCTION__);
23875
23876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 -------------------------------------------------------------------------*/
23879 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23880 ( NULL == pEventData->pEventData ))
23881 {
23882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23883 "%s: Invalid parameters", __FUNCTION__);
23884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023886 }
23887
Jeff Johnsone7245742012-09-05 17:12:55 -070023888 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023889
23890 /*-------------------------------------------------------------------------
23891 Extract response and send it to UMAC
23892 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023893 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
23894 {
23895 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
23896 pEventData->pEventData,
23897 sizeof(halRcvFltrPktMatachRsp));
23898
23899 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
23900 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
23901 }
23902 else
23903 {
23904 halStatus = *((eHalStatus*)pEventData->pEventData);
23905 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
23906 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023907
23908 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023909 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070023910
Jeff Johnsone7245742012-09-05 17:12:55 -070023911 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023912}
23913
23914/**
23915 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070023916
23917 @param pWDICtx: pointer to the WLAN DAL context
23918 pEventData: pointer to the event information structure
23919
Jeff Johnson295189b2012-06-20 16:38:30 -070023920 @see
23921 @return Result of the function call
23922*/
23923WDI_Status
23924WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023925(
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 WDI_ControlBlockType* pWDICtx,
23927 WDI_EventInfoType* pEventData
23928)
23929{
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 eHalStatus halStatus;
23931 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023932 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
23933 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23935
23936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23937 "%s",__FUNCTION__);
23938
23939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023941 -------------------------------------------------------------------------*/
23942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23943 ( NULL == pEventData->pEventData ))
23944 {
23945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23946 "%s: Invalid parameters", __FUNCTION__);
23947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 }
23950
23951 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070023952 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023953
23954 /*-------------------------------------------------------------------------
23955 Extract response and send it to UMAC
23956 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023957 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
23958 {
23959 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
23960 pEventData->pEventData,
23961 sizeof(halRcvFltPktClearRspMsg));
23962
23963 wdiRcvFltPktClearRspParamsType.wdiStatus =
23964 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
23965 wdiRcvFltPktClearRspParamsType.bssIdx =
23966 halRcvFltPktClearRspMsg.bssIdx;
23967 }
23968 else
23969 {
23970 halStatus = *((eHalStatus*)pEventData->pEventData);
23971 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
23972 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023973
23974 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023975 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070023976
Jeff Johnsone7245742012-09-05 17:12:55 -070023977 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023978}
23979#endif // WLAN_FEATURE_PACKET_FILTERING
23980
23981/**
23982 @brief Process Shutdown Rsp function
23983 There is no shutdown response comming from HAL
23984 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070023985
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023988
23989 @see
23990 @return Result of the function call
23991*/
23992WDI_Status
23993WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023994(
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 WDI_ControlBlockType* pWDICtx,
23996 WDI_EventInfoType* pEventData
23997)
23998{
23999 /*There is no shutdown response comming from HAL - function just kept for
24000 simmetry */
24001 WDI_ASSERT(0);
24002 return WDI_STATUS_SUCCESS;
24003}/*WDI_ProcessShutdownRsp*/
24004
24005/**
24006 @brief WDI_SetPowerParamsReq
24007
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024010
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 wdiPowerParamsCb: callback for passing back the response
24012 of the Set Power Params operation received from the
24013 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024014
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 callback
24017
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 @return Result of the function call
24019*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024020WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024021WDI_SetPowerParamsReq
24022(
24023 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24024 WDI_SetPowerParamsCb wdiPowerParamsCb,
24025 void* pUserData
24026)
24027{
24028 WDI_EventInfoType wdiEventData;
24029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24030
24031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 ------------------------------------------------------------------------*/
24034 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24035 {
24036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24037 "WDI API call before module is initialized - Fail request");
24038
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 }
24041
24042 /*------------------------------------------------------------------------
24043 Fill in Event data and post to the Main FSM
24044 ------------------------------------------------------------------------*/
24045 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024046 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 wdiEventData.pUserData = pUserData;
24050
24051 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24052}/*WDI_SetPowerParamsReq*/
24053
24054/**
24055 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024056
24057 @param pWDICtx: pointer to the WLAN DAL context
24058 pEventData: pointer to the event information structure
24059
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 @see
24061 @return Result of the function call
24062*/
24063WDI_Status
24064WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024065(
Jeff Johnson295189b2012-06-20 16:38:30 -070024066 WDI_ControlBlockType* pWDICtx,
24067 WDI_EventInfoType* pEventData
24068)
24069{
24070 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24071 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024072 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 wpt_uint16 usDataOffset = 0;
24074 wpt_uint16 usSendSize = 0;
24075 tSetPowerParamsType powerParams;
24076
24077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024079 -------------------------------------------------------------------------*/
24080 if (( NULL == pEventData ) ||
24081 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24082 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24083 {
24084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24085 "%s: Invalid parameters", __FUNCTION__);
24086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 }
24089
24090 /*-----------------------------------------------------------------------
24091 Get message buffer
24092 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024093 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 sizeof(powerParams),
24095 &pSendBuffer, &usDataOffset, &usSendSize))||
24096 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24097 {
24098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24099 "Unable to get send buffer in Set PNO req %x %x %x",
24100 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 }
24104
24105 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24108
24109 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024110 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024111 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24112
24113 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024115 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24116
24117 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24120
24121 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024122 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24124
24125 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024126 powerParams.uBETInterval =
24127 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024128
Jeff Johnsone7245742012-09-05 17:12:55 -070024129
24130 wpalMemoryCopy( pSendBuffer+usDataOffset,
24131 &powerParams,
24132 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024133
24134 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024135 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024136
24137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024138 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24141 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024142}
24143
24144/**
24145 @brief Process Power Params Rsp function (called when a
24146 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024147
24148 @param pWDICtx: pointer to the WLAN DAL context
24149 pEventData: pointer to the event information structure
24150
Jeff Johnson295189b2012-06-20 16:38:30 -070024151 @see
24152 @return Result of the function call
24153*/
24154WDI_Status
24155WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024156(
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 WDI_ControlBlockType* pWDICtx,
24158 WDI_EventInfoType* pEventData
24159)
24160{
24161 WDI_Status wdiStatus;
24162 eHalStatus halStatus;
24163 WDI_SetPowerParamsCb wdiPowerParamsCb;
24164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24165
24166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024168 -------------------------------------------------------------------------*/
24169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24170 ( NULL == pEventData->pEventData ))
24171 {
24172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24173 "%s: Invalid parameters", __FUNCTION__);
24174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 }
24177
Jeff Johnsone7245742012-09-05 17:12:55 -070024178 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024179
24180 /*-------------------------------------------------------------------------
24181 Extract response and send it to UMAC
24182 -------------------------------------------------------------------------*/
24183 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024184 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024185
24186 /*Notify UMAC*/
24187 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24188
Jeff Johnsone7245742012-09-05 17:12:55 -070024189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024190}/*WDI_ProcessSetPowerParamsRsp*/
24191
24192#ifdef WLAN_FEATURE_GTK_OFFLOAD
24193/**
24194 @brief WDI_GTKOffloadReq will be called when the upper MAC
24195 wants to set GTK Rekey Counter while in power save. Upon
24196 the call of this API the WLAN DAL will pack and send a
24197 HAL GTK offload request message to the lower RIVA
24198 sub-system if DAL is in state STARTED.
24199
24200 In state BUSY this request will be queued. Request won't
24201 be allowed in any other state.
24202
24203 WDI_PostAssocReq must have been called.
24204
24205 @param pwdiGtkOffloadParams: the GTK offload as specified
24206 by the Device Interface
24207
24208 wdiGtkOffloadCb: callback for passing back the response
24209 of the GTK offload operation received from the device
24210
24211 pUserData: user data will be passed back with the
24212 callback
24213
24214 @see WDI_PostAssocReq
24215 @return Result of the function call
24216*/
24217WDI_Status
24218WDI_GTKOffloadReq
24219(
24220 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24221 WDI_GtkOffloadCb wdiGtkOffloadCb,
24222 void* pUserData
24223)
24224{
24225 WDI_EventInfoType wdiEventData = {0};
24226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24227
24228 /*------------------------------------------------------------------------
24229 Sanity Check
24230 ------------------------------------------------------------------------*/
24231 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24232 {
24233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24234 "WDI API call before module is initialized - Fail request");
24235
24236 return WDI_STATUS_E_NOT_ALLOWED;
24237 }
24238
24239 /*------------------------------------------------------------------------
24240 Fill in Event data and post to the Main FSM
24241 ------------------------------------------------------------------------*/
24242 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24243 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024244 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024245 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24246 wdiEventData.pUserData = pUserData;
24247
24248 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24249}
24250
24251
24252/**
24253 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24254 MAC wants to get GTK Rekey Counter while in power save.
24255 Upon the call of this API the WLAN DAL will pack and
24256 send a HAL GTK offload request message to the lower RIVA
24257 sub-system if DAL is in state STARTED.
24258
24259 In state BUSY this request will be queued. Request won't
24260 be allowed in any other state.
24261
24262 WDI_PostAssocReq must have been called.
24263
24264 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24265 Information Message as specified by the
24266 Device Interface
24267
24268 wdiGtkOffloadGetInfoCb: callback for passing back the
24269 response of the GTK offload operation received from the
24270 device
24271
24272 pUserData: user data will be passed back with the
24273 callback
24274
24275 @see WDI_PostAssocReq
24276 @return Result of the function call
24277*/
24278WDI_Status
24279WDI_GTKOffloadGetInfoReq
24280(
24281 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24282 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24283 void* pUserData
24284)
24285{
24286 WDI_EventInfoType wdiEventData = {0};
24287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24288
24289 /*------------------------------------------------------------------------
24290 Sanity Check
24291 ------------------------------------------------------------------------*/
24292 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24293 {
24294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24295 "WDI API call before module is initialized - Fail request");
24296
24297 return WDI_STATUS_E_NOT_ALLOWED;
24298 }
24299
24300 /*------------------------------------------------------------------------
24301 Fill in Event data and post to the Main FSM
24302 ------------------------------------------------------------------------*/
24303 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24304 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24305 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24306 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24307 wdiEventData.pUserData = pUserData;
24308
24309 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24310}
24311
24312
24313/**
24314 @brief Process set GTK Offload Request function
24315
24316 @param pWDICtx: pointer to the WLAN DAL context
24317 pEventData: pointer to the event information structure
24318
24319 @see
24320 @return Result of the function call
24321*/
24322WDI_Status
24323WDI_ProcessGTKOffloadReq
24324(
24325 WDI_ControlBlockType* pWDICtx,
24326 WDI_EventInfoType* pEventData
24327)
24328{
24329 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24330 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24331 wpt_uint8* pSendBuffer = NULL;
24332 wpt_uint16 usDataOffset = 0;
24333 wpt_uint16 usSendSize = 0;
24334 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024335 wpt_uint8 ucCurrentSessionId = 0;
24336 WDI_BSSSessionType* pBSSSes = NULL;
24337
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24339
24340 /*-------------------------------------------------------------------------
24341 Sanity check
24342 -------------------------------------------------------------------------*/
24343 if (( NULL == pEventData ) ||
24344 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24345 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24346 {
24347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24348 "%s: Invalid parameters", __FUNCTION__);
24349 WDI_ASSERT(0);
24350 return WDI_STATUS_E_FAILURE;
24351 }
24352
24353 /*-----------------------------------------------------------------------
24354 Get message buffer
24355 -----------------------------------------------------------------------*/
24356 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24357 sizeof(gtkOffloadReqParams),
24358 &pSendBuffer, &usDataOffset, &usSendSize))||
24359 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24360 {
24361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24362 "Unable to get send buffer in GTK offload req %x %x %x",
24363 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24364 WDI_ASSERT(0);
24365 return WDI_STATUS_E_FAILURE;
24366 }
24367
24368 //
24369 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24370 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024371 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24372 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24373 &pBSSSes);
24374 if ( NULL == pBSSSes )
24375 {
24376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24377 " %s : Association for this BSSID does not exist", __FUNCTION__);
24378 return WDI_STATUS_E_FAILURE;
24379 }
24380
24381 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24382
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24384 // Copy KCK
24385 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24386 // Copy KEK
24387 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24388 // Copy KeyReplayCounter
24389 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24390
24391 wpalMemoryCopy( pSendBuffer+usDataOffset,
24392 &gtkOffloadReqParams,
24393 sizeof(gtkOffloadReqParams));
24394
24395 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24396 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24397
24398 /*-------------------------------------------------------------------------
24399 Send Get STA Request to HAL
24400 -------------------------------------------------------------------------*/
24401 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24402 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
24403}
24404
24405
24406/**
24407 @brief Process GTK Offload Get Information Request function
24408
24409 @param pWDICtx: pointer to the WLAN DAL context
24410 pEventData: pointer to the event information structure
24411
24412 @see
24413 @return Result of the function call
24414*/
24415WDI_Status
24416WDI_ProcessGTKOffloadGetInfoReq
24417(
24418 WDI_ControlBlockType* pWDICtx,
24419 WDI_EventInfoType* pEventData
24420)
24421{
24422 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24423 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24424 wpt_uint8* pSendBuffer = NULL;
24425 wpt_uint16 usDataOffset = 0;
24426 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024427 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24428 wpt_uint8 ucCurrentSessionId = 0;
24429 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024430
24431 /*-------------------------------------------------------------------------
24432 Sanity check
24433 -------------------------------------------------------------------------*/
24434 if (( NULL == pEventData ) ||
24435 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24436 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24437 {
24438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24439 "%s: Invalid parameters", __FUNCTION__);
24440 WDI_ASSERT(0);
24441 return WDI_STATUS_E_FAILURE;
24442 }
24443
24444 /*-----------------------------------------------------------------------
24445 Get message buffer
24446 -----------------------------------------------------------------------*/
24447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024448 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024449 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024450 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 {
24452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24453 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24454 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24455 WDI_ASSERT(0);
24456 return WDI_STATUS_E_FAILURE;
24457 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024458 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24459 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24460 &pBSSSes);
24461 if ( NULL == pBSSSes )
24462 {
24463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24464 " %s : Association for this BSSID does not exist",__FUNCTION__);
24465 return WDI_STATUS_E_FAILURE;
24466 }
24467 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024468
24469 //
24470 // Don't need to fill send buffer other than header
24471 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024472 wpalMemoryCopy( pSendBuffer+usDataOffset,
24473 &halGtkOffloadGetInfoReqParams,
24474 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024475
24476 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
24477 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
24478
24479 /*-------------------------------------------------------------------------
24480 Send Get STA Request to HAL
24481 -------------------------------------------------------------------------*/
24482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24483 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
24484}
24485
24486/**
24487 @brief Process host offload Rsp function (called when a
24488 response is being received over the bus from HAL)
24489
24490 @param pWDICtx: pointer to the WLAN DAL context
24491 pEventData: pointer to the event information structure
24492
24493 @see
24494 @return Result of the function call
24495*/
24496WDI_Status
24497WDI_ProcessGtkOffloadRsp
24498(
24499 WDI_ControlBlockType* pWDICtx,
24500 WDI_EventInfoType* pEventData
24501)
24502{
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 eHalStatus halStatus;
24504 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024505 tHalGtkOffloadRspParams halGtkOffloadRspParams;
24506 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24508
24509 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
24510
24511 /*-------------------------------------------------------------------------
24512 Sanity check
24513 -------------------------------------------------------------------------*/
24514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24515 ( NULL == pEventData->pEventData))
24516 {
24517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24518 "%s: Invalid parameters", __FUNCTION__);
24519 WDI_ASSERT(0);
24520 return WDI_STATUS_E_FAILURE;
24521 }
24522
24523 /*-------------------------------------------------------------------------
24524 Extract response and send it to UMAC
24525 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024526 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24527 {
24528 wpalMemoryCopy( &halGtkOffloadRspParams,
24529 pEventData->pEventData,
24530 sizeof(halGtkOffloadRspParams));
24531
24532 wdiGtkOffloadRsparams.ulStatus =
24533 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
24534 wdiGtkOffloadRsparams.bssIdx =
24535 halGtkOffloadRspParams.bssIdx;
24536 }
24537 else
24538 {
24539 halStatus = *((eHalStatus*)pEventData->pEventData);
24540 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24541 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024542
24543 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024544 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024545
24546 return WDI_STATUS_SUCCESS;
24547}
24548
24549/**
24550 @brief Process GTK Offload Get Information Response function
24551
24552 @param pWDICtx: pointer to the WLAN DAL context
24553 pEventData: pointer to the event information structure
24554
24555 @see
24556 @return Result of the function call
24557*/
24558WDI_Status
24559WDI_ProcessGTKOffloadGetInfoRsp
24560(
24561 WDI_ControlBlockType* pWDICtx,
24562 WDI_EventInfoType* pEventData
24563)
24564{
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024566 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024567 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
24568 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024569
24570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24571
24572 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
24573
24574 /*-------------------------------------------------------------------------
24575 Sanity check
24576 -------------------------------------------------------------------------*/
24577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24578 ( NULL == pEventData->pEventData ))
24579 {
24580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24581 "%s: Invalid parameters", __FUNCTION__);
24582 WDI_ASSERT(0);
24583 return WDI_STATUS_E_FAILURE;
24584 }
24585
24586 /*-------------------------------------------------------------------------
24587 Extract response and send it to UMAC
24588 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024589 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24590 {
24591 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
24592 pEventData->pEventData,
24593 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024594
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024595 wdiGtkOffloadGetInfoRsparams.ulStatus =
24596 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
24597 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
24598 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
24599 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
24600 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
24601 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
24602 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
24603 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
24604 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
24605 wdiGtkOffloadGetInfoRsparams.bssIdx =
24606 halGtkOffloadGetInfoRspParams.bssIdx;
24607 }
24608 else
24609 {
24610 halStatus = *((eHalStatus*)pEventData->pEventData);
24611 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24612 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024613 /*Notify UMAC*/
24614 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24615 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024616 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024617
24618 return WDI_STATUS_SUCCESS;
24619}
24620#endif // WLAN_FEATURE_GTK_OFFLOAD
24621
24622#ifdef WLAN_WAKEUP_EVENTS
24623WDI_Status
24624WDI_ProcessWakeReasonInd
24625(
24626 WDI_ControlBlockType* pWDICtx,
24627 WDI_EventInfoType* pEventData
24628)
24629{
24630 WDI_LowLevelIndType *pWdiInd;
24631 tpWakeReasonParams pWakeReasonParams;
24632 wpt_uint32 allocSize = 0;
24633
24634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24635 "+%s", __FUNCTION__);
24636
24637 /*-------------------------------------------------------------------------
24638 Sanity check
24639 -------------------------------------------------------------------------*/
24640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24641 ( NULL == pEventData->pEventData ))
24642 {
24643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24644 "%s: Invalid parameters", __FUNCTION__);
24645 WDI_ASSERT( 0 );
24646 return WDI_STATUS_E_FAILURE;
24647 }
24648
24649 /*-------------------------------------------------------------------------
24650 Extract indication and send it to UMAC
24651 -------------------------------------------------------------------------*/
24652 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
24653
24654 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
24655
24656 //Allocate memory for WDI_WakeReasonIndType structure
24657 pWdiInd = wpalMemoryAllocate(allocSize) ;
24658
24659 if(NULL == pWdiInd)
24660 {
24661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24662 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
24663 __FUNCTION__, pWDICtx, pEventData, pEventData->pEventData);
24664 WDI_ASSERT(0);
24665 return WDI_STATUS_E_FAILURE;
24666 }
24667
24668 wpalMemoryZero(pWdiInd, allocSize);
24669
24670 /* Fill in the indication parameters*/
24671 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
24672 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
24673 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
24674 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
24675 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
24676 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
24677 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
24678 &(pWakeReasonParams->aDataStart[0]),
24679 pWakeReasonParams->ulStoredDataLen);
24680
24681 /*Notify UMAC*/
24682 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
24683
24684 //Free memory allocated for WDI_WakeReasonIndType structure
24685 wpalMemoryFree(pWdiInd);
24686
24687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24688 "-%s", __FUNCTION__);
24689
24690 return WDI_STATUS_SUCCESS;
24691}
24692#endif // WLAN_WAKEUP_EVENTS
24693
24694void WDI_GetWcnssCompiledApiVersion
24695(
24696 WDI_WlanVersionType *pWcnssApiVersion
24697)
24698{
24699 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
24700 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
24701 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
24702 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
24703}
24704
24705/**
24706 @brief Process Set TM Level Rsp function (called when a
24707 response is being received over the bus from HAL)
24708
24709 @param pWDICtx: pointer to the WLAN DAL context
24710 pEventData: pointer to the event information structure
24711
24712 @see
24713 @return Result of the function call
24714*/
24715WDI_Status
24716WDI_ProcessSetTmLevelRsp
24717(
24718 WDI_ControlBlockType* pWDICtx,
24719 WDI_EventInfoType* pEventData
24720)
24721{
24722 WDI_Status wdiStatus;
24723 eHalStatus halStatus;
24724 WDI_SetTmLevelCb wdiSetTmLevelCb;
24725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24726
24727 /*-------------------------------------------------------------------------
24728 Sanity check
24729 -------------------------------------------------------------------------*/
24730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24731 ( NULL == pEventData->pEventData ))
24732 {
24733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24734 "%s: Invalid parameters", __FUNCTION__);
24735 WDI_ASSERT(0);
24736 return WDI_STATUS_E_FAILURE;
24737 }
24738
24739 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
24740
24741 /*-------------------------------------------------------------------------
24742 Extract response and send it to UMAC
24743 -------------------------------------------------------------------------*/
24744 halStatus = *((eHalStatus*)pEventData->pEventData);
24745 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24746
24747 /*Notify UMAC*/
24748 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
24749
24750 return WDI_STATUS_SUCCESS;
24751}/*WDI_ProcessSetTmLevelRsp*/
24752
24753/**
24754 @brief Process Set Thermal Mitigation level Changed request
24755
24756 @param pWDICtx: pointer to the WLAN DAL context
24757 pEventData: pointer to the event information structure
24758
24759 @see
24760 @return Result of the function call
24761*/
24762WDI_Status
24763WDI_ProcessSetTmLevelReq
24764(
24765 WDI_ControlBlockType* pWDICtx,
24766 WDI_EventInfoType* pEventData
24767)
24768{
24769 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
24770 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
24771 wpt_uint8* pSendBuffer = NULL;
24772 wpt_uint16 usDataOffset = 0;
24773 wpt_uint16 usSendSize = 0;
24774 tSetThermalMitgationType halTmMsg;
24775
24776 /*-------------------------------------------------------------------------
24777 Sanity check
24778 -------------------------------------------------------------------------*/
24779 if (( NULL == pEventData ) ||
24780 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
24781 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
24782 {
24783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24784 "%s: Invalid parameters", __FUNCTION__);
24785 WDI_ASSERT(0);
24786 return WDI_STATUS_E_FAILURE;
24787 }
24788
24789 /*-----------------------------------------------------------------------
24790 Get message buffer
24791 -----------------------------------------------------------------------*/
24792 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
24793 sizeof(halTmMsg),
24794 &pSendBuffer, &usDataOffset, &usSendSize))||
24795 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
24796 {
24797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24798 "Unable to get send buffer in Set PNO req %x %x %x",
24799 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
24800 WDI_ASSERT(0);
24801 return WDI_STATUS_E_FAILURE;
24802 }
24803
24804 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
24805 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
24806
24807 wpalMemoryCopy( pSendBuffer+usDataOffset,
24808 &halTmMsg,
24809 sizeof(halTmMsg));
24810
24811 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
24812 pWDICtx->pfncRspCB = NULL;
24813 /*-------------------------------------------------------------------------
24814 Send Get STA Request to HAL
24815 -------------------------------------------------------------------------*/
24816 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24817 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
24818}
24819
24820/* Fill the value from the global features enabled array to the global capabilities
24821 * bitmap struct
24822 */
24823static void
24824FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
24825{
24826 wpt_int8 i;
24827 for (i=0; i<len; i++)
24828 {
24829 setFeatCaps(fCaps, enabledFeat[i]);
24830 }
24831}
24832
24833/**
24834 @brief WDI_featureCapsExchangeReq
24835 Post feature capability bitmap exchange event.
24836 Host will send its own capability to FW in this req and
24837 expect FW to send its capability back as a bitmap in Response
24838
24839 @param
24840
24841 wdiFeatureCapsExchangeCb: callback called on getting the response.
24842 It is kept to mantain similarity between WDI reqs and if needed, can
24843 be used in future. Currently, It is set to NULL
24844
24845 pUserData: user data will be passed back with the
24846 callback
24847
24848 @see
24849 @return Result of the function call
24850*/
24851WDI_Status
24852WDI_featureCapsExchangeReq
24853(
24854 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
24855 void* pUserData
24856)
24857{
24858 WDI_EventInfoType wdiEventData;
24859 wpt_int32 fCapsStructSize;
24860
24861 /*------------------------------------------------------------------------
24862 Sanity Check
24863 ------------------------------------------------------------------------*/
24864 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24865 {
24866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24867 "WDI API call before module is initialized - Fail request");
24868
24869 return WDI_STATUS_E_NOT_ALLOWED;
24870 }
24871
24872 /* Allocate memory separately for global variable carrying FW caps */
24873 fCapsStructSize = sizeof(tWlanFeatCaps);
24874 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
24875 if ( NULL == gpHostWlanFeatCaps )
24876 {
24877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24878 "Cannot allocate memory for host capability info\n");
24879 WDI_ASSERT(0);
24880 return WDI_STATUS_MEM_FAILURE;
24881 }
24882
24883 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
24884
24885 /*------------------------------------------------------------------------
24886 Fill in Event data and post to the Main FSM
24887 ------------------------------------------------------------------------*/
24888 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
24889 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070024890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24891 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070024892 gpHostWlanFeatCaps->featCaps[0],
24893 gpHostWlanFeatCaps->featCaps[1],
24894 gpHostWlanFeatCaps->featCaps[2],
24895 gpHostWlanFeatCaps->featCaps[3]
24896 );
24897
24898 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
24899 wdiEventData.pEventData = gpHostWlanFeatCaps;
24900 wdiEventData.uEventDataSize = fCapsStructSize;
24901 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
24902 wdiEventData.pUserData = pUserData;
24903
24904 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24905}
24906
24907/**
24908 @brief Process Host-FW Capability Exchange Request function
24909
24910 @param pWDICtx: pointer to the WLAN DAL context
24911 pEventData: pointer to the event information structure
24912
24913 @see
24914 @return Result of the function call
24915*/
24916WDI_Status
24917WDI_ProcessFeatureCapsExchangeReq
24918(
24919 WDI_ControlBlockType* pWDICtx,
24920 WDI_EventInfoType* pEventData
24921)
24922{
24923 wpt_uint8* pSendBuffer = NULL;
24924 wpt_uint16 usDataOffset = 0;
24925 wpt_uint16 usSendSize = 0;
24926 wpt_uint16 usLen = 0;
24927
24928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24929
24930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24931 "%s", __FUNCTION__);
24932
24933 /*-------------------------------------------------------------------------
24934 Sanity check
24935 -------------------------------------------------------------------------*/
24936 /* Call back function is NULL since not required for cap exchange req */
24937 if (( NULL == pEventData ) ||
24938 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
24939 {
24940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24941 "%s: Invalid parameters", __FUNCTION__);
24942 WDI_ASSERT(0);
24943 return WDI_STATUS_E_FAILURE;
24944 }
24945
24946 /*-----------------------------------------------------------------------
24947 Get message buffer
24948 -----------------------------------------------------------------------*/
24949 usLen = sizeof(tWlanFeatCaps);
24950
24951 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24952 WDI_FEATURE_CAPS_EXCHANGE_REQ,
24953 usLen,
24954 &pSendBuffer, &usDataOffset, &usSendSize))||
24955 ( usSendSize < (usDataOffset + usLen )))
24956 {
24957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24958 "Unable to get send buffer in feat caps exchange req %x %x",
24959 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
24960 WDI_ASSERT(0);
24961 return WDI_STATUS_E_FAILURE;
24962 }
24963
24964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024965 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070024966 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
24967 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
24968 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
24969 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
24970 );
24971
24972 /* Copy host caps after the offset in the send buffer */
24973 wpalMemoryCopy( pSendBuffer+usDataOffset,
24974 (tWlanFeatCaps *)pEventData->pEventData,
24975 usLen);
24976
24977 /*-------------------------------------------------------------------------
24978 Send Start Request to HAL
24979 -------------------------------------------------------------------------*/
24980 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24981 (WDI_StartRspCb)pEventData->pCBfnc,
24982 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
24983
24984}/*WDI_ProcessFeatureCapsExchangeReq*/
24985
24986/**
24987 @brief Process Host-FW Capability Exchange Response function
24988
24989 @param pWDICtx: pointer to the WLAN DAL context
24990 pEventData: pointer to the event information structure
24991
24992 @see
24993 @return Result of the function call
24994*/
24995WDI_Status
24996WDI_ProcessFeatureCapsExchangeRsp
24997(
24998 WDI_ControlBlockType* pWDICtx,
24999 WDI_EventInfoType* pEventData
25000)
25001{
25002 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25003 wpt_int32 fCapsStructSize;
25004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25005
25006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25007 "%s", __FUNCTION__);
25008
25009 /*-------------------------------------------------------------------------
25010 Sanity check
25011 -------------------------------------------------------------------------*/
25012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25013 ( NULL == pEventData->pEventData ))
25014 {
25015 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25017 "%s: Invalid parameters", __FUNCTION__);
25018 WDI_ASSERT(0);
25019 return WDI_STATUS_E_FAILURE;
25020 }
25021
25022 /* Allocate memory separately for global variable carrying FW caps */
25023 fCapsStructSize = sizeof(tWlanFeatCaps);
25024 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25025 if ( NULL == gpFwWlanFeatCaps )
25026 {
25027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25028 "Cannot allocate memory for host capability info\n");
25029 WDI_ASSERT(0);
25030 return WDI_STATUS_MEM_FAILURE;
25031 }
25032
25033 /*-------------------------------------------------------------------------
25034 Unpack HAL Response Message - the header was already extracted by the
25035 main Response Handling procedure
25036 -------------------------------------------------------------------------*/
25037 /*-------------------------------------------------------------------------
25038 Extract response and send it to UMAC
25039 -------------------------------------------------------------------------*/
25040
25041 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25042 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25044 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025045 gpFwWlanFeatCaps->featCaps[0],
25046 gpFwWlanFeatCaps->featCaps[1],
25047 gpFwWlanFeatCaps->featCaps[2],
25048 gpFwWlanFeatCaps->featCaps[3]
25049 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025050
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25052
25053 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25054 if (wdiFeatureCapsExchangeCb != NULL)
25055 wdiFeatureCapsExchangeCb(NULL, NULL);
25056
25057 return WDI_STATUS_SUCCESS;
25058}
25059
Mohit Khanna4a70d262012-09-11 16:30:12 -070025060#ifdef WLAN_FEATURE_11AC
25061WDI_Status
25062WDI_ProcessUpdateVHTOpModeRsp
25063(
25064 WDI_ControlBlockType* pWDICtx,
25065 WDI_EventInfoType* pEventData
25066)
25067{
25068 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25069 WDI_Status wdiStatus;
25070 eHalStatus halStatus;
25071
25072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25073
25074 /*-------------------------------------------------------------------------
25075 Sanity check
25076 -------------------------------------------------------------------------*/
25077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25078 ( NULL == pEventData->pEventData))
25079 {
25080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25081 "%s: Invalid parameters", __FUNCTION__);
25082 WDI_ASSERT(0);
25083 return WDI_STATUS_E_FAILURE;
25084 }
25085 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25086
25087 /*-------------------------------------------------------------------------
25088 Extract response and send it to UMAC
25089 -------------------------------------------------------------------------*/
25090 halStatus = *((eHalStatus*)pEventData->pEventData);
25091 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25092
25093 /*Notify UMAC*/
25094 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25095
25096 return WDI_STATUS_SUCCESS;
25097}
25098#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025099/**
25100 @brief WDI_getHostWlanFeatCaps
25101 WDI API that returns whether the feature passed to it as enum value in
25102 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25103 variable storing host capability bitmap to find this. This can be used by
25104 other moduels to decide certain things like call different APIs based on
25105 whether a particular feature is supported.
25106
25107 @param
25108
25109 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25110
25111 @see
25112 @return
25113 0 - if the feature is NOT supported in host
25114 any non-zero value - if the feature is SUPPORTED in host.
25115*/
25116wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25117{
25118 wpt_uint8 featSupported = 0;
25119 if (gpHostWlanFeatCaps != NULL)
25120 {
25121 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25122 }
25123 else
25124 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025126 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 }
25128 return featSupported;
25129}
25130
25131/**
25132 @brief WDI_getFwWlanFeatCaps
25133 WDI API that returns whether the feature passed to it as enum value in
25134 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25135 variable storing host capability bitmap to find this. This can be used by
25136 other moduels to decide certain things like call different APIs based on
25137 whether a particular feature is supported.
25138
25139 @param
25140
25141 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25142 in wlan_hal_msg.h.
25143
25144 @see
25145 @return
25146 0 - if the feature is NOT supported in FW
25147 any non-zero value - if the feature is SUPPORTED in FW.
25148*/
25149wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25150{
25151 wpt_uint8 featSupported = 0;
25152 if (gpFwWlanFeatCaps != NULL)
25153 {
25154 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25155 }
25156 else
25157 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025159 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025160 }
25161 return featSupported;
25162}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025163
25164#ifdef WLAN_FEATURE_11AC
25165WDI_Status
25166WDI_ProcessUpdateVHTOpModeReq
25167(
25168 WDI_ControlBlockType* pWDICtx,
25169 WDI_EventInfoType* pEventData
25170)
25171{
25172 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25173 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25174 wpt_uint8* pSendBuffer = NULL;
25175 wpt_uint16 usDataOffset = 0;
25176 wpt_uint16 usSendSize = 0;
25177
25178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25179
25180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25181 "%s", __FUNCTION__);
25182
25183 /*-------------------------------------------------------------------------
25184 Sanity check
25185 -------------------------------------------------------------------------*/
25186 if (( NULL == pEventData ) ||
25187 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25188 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25189 {
25190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25191 "%s: Invalid parameters", __FUNCTION__);
25192 WDI_ASSERT(0);
25193 return WDI_STATUS_E_FAILURE;
25194 }
25195
25196 /*-----------------------------------------------------------------------
25197 Get message buffer
25198 -----------------------------------------------------------------------*/
25199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25200 sizeof(WDI_UpdateVHTOpMode),
25201 &pSendBuffer, &usDataOffset, &usSendSize))||
25202 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25203 {
25204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25205 "Unable to get send buffer in update vht opMode req");
25206 WDI_ASSERT(0);
25207 return WDI_STATUS_E_FAILURE;
25208 }
25209
25210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25211 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25212
25213 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25214 sizeof(WDI_UpdateVHTOpMode));
25215
25216 /*-------------------------------------------------------------------------
25217 Send Start Request to HAL
25218 -------------------------------------------------------------------------*/
25219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25220 wdiVHTOpModeCb,
25221 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25222
25223}
25224
25225WDI_Status
25226WDI_UpdateVHTOpModeReq
25227(
25228 WDI_UpdateVHTOpMode *pData,
25229 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25230 void* pUserData
25231)
25232{
25233 WDI_EventInfoType wdiEventData;
25234
25235 /*------------------------------------------------------------------------
25236 Sanity Check
25237 ------------------------------------------------------------------------*/
25238 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25239 {
25240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25241 "WDI API call before module is initialized - Fail request");
25242
25243 return WDI_STATUS_E_NOT_ALLOWED;
25244 }
25245
25246 /*------------------------------------------------------------------------
25247 Fill in Event data and post to the Main FSM
25248 ------------------------------------------------------------------------*/
25249 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25250 wdiEventData.pEventData = pData;
25251 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25252 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25253 wdiEventData.pUserData = pUserData;
25254
25255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25256 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25257
25258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25259
25260}
25261#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025262
25263/**
25264 @brief WDI_TransportChannelDebug -
25265 Display DXE Channel debugging information
25266 User may request to display DXE channel snapshot
25267 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025268
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025269 @param displaySnapshot : Dispaly DXE snapshot option
25270 @param enableStallDetect : Enable stall detect feature
25271 This feature will take effect to data performance
25272 Not integrate till fully verification
25273 @see
25274 @return none
25275*/
25276void WDI_TransportChannelDebug
25277(
25278 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025279 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025280)
25281{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025282 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025283 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025284}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025285/**
25286 @brief WDI_SsrTimerCB
25287 Callback function for SSR timer, if this is called then the graceful
25288 shutdown for Riva did not happen.
25289
25290 @param pUserData : user data to timer
25291
25292 @see
25293 @return none
25294*/
25295void
25296WDI_SsrTimerCB
25297(
25298 void *pUserData
25299)
25300{
25301 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25303
25304 if (NULL == pWDICtx )
25305 {
25306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25307 "%s: Invalid parameters", __FUNCTION__);
25308 WDI_ASSERT(0);
25309 return;
25310 }
25311 wpalRivaSubystemRestart();
25312
25313 return;
25314
25315}/*WDI_SsrTimerCB*/