blob: 23e06dac81a7325cef27d9644ad9737d0c4cda9a [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 Khannac0b992f2012-12-04 15:08:18 -0800110 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
111#ifdef FEATURE_WLAN_TDLS
112 ,TDLS
113#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800114 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Mohit Khannac0b992f2012-12-04 15:08:18 -0800115 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117/*--------------------------------------------------------------------------
118 WLAN DAL State Machine
119 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700120WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700121{
122 /*WDI_INIT_ST*/
123 {{
124 WDI_MainStart, /*WDI_START_EVENT*/
125 NULL, /*WDI_STOP_EVENT*/
126 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
127 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
128 WDI_MainClose, /*WDI_CLOSE_EVENT*/
129 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
130 }},
131
132 /*WDI_STARTED_ST*/
133 {{
134 WDI_MainStartStarted, /*WDI_START_EVENT*/
135 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
136 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
137 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
138 NULL, /*WDI_CLOSE_EVENT*/
139 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
140 }},
141
142 /*WDI_STOPPED_ST*/
143 {{
144 WDI_MainStart, /*WDI_START_EVENT*/
145 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
146 NULL, /*WDI_REQUEST_EVENT*/
147 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
148 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700149 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700150 }},
151
152 /*WDI_BUSY_ST*/
153 {{
154 WDI_MainStartBusy, /*WDI_START_EVENT*/
155 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
156 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
157 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
158 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
159 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
160 }}
161};
162
Jeff Johnsone7245742012-09-05 17:12:55 -0700163/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700164 DAL Request Processing Array - the functions in this table will only be
165 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700166 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700167 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700168WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700169{
170 /*INIT*/
171 WDI_ProcessStartReq, /* WDI_START_REQ */
172 WDI_ProcessStopReq, /* WDI_STOP_REQ */
173 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
174
175 /*SCAN*/
176 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
177 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
178 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
179 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
180
181 /*ASSOCIATION*/
182 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
183 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
184 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
185 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
186 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
187
188 /* Security */
189 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
190 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
191 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
192 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
193
194 /* QoS and BA APIs */
195 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
196 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
197 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
198 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
199 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
200
201 /* Miscellaneous Control APIs */
202 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
203 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
204 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
205 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
206 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
207
208 /*BA APIs*/
209 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
210 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
211
212 /*Beacon processing APIs*/
213 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
214 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
215
216 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
217 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
218 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
219 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
220#ifdef WLAN_FEATURE_P2P
221 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
222#else
223 NULL,
224#endif
225 /* PowerSave APIs */
226 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
227 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
228 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
229 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
230 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
231 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
232 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
233 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
234 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
235 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
236 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
237 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
238 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
239 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
240 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
241 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
242 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
243 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
244 /*NV Download APIs*/
245 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
246 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
247 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
248#ifdef WLAN_FEATURE_VOWIFI_11R
249 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
250#else
251 NULL,
252#endif /* WLAN_FEATURE_VOWIFI_11R */
253 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
254 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
255#ifdef ANI_MANF_DIAG
256 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
257#else
258 NULL,
259#endif /* ANI_MANF_DIAG */
Jeff Johnsone7245742012-09-05 17:12:55 -0700260
261#ifdef FEATURE_OEM_DATA_SUPPORT
262 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
263#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700264 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700265#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700266 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700267
268 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700269
270#ifdef FEATURE_WLAN_SCAN_PNO
271 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
272 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
273 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
274#else
275 NULL,
276 NULL,
277 NULL,
278#endif /* FEATURE_WLAN_SCAN_PNO */
279
280 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700281
Jeff Johnson295189b2012-06-20 16:38:30 -0700282#ifdef WLAN_FEATURE_PACKET_FILTERING
283 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700284 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700285 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700286 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700288 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700289 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700290 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700291#else
292 NULL,
293 NULL,
294 NULL,
295 NULL,
296#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700297 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700298 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
299 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
300
301 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
302#ifdef FEATURE_WLAN_CCX
303 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
304#else
305 NULL,
306#endif
307
308#ifdef WLAN_FEATURE_GTK_OFFLOAD
309 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
310 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
311#else
312 NULL,
313 NULL,
314#endif // WLAN_FEATURE_GTK_OFFLOAD
315
316 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
317 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700318#ifdef WLAN_FEATURE_11AC
319 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
320#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700321 /*-------------------------------------------------------------------------
322 Indications
323 -------------------------------------------------------------------------*/
324 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
325};
326
327
Jeff Johnsone7245742012-09-05 17:12:55 -0700328/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700329 DAL Request Processing Array - the functions in this table will only be
330 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700331 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700332 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700333WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700334{
335 /*INIT*/
336 WDI_ProcessStartRsp, /* WDI_START_RESP */
337 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
338 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
339
340 /*SCAN*/
341 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
342 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
343 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
344 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
345
346 /* ASSOCIATION*/
347 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
348 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
349 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
350 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
351 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
352
353 /* Security */
354 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
355 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
356 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
357 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
358
359 /* QoS and BA APIs */
360 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
361 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
362 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
363 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
364 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
365
366 /* Miscellaneous Control APIs */
367 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
368 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
369 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
370 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
371 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
372
373 /* BA APIs*/
374 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
375 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700376
Jeff Johnson295189b2012-06-20 16:38:30 -0700377 /* IBSS APIs*/
378 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
379 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
380
381 /*Soft AP APIs*/
382 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
383 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
384 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
385 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
386
387 /* PowerSave APIs */
388 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
389 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
390 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
391 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
392 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
393 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
394 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
395 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
396 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
397 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
398 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
399 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
400 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
401 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
402 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
403 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
404 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
405 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700406
Jeff Johnson295189b2012-06-20 16:38:30 -0700407
408 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
409
410 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
411 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
412#ifdef WLAN_FEATURE_VOWIFI_11R
413 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
414#else
415 NULL,
416#endif /* WLAN_FEATURE_VOWIFI_11R */
417 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
418 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700419#ifdef FEATURE_OEM_DATA_SUPPORT
420 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
421#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700422 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700423#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700424 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
425
426#ifdef WLAN_FEATURE_P2P
427 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
428#else
429 NULL,
430#endif
431
432#ifdef ANI_MANF_DIAG
433 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
434#else
435 NULL,
436#endif /* ANI_MANF_DIAG */
437
Jeff Johnsone7245742012-09-05 17:12:55 -0700438 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
439
Jeff Johnson295189b2012-06-20 16:38:30 -0700440#ifdef FEATURE_WLAN_SCAN_PNO
441 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
442 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
443 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
444#else
445 NULL,
446 NULL,
447 NULL,
448#endif // FEATURE_WLAN_SCAN_PNO
449
450 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
451
452 /*---------------------------------------------------------------------
453 Indications
454 ---------------------------------------------------------------------*/
455#ifdef WLAN_FEATURE_PACKET_FILTERING
456 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700457 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700458 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700459 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700460 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700461 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700462 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700463 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700464#else
465 NULL,
466 NULL,
467 NULL,
468 NULL,
469#endif // WLAN_FEATURE_PACKET_FILTERING
470
471 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
472 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
473
474 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
475#ifdef FEATURE_WLAN_CCX
476 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
477#else
478 NULL,
479#endif
480
481#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700482 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
483 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700484#else
485 NULL,
486 NULL,
487#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700488 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
489 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700490#ifdef WLAN_FEATURE_11AC
491 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
492#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700493
494 /*---------------------------------------------------------------------
495 Indications
496 ---------------------------------------------------------------------*/
497 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
498 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
499 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
500 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
501 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
502 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
503
504 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
505
506 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
507
508#ifdef WLAN_FEATURE_P2P
509 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
510#else
511 NULL,
512#endif
513
514#ifdef FEATURE_WLAN_SCAN_PNO
515 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
516#else
517 NULL,
518#endif // FEATURE_WLAN_SCAN_PNO
519
520#ifdef WLAN_WAKEUP_EVENTS
521 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
522#else // WLAN_WAKEUP_EVENTS
523 NULL,
524#endif // WLAN_WAKEUP_EVENTS
525
526 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800527
528#ifdef WLAN_FEATURE_P2P
529 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
530#else
531 NULL,
532#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700533};
534
535
Jeff Johnsone7245742012-09-05 17:12:55 -0700536/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700537 WLAN DAL Global Control Block
538 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700539WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700540static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
541
Jeff Johnsone7245742012-09-05 17:12:55 -0700542const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700543
544/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700545WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700546void* WDI_GET_PAL_CTX( void )
547{
Jeff Johnsone7245742012-09-05 17:12:55 -0700548 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700549}/*WDI_GET_PAL_CTX*/
550
Jeff Johnsone7245742012-09-05 17:12:55 -0700551/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700552 Helper inline converters
553 ============================================================================*/
554/*Convert WDI driver type into HAL driver type*/
555WPT_STATIC WPT_INLINE WDI_Status
556WDI_HAL_2_WDI_STATUS
557(
558 eHalStatus halStatus
559);
560
561/*Convert WDI request type into HAL request type*/
562WPT_STATIC WPT_INLINE tHalHostMsgType
563WDI_2_HAL_REQ_TYPE
564(
565 WDI_RequestEnumType wdiReqType
566);
567
568/*Convert WDI response type into HAL response type*/
569WPT_STATIC WPT_INLINE WDI_ResponseEnumType
570HAL_2_WDI_RSP_TYPE
571(
572 tHalHostMsgType halMsg
573);
574
575/*Convert WDI driver type into HAL driver type*/
576WPT_STATIC WPT_INLINE tDriverType
577WDI_2_HAL_DRV_TYPE
578(
579 WDI_DriverType wdiDriverType
580);
581
582/*Convert WDI stop reason into HAL stop reason*/
583WPT_STATIC WPT_INLINE tHalStopType
584WDI_2_HAL_STOP_REASON
585(
586 WDI_StopType wdiStopType
587);
588
589/*Convert WDI scan mode type into HAL scan mode type*/
590WPT_STATIC WPT_INLINE eHalSysMode
591WDI_2_HAL_SCAN_MODE
592(
593 WDI_ScanMode wdiScanMode
594);
595
596/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700597WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700598WDI_2_HAL_SEC_CH_OFFSET
599(
600 WDI_HTSecondaryChannelOffset wdiSecChOffset
601);
602
603/*Convert WDI BSS type into HAL BSS type*/
604WPT_STATIC WPT_INLINE tSirBssType
605WDI_2_HAL_BSS_TYPE
606(
607 WDI_BssType wdiBSSType
608);
609
610/*Convert WDI NW type into HAL NW type*/
611WPT_STATIC WPT_INLINE tSirNwType
612WDI_2_HAL_NW_TYPE
613(
614 WDI_NwType wdiNWType
615);
616
617/*Convert WDI chanel bonding type into HAL cb type*/
618WPT_STATIC WPT_INLINE ePhyChanBondState
619WDI_2_HAL_CB_STATE
620(
621 WDI_PhyChanBondState wdiCbState
622);
623
624/*Convert WDI chanel bonding type into HAL cb type*/
625WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
626WDI_2_HAL_HT_OPER_MODE
627(
628 WDI_HTOperatingMode wdiHTOperMode
629);
630
631/*Convert WDI mimo PS type into HAL mimo PS type*/
632WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
633WDI_2_HAL_MIMO_PS
634(
635 WDI_HTMIMOPowerSaveState wdiHTOperMode
636);
637
638/*Convert WDI ENC type into HAL ENC type*/
639WPT_STATIC WPT_INLINE tAniEdType
640WDI_2_HAL_ENC_TYPE
641(
642 WDI_EncryptType wdiEncType
643);
644
645/*Convert WDI WEP type into HAL WEP type*/
646WPT_STATIC WPT_INLINE tAniWepType
647WDI_2_HAL_WEP_TYPE
648(
649 WDI_WepType wdiWEPType
650);
651
652/*Convert WDI Link State into HAL Link State*/
653WPT_STATIC WPT_INLINE tSirLinkState
654WDI_2_HAL_LINK_STATE
655(
656 WDI_LinkStateType wdiLinkState
657);
658
Jeff Johnsone7245742012-09-05 17:12:55 -0700659/*Translate a STA Context from WDI into HAL*/
660WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700661void
662WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700663(
Jeff Johnson295189b2012-06-20 16:38:30 -0700664 tConfigStaParams* phalConfigSta,
665 WDI_ConfigStaReqInfoType* pwdiConfigSta
666);
Jeff Johnsone7245742012-09-05 17:12:55 -0700667
668/*Translate a Rate set info from WDI into HAL*/
669WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700670WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700671(
Jeff Johnson295189b2012-06-20 16:38:30 -0700672 tSirMacRateSet* pHalRateSet,
673 WDI_RateSet* pwdiRateSet
674);
675
676/*Translate an EDCA Parameter Record from WDI into HAL*/
677WPT_STATIC WPT_INLINE void
678WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700679(
Jeff Johnson295189b2012-06-20 16:38:30 -0700680 tSirMacEdcaParamRecord* phalEdcaParam,
681 WDI_EdcaParamRecord* pWDIEdcaParam
682);
683
684/*Copy a management frame header from WDI fmt into HAL fmt*/
685WPT_STATIC WPT_INLINE void
686WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
687(
688 tSirMacMgmtHdr* pmacMgmtHdr,
689 WDI_MacMgmtHdr* pwdiMacMgmtHdr
690);
691
692/*Copy config bss parameters from WDI fmt into HAL fmt*/
693WPT_STATIC WPT_INLINE void
694WDI_CopyWDIConfigBSSToHALConfigBSS
695(
696 tConfigBssParams* phalConfigBSS,
697 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
698);
699
Jeff Johnsone7245742012-09-05 17:12:55 -0700700/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700701 pointed to by user data */
702WPT_STATIC WPT_INLINE void
703WDI_ExtractRequestCBFromEvent
704(
705 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700706 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700707 void** ppUserData
708);
709
710wpt_uint8
711WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700712(
Jeff Johnson295189b2012-06-20 16:38:30 -0700713 WDI_ControlBlockType* pWDICtx,
714 WDI_BSSSessionType** ppSession
715);
716
717void
718WDI_AddBcastSTAtoSTATable
719(
720 WDI_ControlBlockType* pWDICtx,
721 WDI_AddStaParams * staParams,
722 wpt_uint16 usBcastStaIdx
723);
724
725WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700726(
Jeff Johnson295189b2012-06-20 16:38:30 -0700727 WDI_ControlBlockType* pWDICtx,
728 WDI_EventInfoType* pEventData
729);
730
731void
732WDI_SetPowerStateCb
733(
734 wpt_status status,
735 unsigned int dxePhyAddr,
736 void *pContext
737);
738
739#define CASE_RETURN_STRING( str ) \
740 case ( ( str ) ): return( #str ); break \
741
742/**
743 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700744
745 @param wdiReqMsgId: WDI Message request Id
746
747 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700748 @return Result of the function call
749*/
750static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
751{
752 switch (wdiReqMsgId)
753 {
754 CASE_RETURN_STRING( WDI_START_REQ );
755 CASE_RETURN_STRING( WDI_STOP_REQ );
756 CASE_RETURN_STRING( WDI_CLOSE_REQ );
757 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
758 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
759 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
760 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
761 CASE_RETURN_STRING( WDI_JOIN_REQ );
762 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
763 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
764 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
765 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
766 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
767 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
768 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
769 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
770 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
771 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
772 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
773 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
774 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
775 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
776 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
777 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
778 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
779 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
780 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
781 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
782 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
783 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
784 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
785 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
786 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
787 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
788 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
789 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
790 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
791 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
792 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
793 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
794 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
795 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
796 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
797 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
798 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
799 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
800 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
801 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
802 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
803 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
804 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
805 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
806 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
807 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
808 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
809 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
810 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
811 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
812 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
813 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700814 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700815 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
816 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
817 #ifdef FEATURE_WLAN_SCAN_PNO
818 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
819 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
820 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
821 #endif
822 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
823 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
824 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
825 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
826 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
827 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
828 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
829 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
830 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
831 default:
832 return "Unknown WDI MessageId";
833 }
834}
835
836
837
838/**
839 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700840
841 @param wdiRespMsgId: WDI Message response Id
842
843 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700844 @return Result of the function call
845*/
846static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
847{
848 switch (wdiRespMsgId)
849 {
850 CASE_RETURN_STRING( WDI_START_RESP );
851 CASE_RETURN_STRING( WDI_STOP_RESP );
852 CASE_RETURN_STRING( WDI_CLOSE_RESP );
853 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
854 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
855 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
856 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
857 CASE_RETURN_STRING( WDI_JOIN_RESP );
858 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
859 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
860 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
861 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
862 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
863 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
864 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
865 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
866 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
867 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
868 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
869 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
870 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
871 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
872 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
873 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
874 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
875 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
876 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
877 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
878 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
879 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
880 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
881 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
882 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
883 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
884 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
885 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
886 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
887 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
888 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
889 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
890 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
891 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
892 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
893 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
894 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
895 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
896 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
897 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
898 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
899 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
900 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
901 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
902 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
903 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
904 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
905 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
906 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
907 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
908 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
909 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700910 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700911 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
912 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
913 #ifdef FEATURE_WLAN_SCAN_PNO
914 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
915 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
916 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
917 #endif
918 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
919 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
920 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
921 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
922 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
923 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
924 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
925 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
926 default:
927 return "Unknown WDI MessageId";
928 }
929}
930
931/**
932 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700933
934 @param halStatusId: HAL status Id
935
936 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700937 @return Result of the function call
938*/
939static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
940{
941 switch (halStatusId)
942 {
943 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
944 CASE_RETURN_STRING( PAL_STATUS_INVAL );
945 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
946 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
947 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
948 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
949 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
950 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
951 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
952 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
953 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
954 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
955 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
956 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
957 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
958 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
959 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
960 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
961 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
962 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
963 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
964 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
965 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
966 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
967 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
968 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
969 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
970 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
971 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
972 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
973 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
974 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
975 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
976 default:
977 return "Unknown HAL status";
978 }
979}
980
Jeff Johnsone7245742012-09-05 17:12:55 -0700981/*========================================================================
982
Jeff Johnson295189b2012-06-20 16:38:30 -0700983 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -0700984
Jeff Johnson295189b2012-06-20 16:38:30 -0700985==========================================================================*/
986
987/**
988 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -0700989
Jeff Johnson295189b2012-06-20 16:38:30 -0700990 DAL will allocate all the resources it needs. It will open PAL, it will also
991 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -0700992 DXE/SMD or any other drivers that they need.
993
Jeff Johnson295189b2012-06-20 16:38:30 -0700994 @param pOSContext: pointer to the OS context provided by the UMAC
995 will be passed on to PAL on Open
996 ppWDIGlobalCtx: output pointer of Global Context
997 pWdiDevCapability: output pointer of device capability
998
999 @return Result of the function call
1000*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001002WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001003(
Jeff Johnson295189b2012-06-20 16:38:30 -07001004 void* pOSContext,
1005 void** ppWDIGlobalCtx,
1006 WDI_DeviceCapabilityType* pWdiDevCapability,
1007 unsigned int driverType
1008)
1009{
1010 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001011 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001012 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001013 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1015
1016 /*---------------------------------------------------------------------
1017 Sanity check
1018 ---------------------------------------------------------------------*/
1019 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1020 {
1021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1022 "Invalid input parameters in WDI_Init");
1023
Jeff Johnsone7245742012-09-05 17:12:55 -07001024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 }
1026
1027 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001028 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001029 ---------------------------------------------------------------------*/
1030 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1031 {
1032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1033 "WDI module already initialized - return");
1034
Jeff Johnsone7245742012-09-05 17:12:55 -07001035 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001036 }
1037
1038 /*Module is now initialized - this flag is to ensure the fact that multiple
1039 init will not happen on WDI
1040 !! - potential race does exist because read and set are not atomic,
1041 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001042 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001043
1044 /*Setup the control block */
1045 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001046 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001047
1048 /*Setup the STA Table*/
1049 wdiStatus = WDI_STATableInit(&gWDICb);
1050 if ( WDI_STATUS_SUCCESS != wdiStatus )
1051 {
1052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1053 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001054 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001055 goto fail_STATableInit;
1056 }
1057
1058 /*------------------------------------------------------------------------
1059 Open the PAL
1060 ------------------------------------------------------------------------*/
1061 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1062 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1063 {
1064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1065 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001066 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001067 goto fail_wpalOpen;
1068 }
1069
1070 /*Initialize main synchro mutex - it will be used to ensure integrity of
1071 the main WDI Control Block*/
1072 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1073 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1074 {
1075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1076 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001077 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001078 goto fail_mutex;
1079 }
1080
1081 /*Initialize the response timer - it will be used to time all messages
1082 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001083 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1084 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001085 &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 response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001090 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001091 goto fail_timer;
1092 }
1093
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001094 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1095 WDI_SsrTimerCB,
1096 &gWDICb);
1097 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1098 {
1099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1100 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001101 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001102 goto fail_timer2;
1103 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001104 /* Initialize the WDI Pending Request Queue*/
1105 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1106 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1107 {
1108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1109 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001110 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001111 goto fail_pend_queue;
1112 }
1113
1114 /*Init WDI Pending Assoc Id Queue */
1115 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1116 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1117 {
1118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1119 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001120 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001121 goto fail_assoc_queue;
1122 }
1123
1124 /*Initialize the BSS sessions pending Queue */
1125 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1126 {
1127 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1128 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1129 {
1130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1131 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001132 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001133 goto fail_bss_queue;
1134 }
1135 }
1136
1137 /*Indicate the control block is sufficiently initialized for callbacks*/
1138 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1139
1140 /*------------------------------------------------------------------------
1141 Initialize the Data Path Utility Module
1142 ------------------------------------------------------------------------*/
1143 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1144 if ( WDI_STATUS_SUCCESS != wdiStatus )
1145 {
1146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1147 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001148 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001149 goto fail_dp_util_init;
1150 }
1151
1152 /* Init Set power state event */
1153 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001154 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001155 {
1156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1157 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001158 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001159 goto fail_power_event;
1160 }
1161
1162 /* Init WCTS action event */
1163 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001164 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001165 {
1166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1167 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001168 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001169 goto fail_wcts_event;
1170 }
1171
1172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001173 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001174 ------------------------------------------------------------------------*/
1175 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1176 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001177 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001178 wctsCBs.wctsRxMsgCBData = &gWDICb;
1179
Jeff Johnsone7245742012-09-05 17:12:55 -07001180 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001181 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001182 WDI_CT_CHANNEL_SIZE,
1183 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001184
1185 if ( NULL == gWDICb.wctsHandle )
1186 {
1187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001188 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001189 goto fail_wcts_open;
1190 }
1191
1192 gWDICb.driverMode = (tDriverType)driverType;
1193 /* FTM mode not need to open Transport Driver */
1194 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001195 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001196 /*------------------------------------------------------------------------
1197 Open the Data Transport
1198 ------------------------------------------------------------------------*/
1199 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1200 {
1201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001202 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001203 goto fail_wdts_open;
1204 }
1205 }
1206
1207 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001208 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001209
1210 /*Send the context as a ptr to the global WDI Control Block*/
1211 *ppWDIGlobalCtx = &gWDICb;
1212
1213 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001214 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001215 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1216 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1217 return WDI_STATUS_SUCCESS;
1218
1219 /* ERROR handlers
1220 Undo everything that completed successfully */
1221
1222 fail_wdts_open:
1223 {
1224 wpt_status eventStatus;
1225
1226 /* Closing WCTS in this scenario is tricky since it has to close
1227 the SMD channel and then we get notified asynchronously when
1228 the channel has been closed. So we take some of the logic from
1229 the "normal" close procedure in WDI_Close()
1230 */
1231
1232 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001233 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001234 {
1235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001236 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001237 }
1238
1239 WCTS_CloseTransport(gWDICb.wctsHandle);
1240
1241 /* Wait for WCTS to close the control transport. If we were able
1242 to reset the event flag, then we'll wait for the event,
1243 otherwise we'll wait for a maximum amount of time required for
1244 the channel to be closed */
1245 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1246 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001247 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001248 WDI_WCTS_ACTION_TIMEOUT);
1249 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1250 {
1251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001252 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001253 }
1254 }
1255 else
1256 {
1257 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1258 }
1259 }
1260 fail_wcts_open:
1261 wpalEventDelete(&gWDICb.wctsActionEvent);
1262 fail_wcts_event:
1263 wpalEventDelete(&gWDICb.setPowerStateEvent);
1264 fail_power_event:
1265 WDI_DP_UtilsExit(&gWDICb);
1266 fail_dp_util_init:
1267 gWDICb.magic = 0;
1268 fail_bss_queue:
1269 /* entries 0 thru i-1 were successfully initialized */
1270 while (0 < i)
1271 {
1272 i--;
1273 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1274 }
1275 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1276 fail_assoc_queue:
1277 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1278 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001279 wpalTimerDelete(&gWDICb.ssrTimer);
1280 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001281 wpalTimerDelete(&gWDICb.wptResponseTimer);
1282 fail_timer:
1283 wpalMutexDelete(&gWDICb.wptMutex);
1284 fail_mutex:
1285 wpalClose(gWDICb.pPALContext);
1286 fail_wpalOpen:
1287 WDI_STATableClose(&gWDICb);
1288 fail_STATableInit:
1289 gWDIInitialized = eWLAN_PAL_FALSE;
1290
1291 return WDI_STATUS_E_FAILURE;
1292
1293}/*WDI_Init*/;
1294
1295/**
1296 @brief WDI_Start will be called when the upper MAC is ready to
1297 commence operation with the WLAN Device. Upon the call
1298 of this API the WLAN DAL will pack and send a HAL Start
1299 message to the lower RIVA sub-system if the SMD channel
1300 has been fully opened and the RIVA subsystem is up.
1301
1302 If the RIVA sub-system is not yet up and running DAL
1303 will queue the request for Open and will wait for the
1304 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001305 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001306
1307 WDI_Init must have been called.
1308
Jeff Johnsone7245742012-09-05 17:12:55 -07001309 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001310 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001311
Jeff Johnson295189b2012-06-20 16:38:30 -07001312 wdiStartRspCb: callback for passing back the response of
1313 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001314
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001316 callback
1317
Jeff Johnson295189b2012-06-20 16:38:30 -07001318 @see WDI_Start
1319 @return Result of the function call
1320*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001321WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001322WDI_Start
1323(
1324 WDI_StartReqParamsType* pwdiStartParams,
1325 WDI_StartRspCb wdiStartRspCb,
1326 void* pUserData
1327)
1328{
1329 WDI_EventInfoType wdiEventData;
1330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1331
1332 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001333 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001334 ------------------------------------------------------------------------*/
1335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1336 {
1337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1338 "WDI API call before module is initialized - Fail request");
1339
Jeff Johnsone7245742012-09-05 17:12:55 -07001340 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001341 }
1342
1343 /*------------------------------------------------------------------------
1344 Fill in Event data and post to the Main FSM
1345 ------------------------------------------------------------------------*/
1346 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001347 wdiEventData.pEventData = pwdiStartParams;
1348 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1349 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001350 wdiEventData.pUserData = pUserData;
1351
1352 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1353
1354}/*WDI_Start*/
1355
1356/**
1357 @brief WDI_Stop will be called when the upper MAC is ready to
1358 stop any operation with the WLAN Device. Upon the call
1359 of this API the WLAN DAL will pack and send a HAL Stop
1360 message to the lower RIVA sub-system if the DAL Core is
1361 in started state.
1362
1363 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001364
1365 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001366
1367 WDI_Start must have been called.
1368
Jeff Johnsone7245742012-09-05 17:12:55 -07001369 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001370 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001371
Jeff Johnson295189b2012-06-20 16:38:30 -07001372 wdiStopRspCb: callback for passing back the response of
1373 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001374
Jeff Johnson295189b2012-06-20 16:38:30 -07001375 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001376 callback
1377
Jeff Johnson295189b2012-06-20 16:38:30 -07001378 @see WDI_Start
1379 @return Result of the function call
1380*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001381WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001382WDI_Stop
1383(
1384 WDI_StopReqParamsType* pwdiStopParams,
1385 WDI_StopRspCb wdiStopRspCb,
1386 void* pUserData
1387)
1388{
1389 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001390 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1392
1393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001394 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001395 ------------------------------------------------------------------------*/
1396 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1397 {
1398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1399 "WDI API call before module is initialized - Fail request");
1400
Jeff Johnsone7245742012-09-05 17:12:55 -07001401 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001402 }
1403
Jeff Johnson43971f52012-07-17 12:26:56 -07001404 /*Access to the global state must be locked before cleaning */
1405 wpalMutexAcquire(&pWDICtx->wptMutex);
1406
1407 /*Clear all pending request*/
1408 WDI_ClearPendingRequests(pWDICtx);
1409
1410 /*We have completed cleaning unlock now*/
1411 wpalMutexRelease(&pWDICtx->wptMutex);
1412
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 /* Free the global variables */
1414 wpalMemoryFree(gpHostWlanFeatCaps);
1415 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001416 gpHostWlanFeatCaps = NULL;
1417 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001418
1419 /*------------------------------------------------------------------------
1420 Fill in Event data and post to the Main FSM
1421 ------------------------------------------------------------------------*/
1422 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001423 wdiEventData.pEventData = pwdiStopParams;
1424 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1425 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001426 wdiEventData.pUserData = pUserData;
1427
1428 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1429
1430}/*WDI_Stop*/
1431
1432
1433
1434/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001435 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 needs to interact with DAL. DAL will free its control
1437 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001438
1439 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001440
1441 WDI_Stop must have been called.
1442
1443 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001444
Jeff Johnson295189b2012-06-20 16:38:30 -07001445 @see WDI_Stop
1446 @return Result of the function call
1447*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001448WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001449WDI_Close
1450(
1451 void
1452)
1453{
1454 wpt_uint8 i;
1455 WDI_EventInfoType wdiEventData;
1456 wpt_status wptStatus;
1457 wpt_status eventStatus;
1458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1459
1460 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001461 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001462 ------------------------------------------------------------------------*/
1463 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1464 {
1465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1466 "WDI API call before module is initialized - Fail request");
1467
Jeff Johnsone7245742012-09-05 17:12:55 -07001468 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001469 }
1470
1471 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1472 (the control transport will be closed by the FSM and we'll want
1473 to wait until that completes)*/
1474 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001475 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001476 {
1477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001478 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001479 /* fall through and try to finish closing via the FSM */
1480 }
1481
1482 /*------------------------------------------------------------------------
1483 Fill in Event data and post to the Main FSM
1484 ------------------------------------------------------------------------*/
1485 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001486 wdiEventData.pEventData = NULL;
1487 wdiEventData.uEventDataSize = 0;
1488 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001489 wdiEventData.pUserData = NULL;
1490
1491 gWDIInitialized = eWLAN_PAL_FALSE;
1492
1493 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1494
1495 /*Wait for WCTS to close the control transport
1496 (but only if we were able to reset the event flag*/
1497 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1498 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001499 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001500 WDI_WCTS_ACTION_TIMEOUT);
1501 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1502 {
1503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001504 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001505 }
1506 }
1507
1508 /* Destroy the WCTS action event */
1509 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1510 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1511 {
1512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1513 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001514 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001515 }
1516
1517 /* Destroy the Set Power State event */
1518 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1519 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1520 {
1521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1522 "WDI Close failed to destroy an event");
1523
Jeff Johnsone7245742012-09-05 17:12:55 -07001524 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 }
1526
1527 /*------------------------------------------------------------------------
1528 Closes the Data Path Utility Module
1529 ------------------------------------------------------------------------*/
1530 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1531 {
1532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1533 "WDI Init failed to close the DP Util Module");
1534
Jeff Johnsone7245742012-09-05 17:12:55 -07001535 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001536 }
1537
1538 /*destroy the BSS sessions pending Queue */
1539 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1540 {
1541 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1542 }
1543
1544 /* destroy the WDI Pending Assoc Id Request Queue*/
1545 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1546
1547 /* destroy the WDI Pending Request Queue*/
1548 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001549
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 /*destroy the response timer */
1551 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1552
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001553 /*destroy the SSR timer */
1554 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1555
Jeff Johnson295189b2012-06-20 16:38:30 -07001556 /*invalidate the main synchro mutex */
1557 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1558 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1559 {
1560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1561 "Failed to delete mutex %d", wptStatus);
1562 WDI_ASSERT(0);
1563 }
1564
1565 /*Clear control block. note that this will clear the "magic"
1566 which will inhibit all asynchronous callbacks*/
1567 WDI_CleanCB(&gWDICb);
1568
1569 return wptStatus;
1570
1571}/*WDI_Close*/
1572
1573/**
1574 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1575 This will do most of the WDI stop & close
1576 operations without doing any handshake with Riva
1577
1578 This will also make sure that the control transport
1579 will NOT be closed.
1580
1581 This request will not be queued.
1582
1583
1584 WDI_Start must have been called.
1585
1586 @param closeTransport: Close control channel if this is set
1587
1588 @return Result of the function call
1589*/
1590WDI_Status
1591WDI_Shutdown
1592(
1593 wpt_boolean closeTransport
1594)
1595{
1596 WDI_EventInfoType wdiEventData;
1597 wpt_status wptStatus;
1598 int i = 0;
1599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1600
1601 /*------------------------------------------------------------------------
1602 Sanity Check
1603 ------------------------------------------------------------------------*/
1604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1605 {
1606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1607 "WDI API call before module is initialized - Fail request");
1608
1609 return WDI_STATUS_E_NOT_ALLOWED;
1610 }
1611
1612 /*------------------------------------------------------------------------
1613 Fill in Event data and post to the Main FSM
1614 ------------------------------------------------------------------------*/
1615 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1616 wdiEventData.pEventData = NULL;
1617 wdiEventData.uEventDataSize = 0;
1618
1619 /* Shutdown will not be queued, if the state is busy timer will be
1620 * stopped & this message will be processed.*/
1621 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1622 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1623 {
1624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001625 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001626 }
1627 /* Destroy the Set Power State event */
1628 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1629 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1630 {
1631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1632 "WDI Close failed to destroy an event");
1633
1634 WDI_ASSERT(0);
1635 }
1636 /*------------------------------------------------------------------------
1637 Closes the Data Path Utility Module
1638 ------------------------------------------------------------------------*/
1639 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1642 "WDI Init failed to close the DP Util Module");
1643
1644 WDI_ASSERT(0);
1645 }
1646 if ( closeTransport )
1647 {
1648 /* Close control transport, called from module unload */
1649 WCTS_CloseTransport(gWDICb.wctsHandle);
1650 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001651 else
1652 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001653 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001654 the pending messages in the transport queue */
1655 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1656 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001657 /*destroy the BSS sessions pending Queue */
1658 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1659 {
1660 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1661 }
1662
1663 /* destroy the WDI Pending Assoc Id Request Queue*/
1664 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1665 /* destroy the WDI Pending Request Queue*/
1666 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1667 /*destroy the response timer */
1668 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001669 /*destroy the SSR timer */
1670 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001671
1672 /*invalidate the main synchro mutex */
1673 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1674 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1675 {
1676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001677 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001678 WDI_ASSERT(0);
1679 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001680 /* Free the global variables */
1681 wpalMemoryFree(gpHostWlanFeatCaps);
1682 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001683 gpHostWlanFeatCaps = NULL;
1684 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001685 /*Clear control block. note that this will clear the "magic"
1686 which will inhibit all asynchronous callbacks*/
1687 WDI_CleanCB(&gWDICb);
1688 return wptStatus;
1689
1690}/*WDI_Shutdown*/
1691
1692
Jeff Johnsone7245742012-09-05 17:12:55 -07001693/*========================================================================
1694
Jeff Johnson295189b2012-06-20 16:38:30 -07001695 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001696
Jeff Johnson295189b2012-06-20 16:38:30 -07001697==========================================================================*/
1698
1699/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001700 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001701 the WLAN Device to get ready for a scan procedure. Upon
1702 the call of this API the WLAN DAL will pack and send a
1703 HAL Init Scan request message to the lower RIVA
1704 sub-system if DAL is in state STARTED.
1705
1706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001708
1709 WDI_Start must have been called.
1710
1711 @param wdiInitScanParams: the init scan parameters as specified
1712 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001713
Jeff Johnson295189b2012-06-20 16:38:30 -07001714 wdiInitScanRspCb: callback for passing back the response
1715 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001716
Jeff Johnson295189b2012-06-20 16:38:30 -07001717 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001718 callback
1719
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 @see WDI_Start
1721 @return Result of the function call
1722*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001724WDI_InitScanReq
1725(
1726 WDI_InitScanReqParamsType* pwdiInitScanParams,
1727 WDI_InitScanRspCb wdiInitScanRspCb,
1728 void* pUserData
1729)
1730{
1731 WDI_EventInfoType wdiEventData;
1732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1733
1734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 ------------------------------------------------------------------------*/
1737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1738 {
1739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1740 "WDI API call before module is initialized - Fail request");
1741
Jeff Johnsone7245742012-09-05 17:12:55 -07001742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001743 }
1744
1745 /*------------------------------------------------------------------------
1746 Fill in Event data and post to the Main FSM
1747 ------------------------------------------------------------------------*/
1748 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001749 wdiEventData.pEventData = pwdiInitScanParams;
1750 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1751 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001752 wdiEventData.pUserData = pUserData;
1753
1754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1755
1756}/*WDI_InitScanReq*/
1757
1758/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001759 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 wishes to change the Scan channel on the WLAN Device.
1761 Upon the call of this API the WLAN DAL will pack and
1762 send a HAL Start Scan request message to the lower RIVA
1763 sub-system if DAL is in state STARTED.
1764
1765 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001766 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001767
1768 WDI_InitScanReq must have been called.
1769
Jeff Johnsone7245742012-09-05 17:12:55 -07001770 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001771 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001772
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 wdiStartScanRspCb: callback for passing back the
1774 response of the start scan operation received from the
1775 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001776
Jeff Johnson295189b2012-06-20 16:38:30 -07001777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001778 callback
1779
Jeff Johnson295189b2012-06-20 16:38:30 -07001780 @see WDI_InitScanReq
1781 @return Result of the function call
1782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001784WDI_StartScanReq
1785(
1786 WDI_StartScanReqParamsType* pwdiStartScanParams,
1787 WDI_StartScanRspCb wdiStartScanRspCb,
1788 void* pUserData
1789)
1790{
1791 WDI_EventInfoType wdiEventData;
1792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1793
1794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 ------------------------------------------------------------------------*/
1797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1798 {
1799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1800 "WDI API call before module is initialized - Fail request");
1801
Jeff Johnsone7245742012-09-05 17:12:55 -07001802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001803 }
1804
1805 /*------------------------------------------------------------------------
1806 Fill in Event data and post to the Main FSM
1807 ------------------------------------------------------------------------*/
1808 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001809 wdiEventData.pEventData = pwdiStartScanParams;
1810 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1811 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001812 wdiEventData.pUserData = pUserData;
1813
1814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1815
1816}/*WDI_StartScanReq*/
1817
1818
1819/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001820 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001821 wants to end scanning for a particular channel that it
1822 had set before by calling Scan Start on the WLAN Device.
1823 Upon the call of this API the WLAN DAL will pack and
1824 send a HAL End Scan request message to the lower RIVA
1825 sub-system if DAL is in state STARTED.
1826
1827 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001828 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001829
1830 WDI_StartScanReq must have been called.
1831
Jeff Johnsone7245742012-09-05 17:12:55 -07001832 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001833 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001834
Jeff Johnson295189b2012-06-20 16:38:30 -07001835 wdiEndScanRspCb: callback for passing back the response
1836 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001837
Jeff Johnson295189b2012-06-20 16:38:30 -07001838 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001839 callback
1840
Jeff Johnson295189b2012-06-20 16:38:30 -07001841 @see WDI_StartScanReq
1842 @return Result of the function call
1843*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001844WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001845WDI_EndScanReq
1846(
1847 WDI_EndScanReqParamsType* pwdiEndScanParams,
1848 WDI_EndScanRspCb wdiEndScanRspCb,
1849 void* pUserData
1850)
1851{
1852 WDI_EventInfoType wdiEventData;
1853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1854
1855 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001856 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001857 ------------------------------------------------------------------------*/
1858 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1859 {
1860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1861 "WDI API call before module is initialized - Fail request");
1862
Jeff Johnsone7245742012-09-05 17:12:55 -07001863 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001864 }
1865
1866 /*------------------------------------------------------------------------
1867 Fill in Event data and post to the Main FSM
1868 ------------------------------------------------------------------------*/
1869 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001870 wdiEventData.pEventData = pwdiEndScanParams;
1871 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1872 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 wdiEventData.pUserData = pUserData;
1874
1875 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1876
1877}/*WDI_EndScanReq*/
1878
1879
1880/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001881 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001882 completed the scan process on the WLAN Device. Upon the
1883 call of this API the WLAN DAL will pack and send a HAL
1884 Finish Scan Request request message to the lower RIVA
1885 sub-system if DAL is in state STARTED.
1886
1887 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001888 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001889
1890 WDI_InitScanReq must have been called.
1891
Jeff Johnsone7245742012-09-05 17:12:55 -07001892 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001893 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001894
Jeff Johnson295189b2012-06-20 16:38:30 -07001895 wdiFinishScanRspCb: callback for passing back the
1896 response of the finish scan operation received from the
1897 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001898
Jeff Johnson295189b2012-06-20 16:38:30 -07001899 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001900 callback
1901
Jeff Johnson295189b2012-06-20 16:38:30 -07001902 @see WDI_InitScanReq
1903 @return Result of the function call
1904*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001905WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001906WDI_FinishScanReq
1907(
1908 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1909 WDI_FinishScanRspCb wdiFinishScanRspCb,
1910 void* pUserData
1911)
1912{
1913 WDI_EventInfoType wdiEventData;
1914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1915
1916 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001917 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001918 ------------------------------------------------------------------------*/
1919 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1920 {
1921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1922 "WDI API call before module is initialized - Fail request");
1923
Jeff Johnsone7245742012-09-05 17:12:55 -07001924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001925 }
1926
1927 /*------------------------------------------------------------------------
1928 Fill in Event data and post to the Main FSM
1929 ------------------------------------------------------------------------*/
1930 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001931 wdiEventData.pEventData = pwdiFinishScanParams;
1932 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1933 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 wdiEventData.pUserData = pUserData;
1935
1936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1937
1938}/*WDI_FinishScanReq*/
1939
Jeff Johnsone7245742012-09-05 17:12:55 -07001940/*========================================================================
1941
Jeff Johnson295189b2012-06-20 16:38:30 -07001942 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001943
Jeff Johnson295189b2012-06-20 16:38:30 -07001944==========================================================================*/
1945
1946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 to start an association procedure to a BSS. Upon the
1949 call of this API the WLAN DAL will pack and send a HAL
1950 Join request message to the lower RIVA sub-system if
1951 DAL is in state STARTED.
1952
1953 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001954 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001955
1956 WDI_Start must have been called.
1957
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001960
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 wdiJoinRspCb: callback for passing back the response of
1962 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001963
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 callback
1966
Jeff Johnson295189b2012-06-20 16:38:30 -07001967 @see WDI_Start
1968 @return Result of the function call
1969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001971WDI_JoinReq
1972(
1973 WDI_JoinReqParamsType* pwdiJoinParams,
1974 WDI_JoinRspCb wdiJoinRspCb,
1975 void* pUserData
1976)
1977{
1978 WDI_EventInfoType wdiEventData;
1979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1980
1981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 ------------------------------------------------------------------------*/
1984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1985 {
1986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1987 "WDI API call before module is initialized - Fail request");
1988
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001990 }
1991
1992 /*------------------------------------------------------------------------
1993 Fill in Event data and post to the Main FSM
1994 ------------------------------------------------------------------------*/
1995 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001996 wdiEventData.pEventData = pwdiJoinParams;
1997 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
1998 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001999 wdiEventData.pUserData = pUserData;
2000
2001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2002
2003}/*WDI_JoinReq*/
2004
2005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002006 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002007 wishes to configure the newly acquired or in process of
2008 being acquired BSS to the HW . Upon the call of this API
2009 the WLAN DAL will pack and send a HAL Config BSS request
2010 message to the lower RIVA sub-system if DAL is in state
2011 STARTED.
2012
2013 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002014 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002015
2016 WDI_JoinReq must have been called.
2017
Jeff Johnsone7245742012-09-05 17:12:55 -07002018 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002020
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 wdiConfigBSSRspCb: callback for passing back the
2022 response of the config BSS operation received from the
2023 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002024
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002026 callback
2027
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 @see WDI_JoinReq
2029 @return Result of the function call
2030*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002032WDI_ConfigBSSReq
2033(
2034 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2035 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2036 void* pUserData
2037)
2038{
2039 WDI_EventInfoType wdiEventData;
2040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2041
2042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 ------------------------------------------------------------------------*/
2045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2046 {
2047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2048 "WDI API call before module is initialized - Fail request");
2049
Jeff Johnsone7245742012-09-05 17:12:55 -07002050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002051 }
2052
2053 /*------------------------------------------------------------------------
2054 Fill in Event data and post to the Main FSM
2055 ------------------------------------------------------------------------*/
2056 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002057 wdiEventData.pEventData = pwdiConfigBSSParams;
2058 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2059 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 wdiEventData.pUserData = pUserData;
2061
2062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2063
2064}/*WDI_ConfigBSSReq*/
2065
2066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002067 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002068 disassociating from the BSS and wishes to notify HW.
2069 Upon the call of this API the WLAN DAL will pack and
2070 send a HAL Del BSS request message to the lower RIVA
2071 sub-system if DAL is in state STARTED.
2072
2073 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002074 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002075
2076 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2077
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002080
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 wdiDelBSSRspCb: callback for passing back the response
2082 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002083
Jeff Johnson295189b2012-06-20 16:38:30 -07002084 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002085 callback
2086
2087 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002088 @return Result of the function call
2089*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002091WDI_DelBSSReq
2092(
2093 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2094 WDI_DelBSSRspCb wdiDelBSSRspCb,
2095 void* pUserData
2096)
2097{
2098 WDI_EventInfoType wdiEventData;
2099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2100
2101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002103 ------------------------------------------------------------------------*/
2104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2105 {
2106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2107 "WDI API call before module is initialized - Fail request");
2108
Jeff Johnsone7245742012-09-05 17:12:55 -07002109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002110 }
2111
2112 /*------------------------------------------------------------------------
2113 Fill in Event data and post to the Main FSM
2114 ------------------------------------------------------------------------*/
2115 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002116 wdiEventData.pEventData = pwdiDelBSSParams;
2117 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2118 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002119 wdiEventData.pUserData = pUserData;
2120
2121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2122
2123}/*WDI_DelBSSReq*/
2124
2125/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002126 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002127 associated to a BSS and wishes to configure HW for
2128 associated state. Upon the call of this API the WLAN DAL
2129 will pack and send a HAL Post Assoc request message to
2130 the lower RIVA sub-system if DAL is in state STARTED.
2131
2132 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002133 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002134
2135 WDI_JoinReq must have been called.
2136
2137 @param wdiPostAssocReqParams: the assoc parameters as specified
2138 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002139
Jeff Johnson295189b2012-06-20 16:38:30 -07002140 wdiPostAssocRspCb: callback for passing back the
2141 response of the post assoc operation received from the
2142 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002143
Jeff Johnson295189b2012-06-20 16:38:30 -07002144 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002145 callback
2146
Jeff Johnson295189b2012-06-20 16:38:30 -07002147 @see WDI_JoinReq
2148 @return Result of the function call
2149*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002150WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002151WDI_PostAssocReq
2152(
2153 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2154 WDI_PostAssocRspCb wdiPostAssocRspCb,
2155 void* pUserData
2156)
2157{
2158 WDI_EventInfoType wdiEventData;
2159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2160
2161 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002162 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002163 ------------------------------------------------------------------------*/
2164 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2165 {
2166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2167 "WDI API call before module is initialized - Fail request");
2168
Jeff Johnsone7245742012-09-05 17:12:55 -07002169 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 }
2171
2172 /*------------------------------------------------------------------------
2173 Fill in Event data and post to the Main FSM
2174 ------------------------------------------------------------------------*/
2175 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002176 wdiEventData.pEventData = pwdiPostAssocReqParams;
2177 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2178 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 wdiEventData.pUserData = pUserData;
2180
2181 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2182
2183}/*WDI_PostAssocReq*/
2184
2185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002187 association with another STA has ended and the station
2188 must be deleted from HW. Upon the call of this API the
2189 WLAN DAL will pack and send a HAL Del STA request
2190 message to the lower RIVA sub-system if DAL is in state
2191 STARTED.
2192
2193 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002194 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002195
2196 WDI_PostAssocReq must have been called.
2197
Jeff Johnsone7245742012-09-05 17:12:55 -07002198 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002200
Jeff Johnson295189b2012-06-20 16:38:30 -07002201 wdiDelSTARspCb: callback for passing back the response
2202 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002203
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002205 callback
2206
Jeff Johnson295189b2012-06-20 16:38:30 -07002207 @see WDI_PostAssocReq
2208 @return Result of the function call
2209*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002210WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002211WDI_DelSTAReq
2212(
2213 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2214 WDI_DelSTARspCb wdiDelSTARspCb,
2215 void* pUserData
2216)
2217{
2218 WDI_EventInfoType wdiEventData;
2219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2220
2221 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002222 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002223 ------------------------------------------------------------------------*/
2224 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2225 {
2226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2227 "WDI API call before module is initialized - Fail request");
2228
Jeff Johnsone7245742012-09-05 17:12:55 -07002229 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 }
2231
2232 /*------------------------------------------------------------------------
2233 Fill in Event data and post to the Main FSM
2234 ------------------------------------------------------------------------*/
2235 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002236 wdiEventData.pEventData = pwdiDelSTAParams;
2237 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2238 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002239 wdiEventData.pUserData = pUserData;
2240
2241 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2242
2243}/*WDI_DelSTAReq*/
2244
Jeff Johnsone7245742012-09-05 17:12:55 -07002245/*========================================================================
2246
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002248
Jeff Johnson295189b2012-06-20 16:38:30 -07002249==========================================================================*/
2250
2251/**
2252 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2253 install a BSS encryption key on the HW. Upon the call of this
2254 API the WLAN DAL will pack and send a Set BSS Key request
2255 message to the lower RIVA sub-system if DAL is in state
2256 STARTED.
2257
2258 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002259 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002260
2261 WDI_PostAssocReq must have been called.
2262
Jeff Johnsone7245742012-09-05 17:12:55 -07002263 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002264 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002265
Jeff Johnson295189b2012-06-20 16:38:30 -07002266 wdiSetBSSKeyRspCb: callback for passing back the
2267 response of the set BSS Key operation received from the
2268 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002269
Jeff Johnson295189b2012-06-20 16:38:30 -07002270 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 callback
2272
Jeff Johnson295189b2012-06-20 16:38:30 -07002273 @see WDI_PostAssocReq
2274 @return Result of the function call
2275*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002276WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002277WDI_SetBSSKeyReq
2278(
2279 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2280 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2281 void* pUserData
2282)
2283{
2284 WDI_EventInfoType wdiEventData;
2285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2286
2287 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002289 ------------------------------------------------------------------------*/
2290 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2291 {
2292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2293 "WDI API call before module is initialized - Fail request");
2294
Jeff Johnsone7245742012-09-05 17:12:55 -07002295 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002296 }
2297
2298 /*------------------------------------------------------------------------
2299 Fill in Event data and post to the Main FSM
2300 ------------------------------------------------------------------------*/
2301 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002302 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2303 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2304 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 wdiEventData.pUserData = pUserData;
2306
2307 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2308
2309}/*WDI_SetBSSKeyReq*/
2310
2311/**
2312 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2313 uninstall a BSS key from HW. Upon the call of this API the
2314 WLAN DAL will pack and send a HAL Remove BSS Key request
2315 message to the lower RIVA sub-system if DAL is in state
2316 STARTED.
2317
2318 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002319 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002320
2321 WDI_SetBSSKeyReq must have been called.
2322
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002325
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 wdiRemoveBSSKeyRspCb: callback for passing back the
2327 response of the remove BSS key operation received from
2328 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002329
Jeff Johnson295189b2012-06-20 16:38:30 -07002330 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002331 callback
2332
Jeff Johnson295189b2012-06-20 16:38:30 -07002333 @see WDI_SetBSSKeyReq
2334 @return Result of the function call
2335*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002336WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002337WDI_RemoveBSSKeyReq
2338(
2339 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2340 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2341 void* pUserData
2342)
2343{
2344 WDI_EventInfoType wdiEventData;
2345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2346
2347 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 ------------------------------------------------------------------------*/
2350 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2351 {
2352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2353 "WDI API call before module is initialized - Fail request");
2354
Jeff Johnsone7245742012-09-05 17:12:55 -07002355 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 }
2357
2358 /*------------------------------------------------------------------------
2359 Fill in Event data and post to the Main FSM
2360 ------------------------------------------------------------------------*/
2361 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002362 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2363 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2364 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 wdiEventData.pUserData = pUserData;
2366
2367 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2368
2369}/*WDI_RemoveBSSKeyReq*/
2370
2371
2372/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002373 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 ready to install a STA(ast) encryption key in HW. Upon
2375 the call of this API the WLAN DAL will pack and send a
2376 HAL Set STA Key request message to the lower RIVA
2377 sub-system if DAL is in state STARTED.
2378
2379 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002380 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002381
2382 WDI_PostAssocReq must have been called.
2383
Jeff Johnsone7245742012-09-05 17:12:55 -07002384 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002385 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002386
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 wdiSetSTAKeyRspCb: callback for passing back the
2388 response of the set STA key operation received from the
2389 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002390
Jeff Johnson295189b2012-06-20 16:38:30 -07002391 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002392 callback
2393
Jeff Johnson295189b2012-06-20 16:38:30 -07002394 @see WDI_PostAssocReq
2395 @return Result of the function call
2396*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002397WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002398WDI_SetSTAKeyReq
2399(
2400 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2401 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2402 void* pUserData
2403)
2404{
2405 WDI_EventInfoType wdiEventData;
2406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2407
2408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 ------------------------------------------------------------------------*/
2411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2412 {
2413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2414 "WDI API call before module is initialized - Fail request");
2415
Jeff Johnsone7245742012-09-05 17:12:55 -07002416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002417 }
2418
2419 /*------------------------------------------------------------------------
2420 Fill in Event data and post to the Main FSM
2421 ------------------------------------------------------------------------*/
2422 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002423 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2424 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2425 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 wdiEventData.pUserData = pUserData;
2427
2428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2429
2430}/*WDI_SetSTAKeyReq*/
2431
2432
2433/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 wants to uninstall a previously set STA key in HW. Upon
2436 the call of this API the WLAN DAL will pack and send a
2437 HAL Remove STA Key request message to the lower RIVA
2438 sub-system if DAL is in state STARTED.
2439
2440 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002441 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002442
2443 WDI_SetSTAKeyReq must have been called.
2444
Jeff Johnsone7245742012-09-05 17:12:55 -07002445 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002447
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 wdiRemoveSTAKeyRspCb: callback for passing back the
2449 response of the remove STA key operation received from
2450 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002451
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002453 callback
2454
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 @see WDI_SetSTAKeyReq
2456 @return Result of the function call
2457*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002458WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002459WDI_RemoveSTAKeyReq
2460(
2461 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2462 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2463 void* pUserData
2464)
2465{
2466 WDI_EventInfoType wdiEventData;
2467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2468
2469 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002470 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 ------------------------------------------------------------------------*/
2472 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2473 {
2474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2475 "WDI API call before module is initialized - Fail request");
2476
Jeff Johnsone7245742012-09-05 17:12:55 -07002477 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002478 }
2479
2480 /*------------------------------------------------------------------------
2481 Fill in Event data and post to the Main FSM
2482 ------------------------------------------------------------------------*/
2483 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002484 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2485 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2486 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 wdiEventData.pUserData = pUserData;
2488
2489 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2490
2491}/*WDI_RemoveSTAKeyReq*/
2492
2493
2494/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002495 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 wants to install a STA Bcast encryption key on the HW.
2497 Upon the call of this API the WLAN DAL will pack and
2498 send a HAL Start request message to the lower RIVA
2499 sub-system if DAL is in state STARTED.
2500
2501 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002503
2504 WDI_PostAssocReq must have been called.
2505
Jeff Johnsone7245742012-09-05 17:12:55 -07002506 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002508
Jeff Johnson295189b2012-06-20 16:38:30 -07002509 wdiSetSTABcastKeyRspCb: callback for passing back the
2510 response of the set BSS Key operation received from the
2511 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002512
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002514 callback
2515
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 @see WDI_PostAssocReq
2517 @return Result of the function call
2518*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002519WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002520WDI_SetSTABcastKeyReq
2521(
2522 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2523 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2524 void* pUserData
2525)
2526
2527{
2528 WDI_EventInfoType wdiEventData;
2529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2530
2531 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 ------------------------------------------------------------------------*/
2534 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2535 {
2536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2537 "WDI API call before module is initialized - Fail request");
2538
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 }
2541
2542 /*------------------------------------------------------------------------
2543 Fill in Event data and post to the Main FSM
2544 ------------------------------------------------------------------------*/
2545 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002546 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2547 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2548 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 wdiEventData.pUserData = pUserData;
2550
2551 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2552
2553}/*WDI_SetSTABcastKeyReq*/
2554
2555/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 MAC wants to uninstall a STA Bcast key from HW. Upon the
2558 call of this API the WLAN DAL will pack and send a HAL
2559 Remove STA Bcast Key request message to the lower RIVA
2560 sub-system if DAL is in state STARTED.
2561
2562 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002564
2565 WDI_SetSTABcastKeyReq must have been called.
2566
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 parameters as specified by the Device
2569 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002570
Jeff Johnson295189b2012-06-20 16:38:30 -07002571 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2572 response of the remove STA Bcast key operation received
2573 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002574
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 callback
2577
Jeff Johnson295189b2012-06-20 16:38:30 -07002578 @see WDI_SetSTABcastKeyReq
2579 @return Result of the function call
2580*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002581WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002582WDI_RemoveSTABcastKeyReq
2583(
2584 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2585 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2586 void* pUserData
2587)
2588{
2589 WDI_EventInfoType wdiEventData;
2590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2591
2592 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002593 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 ------------------------------------------------------------------------*/
2595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2596 {
2597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2598 "WDI API call before module is initialized - Fail request");
2599
Jeff Johnsone7245742012-09-05 17:12:55 -07002600 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 }
2602
2603 /*------------------------------------------------------------------------
2604 Fill in Event data and post to the Main FSM
2605 ------------------------------------------------------------------------*/
2606 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002607 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2608 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2609 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 wdiEventData.pUserData = pUserData;
2611
2612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2613
2614}/*WDI_RemoveSTABcastKeyReq*/
2615
2616/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002617 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002618 MAC wants to set Max Tx Power to HW. Upon the
2619 call of this API the WLAN DAL will pack and send a HAL
2620 Remove STA Bcast Key request message to the lower RIVA
2621 sub-system if DAL is in state STARTED.
2622
2623 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002624 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002625
2626 WDI_SetSTABcastKeyReq must have been called.
2627
Jeff Johnsone7245742012-09-05 17:12:55 -07002628 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002629 parameters as specified by the Device
2630 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002631
Jeff Johnson295189b2012-06-20 16:38:30 -07002632 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2633 response of the remove STA Bcast key operation received
2634 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002635
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 callback
2638
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 @see WDI_SetMaxTxPowerReq
2640 @return Result of the function call
2641*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002642WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002643WDI_SetMaxTxPowerReq
2644(
2645 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2646 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2647 void* pUserData
2648)
2649{
2650 WDI_EventInfoType wdiEventData;
2651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2652
2653 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002654 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 ------------------------------------------------------------------------*/
2656 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2657 {
2658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2659 "WDI API call before module is initialized - Fail request");
2660
Jeff Johnsone7245742012-09-05 17:12:55 -07002661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 }
2663
2664 /*------------------------------------------------------------------------
2665 Fill in Event data and post to the Main FSM
2666 ------------------------------------------------------------------------*/
2667 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002668 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2669 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2670 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 wdiEventData.pUserData = pUserData;
2672
2673 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2674}
2675
2676#ifdef FEATURE_WLAN_CCX
2677WDI_Status
2678WDI_TSMStatsReq
2679(
2680 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2681 WDI_TsmRspCb wdiReqStatusCb,
2682 void* pUserData
2683)
2684{
2685 WDI_EventInfoType wdiEventData;
2686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 /*------------------------------------------------------------------------
2688 Sanity Check
2689 ------------------------------------------------------------------------*/
2690 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2691 {
2692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2693 "WDI API call before module is initialized - Fail request");
2694
2695 return WDI_STATUS_E_NOT_ALLOWED;
2696 }
2697
2698 /*------------------------------------------------------------------------
2699 Fill in Event data and post to the Main FSM
2700 ------------------------------------------------------------------------*/
2701 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2702 wdiEventData.pEventData = pwdiTsmReqParams;
2703 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2704 wdiEventData.pCBfnc = wdiReqStatusCb;
2705 wdiEventData.pUserData = pUserData;
2706
2707 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2708
2709}
2710#endif
2711
2712/*========================================================================
2713
2714 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002715
Jeff Johnson295189b2012-06-20 16:38:30 -07002716==========================================================================*/
2717
2718/**
2719 @brief WDI_AddTSReq will be called when the upper MAC to inform
2720 the device of a successful add TSpec negotiation. HW
2721 needs to receive the TSpec Info from the UMAC in order
2722 to configure properly the QoS data traffic. Upon the
2723 call of this API the WLAN DAL will pack and send a HAL
2724 Add TS request message to the lower RIVA sub-system if
2725 DAL is in state STARTED.
2726
2727 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002729
2730 WDI_PostAssocReq must have been called.
2731
2732 @param wdiAddTsReqParams: the add TS parameters as specified by
2733 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002734
Jeff Johnson295189b2012-06-20 16:38:30 -07002735 wdiAddTsRspCb: callback for passing back the response of
2736 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002737
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 callback
2740
Jeff Johnson295189b2012-06-20 16:38:30 -07002741 @see WDI_PostAssocReq
2742 @return Result of the function call
2743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002745WDI_AddTSReq
2746(
2747 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2748 WDI_AddTsRspCb wdiAddTsRspCb,
2749 void* pUserData
2750)
2751{
2752 WDI_EventInfoType wdiEventData;
2753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2754
2755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 ------------------------------------------------------------------------*/
2758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2759 {
2760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2761 "WDI API call before module is initialized - Fail request");
2762
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 }
2765
2766 /*------------------------------------------------------------------------
2767 Fill in Event data and post to the Main FSM
2768 ------------------------------------------------------------------------*/
2769 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002770 wdiEventData.pEventData = pwdiAddTsReqParams;
2771 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2772 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 wdiEventData.pUserData = pUserData;
2774
2775 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2776
2777}/*WDI_AddTSReq*/
2778
2779
2780
2781/**
2782 @brief WDI_DelTSReq will be called when the upper MAC has ended
2783 admission on a specific AC. This is to inform HW that
2784 QoS traffic parameters must be rest. Upon the call of
2785 this API the WLAN DAL will pack and send a HAL Del TS
2786 request message to the lower RIVA sub-system if DAL is
2787 in state STARTED.
2788
2789 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002790 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002791
2792 WDI_AddTSReq must have been called.
2793
2794 @param wdiDelTsReqParams: the del TS parameters as specified by
2795 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002796
Jeff Johnson295189b2012-06-20 16:38:30 -07002797 wdiDelTsRspCb: callback for passing back the response of
2798 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002799
Jeff Johnson295189b2012-06-20 16:38:30 -07002800 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002801 callback
2802
Jeff Johnson295189b2012-06-20 16:38:30 -07002803 @see WDI_AddTSReq
2804 @return Result of the function call
2805*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002806WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002807WDI_DelTSReq
2808(
2809 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2810 WDI_DelTsRspCb wdiDelTsRspCb,
2811 void* pUserData
2812)
2813{
2814 WDI_EventInfoType wdiEventData;
2815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2816
2817 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002818 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002819 ------------------------------------------------------------------------*/
2820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2821 {
2822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2823 "WDI API call before module is initialized - Fail request");
2824
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 }
2827
2828 /*------------------------------------------------------------------------
2829 Fill in Event data and post to the Main FSM
2830 ------------------------------------------------------------------------*/
2831 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002832 wdiEventData.pEventData = pwdiDelTsReqParams;
2833 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2834 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 wdiEventData.pUserData = pUserData;
2836
2837 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2838
2839}/*WDI_DelTSReq*/
2840
2841
2842
2843/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002845 wishes to update the EDCA parameters used by HW for QoS
2846 data traffic. Upon the call of this API the WLAN DAL
2847 will pack and send a HAL Update EDCA Params request
2848 message to the lower RIVA sub-system if DAL is in state
2849 STARTED.
2850
2851 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002853
2854 WDI_PostAssocReq must have been called.
2855
Jeff Johnsone7245742012-09-05 17:12:55 -07002856 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002857 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002858
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 wdiUpdateEDCAParamsRspCb: callback for passing back the
2860 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002861
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002863 callback
2864
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 @see WDI_PostAssocReq
2866 @return Result of the function call
2867*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002868WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002869WDI_UpdateEDCAParams
2870(
2871 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2872 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2873 void* pUserData
2874)
2875{
2876 WDI_EventInfoType wdiEventData;
2877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2878
2879 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002880 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002881 ------------------------------------------------------------------------*/
2882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2883 {
2884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2885 "WDI API call before module is initialized - Fail request");
2886
Jeff Johnsone7245742012-09-05 17:12:55 -07002887 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002888 }
2889
2890 /*------------------------------------------------------------------------
2891 Fill in Event data and post to the Main FSM
2892 ------------------------------------------------------------------------*/
2893 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2895 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2896 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 wdiEventData.pUserData = pUserData;
2898
2899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2900
2901}/*WDI_UpdateEDCAParams*/
2902
2903
2904/**
2905 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2906 successfully a BA session and needs to notify the HW for
2907 the appropriate settings to take place. Upon the call of
2908 this API the WLAN DAL will pack and send a HAL Add BA
2909 request message to the lower RIVA sub-system if DAL is
2910 in state STARTED.
2911
2912 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002913 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002914
2915 WDI_PostAssocReq must have been called.
2916
2917 @param wdiAddBAReqParams: the add BA parameters as specified by
2918 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002919
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 wdiAddBARspCb: callback for passing back the response of
2921 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002922
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002924 callback
2925
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 @see WDI_PostAssocReq
2927 @return Result of the function call
2928*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002929WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002930WDI_AddBASessionReq
2931(
2932 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2933 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
2934 void* pUserData
2935)
2936{
2937 WDI_EventInfoType wdiEventData;
2938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2939
2940 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002941 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002942 ------------------------------------------------------------------------*/
2943 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2944 {
2945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2946 "WDI API call before module is initialized - Fail request");
2947
Jeff Johnsone7245742012-09-05 17:12:55 -07002948 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 }
2950
2951 /*------------------------------------------------------------------------
2952 Fill in Event data and post to the Main FSM
2953 ------------------------------------------------------------------------*/
2954 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002955 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2956 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2957 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 wdiEventData.pUserData = pUserData;
2959
2960 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2961
2962}/*WDI_AddBASessionReq*/
2963
2964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07002966 inform HW that it has deleted a previously created BA
2967 session. Upon the call of this API the WLAN DAL will
2968 pack and send a HAL Del BA request message to the lower
2969 RIVA sub-system if DAL is in state STARTED.
2970
2971 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002972 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002973
2974 WDI_AddBAReq must have been called.
2975
2976 @param wdiDelBAReqParams: the del BA parameters as specified by
2977 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002978
Jeff Johnson295189b2012-06-20 16:38:30 -07002979 wdiDelBARspCb: callback for passing back the response of
2980 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002981
Jeff Johnson295189b2012-06-20 16:38:30 -07002982 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002983 callback
2984
Jeff Johnson295189b2012-06-20 16:38:30 -07002985 @see WDI_AddBAReq
2986 @return Result of the function call
2987*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002988WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002989WDI_DelBAReq
2990(
2991 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
2992 WDI_DelBARspCb wdiDelBARspCb,
2993 void* pUserData
2994)
2995{
2996 WDI_EventInfoType wdiEventData;
2997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2998
2999 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 ------------------------------------------------------------------------*/
3002 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3003 {
3004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3005 "WDI API call before module is initialized - Fail request");
3006
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 }
3009
3010 /*------------------------------------------------------------------------
3011 Fill in Event data and post to the Main FSM
3012 ------------------------------------------------------------------------*/
3013 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003014 wdiEventData.pEventData = pwdiDelBAReqParams;
3015 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3016 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 wdiEventData.pUserData = pUserData;
3018
3019 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3020
3021}/*WDI_DelBAReq*/
3022
Jeff Johnsone7245742012-09-05 17:12:55 -07003023/*========================================================================
3024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003026
Jeff Johnson295189b2012-06-20 16:38:30 -07003027==========================================================================*/
3028
3029/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003030 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003031 wants to set the power save related configurations of
3032 the WLAN Device. Upon the call of this API the WLAN DAL
3033 will pack and send a HAL Update CFG request message to
3034 the lower RIVA sub-system if DAL is in state STARTED.
3035
3036 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003037 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003038
3039 WDI_Start must have been called.
3040
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003042 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003043
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 wdiSetPwrSaveCfgCb: callback for passing back the
3045 response of the set power save cfg operation received
3046 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003047
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003049 callback
3050
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003052 @return Result of the function call
3053*/
3054WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003055WDI_SetPwrSaveCfgReq
3056(
3057 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3058 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3059 void* pUserData
3060)
3061{
3062 WDI_EventInfoType wdiEventData;
3063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3064
3065 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003066 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003067 ------------------------------------------------------------------------*/
3068 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3069 {
3070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3071 "WDI API call before module is initialized - Fail request");
3072
Jeff Johnsone7245742012-09-05 17:12:55 -07003073 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003074 }
3075
3076 /*------------------------------------------------------------------------
3077 Fill in Event data and post to the Main FSM
3078 ------------------------------------------------------------------------*/
3079 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003080 wdiEventData.pEventData = pwdiPowerSaveCfg;
3081 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3082 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 wdiEventData.pUserData = pUserData;
3084
3085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3086
3087}/*WDI_SetPwrSaveCfgReq*/
3088
3089/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003090 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 request the device to get into IMPS power state. Upon
3092 the call of this API the WLAN DAL will send a HAL Enter
3093 IMPS request message to the lower RIVA sub-system if DAL
3094 is in state STARTED.
3095
3096 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003097 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003098
Jeff Johnsone7245742012-09-05 17:12:55 -07003099
3100 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003101 response of the Enter IMPS operation received from the
3102 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003103
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 callback
3106
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 @see WDI_Start
3108 @return Result of the function call
3109*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003110WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003111WDI_EnterImpsReq
3112(
3113 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3114 void* pUserData
3115)
3116{
3117 WDI_EventInfoType wdiEventData;
3118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3119
3120 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003121 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 ------------------------------------------------------------------------*/
3123 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3124 {
3125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3126 "WDI API call before module is initialized - Fail request");
3127
Jeff Johnsone7245742012-09-05 17:12:55 -07003128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 }
3130
3131 /*------------------------------------------------------------------------
3132 Fill in Event data and post to the Main FSM
3133 ------------------------------------------------------------------------*/
3134 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003135 wdiEventData.pEventData = NULL;
3136 wdiEventData.uEventDataSize = 0;
3137 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003138 wdiEventData.pUserData = pUserData;
3139
3140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3141
3142}/*WDI_EnterImpsReq*/
3143
3144/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003145 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003146 request the device to get out of IMPS power state. Upon
3147 the call of this API the WLAN DAL will send a HAL Exit
3148 IMPS request message to the lower RIVA sub-system if DAL
3149 is in state STARTED.
3150
3151 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003152 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003153
Jeff Johnson295189b2012-06-20 16:38:30 -07003154
Jeff Johnsone7245742012-09-05 17:12:55 -07003155
3156 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003158
Jeff Johnson295189b2012-06-20 16:38:30 -07003159 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003160 callback
3161
Jeff Johnson295189b2012-06-20 16:38:30 -07003162 @see WDI_Start
3163 @return Result of the function call
3164*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003165WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003166WDI_ExitImpsReq
3167(
3168 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3169 void* pUserData
3170)
3171{
3172 WDI_EventInfoType wdiEventData;
3173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3174
3175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003177 ------------------------------------------------------------------------*/
3178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3179 {
3180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3181 "WDI API call before module is initialized - Fail request");
3182
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 }
3185
3186 /*------------------------------------------------------------------------
3187 Fill in Event data and post to the Main FSM
3188 ------------------------------------------------------------------------*/
3189 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003190 wdiEventData.pEventData = NULL;
3191 wdiEventData.uEventDataSize = 0;
3192 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003193 wdiEventData.pUserData = pUserData;
3194
3195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3196
3197}/*WDI_ExitImpsReq*/
3198
3199/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003200 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003201 request the device to get into BMPS power state. Upon
3202 the call of this API the WLAN DAL will pack and send a
3203 HAL Enter BMPS request message to the lower RIVA
3204 sub-system if DAL is in state STARTED.
3205
3206 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003207 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003208
3209 WDI_PostAssocReq must have been called.
3210
Jeff Johnsone7245742012-09-05 17:12:55 -07003211 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003213
Jeff Johnson295189b2012-06-20 16:38:30 -07003214 wdiEnterBmpsRspCb: callback for passing back the
3215 response of the Enter BMPS operation received from the
3216 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003217
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003219 callback
3220
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 @see WDI_PostAssocReq
3222 @return Result of the function call
3223*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003224WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003225WDI_EnterBmpsReq
3226(
3227 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3228 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3229 void* pUserData
3230)
3231{
3232 WDI_EventInfoType wdiEventData;
3233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3234
3235 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003236 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 ------------------------------------------------------------------------*/
3238 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3239 {
3240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3241 "WDI API call before module is initialized - Fail request");
3242
Jeff Johnsone7245742012-09-05 17:12:55 -07003243 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 }
3245
3246 /*------------------------------------------------------------------------
3247 Fill in Event data and post to the Main FSM
3248 ------------------------------------------------------------------------*/
3249 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003250 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3251 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3252 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003253 wdiEventData.pUserData = pUserData;
3254
3255 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3256
3257}/*WDI_EnterBmpsReq*/
3258
3259/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003260 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003261 request the device to get out of BMPS power state. Upon
3262 the call of this API the WLAN DAL will pack and send a
3263 HAL Exit BMPS request message to the lower RIVA
3264 sub-system if DAL is in state STARTED.
3265
3266 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003267 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003268
3269 WDI_PostAssocReq must have been called.
3270
Jeff Johnsone7245742012-09-05 17:12:55 -07003271 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003272 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003273
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 wdiExitBmpsRspCb: callback for passing back the response
3275 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003276
Jeff Johnson295189b2012-06-20 16:38:30 -07003277 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 callback
3279
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 @see WDI_PostAssocReq
3281 @return Result of the function call
3282*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003283WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003284WDI_ExitBmpsReq
3285(
3286 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3287 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3288 void* pUserData
3289)
3290{
3291 WDI_EventInfoType wdiEventData;
3292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3293
3294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 ------------------------------------------------------------------------*/
3297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3298 {
3299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3300 "WDI API call before module is initialized - Fail request");
3301
Jeff Johnsone7245742012-09-05 17:12:55 -07003302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003303 }
3304
3305 /*------------------------------------------------------------------------
3306 Fill in Event data and post to the Main FSM
3307 ------------------------------------------------------------------------*/
3308 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003309 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3310 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3311 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 wdiEventData.pUserData = pUserData;
3313
3314 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3315
3316}/*WDI_ExitBmpsReq*/
3317
3318/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003319 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003320 request the device to get into UAPSD power state. Upon
3321 the call of this API the WLAN DAL will pack and send a
3322 HAL Enter UAPSD request message to the lower RIVA
3323 sub-system if DAL is in state STARTED.
3324
3325 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003326 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003327
3328 WDI_PostAssocReq must have been called.
3329 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003330
3331 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003332 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003333
Jeff Johnson295189b2012-06-20 16:38:30 -07003334 wdiEnterUapsdRspCb: callback for passing back the
3335 response of the Enter UAPSD operation received from the
3336 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003337
Jeff Johnson295189b2012-06-20 16:38:30 -07003338 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 callback
3340
Jeff Johnson295189b2012-06-20 16:38:30 -07003341 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3342 @return Result of the function call
3343*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003344WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003345WDI_EnterUapsdReq
3346(
3347 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3348 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3349 void* pUserData
3350)
3351{
3352 WDI_EventInfoType wdiEventData;
3353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3354
3355 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003356 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003357 ------------------------------------------------------------------------*/
3358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3359 {
3360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3361 "WDI API call before module is initialized - Fail request");
3362
Jeff Johnsone7245742012-09-05 17:12:55 -07003363 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003364 }
3365
3366 /*------------------------------------------------------------------------
3367 Fill in Event data and post to the Main FSM
3368 ------------------------------------------------------------------------*/
3369 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003370 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3371 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3372 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003373 wdiEventData.pUserData = pUserData;
3374
3375 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3376
3377}/*WDI_EnterUapsdReq*/
3378
3379/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003380 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003381 request the device to get out of UAPSD power state. Upon
3382 the call of this API the WLAN DAL will send a HAL Exit
3383 UAPSD request message to the lower RIVA sub-system if
3384 DAL is in state STARTED.
3385
3386 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003387 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003388
3389 WDI_PostAssocReq must have been called.
3390
Jeff Johnsone7245742012-09-05 17:12:55 -07003391 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003392 response of the Exit UAPSD operation received from the
3393 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003394
Jeff Johnson295189b2012-06-20 16:38:30 -07003395 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003396 callback
3397
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 @see WDI_PostAssocReq
3399 @return Result of the function call
3400*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003401WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003402WDI_ExitUapsdReq
3403(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003404 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3406 void* pUserData
3407)
3408{
3409 WDI_EventInfoType wdiEventData;
3410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3411
3412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003413 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003414 ------------------------------------------------------------------------*/
3415 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3416 {
3417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3418 "WDI API call before module is initialized - Fail request");
3419
Jeff Johnsone7245742012-09-05 17:12:55 -07003420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003421 }
3422
3423 /*------------------------------------------------------------------------
3424 Fill in Event data and post to the Main FSM
3425 ------------------------------------------------------------------------*/
3426 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003427 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3428 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 wdiEventData.pUserData = pUserData;
3431
3432 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3433
3434}/*WDI_ExitUapsdReq*/
3435
3436/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003437 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 MAC wants to set the UAPSD related configurations
3439 of an associated STA (while acting as an AP) to the WLAN
3440 Device. Upon the call of this API the WLAN DAL will pack
3441 and send a HAL Update UAPSD params request message to
3442 the lower RIVA sub-system if DAL is in state STARTED.
3443
3444 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003446
3447 WDI_ConfigBSSReq must have been called.
3448
Jeff Johnsone7245742012-09-05 17:12:55 -07003449 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003450 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003451
Jeff Johnson295189b2012-06-20 16:38:30 -07003452 wdiUpdateUapsdParamsCb: callback for passing back the
3453 response of the update UAPSD params operation received
3454 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003455
Jeff Johnson295189b2012-06-20 16:38:30 -07003456 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003457 callback
3458
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 @see WDI_ConfigBSSReq
3460 @return Result of the function call
3461*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003462WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003463WDI_UpdateUapsdParamsReq
3464(
3465 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3466 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3467 void* pUserData
3468)
3469{
3470 WDI_EventInfoType wdiEventData;
3471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3472
3473 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 ------------------------------------------------------------------------*/
3476 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3477 {
3478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3479 "WDI API call before module is initialized - Fail request");
3480
Jeff Johnsone7245742012-09-05 17:12:55 -07003481 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003482 }
3483
3484 /*------------------------------------------------------------------------
3485 Fill in Event data and post to the Main FSM
3486 ------------------------------------------------------------------------*/
3487 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003488 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003489 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003490 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003491 wdiEventData.pUserData = pUserData;
3492
3493 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3494
3495}/*WDI_UpdateUapsdParamsReq*/
3496
3497/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003499 MAC wants to set the UAPSD related configurations before
3500 requesting for enter UAPSD power state to the WLAN
3501 Device. Upon the call of this API the WLAN DAL will pack
3502 and send a HAL Set UAPSD params request message to
3503 the lower RIVA sub-system if DAL is in state STARTED.
3504
3505 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003506 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003507
3508 WDI_PostAssocReq must have been called.
3509
3510 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3511 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003512
Jeff Johnson295189b2012-06-20 16:38:30 -07003513 wdiSetUapsdAcParamsCb: callback for passing back the
3514 response of the set UAPSD params operation received from
3515 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003516
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 callback
3519
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 @see WDI_PostAssocReq
3521 @return Result of the function call
3522*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003523WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003524WDI_SetUapsdAcParamsReq
3525(
3526 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3527 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3528 void* pUserData
3529)
3530{
3531 WDI_EventInfoType wdiEventData;
3532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3533
3534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 ------------------------------------------------------------------------*/
3537 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3538 {
3539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3540 "WDI API call before module is initialized - Fail request");
3541
Jeff Johnsone7245742012-09-05 17:12:55 -07003542 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003543 }
3544
3545 /*------------------------------------------------------------------------
3546 Fill in Event data and post to the Main FSM
3547 ------------------------------------------------------------------------*/
3548 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003549 wdiEventData.pEventData = pwdiUapsdInfo;
3550 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3551 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 wdiEventData.pUserData = pUserData;
3553
3554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3555
3556}/*WDI_SetUapsdAcParamsReq*/
3557
3558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003560 MAC wants to set/reset the RXP filters for received pkts
3561 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3562 and send a HAL configure RXP filter request message to
3563 the lower RIVA sub-system.
3564
3565 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003566 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003567
Jeff Johnsone7245742012-09-05 17:12:55 -07003568
3569 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 filter as specified by the Device
3571 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003572
Jeff Johnson295189b2012-06-20 16:38:30 -07003573 wdiConfigureRxpFilterCb: callback for passing back the
3574 response of the configure RXP filter operation received
3575 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003576
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003578 callback
3579
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 @return Result of the function call
3581*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003582WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003583WDI_ConfigureRxpFilterReq
3584(
3585 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3586 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3587 void* pUserData
3588)
3589{
3590 WDI_EventInfoType wdiEventData;
3591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3592
3593 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 ------------------------------------------------------------------------*/
3596 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3597 {
3598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3599 "WDI API call before module is initialized - Fail request");
3600
Jeff Johnsone7245742012-09-05 17:12:55 -07003601 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003602 }
3603
3604 /*------------------------------------------------------------------------
3605 Fill in Event data and post to the Main FSM
3606 ------------------------------------------------------------------------*/
3607 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003608 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3609 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3610 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 wdiEventData.pUserData = pUserData;
3612
3613 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3614}/*WDI_ConfigureRxpFilterReq*/
3615
3616/**
3617 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3618 wants to set the beacon filters while in power save.
3619 Upon the call of this API the WLAN DAL will pack and
3620 send a Beacon filter request message to the
3621 lower RIVA sub-system.
3622
3623 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003624 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003625
Jeff Johnsone7245742012-09-05 17:12:55 -07003626
3627 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 filter as specified by the Device
3629 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003630
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 wdiBeaconFilterCb: callback for passing back the
3632 response of the set beacon filter operation received
3633 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003634
Jeff Johnson295189b2012-06-20 16:38:30 -07003635 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 callback
3637
Jeff Johnson295189b2012-06-20 16:38:30 -07003638 @return Result of the function call
3639*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003640WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003641WDI_SetBeaconFilterReq
3642(
3643 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3644 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3645 void* pUserData
3646)
3647{
3648 WDI_EventInfoType wdiEventData;
3649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3650
3651 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003652 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003653 ------------------------------------------------------------------------*/
3654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3655 {
3656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3657 "WDI API call before module is initialized - Fail request");
3658
Jeff Johnsone7245742012-09-05 17:12:55 -07003659 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003660 }
3661
3662 /*------------------------------------------------------------------------
3663 Fill in Event data and post to the Main FSM
3664 ------------------------------------------------------------------------*/
3665 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003666 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003667 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003668 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003669 wdiEventData.pUserData = pUserData;
3670
3671 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3672}/*WDI_SetBeaconFilterReq*/
3673
3674/**
3675 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3676 wants to remove the beacon filter for particular IE
3677 while in power save. Upon the call of this API the WLAN
3678 DAL will pack and send a remove Beacon filter request
3679 message to the lower RIVA sub-system.
3680
3681 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003682 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003683
Jeff Johnsone7245742012-09-05 17:12:55 -07003684
3685 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 filter as specified by the Device
3687 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003688
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 wdiBeaconFilterCb: callback for passing back the
3690 response of the remove beacon filter operation received
3691 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003692
Jeff Johnson295189b2012-06-20 16:38:30 -07003693 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 callback
3695
Jeff Johnson295189b2012-06-20 16:38:30 -07003696 @return Result of the function call
3697*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003698WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003699WDI_RemBeaconFilterReq
3700(
3701 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3702 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3703 void* pUserData
3704)
3705{
3706 WDI_EventInfoType wdiEventData;
3707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3708
3709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 ------------------------------------------------------------------------*/
3712 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3713 {
3714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3715 "WDI API call before module is initialized - Fail request");
3716
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 }
3719
3720 /*------------------------------------------------------------------------
3721 Fill in Event data and post to the Main FSM
3722 ------------------------------------------------------------------------*/
3723 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003725 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003726 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 wdiEventData.pUserData = pUserData;
3728
3729 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3730}/*WDI_RemBeaconFilterReq*/
3731
3732/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003733 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003734 MAC wants to set the RSSI thresholds related
3735 configurations while in power save. Upon the call of
3736 this API the WLAN DAL will pack and send a HAL Set RSSI
3737 thresholds request message to the lower RIVA
3738 sub-system if DAL is in state STARTED.
3739
3740 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003742
3743 WDI_PostAssocReq must have been called.
3744
3745 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3746 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003747
Jeff Johnson295189b2012-06-20 16:38:30 -07003748 wdiSetUapsdAcParamsCb: callback for passing back the
3749 response of the set UAPSD params operation received from
3750 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003751
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 callback
3754
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 @see WDI_PostAssocReq
3756 @return Result of the function call
3757*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003758WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003759WDI_SetRSSIThresholdsReq
3760(
3761 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3762 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3763 void* pUserData
3764)
3765{
3766 WDI_EventInfoType wdiEventData;
3767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3768
3769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 ------------------------------------------------------------------------*/
3772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3773 {
3774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3775 "WDI API call before module is initialized - Fail request");
3776
Jeff Johnsone7245742012-09-05 17:12:55 -07003777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 }
3779
3780 /*------------------------------------------------------------------------
3781 Fill in Event data and post to the Main FSM
3782 ------------------------------------------------------------------------*/
3783 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003784 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003785 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003786 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003787 wdiEventData.pUserData = pUserData;
3788
3789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3790}/* WDI_SetRSSIThresholdsReq*/
3791
3792/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003793 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003794 wants to set the filter to minimize unnecessary host
3795 wakeup due to broadcast traffic while in power save.
3796 Upon the call of this API the WLAN DAL will pack and
3797 send a HAL host offload request message to the
3798 lower RIVA sub-system if DAL is in state STARTED.
3799
3800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003802
3803 WDI_PostAssocReq must have been called.
3804
Jeff Johnsone7245742012-09-05 17:12:55 -07003805 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003807
Jeff Johnson295189b2012-06-20 16:38:30 -07003808 wdiHostOffloadCb: callback for passing back the response
3809 of the host offload operation received from the
3810 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003811
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003813 callback
3814
Jeff Johnson295189b2012-06-20 16:38:30 -07003815 @see WDI_PostAssocReq
3816 @return Result of the function call
3817*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003818WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003819WDI_HostOffloadReq
3820(
3821 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3822 WDI_HostOffloadCb wdiHostOffloadCb,
3823 void* pUserData
3824)
3825{
3826 WDI_EventInfoType wdiEventData;
3827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3828
3829 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 ------------------------------------------------------------------------*/
3832 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3833 {
3834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3835 "WDI API call before module is initialized - Fail request");
3836
Jeff Johnsone7245742012-09-05 17:12:55 -07003837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003838 }
3839
3840 /*------------------------------------------------------------------------
3841 Fill in Event data and post to the Main FSM
3842 ------------------------------------------------------------------------*/
3843 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003845 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003846 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003847 wdiEventData.pUserData = pUserData;
3848
3849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3850}/*WDI_HostOffloadReq*/
3851
3852/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003853 @brief WDI_KeepAliveReq will be called when the upper MAC
3854 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 and minimize unnecessary host wakeups due to while in power save.
3856 Upon the call of this API the WLAN DAL will pack and
3857 send a HAL Keep Alive request message to the
3858 lower RIVA sub-system if DAL is in state STARTED.
3859
3860 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003862
3863 WDI_PostAssocReq must have been called.
3864
Jeff Johnsone7245742012-09-05 17:12:55 -07003865 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003866 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003867
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 wdiKeepAliveCb: callback for passing back the response
3869 of the Keep Alive operation received from the
3870 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003871
Jeff Johnson295189b2012-06-20 16:38:30 -07003872 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003873 callback
3874
Jeff Johnson295189b2012-06-20 16:38:30 -07003875 @see WDI_PostAssocReq
3876 @return Result of the function call
3877*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003878WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003879WDI_KeepAliveReq
3880(
3881 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3882 WDI_KeepAliveCb wdiKeepAliveCb,
3883 void* pUserData
3884)
3885{
3886 WDI_EventInfoType wdiEventData;
3887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3888
3889 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003891 ------------------------------------------------------------------------*/
3892 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3893 {
3894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3895 "WDI_KeepAliveReq: WDI API call before module "
3896 "is initialized - Fail request");
3897
Jeff Johnsone7245742012-09-05 17:12:55 -07003898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 }
3900
3901 /*------------------------------------------------------------------------
3902 Fill in Event data and post to the Main FSM
3903 ------------------------------------------------------------------------*/
3904 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003905 wdiEventData.pEventData = pwdiKeepAliveParams;
3906 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3907 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 wdiEventData.pUserData = pUserData;
3909
3910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3911}/*WDI_KeepAliveReq*/
3912
3913/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003914 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003915 wants to set the Wowl Bcast ptrn to minimize unnecessary
3916 host wakeup due to broadcast traffic while in power
3917 save. Upon the call of this API the WLAN DAL will pack
3918 and send a HAL Wowl Bcast ptrn request message to the
3919 lower RIVA sub-system if DAL is in state STARTED.
3920
3921 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003922 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003923
3924 WDI_PostAssocReq must have been called.
3925
Jeff Johnsone7245742012-09-05 17:12:55 -07003926 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003927 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003928
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 wdiWowlAddBcPtrnCb: callback for passing back the
3930 response of the add Wowl bcast ptrn operation received
3931 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003932
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003934 callback
3935
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 @see WDI_PostAssocReq
3937 @return Result of the function call
3938*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003939WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003940WDI_WowlAddBcPtrnReq
3941(
3942 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3943 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
3944 void* pUserData
3945)
3946{
3947 WDI_EventInfoType wdiEventData;
3948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3949
3950 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003951 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 ------------------------------------------------------------------------*/
3953 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3954 {
3955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3956 "WDI API call before module is initialized - Fail request");
3957
Jeff Johnsone7245742012-09-05 17:12:55 -07003958 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003959 }
3960
3961 /*------------------------------------------------------------------------
3962 Fill in Event data and post to the Main FSM
3963 ------------------------------------------------------------------------*/
3964 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003965 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003966 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 wdiEventData.pUserData = pUserData;
3969
3970 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3971}/*WDI_WowlAddBcPtrnReq*/
3972
3973/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 wants to clear the Wowl Bcast ptrn. Upon the call of
3976 this API the WLAN DAL will pack and send a HAL delete
3977 Wowl Bcast ptrn request message to the lower RIVA
3978 sub-system if DAL is in state STARTED.
3979
3980 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003982
3983 WDI_WowlAddBcPtrnReq must have been called.
3984
Jeff Johnsone7245742012-09-05 17:12:55 -07003985 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003987
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 wdiWowlDelBcPtrnCb: callback for passing back the
3989 response of the del Wowl bcast ptrn operation received
3990 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003991
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 callback
3994
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 @see WDI_WowlAddBcPtrnReq
3996 @return Result of the function call
3997*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003998WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003999WDI_WowlDelBcPtrnReq
4000(
4001 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4002 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4003 void* pUserData
4004)
4005{
4006 WDI_EventInfoType wdiEventData;
4007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4008
4009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004010 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004011 ------------------------------------------------------------------------*/
4012 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4013 {
4014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4015 "WDI API call before module is initialized - Fail request");
4016
Jeff Johnsone7245742012-09-05 17:12:55 -07004017 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004018 }
4019
4020 /*------------------------------------------------------------------------
4021 Fill in Event data and post to the Main FSM
4022 ------------------------------------------------------------------------*/
4023 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004024 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004025 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 wdiEventData.pUserData = pUserData;
4028
4029 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4030}/*WDI_WowlDelBcPtrnReq*/
4031
4032/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004033 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004034 wants to enter the Wowl state to minimize unnecessary
4035 host wakeup while in power save. Upon the call of this
4036 API the WLAN DAL will pack and send a HAL Wowl enter
4037 request message to the lower RIVA sub-system if DAL is
4038 in state STARTED.
4039
4040 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004041 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004042
4043 WDI_PostAssocReq must have been called.
4044
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004047
Jeff Johnson295189b2012-06-20 16:38:30 -07004048 wdiWowlEnterReqCb: callback for passing back the
4049 response of the enter Wowl operation received from the
4050 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004051
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 callback
4054
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 @see WDI_PostAssocReq
4056 @return Result of the function call
4057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004059WDI_WowlEnterReq
4060(
4061 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4062 WDI_WowlEnterReqCb wdiWowlEnterCb,
4063 void* pUserData
4064)
4065{
4066 WDI_EventInfoType wdiEventData;
4067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4068
4069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 ------------------------------------------------------------------------*/
4072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4073 {
4074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4075 "WDI API call before module is initialized - Fail request");
4076
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 }
4079
4080 /*------------------------------------------------------------------------
4081 Fill in Event data and post to the Main FSM
4082 ------------------------------------------------------------------------*/
4083 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004084 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004085 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 wdiEventData.pUserData = pUserData;
4088
4089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4090}/*WDI_WowlEnterReq*/
4091
4092/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 wants to exit the Wowl state. Upon the call of this API
4095 the WLAN DAL will pack and send a HAL Wowl exit request
4096 message to the lower RIVA sub-system if DAL is in state
4097 STARTED.
4098
4099 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004100 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004101
4102 WDI_WowlEnterReq must have been called.
4103
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004106
Jeff Johnson295189b2012-06-20 16:38:30 -07004107 wdiWowlExitReqCb: callback for passing back the response
4108 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004109
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 callback
4112
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 @see WDI_WowlEnterReq
4114 @return Result of the function call
4115*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004116WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004117WDI_WowlExitReq
4118(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004119 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 WDI_WowlExitReqCb wdiWowlExitCb,
4121 void* pUserData
4122)
4123{
4124 WDI_EventInfoType wdiEventData;
4125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4126
4127 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004129 ------------------------------------------------------------------------*/
4130 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4131 {
4132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4133 "WDI API call before module is initialized - Fail request");
4134
Jeff Johnsone7245742012-09-05 17:12:55 -07004135 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004136 }
4137
4138 /*------------------------------------------------------------------------
4139 Fill in Event data and post to the Main FSM
4140 ------------------------------------------------------------------------*/
4141 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004142 wdiEventData.pEventData = pwdiWowlExitParams;
4143 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004144 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004145 wdiEventData.pUserData = pUserData;
4146
4147 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4148}/*WDI_WowlExitReq*/
4149
4150/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004151 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 the upper MAC wants to dynamically adjusts the listen
4153 interval based on the WLAN/MSM activity. Upon the call
4154 of this API the WLAN DAL will pack and send a HAL
4155 configure Apps Cpu Wakeup State request message to the
4156 lower RIVA sub-system.
4157
4158 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004159 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004160
Jeff Johnsone7245742012-09-05 17:12:55 -07004161
4162 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 Apps Cpu Wakeup State as specified by the
4164 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004165
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4167 back the response of the configure Apps Cpu Wakeup State
4168 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004169
Jeff Johnson295189b2012-06-20 16:38:30 -07004170 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 callback
4172
Jeff Johnson295189b2012-06-20 16:38:30 -07004173 @return Result of the function call
4174*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004175WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004176WDI_ConfigureAppsCpuWakeupStateReq
4177(
4178 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4179 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4180 void* pUserData
4181)
4182{
4183 WDI_EventInfoType wdiEventData;
4184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4185
4186 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004187 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 ------------------------------------------------------------------------*/
4189 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4190 {
4191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4192 "WDI API call before module is initialized - Fail request");
4193
Jeff Johnsone7245742012-09-05 17:12:55 -07004194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004195 }
4196
4197 /*------------------------------------------------------------------------
4198 Fill in Event data and post to the Main FSM
4199 ------------------------------------------------------------------------*/
4200 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004201 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4202 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4203 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004204 wdiEventData.pUserData = pUserData;
4205
4206 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4207}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4208/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004209 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004210 to to perform a flush operation on a given AC. Upon the
4211 call of this API the WLAN DAL will pack and send a HAL
4212 Flush AC request message to the lower RIVA sub-system if
4213 DAL is in state STARTED.
4214
4215 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004217
4218 WDI_AddBAReq must have been called.
4219
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004221 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004222
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 wdiFlushAcRspCb: callback for passing back the response
4224 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004225
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004227 callback
4228
Jeff Johnson295189b2012-06-20 16:38:30 -07004229 @see WDI_AddBAReq
4230 @return Result of the function call
4231*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004232WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004233WDI_FlushAcReq
4234(
4235 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4236 WDI_FlushAcRspCb wdiFlushAcRspCb,
4237 void* pUserData
4238)
4239{
4240 WDI_EventInfoType wdiEventData;
4241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4242
4243 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004244 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 ------------------------------------------------------------------------*/
4246 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4247 {
4248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4249 "WDI API call before module is initialized - Fail request");
4250
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 }
4253
4254 /*------------------------------------------------------------------------
4255 Fill in Event data and post to the Main FSM
4256 ------------------------------------------------------------------------*/
4257 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 wdiEventData.pEventData = pwdiFlushAcReqParams;
4259 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4260 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 wdiEventData.pUserData = pUserData;
4262
4263 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4264
4265}/*WDI_FlushAcReq*/
4266
4267/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004268 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004269 wants to notify the lower mac on a BT AMP event. This is
4270 to inform BTC-SLM that some BT AMP event occurred. Upon
4271 the call of this API the WLAN DAL will pack and send a
4272 HAL BT AMP event request message to the lower RIVA
4273 sub-system if DAL is in state STARTED.
4274
4275 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004277
Jeff Johnsone7245742012-09-05 17:12:55 -07004278
4279 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004280 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004281
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 wdiBtAmpEventRspCb: callback for passing back the
4283 response of the BT AMP event operation received from the
4284 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004285
Jeff Johnson295189b2012-06-20 16:38:30 -07004286 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004287 callback
4288
Jeff Johnson295189b2012-06-20 16:38:30 -07004289 @return Result of the function call
4290*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004292WDI_BtAmpEventReq
4293(
4294 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4295 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4296 void* pUserData
4297)
4298{
4299 WDI_EventInfoType wdiEventData;
4300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4301
4302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 ------------------------------------------------------------------------*/
4305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4306 {
4307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4308 "WDI API call before module is initialized - Fail request");
4309
Jeff Johnsone7245742012-09-05 17:12:55 -07004310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004311 }
4312
4313 /*------------------------------------------------------------------------
4314 Fill in Event data and post to the Main FSM
4315 ------------------------------------------------------------------------*/
4316 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004317 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4318 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4319 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 wdiEventData.pUserData = pUserData;
4321
4322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4323
4324}/*WDI_BtAmpEventReq*/
4325
Jeff Johnsone7245742012-09-05 17:12:55 -07004326#ifdef FEATURE_OEM_DATA_SUPPORT
4327/**
4328 @brief WDI_Start Oem Data Req will be called when the upper MAC
4329 wants to notify the lower mac on a oem data Req event.Upon
4330 the call of this API the WLAN DAL will pack and send a
4331 HAL OEM Data Req event request message to the lower RIVA
4332 sub-system if DAL is in state STARTED.
4333
4334 In state BUSY this request will be queued. Request won't
4335 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004336
4337
Jeff Johnsone7245742012-09-05 17:12:55 -07004338
4339 @param pwdiOemDataReqParams: the Oem Data Req as
4340 specified by the Device Interface
4341
4342 wdiStartOemDataRspCb: callback for passing back the
4343 response of the Oem Data Req received from the
4344 device
4345
4346 pUserData: user data will be passed back with the
4347 callback
4348
4349 @return Result of the function call
4350*/
4351WDI_Status
4352WDI_StartOemDataReq
4353(
4354 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4355 WDI_oemDataRspCb wdiOemDataRspCb,
4356 void* pUserData
4357)
4358{
4359 WDI_EventInfoType wdiEventData;
4360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4361
4362 /*------------------------------------------------------------------------
4363 Sanity Check
4364 ------------------------------------------------------------------------*/
4365 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4366 {
4367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4368 "WDI API call before module is initialized - Fail request");
4369
4370 return WDI_STATUS_E_NOT_ALLOWED;
4371 }
4372
4373 /*------------------------------------------------------------------------
4374 Fill in Event data and post to the Main FSM
4375 ------------------------------------------------------------------------*/
4376 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4377 wdiEventData.pEventData = pwdiOemDataReqParams;
4378 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4379 wdiEventData.pCBfnc = wdiOemDataRspCb;
4380 wdiEventData.pUserData = pUserData;
4381
4382 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4383
4384
4385}
4386
4387#endif
4388
4389
4390/*========================================================================
4391
Jeff Johnson295189b2012-06-20 16:38:30 -07004392 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004393
Jeff Johnson295189b2012-06-20 16:38:30 -07004394==========================================================================*/
4395/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004397 the WLAN HW to change the current channel of operation.
4398 Upon the call of this API the WLAN DAL will pack and
4399 send a HAL Start request message to the lower RIVA
4400 sub-system if DAL is in state STARTED.
4401
4402 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004403 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004404
4405 WDI_Start must have been called.
4406
Jeff Johnsone7245742012-09-05 17:12:55 -07004407 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004408 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004409
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 wdiSwitchChRspCb: callback for passing back the response
4411 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004412
Jeff Johnson295189b2012-06-20 16:38:30 -07004413 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004414 callback
4415
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 @see WDI_Start
4417 @return Result of the function call
4418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004420WDI_SwitchChReq
4421(
4422 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4423 WDI_SwitchChRspCb wdiSwitchChRspCb,
4424 void* pUserData
4425)
4426{
4427 WDI_EventInfoType wdiEventData;
4428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4429
4430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 ------------------------------------------------------------------------*/
4433 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4434 {
4435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4436 "WDI API call before module is initialized - Fail request");
4437
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 }
4440
4441 /*------------------------------------------------------------------------
4442 Fill in Event data and post to the Main FSM
4443 ------------------------------------------------------------------------*/
4444 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004445 wdiEventData.pEventData = pwdiSwitchChReqParams;
4446 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4447 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 wdiEventData.pUserData = pUserData;
4449
4450 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4451
4452}/*WDI_SwitchChReq*/
4453
4454
4455/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 wishes to add or update a STA in HW. Upon the call of
4458 this API the WLAN DAL will pack and send a HAL Start
4459 message request message to the lower RIVA sub-system if
4460 DAL is in state STARTED.
4461
4462 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004464
4465 WDI_Start must have been called.
4466
Jeff Johnsone7245742012-09-05 17:12:55 -07004467 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004468 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 wdiConfigSTARspCb: callback for passing back the
4471 response of the config STA operation received from the
4472 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004473
Jeff Johnson295189b2012-06-20 16:38:30 -07004474 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004475 callback
4476
Jeff Johnson295189b2012-06-20 16:38:30 -07004477 @see WDI_Start
4478 @return Result of the function call
4479*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004480WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004481WDI_ConfigSTAReq
4482(
4483 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4484 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4485 void* pUserData
4486)
4487{
4488 WDI_EventInfoType wdiEventData;
4489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4490
4491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 ------------------------------------------------------------------------*/
4494 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4495 {
4496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4497 "WDI API call before module is initialized - Fail request");
4498
Jeff Johnsone7245742012-09-05 17:12:55 -07004499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004500 }
4501
4502 /*------------------------------------------------------------------------
4503 Fill in Event data and post to the Main FSM
4504 ------------------------------------------------------------------------*/
4505 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004506 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4507 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4508 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004509 wdiEventData.pUserData = pUserData;
4510
4511 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4512
4513}/*WDI_ConfigSTAReq*/
4514
4515/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 wants to change the state of an ongoing link. Upon the
4518 call of this API the WLAN DAL will pack and send a HAL
4519 Start message request message to the lower RIVA
4520 sub-system if DAL is in state STARTED.
4521
4522 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004523 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004524
4525 WDI_JoinStartReq must have been called.
4526
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004529
Jeff Johnson295189b2012-06-20 16:38:30 -07004530 wdiSetLinkStateRspCb: callback for passing back the
4531 response of the set link state operation received from
4532 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004533
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004535 callback
4536
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 @see WDI_JoinStartReq
4538 @return Result of the function call
4539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004541WDI_SetLinkStateReq
4542(
4543 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4544 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4545 void* pUserData
4546)
4547{
4548 WDI_EventInfoType wdiEventData;
4549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4550
4551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 ------------------------------------------------------------------------*/
4554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4555 {
4556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4557 "WDI API call before module is initialized - Fail request");
4558
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 }
4561
4562 /*------------------------------------------------------------------------
4563 Fill in Event data and post to the Main FSM
4564 ------------------------------------------------------------------------*/
4565 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004566 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4567 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4568 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004569 wdiEventData.pUserData = pUserData;
4570
4571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4572
4573}/*WDI_SetLinkStateReq*/
4574
4575
4576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 to get statistics (MIB counters) from the device. Upon
4579 the call of this API the WLAN DAL will pack and send a
4580 HAL Start request message to the lower RIVA sub-system
4581 if DAL is in state STARTED.
4582
4583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004585
4586 WDI_Start must have been called.
4587
Jeff Johnsone7245742012-09-05 17:12:55 -07004588 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004590
Jeff Johnson295189b2012-06-20 16:38:30 -07004591 wdiGetStatsRspCb: callback for passing back the response
4592 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004593
Jeff Johnson295189b2012-06-20 16:38:30 -07004594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004595 callback
4596
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 @see WDI_Start
4598 @return Result of the function call
4599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004601WDI_GetStatsReq
4602(
4603 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4604 WDI_GetStatsRspCb wdiGetStatsRspCb,
4605 void* pUserData
4606)
4607{
4608 WDI_EventInfoType wdiEventData;
4609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4610
4611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 ------------------------------------------------------------------------*/
4614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4615 {
4616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4617 "WDI API call before module is initialized - Fail request");
4618
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 }
4621
4622 /*------------------------------------------------------------------------
4623 Fill in Event data and post to the Main FSM
4624 ------------------------------------------------------------------------*/
4625 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 wdiEventData.pEventData = pwdiGetStatsReqParams;
4627 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4628 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 wdiEventData.pUserData = pUserData;
4630
4631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4632
4633}/*WDI_GetStatsReq*/
4634
4635
4636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 it wishes to change the configuration of the WLAN
4639 Device. Upon the call of this API the WLAN DAL will pack
4640 and send a HAL Update CFG request message to the lower
4641 RIVA sub-system if DAL is in state STARTED.
4642
4643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004645
4646 WDI_Start must have been called.
4647
Jeff Johnsone7245742012-09-05 17:12:55 -07004648 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004649 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004650
Jeff Johnson295189b2012-06-20 16:38:30 -07004651 wdiUpdateCfgsRspCb: callback for passing back the
4652 response of the update cfg operation received from the
4653 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004654
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 callback
4657
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 @see WDI_Start
4659 @return Result of the function call
4660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004662WDI_UpdateCfgReq
4663(
4664 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4665 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4666 void* pUserData
4667)
4668{
4669 WDI_EventInfoType wdiEventData;
4670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4671
4672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004674 ------------------------------------------------------------------------*/
4675 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4676 {
4677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4678 "WDI API call before module is initialized - Fail request");
4679
Jeff Johnsone7245742012-09-05 17:12:55 -07004680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 }
4682
4683 /*------------------------------------------------------------------------
4684 Fill in Event data and post to the Main FSM
4685 ------------------------------------------------------------------------*/
4686 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4688 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4689 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 wdiEventData.pUserData = pUserData;
4691
4692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4693
4694}/*WDI_UpdateCfgReq*/
4695
4696
4697
4698/**
4699 @brief WDI_AddBAReq will be called when the upper MAC has setup
4700 successfully a BA session and needs to notify the HW for
4701 the appropriate settings to take place. Upon the call of
4702 this API the WLAN DAL will pack and send a HAL Add BA
4703 request message to the lower RIVA sub-system if DAL is
4704 in state STARTED.
4705
4706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004708
4709 WDI_PostAssocReq must have been called.
4710
4711 @param wdiAddBAReqParams: the add BA parameters as specified by
4712 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004713
Jeff Johnson295189b2012-06-20 16:38:30 -07004714 wdiAddBARspCb: callback for passing back the response of
4715 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004716
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004718 callback
4719
Jeff Johnson295189b2012-06-20 16:38:30 -07004720 @see WDI_PostAssocReq
4721 @return Result of the function call
4722*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004724WDI_AddBAReq
4725(
4726 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4727 WDI_AddBARspCb wdiAddBARspCb,
4728 void* pUserData
4729)
4730{
4731 WDI_EventInfoType wdiEventData;
4732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4733
4734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004736 ------------------------------------------------------------------------*/
4737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4738 {
4739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4740 "WDI API call before module is initialized - Fail request");
4741
Jeff Johnsone7245742012-09-05 17:12:55 -07004742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004743 }
4744
4745 /*------------------------------------------------------------------------
4746 Fill in Event data and post to the Main FSM
4747 ------------------------------------------------------------------------*/
4748 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004749 wdiEventData.pEventData = pwdiAddBAReqParams;
4750 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4751 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 wdiEventData.pUserData = pUserData;
4753
4754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4755
4756}/*WDI_AddBAReq*/
4757
4758
4759/**
4760 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4761 successfully a BA session and needs to notify the HW for
4762 the appropriate settings to take place. Upon the call of
4763 this API the WLAN DAL will pack and send a HAL Add BA
4764 request message to the lower RIVA sub-system if DAL is
4765 in state STARTED.
4766
4767 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004768 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004769
4770 WDI_PostAssocReq must have been called.
4771
4772 @param wdiAddBAReqParams: the add BA parameters as specified by
4773 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004774
Jeff Johnson295189b2012-06-20 16:38:30 -07004775 wdiAddBARspCb: callback for passing back the response of
4776 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004777
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004779 callback
4780
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 @see WDI_PostAssocReq
4782 @return Result of the function call
4783*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004784WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004785WDI_TriggerBAReq
4786(
4787 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4788 WDI_TriggerBARspCb wdiTriggerBARspCb,
4789 void* pUserData
4790)
4791{
4792 WDI_EventInfoType wdiEventData;
4793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4794
4795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004796 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004797 ------------------------------------------------------------------------*/
4798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4799 {
4800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4801 "WDI API call before module is initialized - Fail request");
4802
Jeff Johnsone7245742012-09-05 17:12:55 -07004803 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004804 }
4805
4806 /*------------------------------------------------------------------------
4807 Fill in Event data and post to the Main FSM
4808 ------------------------------------------------------------------------*/
4809 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004810 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4811 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4812 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004813 wdiEventData.pUserData = pUserData;
4814
4815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4816
4817}/*WDI_AddBAReq*/
4818
4819/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004820 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 wishes to update any of the Beacon parameters used by HW.
4822 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4823 message to the lower RIVA sub-system if DAL is in state
4824 STARTED.
4825
4826 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004828
4829 WDI_PostAssocReq must have been called.
4830
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004833
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wdiUpdateBeaconParamsRspCb: callback for passing back the
4835 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004836
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 callback
4839
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 @see WDI_PostAssocReq
4841 @return Result of the function call
4842*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004843WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004844WDI_UpdateBeaconParamsReq
4845(
4846 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4847 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4848 void* pUserData
4849)
4850{
4851 WDI_EventInfoType wdiEventData;
4852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4853
4854 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 ------------------------------------------------------------------------*/
4857 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4858 {
4859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4860 "WDI API call before module is initialized - Fail request");
4861
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 }
4864
4865 /*------------------------------------------------------------------------
4866 Fill in Event data and post to the Main FSM
4867 ------------------------------------------------------------------------*/
4868 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004869 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4870 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4871 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 wdiEventData.pUserData = pUserData;
4873
4874 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4875
4876}/*WDI_UpdateBeaconParamsReq*/
4877
4878/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 wishes to update the Beacon template used by HW.
4881 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4882 message to the lower RIVA sub-system if DAL is in state
4883 STARTED.
4884
4885 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004887
4888 WDI_PostAssocReq must have been called.
4889
Jeff Johnsone7245742012-09-05 17:12:55 -07004890 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004891 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004892
Jeff Johnson295189b2012-06-20 16:38:30 -07004893 wdiSendBeaconParamsRspCb: callback for passing back the
4894 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004895
Jeff Johnson295189b2012-06-20 16:38:30 -07004896 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 callback
4898
Jeff Johnson295189b2012-06-20 16:38:30 -07004899 @see WDI_PostAssocReq
4900 @return Result of the function call
4901*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004903WDI_SendBeaconParamsReq
4904(
4905 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4906 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4907 void* pUserData
4908)
4909{
4910 WDI_EventInfoType wdiEventData;
4911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4912
4913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004915 ------------------------------------------------------------------------*/
4916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4917 {
4918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4919 "WDI API call before module is initialized - Fail request");
4920
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004922 }
4923
4924 /*------------------------------------------------------------------------
4925 Fill in Event data and post to the Main FSM
4926 ------------------------------------------------------------------------*/
4927 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004928 wdiEventData.pEventData = pwdiSendBeaconParams;
4929 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
4930 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 wdiEventData.pUserData = pUserData;
4932
4933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4934
4935}/*WDI_SendBeaconParamsReq*/
4936
4937/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004938 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 upper MAC wants to update the probe response template to
4940 be transmitted as Soft AP
4941 Upon the call of this API the WLAN DAL will
4942 pack and send the probe rsp template message to the
4943 lower RIVA sub-system if DAL is in state STARTED.
4944
4945 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004946 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004947
4948
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004951
Jeff Johnson295189b2012-06-20 16:38:30 -07004952 wdiSendBeaconParamsRspCb: callback for passing back the
4953 response of the Send Beacon Params operation received
4954 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004955
Jeff Johnson295189b2012-06-20 16:38:30 -07004956 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004957 callback
4958
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 @see WDI_AddBAReq
4960 @return Result of the function call
4961*/
4962
Jeff Johnsone7245742012-09-05 17:12:55 -07004963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004964WDI_UpdateProbeRspTemplateReq
4965(
4966 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
4967 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
4968 void* pUserData
4969)
4970{
4971 WDI_EventInfoType wdiEventData;
4972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4973
4974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 ------------------------------------------------------------------------*/
4977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4978 {
4979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4980 "WDI API call before module is initialized - Fail request");
4981
Jeff Johnsone7245742012-09-05 17:12:55 -07004982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 }
4984
4985 /*------------------------------------------------------------------------
4986 Fill in Event data and post to the Main FSM
4987 ------------------------------------------------------------------------*/
4988 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004989 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
4990 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
4991 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 wdiEventData.pUserData = pUserData;
4993
4994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4995
4996}/*WDI_UpdateProbeRspTemplateReq*/
4997
4998/**
4999 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5000 to the NV memory.
5001
5002
5003 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5004 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005005
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 wdiNvDownloadRspCb: callback for passing back the response of
5007 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005008
Jeff Johnson295189b2012-06-20 16:38:30 -07005009 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005010 callback
5011
Jeff Johnson295189b2012-06-20 16:38:30 -07005012 @see WDI_PostAssocReq
5013 @return Result of the function call
5014*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005015WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005016WDI_NvDownloadReq
5017(
5018 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5019 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5020 void* pUserData
5021)
5022{
5023 WDI_EventInfoType wdiEventData;
5024
5025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005026 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 ------------------------------------------------------------------------*/
5028 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5029 {
5030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5031 "WDI API call before module is initialized - Fail request");
5032
Jeff Johnsone7245742012-09-05 17:12:55 -07005033 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005034 }
5035
5036 /*------------------------------------------------------------------------
5037 Fill in Event data and post to the Main FSM
5038 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005039 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5040 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5041 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5042 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005043 wdiEventData.pUserData = pUserData;
5044
5045 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5046
5047}/*WDI_NVDownloadReq*/
5048
5049#ifdef WLAN_FEATURE_P2P
5050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005051 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005052 upper MAC wants to send Notice of Absence
5053 Upon the call of this API the WLAN DAL will
5054 pack and send the probe rsp template message to the
5055 lower RIVA sub-system if DAL is in state STARTED.
5056
5057 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005058 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005059
5060
Jeff Johnsone7245742012-09-05 17:12:55 -07005061 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005062 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005063
Jeff Johnson295189b2012-06-20 16:38:30 -07005064 wdiSendBeaconParamsRspCb: callback for passing back the
5065 response of the Send Beacon Params operation received
5066 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005067
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005069 callback
5070
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 @see WDI_AddBAReq
5072 @return Result of the function call
5073*/
5074WDI_Status
5075WDI_SetP2PGONOAReq
5076(
5077 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5078 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5079 void* pUserData
5080)
5081{
5082 WDI_EventInfoType wdiEventData;
5083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5084
5085 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 ------------------------------------------------------------------------*/
5088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5089 {
5090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5091 "WDI API call before module is initialized - Fail request");
5092
Jeff Johnsone7245742012-09-05 17:12:55 -07005093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005094 }
5095
5096 /*------------------------------------------------------------------------
5097 Fill in Event data and post to the Main FSM
5098 ------------------------------------------------------------------------*/
5099 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005100 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5101 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5102 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 wdiEventData.pUserData = pUserData;
5104
5105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5106
5107}/*WDI_SetP2PGONOAReq*/
5108#endif
5109
5110/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 UMAC wanted to add STA self while opening any new session
5113 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005114 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005115
5116
Jeff Johnsone7245742012-09-05 17:12:55 -07005117 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005118 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005119
Jeff Johnson295189b2012-06-20 16:38:30 -07005120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 callback
5122
5123 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005124 @return Result of the function call
5125*/
5126WDI_Status
5127WDI_AddSTASelfReq
5128(
5129 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5130 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5131 void* pUserData
5132)
5133{
5134 WDI_EventInfoType wdiEventData;
5135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5136
5137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005139 ------------------------------------------------------------------------*/
5140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5141 {
5142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5143 "WDI API call before module is initialized - Fail request");
5144
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 }
5147
5148 /*------------------------------------------------------------------------
5149 Fill in Event data and post to the Main FSM
5150 ------------------------------------------------------------------------*/
5151 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5153 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5154 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 wdiEventData.pUserData = pUserData;
5156
5157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5158
5159}/*WDI_AddSTASelfReq*/
5160
5161
Jeff Johnsone7245742012-09-05 17:12:55 -07005162#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005163/**
5164 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5165 the device of a successful add TSpec negotiation. HW
5166 needs to receive the TSpec Info from the UMAC in order
5167 to configure properly the QoS data traffic. Upon the
5168 call of this API the WLAN DAL will pack and send a HAL
5169 Add TS request message to the lower RIVA sub-system if
5170 DAL is in state STARTED.
5171
5172 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005174
5175 WDI_PostAssocReq must have been called.
5176
5177 @param wdiAddTsReqParams: the add TS parameters as specified by
5178 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005179
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 wdiAddTsRspCb: callback for passing back the response of
5181 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005182
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005184 callback
5185
Jeff Johnson295189b2012-06-20 16:38:30 -07005186 @see WDI_PostAssocReq
5187 @return Result of the function call
5188*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005190WDI_AggrAddTSReq
5191(
5192 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5193 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5194 void* pUserData
5195)
5196{
5197 WDI_EventInfoType wdiEventData;
5198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5199
5200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005202 ------------------------------------------------------------------------*/
5203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5204 {
5205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5206 "WDI API call before module is initialized - Fail request");
5207
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 }
5210
5211 /*------------------------------------------------------------------------
5212 Fill in Event data and post to the Main FSM
5213 ------------------------------------------------------------------------*/
5214 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005215 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5216 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5217 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 wdiEventData.pUserData = pUserData;
5219
5220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5221
5222}/*WDI_AggrAddTSReq*/
5223
5224#endif /* WLAN_FEATURE_VOWIFI_11R */
5225
5226#ifdef ANI_MANF_DIAG
5227/**
5228 @brief WDI_FTMCommandReq
5229 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005230
5231 @param ftmCommandReq: FTM Command Body
5232 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005234
Jeff Johnson295189b2012-06-20 16:38:30 -07005235 @see
5236 @return Result of the function call
5237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005239WDI_FTMCommandReq
5240(
5241 WDI_FTMCommandReqType *ftmCommandReq,
5242 WDI_FTMCommandRspCb ftmCommandRspCb,
5243 void *pUserData
5244)
5245{
5246 WDI_EventInfoType wdiEventData;
5247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5248
5249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005251 ------------------------------------------------------------------------*/
5252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5253 {
5254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5255 "WDI API call before module is initialized - Fail request");
5256
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 }
5259
5260 /*------------------------------------------------------------------------
5261 Fill in Event data and post to the Main FSM
5262 ------------------------------------------------------------------------*/
5263 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5264 wdiEventData.pEventData = (void *)ftmCommandReq;
5265 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5266 wdiEventData.pCBfnc = ftmCommandRspCb;
5267 wdiEventData.pUserData = pUserData;
5268
5269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5270}
Jeff Johnsone7245742012-09-05 17:12:55 -07005271#endif /* ANI_MANF_DIAG */
Jeff Johnson295189b2012-06-20 16:38:30 -07005272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005273 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005274
5275 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005276 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005277
5278
5279 @param pwdiResumeReqParams: as specified by
5280 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005281
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 wdiResumeReqRspCb: callback for passing back the response of
5283 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005286 callback
5287
5288 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005289 @return Result of the function call
5290*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005292WDI_HostResumeReq
5293(
5294 WDI_ResumeParamsType* pwdiResumeReqParams,
5295 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5296 void* pUserData
5297)
5298{
5299 WDI_EventInfoType wdiEventData;
5300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5301
5302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005304 ------------------------------------------------------------------------*/
5305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5306 {
5307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5308 "WDI API call before module is initialized - Fail request");
5309
Jeff Johnsone7245742012-09-05 17:12:55 -07005310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005311 }
5312
5313 /*------------------------------------------------------------------------
5314 Fill in Event data and post to the Main FSM
5315 ------------------------------------------------------------------------*/
5316 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005317 wdiEventData.pEventData = pwdiResumeReqParams;
5318 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5319 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005320 wdiEventData.pUserData = pUserData;
5321
5322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5323
5324}/*WDI_HostResumeReq*/
5325
5326/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005327 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005328
5329 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005330 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005331
5332
5333 @param pwdiDelStaSelfReqParams: as specified by
5334 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005335
Jeff Johnson295189b2012-06-20 16:38:30 -07005336 wdiDelStaSelfRspCb: callback for passing back the response of
5337 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005338
Jeff Johnson295189b2012-06-20 16:38:30 -07005339 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005340 callback
5341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 @see WDI_PostAssocReq
5343 @return Result of the function call
5344*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005345WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005346WDI_DelSTASelfReq
5347(
5348 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5349 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5350 void* pUserData
5351)
5352{
5353 WDI_EventInfoType wdiEventData;
5354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5355
5356 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005357 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005358 ------------------------------------------------------------------------*/
5359 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5360 {
5361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5362 "WDI API call before module is initialized - Fail request");
5363
Jeff Johnsone7245742012-09-05 17:12:55 -07005364 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005365 }
5366
5367 /*------------------------------------------------------------------------
5368 Fill in Event data and post to the Main FSM
5369 ------------------------------------------------------------------------*/
5370 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005371 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5372 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5373 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005374 wdiEventData.pUserData = pUserData;
5375
5376 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5377
5378}/*WDI_AggrAddTSReq*/
5379
5380/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005381 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5382 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005383 Upon the call of this API the WLAN DAL will pack
5384 and send a HAL Set Tx Per Tracking request message to the
5385 lower RIVA sub-system if DAL is in state STARTED.
5386
5387 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005388 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005389
Jeff Johnsone7245742012-09-05 17:12:55 -07005390 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005391 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005392
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 pwdiSetTxPerTrackingRspCb: callback for passing back the
5394 response of the set Tx PER Tracking configurations operation received
5395 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005396
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005398 callback
5399
Jeff Johnson295189b2012-06-20 16:38:30 -07005400 @return Result of the function call
5401*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005402WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005403WDI_SetTxPerTrackingReq
5404(
5405 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5406 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5407 void* pUserData
5408)
5409{
5410 WDI_EventInfoType wdiEventData;
5411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5412
5413 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005414 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005415 ------------------------------------------------------------------------*/
5416 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5417 {
5418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5419 "WDI API call before module is initialized - Fail request");
5420
Jeff Johnsone7245742012-09-05 17:12:55 -07005421 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005422 }
5423
5424 /*------------------------------------------------------------------------
5425 Fill in Event data and post to the Main FSM
5426 ------------------------------------------------------------------------*/
5427 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005428 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005431 wdiEventData.pUserData = pUserData;
5432
5433 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5434
5435}/*WDI_SetTxPerTrackingReq*/
5436
5437/**
5438 @brief WDI_SetTmLevelReq
5439 If HW Thermal condition changed, driver should react based on new
5440 HW thermal condition.
5441
5442 @param pwdiSetTmLevelReq: New thermal condition information
5443
5444 pwdiSetTmLevelRspCb: callback
5445
5446 usrData: user data will be passed back with the
5447 callback
5448
5449 @return Result of the function call
5450*/
5451WDI_Status
5452WDI_SetTmLevelReq
5453(
5454 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5455 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5456 void *usrData
5457)
5458{
5459 WDI_EventInfoType wdiEventData;
5460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5461
5462 /*------------------------------------------------------------------------
5463 Sanity Check
5464 ------------------------------------------------------------------------*/
5465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5466 {
5467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5468 "WDI API call before module is initialized - Fail request");
5469
5470 return WDI_STATUS_E_NOT_ALLOWED;
5471 }
5472
5473 /*------------------------------------------------------------------------
5474 Fill in Event data and post to the Main FSM
5475 ------------------------------------------------------------------------*/
5476 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5477 wdiEventData.pEventData = pwdiSetTmLevelReq;
5478 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5479 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5480 wdiEventData.pUserData = usrData;
5481
5482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5483}
5484
5485/**
5486 @brief WDI_HostSuspendInd
5487
5488 Suspend Indication from the upper layer will be sent
5489 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005490
Jeff Johnson295189b2012-06-20 16:38:30 -07005491 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005492
5493 @see
5494
Jeff Johnson295189b2012-06-20 16:38:30 -07005495 @return Status of the request
5496*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005497WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005498WDI_HostSuspendInd
5499(
5500 WDI_SuspendParamsType* pwdiSuspendIndParams
5501)
5502{
5503
5504 WDI_EventInfoType wdiEventData;
5505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5506
5507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005509 ------------------------------------------------------------------------*/
5510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5511 {
5512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5513 "WDI API call before module is initialized - Fail request");
5514
Jeff Johnsone7245742012-09-05 17:12:55 -07005515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005516 }
5517
5518 /*------------------------------------------------------------------------
5519 Fill in Event data and post to the Main FSM
5520 ------------------------------------------------------------------------*/
5521 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005522 wdiEventData.pEventData = pwdiSuspendIndParams;
5523 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5524 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 wdiEventData.pUserData = NULL;
5526
5527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5528
5529}/*WDI_HostSuspendInd*/
5530
5531/**
5532 @brief WDI_HALDumpCmdReq
5533 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005534
5535 @param halDumpCmdReqParams: Hal Dump Command Body
5536 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005537 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005538
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 @see
5540 @return Result of the function call
5541*/
5542WDI_Status WDI_HALDumpCmdReq
5543(
5544 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5545 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5546 void *pUserData
5547)
5548{
5549 WDI_EventInfoType wdiEventData;
5550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5551
5552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005554 ------------------------------------------------------------------------*/
5555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5556 {
5557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5558 "WDI API call before module is initialized - Fail request");
5559
Jeff Johnsone7245742012-09-05 17:12:55 -07005560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005561 }
5562
5563 /*------------------------------------------------------------------------
5564 Fill in Event data and post to the Main FSM
5565 ------------------------------------------------------------------------*/
5566 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5567 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5568 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5569 wdiEventData.pCBfnc = halDumpCmdRspCb;
5570 wdiEventData.pUserData = pUserData;
5571
5572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5573}
5574
Jeff Johnsone7245742012-09-05 17:12:55 -07005575/*============================================================================
5576
Jeff Johnson295189b2012-06-20 16:38:30 -07005577 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005578
Jeff Johnson295189b2012-06-20 16:38:30 -07005579 ============================================================================*/
5580
5581/**
5582 @brief Main FSM Start function for all states except BUSY
5583
Jeff Johnsone7245742012-09-05 17:12:55 -07005584
5585 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 wdiEV: event posted to the main DAL FSM
5587 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005588 structure
5589
Jeff Johnson295189b2012-06-20 16:38:30 -07005590 @see
5591 @return Result of the function call
5592*/
5593WDI_Status
5594WDI_PostMainEvent
5595(
Jeff Johnsone7245742012-09-05 17:12:55 -07005596 WDI_ControlBlockType* pWDICtx,
5597 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005598 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005599
Jeff Johnson295189b2012-06-20 16:38:30 -07005600)
5601{
Jeff Johnsone7245742012-09-05 17:12:55 -07005602 WDI_Status wdiStatus;
5603 WDI_MainFuncType pfnWDIMainEvHdlr;
5604 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5606
5607 /*-------------------------------------------------------------------------
5608 Sanity check
5609 -------------------------------------------------------------------------*/
5610 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5611 ( wdiEV >= WDI_MAX_EVENT ))
5612 {
5613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5614 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5615 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005617 }
5618
5619 /*Access to the global state must be locked */
5620 wpalMutexAcquire(&pWDICtx->wptMutex);
5621
5622 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005623 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005624
5625 wdiOldState = pWDICtx->uGlobalState;
5626
5627 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005628 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5629 response comes from CCPU for the request sent by host:
5630 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 -07005631 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 -07005632 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005633 CCPU:
5634 don't change the state */
5635 if ( WDI_RESPONSE_EVENT != wdiEV)
5636 {
5637 /*Transition to BUSY State - the request is now being processed by the FSM,
5638 if the request fails we shall transition back to the old state, if not
5639 the request will manage its own state transition*/
5640 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5641 }
5642 /* If the state function associated with the EV is NULL it means that this
5643 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005644 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 {
5646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005647 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005648 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005649 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005650 }
5651 else
5652 {
5653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005654 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005655 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005656 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 }
5658
5659 /* If a request handles itself well it will end up in a success or in a
5660 pending
5661 Success - means that the request was processed and the proper state
5662 transition already occurred or will occur when the resp is received
5663 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005664
Jeff Johnson295189b2012-06-20 16:38:30 -07005665 Pending - means the request could not be processed at this moment in time
5666 because the FSM was already busy so no state transition or dequeueing
5667 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005668
Jeff Johnson295189b2012-06-20 16:38:30 -07005669 Success for synchronous case means that the transition may occur and
5670 processing of pending requests may continue - so it should go through
5671 and restores the state and continue processing queued requests*/
5672 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5673 ( WDI_STATUS_PENDING != wdiStatus ))
5674 {
5675 if ( WDI_RESPONSE_EVENT != wdiEV)
5676 {
5677 /*The request has failed or could not be processed - transition back to
5678 the old state - check to see if anything was queued and try to execute
5679 The dequeue logic should post a message to a thread and return - no
5680 actual processing can occur */
5681 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5682 }
5683 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005684
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 }
5686
5687 /* we have completed processing the event */
5688 wpalMutexRelease(&pWDICtx->wptMutex);
5689
Jeff Johnsone7245742012-09-05 17:12:55 -07005690 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005691
5692}/*WDI_PostMainEvent*/
5693
5694
5695/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005697--------------------------------------------------------------------------*/
5698/**
5699 @brief Main FSM Start function for all states except BUSY
5700
Jeff Johnsone7245742012-09-05 17:12:55 -07005701
5702 @param pWDICtx: pointer to the WLAN DAL context
5703 pEventData: pointer to the event information structure
5704
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 @see
5706 @return Result of the function call
5707*/
5708WDI_Status
5709WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005710(
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 WDI_ControlBlockType* pWDICtx,
5712 WDI_EventInfoType* pEventData
5713)
5714{
5715
5716 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005717 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 ----------------------------------------------------------------------*/
5719 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5720 {
5721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005722 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 pWDICtx, pEventData);
5724 return WDI_STATUS_E_FAILURE;
5725 }
5726
5727 wpalMutexAcquire(&pWDICtx->wptMutex);
5728
5729 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005730 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005731 ----------------------------------------------------------------------*/
5732 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5733 {
5734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5735 "Control Transport not yet Open - queueing the request");
5736
5737 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005738 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005739
5740 wpalMutexRelease(&pWDICtx->wptMutex);
5741 return WDI_STATUS_PENDING;
5742 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005743
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 wpalMutexRelease(&pWDICtx->wptMutex);
5745
5746 /*Return Success*/
5747 return WDI_ProcessRequest( pWDICtx, pEventData );
5748
5749}/*WDI_MainStart*/
5750
5751/**
5752 @brief Main FSM Response function for state INIT
5753
Jeff Johnsone7245742012-09-05 17:12:55 -07005754
5755 @param pWDICtx: pointer to the WLAN DAL context
5756 pEventData: pointer to the event information structure
5757
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 @see
5759 @return Result of the function call
5760*/
5761WDI_Status
5762WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005763(
Jeff Johnson295189b2012-06-20 16:38:30 -07005764 WDI_ControlBlockType* pWDICtx,
5765 WDI_EventInfoType* pEventData
5766)
5767{
5768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005769 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005771 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005772
5773 /*Return Success*/
5774 return WDI_STATUS_E_NOT_ALLOWED;
5775}/* WDI_MainRspInit */
5776
5777/**
5778 @brief Main FSM Close function for all states except BUSY
5779
Jeff Johnsone7245742012-09-05 17:12:55 -07005780
5781 @param pWDICtx: pointer to the WLAN DAL context
5782 pEventData: pointer to the event information structure
5783
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 @see
5785 @return Result of the function call
5786*/
5787WDI_Status
5788WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005789(
Jeff Johnson295189b2012-06-20 16:38:30 -07005790 WDI_ControlBlockType* pWDICtx,
5791 WDI_EventInfoType* pEventData
5792)
5793{
5794
5795 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005796 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 ----------------------------------------------------------------------*/
5798 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5799 {
5800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005801 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005802 pWDICtx, pEventData);
5803 return WDI_STATUS_E_FAILURE;
5804 }
5805
5806 /*Return Success*/
5807 return WDI_ProcessRequest( pWDICtx, pEventData );
5808
5809}/*WDI_MainClose*/
5810/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005811 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005812--------------------------------------------------------------------------*/
5813/**
5814 @brief Main FSM Start function for state STARTED
5815
Jeff Johnsone7245742012-09-05 17:12:55 -07005816
5817 @param pWDICtx: pointer to the WLAN DAL context
5818 pEventData: pointer to the event information structure
5819
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 @see
5821 @return Result of the function call
5822*/
5823WDI_Status
5824WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005825(
Jeff Johnson295189b2012-06-20 16:38:30 -07005826 WDI_ControlBlockType* pWDICtx,
5827 WDI_EventInfoType* pEventData
5828)
5829{
5830 WDI_StartRspCb wdiStartRspCb = NULL;
5831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5832
5833 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005834 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005835 ----------------------------------------------------------------------*/
5836 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5837 {
5838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005839 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005840 pWDICtx, pEventData);
5841 return WDI_STATUS_E_FAILURE;
5842 }
5843
5844 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005845 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 ----------------------------------------------------------------------*/
5847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005848 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005849
5850 wpalMutexAcquire(&pWDICtx->wptMutex);
5851
5852 /*Transition back to started because the post function transitioned us to
5853 busy*/
5854 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5855
5856 /*Check to see if any request is pending*/
5857 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005858
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 wpalMutexRelease(&pWDICtx->wptMutex);
5860
5861 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005862 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5863
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 /*Notify UMAC*/
5865 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5866
5867 /*Return Success*/
5868 return WDI_STATUS_SUCCESS;
5869
5870}/*WDI_MainStartStarted*/
5871
5872/**
5873 @brief Main FSM Stop function for state STARTED
5874
Jeff Johnsone7245742012-09-05 17:12:55 -07005875
5876 @param pWDICtx: pointer to the WLAN DAL context
5877 pEventData: pointer to the event information structure
5878
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 @see
5880 @return Result of the function call
5881*/
5882WDI_Status
5883WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005884(
Jeff Johnson295189b2012-06-20 16:38:30 -07005885 WDI_ControlBlockType* pWDICtx,
5886 WDI_EventInfoType* pEventData
5887)
5888{
5889 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005891 ----------------------------------------------------------------------*/
5892 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5893 {
5894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005895 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005896 pWDICtx, pEventData);
5897 return WDI_STATUS_E_FAILURE;
5898 }
5899
5900 /*State at this point is BUSY - because we enter this state before posting
5901 an event to the FSM in order to prevent potential race conditions*/
5902
5903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5904 "Processing stop request in FSM");
5905
5906 /*Return Success*/
5907 return WDI_ProcessRequest( pWDICtx, pEventData );
5908
5909}/*WDI_MainStopStarted*/
5910/**
5911 @brief Main FSM Request function for state started
5912
Jeff Johnsone7245742012-09-05 17:12:55 -07005913
5914 @param pWDICtx: pointer to the WLAN DAL context
5915 pEventData: pointer to the event information structure
5916
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 @see
5918 @return Result of the function call
5919*/
5920WDI_Status
5921WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005922(
Jeff Johnson295189b2012-06-20 16:38:30 -07005923 WDI_ControlBlockType* pWDICtx,
5924 WDI_EventInfoType* pEventData
5925)
5926{
5927
5928 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005929 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005930 ----------------------------------------------------------------------*/
5931 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5932 {
5933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005934 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005935 pWDICtx, pEventData);
5936 return WDI_STATUS_E_FAILURE;
5937 }
5938
5939 /*State at this point is BUSY - because we enter this state before posting
5940 an event to the FSM in order to prevent potential race conditions*/
5941
5942 /*Return Success*/
5943 return WDI_ProcessRequest( pWDICtx, pEventData );
5944
5945}/*WDI_MainReqStarted*/
5946
5947/**
5948 @brief Main FSM Response function for all states except INIT
5949
Jeff Johnsone7245742012-09-05 17:12:55 -07005950
5951 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005952 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07005953
Jeff Johnson295189b2012-06-20 16:38:30 -07005954 @see
5955 @return Result of the function call
5956*/
5957WDI_Status
5958WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07005959(
Jeff Johnson295189b2012-06-20 16:38:30 -07005960 WDI_ControlBlockType* pWDICtx,
5961 WDI_EventInfoType* pEventData
5962)
5963{
Jeff Johnsone7245742012-09-05 17:12:55 -07005964 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005965 wpt_boolean expectedResponse;
5966
5967 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005969 ----------------------------------------------------------------------*/
5970 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5971 {
5972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005973 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005974 pWDICtx, pEventData);
5975 return WDI_STATUS_E_FAILURE;
5976 }
5977
5978 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
5979 {
5980 /* we received an expected response */
5981 expectedResponse = eWLAN_PAL_TRUE;
5982
5983 /*We expect that we will transition to started after this processing*/
5984 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
5985
5986 /* we are no longer expecting a response */
5987 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
5988 }
5989 else
5990 {
5991 /* we received an indication or unexpected response */
5992 expectedResponse = eWLAN_PAL_FALSE;
5993 /* for indications no need to update state from what it is right
5994 now, unless it explicitly does it in the indication handler (say
5995 for device failure ind) */
5996 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
5997 }
5998
5999 /*Process the response and indication */
6000 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6001
6002 /*Lock the CB as we are about to do a state transition*/
6003 wpalMutexAcquire(&pWDICtx->wptMutex);
6004
6005 /*Transition to the expected state after the response processing
6006 - this should always be started state with the following exceptions:
6007 1. processing of a failed start response
6008 2. device failure detected while processing response
6009 3. stop response received*/
6010 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006011
Jeff Johnson295189b2012-06-20 16:38:30 -07006012 /*Dequeue request that may have been queued while we were waiting for the
6013 response */
6014 if ( expectedResponse )
6015 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006016 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 }
6018
6019 wpalMutexRelease(&pWDICtx->wptMutex);
6020
6021 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006022 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006023
6024}/*WDI_MainRsp*/
6025
6026/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006027 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006028--------------------------------------------------------------------------*/
6029/**
6030 @brief Main FSM Stop function for state STOPPED
6031
Jeff Johnsone7245742012-09-05 17:12:55 -07006032
6033 @param pWDICtx: pointer to the WLAN DAL context
6034 pEventData: pointer to the event information structure
6035
Jeff Johnson295189b2012-06-20 16:38:30 -07006036 @see
6037 @return Result of the function call
6038*/
6039WDI_Status
6040WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006041(
Jeff Johnson295189b2012-06-20 16:38:30 -07006042 WDI_ControlBlockType* pWDICtx,
6043 WDI_EventInfoType* pEventData
6044)
6045{
6046 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006047 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006048 ----------------------------------------------------------------------*/
6049 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6050 {
6051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006052 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006053 pWDICtx, pEventData);
6054 return WDI_STATUS_E_FAILURE;
6055 }
6056
6057 /*We should normally not get a STOP request if we are already stopped
6058 since we should normally be stopped by the UMAC. However in some
6059 error situations we put ourselves in the stopped state without the
6060 UMAC knowing, so when we get a STOP request in this state we still
6061 process it since we need to clean up the underlying state */
6062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6063 "Processing stop request while stopped in FSM");
6064
6065 /*Return Success*/
6066 return WDI_ProcessRequest( pWDICtx, pEventData );
6067
6068}/*WDI_MainStopStopped*/
6069
6070/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006071 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006072--------------------------------------------------------------------------*/
6073/**
6074 @brief Main FSM Start function for state BUSY
6075
Jeff Johnsone7245742012-09-05 17:12:55 -07006076
6077 @param pWDICtx: pointer to the WLAN DAL context
6078 pEventData: pointer to the event information structure
6079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 @see
6081 @return Result of the function call
6082*/
6083WDI_Status
6084WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006085(
Jeff Johnson295189b2012-06-20 16:38:30 -07006086 WDI_ControlBlockType* pWDICtx,
6087 WDI_EventInfoType* pEventData
6088)
6089{
6090 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 ----------------------------------------------------------------------*/
6093 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6094 {
6095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 pWDICtx, pEventData);
6098 return WDI_STATUS_E_FAILURE;
6099 }
6100
6101 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006102 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006103 ----------------------------------------------------------------------*/
6104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6105 "WDI Busy state - queue start request");
6106
6107 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006108 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006109
6110 /*Return Success*/
6111 return WDI_STATUS_PENDING;
6112}/*WDI_MainStartBusy*/
6113
6114/**
6115 @brief Main FSM Stop function for state BUSY
6116
Jeff Johnsone7245742012-09-05 17:12:55 -07006117
6118 @param pWDICtx: pointer to the WLAN DAL context
6119 pEventData: pointer to the event information structure
6120
Jeff Johnson295189b2012-06-20 16:38:30 -07006121 @see
6122 @return Result of the function call
6123*/
6124WDI_Status
6125WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006126(
Jeff Johnson295189b2012-06-20 16:38:30 -07006127 WDI_ControlBlockType* pWDICtx,
6128 WDI_EventInfoType* pEventData
6129)
6130{
6131 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 ----------------------------------------------------------------------*/
6134 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6135 {
6136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006137 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 pWDICtx, pEventData);
6139 return WDI_STATUS_E_FAILURE;
6140 }
6141
6142 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006144 ----------------------------------------------------------------------*/
6145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6146 "WDI Busy state - queue stop request");
6147
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006149 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006150
Jeff Johnson295189b2012-06-20 16:38:30 -07006151}/*WDI_MainStopBusy*/
6152
6153/**
6154 @brief Main FSM Request function for state BUSY
6155
Jeff Johnsone7245742012-09-05 17:12:55 -07006156
6157 @param pWDICtx: pointer to the WLAN DAL context
6158 pEventData: pointer to the event information structure
6159
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 @see
6161 @return Result of the function call
6162*/
6163WDI_Status
6164WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006165(
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 WDI_ControlBlockType* pWDICtx,
6167 WDI_EventInfoType* pEventData
6168)
6169{
6170 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 ----------------------------------------------------------------------*/
6173 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6174 {
6175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 pWDICtx, pEventData);
6178 return WDI_STATUS_E_FAILURE;
6179 }
6180
6181 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 ----------------------------------------------------------------------*/
6184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6185 "WDI Busy state - queue request %d because waiting for response %d",
6186 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6187
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006189 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006190
Jeff Johnson295189b2012-06-20 16:38:30 -07006191}/*WDI_MainReqBusy*/
6192/**
6193 @brief Main FSM Close function for state BUSY
6194
Jeff Johnsone7245742012-09-05 17:12:55 -07006195
6196 @param pWDICtx: pointer to the WLAN DAL context
6197 pEventData: pointer to the event information structure
6198
Jeff Johnson295189b2012-06-20 16:38:30 -07006199 @see
6200 @return Result of the function call
6201*/
6202WDI_Status
6203WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006204(
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 WDI_ControlBlockType* pWDICtx,
6206 WDI_EventInfoType* pEventData
6207)
6208{
6209 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 ----------------------------------------------------------------------*/
6212 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6213 {
6214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006215 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006216 pWDICtx, pEventData);
6217 return WDI_STATUS_E_FAILURE;
6218 }
6219
6220 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006221 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 ----------------------------------------------------------------------*/
6223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6224 "WDI Busy state - queue close request");
6225
Jeff Johnsone7245742012-09-05 17:12:55 -07006226 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006228
Jeff Johnson295189b2012-06-20 16:38:30 -07006229}/*WDI_MainCloseBusy*/
6230
6231/**
6232 @brief Main FSM Shutdown function for INIT & STARTED states
6233
6234
6235 @param pWDICtx: pointer to the WLAN DAL context
6236 pEventData: pointer to the event information structure
6237
6238 @see
6239 @return Result of the function call
6240*/
6241WDI_Status
6242WDI_MainShutdown
6243(
6244 WDI_ControlBlockType* pWDICtx,
6245 WDI_EventInfoType* pEventData
6246)
6247{
6248 /*--------------------------------------------------------------------
6249 Sanity Check
6250 ----------------------------------------------------------------------*/
6251 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6252 {
6253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6254 "Invalid parameters on Main Start %x %x",
6255 pWDICtx, pEventData);
6256 return WDI_STATUS_E_FAILURE;
6257 }
6258
6259 /*State at this point is BUSY - because we enter this state before posting
6260 an event to the FSM in order to prevent potential race conditions*/
6261
6262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6263 "Processing shutdown request in FSM");
6264
6265 /*Return Success*/
6266 return WDI_ProcessRequest( pWDICtx, pEventData );
6267
6268}/*WDI_MainShutdown*/
6269
6270/**
6271 @brief Main FSM Shutdown function for BUSY state
6272
6273
6274 @param pWDICtx: pointer to the WLAN DAL context
6275 pEventData: pointer to the event information structure
6276
6277 @see
6278 @return Result of the function call
6279*/
6280WDI_Status
6281WDI_MainShutdownBusy
6282(
6283 WDI_ControlBlockType* pWDICtx,
6284 WDI_EventInfoType* pEventData
6285)
6286{
6287 /*--------------------------------------------------------------------
6288 Sanity Check
6289 ----------------------------------------------------------------------*/
6290 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6291 {
6292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6293 "Invalid parameters on Main Start %x %x",
6294 pWDICtx, pEventData);
6295 return WDI_STATUS_E_FAILURE;
6296 }
6297
6298 /* If you are waiting for a HAL response at this stage, you are not
6299 * going to get it. Riva is already shutdown/crashed.
6300 */
6301 wpalTimerStop(&gWDICb.wptResponseTimer);
6302
6303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6304 "Processing shutdown request in FSM: Busy state ");
6305
6306 return WDI_ProcessRequest( pWDICtx, pEventData );
6307
6308}/*WDI_MainShutdownBusy*/
6309
6310
Jeff Johnsone7245742012-09-05 17:12:55 -07006311/*=======================================================================
6312
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006314
Jeff Johnson295189b2012-06-20 16:38:30 -07006315*=======================================================================*/
6316
6317/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006318 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006319========================================================================*/
6320/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006321 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006323
6324 @param pWDICtx: pointer to the WLAN DAL context
6325 pEventData: pointer to the event information structure
6326
Jeff Johnson295189b2012-06-20 16:38:30 -07006327 @see
6328 @return Result of the function call
6329*/
6330WDI_Status
6331WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006332(
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 WDI_ControlBlockType* pWDICtx,
6334 WDI_EventInfoType* pEventData
6335)
6336{
6337 WDI_StartReqParamsType* pwdiStartParams = NULL;
6338 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006340 wpt_uint16 usDataOffset = 0;
6341 wpt_uint16 usSendSize = 0;
6342
Jeff Johnsone7245742012-09-05 17:12:55 -07006343 tHalMacStartReqMsg halStartReq;
6344 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6346
6347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006349 -------------------------------------------------------------------------*/
6350 if (( NULL == pEventData ) ||
6351 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6352 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6353 {
6354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006358 }
6359
6360 /*-----------------------------------------------------------------------
6361 Get message buffer
6362 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006363 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006364 pwdiStartParams->usConfigBufferLen;
6365
Jeff Johnsone7245742012-09-05 17:12:55 -07006366 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006367 usLen,
6368 &pSendBuffer, &usDataOffset, &usSendSize))||
6369 ( usSendSize < (usDataOffset + usLen )))
6370 {
6371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6372 "Unable to get send buffer in start req %x %x %x",
6373 pEventData, pwdiStartParams, wdiStartRspCb);
6374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006376 }
6377
6378 /*-----------------------------------------------------------------------
6379 Fill in the message
6380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006381 halStartReq.startReqParams.driverType =
6382 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006383
Jeff Johnsone7245742012-09-05 17:12:55 -07006384 halStartReq.startReqParams.uConfigBufferLen =
6385 pwdiStartParams->usConfigBufferLen;
6386 wpalMemoryCopy( pSendBuffer+usDataOffset,
6387 &halStartReq.startReqParams,
6388 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006389
Jeff Johnsone7245742012-09-05 17:12:55 -07006390 usDataOffset += sizeof(halStartReq.startReqParams);
6391 wpalMemoryCopy( pSendBuffer+usDataOffset,
6392 pwdiStartParams->pConfigBuffer,
6393 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006394
6395 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006396 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006397
6398 /*Save Low Level Ind CB and associated user data - it will be used further
6399 on when an indication is coming from the lower MAC*/
6400 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006402
Jeff Johnsone7245742012-09-05 17:12:55 -07006403 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006405 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006407 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006408 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6409
Jeff Johnsone7245742012-09-05 17:12:55 -07006410
Jeff Johnson295189b2012-06-20 16:38:30 -07006411}/*WDI_ProcessStartReq*/
6412
6413/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006414 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006415 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006416
6417 @param pWDICtx: pointer to the WLAN DAL context
6418 pEventData: pointer to the event information structure
6419
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 @see
6421 @return Result of the function call
6422*/
6423WDI_Status
6424WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006425(
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 WDI_ControlBlockType* pWDICtx,
6427 WDI_EventInfoType* pEventData
6428)
6429{
6430 WDI_StopReqParamsType* pwdiStopParams = NULL;
6431 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006432 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 wpt_uint16 usDataOffset = 0;
6434 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006435 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006436 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6438
6439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 -------------------------------------------------------------------------*/
6442 if (( NULL == pEventData ) ||
6443 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6444 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6445 {
6446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006450 }
6451
6452 /*-----------------------------------------------------------------------
6453 Get message buffer
6454 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006455 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 sizeof(halStopReq.stopReqParams),
6457 &pSendBuffer, &usDataOffset, &usSendSize))||
6458 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6459 {
6460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6461 "Unable to get send buffer in stop req %x %x %x",
6462 pEventData, pwdiStopParams, wdiStopRspCb);
6463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006465 }
6466
6467 /*-----------------------------------------------------------------------
6468 Fill in the message
6469 -----------------------------------------------------------------------*/
6470 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6471 pwdiStopParams->wdiStopReason);
6472
Jeff Johnsone7245742012-09-05 17:12:55 -07006473 wpalMemoryCopy( pSendBuffer+usDataOffset,
6474 &halStopReq.stopReqParams,
6475 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006476
6477 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006478 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006479
6480 /*! TO DO: stop the data services */
6481 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6482 {
6483 /*Stop the STA Table !UT- check this logic again
6484 It is safer to do it here than on the response - because a stop is imminent*/
6485 WDI_STATableStop(pWDICtx);
6486
6487 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006488 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6489 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006490 {
6491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6492 "WDI Init failed to reset power state event");
6493
Jeff Johnsone7245742012-09-05 17:12:55 -07006494 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006495 return VOS_STATUS_E_FAILURE;
6496 }
6497 /* Stop Transport Driver, DXE */
6498 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6499 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006500 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006501 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006502 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6503 WDI_SET_POWER_STATE_TIMEOUT);
6504 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 {
6506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6507 "WDI Init failed to wait on an event");
6508
Jeff Johnsone7245742012-09-05 17:12:55 -07006509 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006510 return VOS_STATUS_E_FAILURE;
6511 }
6512 }
6513
6514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006515 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006517 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006518 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6519
6520}/*WDI_ProcessStopReq*/
6521
6522/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006523 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006525
6526 @param pWDICtx: pointer to the WLAN DAL context
6527 pEventData: pointer to the event information structure
6528
Jeff Johnson295189b2012-06-20 16:38:30 -07006529 @see
6530 @return Result of the function call
6531*/
6532WDI_Status
6533WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006534(
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 WDI_ControlBlockType* pWDICtx,
6536 WDI_EventInfoType* pEventData
6537)
6538{
Jeff Johnsone7245742012-09-05 17:12:55 -07006539 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6541
6542 /*Lock control block for cleanup*/
6543 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006544
Jeff Johnson295189b2012-06-20 16:38:30 -07006545 /*Clear all pending request*/
6546 WDI_ClearPendingRequests(pWDICtx);
6547
6548 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006549 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006550
6551 /* Close Data transport*/
6552 /* FTM mode does not open Data Path */
6553 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6554 {
6555 WDTS_Close(pWDICtx);
6556 }
6557
6558 /*Close the STA Table !UT- check this logic again*/
6559 WDI_STATableClose(pWDICtx);
6560
6561 /*close the PAL */
6562 wptStatus = wpalClose(pWDICtx->pPALContext);
6563 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6564 {
6565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6566 "Failed to wpal Close %d", wptStatus);
6567 WDI_ASSERT(0);
6568 }
6569
6570 /*Transition back to init state*/
6571 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6572
6573 wpalMutexRelease(&pWDICtx->wptMutex);
6574
6575 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006576 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006577
Jeff Johnsone7245742012-09-05 17:12:55 -07006578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006579}/*WDI_ProcessCloseReq*/
6580
6581
6582/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006583 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006584===========================================================================*/
6585
6586/**
6587 @brief Process Init Scan Request function (called when Main FSM
6588 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006589
6590 @param pWDICtx: pointer to the WLAN DAL context
6591 pEventData: pointer to the event information structure
6592
Jeff Johnson295189b2012-06-20 16:38:30 -07006593 @see
6594 @return Result of the function call
6595*/
6596WDI_Status
6597WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006598(
Jeff Johnson295189b2012-06-20 16:38:30 -07006599 WDI_ControlBlockType* pWDICtx,
6600 WDI_EventInfoType* pEventData
6601)
6602{
6603 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6604 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006605 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006606 wpt_uint16 usDataOffset = 0;
6607 wpt_uint16 usSendSize = 0;
6608 wpt_uint8 i = 0;
6609
6610 tHalInitScanReqMsg halInitScanReqMsg;
6611
Jeff Johnsone7245742012-09-05 17:12:55 -07006612 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 * It shold be removed once host and riva changes are in sync*/
6614 tHalInitScanConReqMsg halInitScanConReqMsg;
6615
6616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6617
6618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 -------------------------------------------------------------------------*/
6621 if (( NULL == pEventData ) ||
6622 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6623 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6624 {
6625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006629 }
6630
6631#if 0
6632 wpalMutexAcquire(&pWDICtx->wptMutex);
6633 /*-----------------------------------------------------------------------
6634 Check to see if SCAN is already in progress - if so reject the req
6635 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006636 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006637 -----------------------------------------------------------------------*/
6638 if ( pWDICtx->bScanInProgress )
6639 {
6640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6641 "Scan is already in progress - subsequent scan is not allowed"
6642 " until the first scan completes");
6643
6644 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006645 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006646 }
6647
Jeff Johnsone7245742012-09-05 17:12:55 -07006648 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6649 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006650
6651 wpalMutexRelease(&pWDICtx->wptMutex);
6652#endif
6653
Viral Modi9dc288a2012-12-10 13:09:21 -08006654 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006655 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006656 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 * It shold be removed once host and riva changes are in sync*/
6658 /*-----------------------------------------------------------------------
6659 Get message buffer
6660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006662 sizeof(halInitScanConReqMsg.initScanParams),
6663 &pSendBuffer, &usDataOffset, &usSendSize))||
6664 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6665 {
6666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6667 "Unable to get send buffer in init scan req %x %x %x",
6668 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006671 }
6672
6673
6674 /*-----------------------------------------------------------------------
6675 Fill in the message
6676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006677 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006678 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6679
6680 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6681 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6682
Jeff Johnsone7245742012-09-05 17:12:55 -07006683 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006687 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6689
6690 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6691 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6692
6693#ifdef WLAN_FEATURE_P2P
6694 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6695 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6696#endif
6697
Jeff Johnsone7245742012-09-05 17:12:55 -07006698 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006699 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6700
6701 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6702 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6705 }
6706
Jeff Johnsone7245742012-09-05 17:12:55 -07006707 wpalMemoryCopy( pSendBuffer+usDataOffset,
6708 &halInitScanConReqMsg.initScanParams,
6709 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006710 }
6711 else
6712 {
6713 /*-----------------------------------------------------------------------
6714 Get message buffer
6715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006717 sizeof(halInitScanReqMsg.initScanParams),
6718 &pSendBuffer, &usDataOffset, &usSendSize))||
6719 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6720 {
6721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6722 "Unable to get send buffer in init scan req %x %x %x",
6723 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006726 }
6727
6728
6729 /*-----------------------------------------------------------------------
6730 Fill in the message
6731 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006733 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6734
6735 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6736 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6737
Jeff Johnsone7245742012-09-05 17:12:55 -07006738 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006740 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6744
6745 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6746 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6747
Jeff Johnsone7245742012-09-05 17:12:55 -07006748 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6750
6751 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6752 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006753 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006754 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6755 }
6756
Jeff Johnsone7245742012-09-05 17:12:55 -07006757 wpalMemoryCopy( pSendBuffer+usDataOffset,
6758 &halInitScanReqMsg.initScanParams,
6759 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006760 }
6761
6762 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006763 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006764
6765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006766 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6770
6771}/*WDI_ProcessInitScanReq*/
6772
6773/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006774 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006775 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006776
6777 @param pWDICtx: pointer to the WLAN DAL context
6778 pEventData: pointer to the event information structure
6779
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 @see
6781 @return Result of the function call
6782*/
6783WDI_Status
6784WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006785(
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 WDI_ControlBlockType* pWDICtx,
6787 WDI_EventInfoType* pEventData
6788)
6789{
6790 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6791 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 wpt_uint16 usDataOffset = 0;
6794 wpt_uint16 usSendSize = 0;
6795
Jeff Johnsone7245742012-09-05 17:12:55 -07006796 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6798
6799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 -------------------------------------------------------------------------*/
6802 if (( NULL == pEventData ) ||
6803 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6804 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6805 {
6806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006810 }
6811
6812#if 0
6813 wpalMutexAcquire(&pWDICtx->wptMutex);
6814 /*-----------------------------------------------------------------------
6815 Check to see if SCAN is already in progress - start scan is only
6816 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006817 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006818 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006819 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6821 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6822 {
6823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6824 "Scan start not allowed in this state %d %d",
6825 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006826
Jeff Johnson295189b2012-06-20 16:38:30 -07006827 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 }
6830
Jeff Johnsone7245742012-09-05 17:12:55 -07006831 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006832
6833 wpalMutexRelease(&pWDICtx->wptMutex);
6834#endif
6835
6836 /*-----------------------------------------------------------------------
6837 Get message buffer
6838 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 sizeof(halStartScanReqMsg.startScanParams),
6841 &pSendBuffer, &usDataOffset, &usSendSize))||
6842 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6843 {
6844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6845 "Unable to get send buffer in start scan req %x %x %x",
6846 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006849 }
6850
Jeff Johnsone7245742012-09-05 17:12:55 -07006851 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006852 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006853 wpalMemoryCopy( pSendBuffer+usDataOffset,
6854 &halStartScanReqMsg.startScanParams,
6855 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006856
6857 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006858 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006859
6860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006861 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006862 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006863 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6865}/*WDI_ProcessStartScanReq*/
6866
6867
6868/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006869 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006871
6872 @param pWDICtx: pointer to the WLAN DAL context
6873 pEventData: pointer to the event information structure
6874
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 @see
6876 @return Result of the function call
6877*/
6878WDI_Status
6879WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006880(
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 WDI_ControlBlockType* pWDICtx,
6882 WDI_EventInfoType* pEventData
6883)
6884{
6885 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6886 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006887 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 wpt_uint16 usDataOffset = 0;
6889 wpt_uint16 usSendSize = 0;
6890
Jeff Johnsone7245742012-09-05 17:12:55 -07006891 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6893
6894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 -------------------------------------------------------------------------*/
6897 if (( NULL == pEventData ) ||
6898 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6899 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6900 {
6901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006902 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006905 }
6906
Jeff Johnsone7245742012-09-05 17:12:55 -07006907 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6908 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 * forwarded to HAL and result in hang*/
6910#if 0
6911 wpalMutexAcquire(&pWDICtx->wptMutex);
6912 /*-----------------------------------------------------------------------
6913 Check to see if SCAN is already in progress - end scan is only
6914 allowed when a scan is ongoing and the state of the scan procedure
6915 is started
6916 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
6919 {
6920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6921 "End start not allowed in this state %d %d",
6922 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006923
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 }
6927
Jeff Johnsone7245742012-09-05 17:12:55 -07006928 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006929
6930 wpalMutexRelease(&pWDICtx->wptMutex);
6931#endif
6932
6933 /*-----------------------------------------------------------------------
6934 Get message buffer
6935 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 sizeof(halEndScanReqMsg.endScanParams),
6938 &pSendBuffer, &usDataOffset, &usSendSize))||
6939 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
6940 {
6941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6942 "Unable to get send buffer in start scan req %x %x %x",
6943 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
6944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 }
6947
6948 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
6949
Jeff Johnsone7245742012-09-05 17:12:55 -07006950 wpalMemoryCopy( pSendBuffer+usDataOffset,
6951 &halEndScanReqMsg.endScanParams,
6952 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006953
6954 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006956
6957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006958 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
6962}/*WDI_ProcessEndScanReq*/
6963
6964
6965/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006966 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006967 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006968
6969 @param pWDICtx: pointer to the WLAN DAL context
6970 pEventData: pointer to the event information structure
6971
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 @see
6973 @return Result of the function call
6974*/
6975WDI_Status
6976WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006977(
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 WDI_ControlBlockType* pWDICtx,
6979 WDI_EventInfoType* pEventData
6980)
6981{
6982 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
6983 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07006984 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006985 wpt_uint16 usDataOffset = 0;
6986 wpt_uint16 usSendSize = 0;
6987 wpt_uint8 i = 0;
6988
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6991
6992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006994 -------------------------------------------------------------------------*/
6995 if (( NULL == pEventData ) ||
6996 ( NULL == pEventData->pEventData) ||
6997 ( NULL == pEventData->pCBfnc))
6998 {
6999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007003 }
7004
7005 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7006 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7008 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 * forwarded to HAL and result in hang*/
7010#if 0
7011 wpalMutexAcquire(&pWDICtx->wptMutex);
7012 /*-----------------------------------------------------------------------
7013 Check to see if SCAN is already in progress
7014 Finish scan gets invoked any scan states. ie. abort scan
7015 It should be allowed in any states.
7016 -----------------------------------------------------------------------*/
7017 if ( !pWDICtx->bScanInProgress )
7018 {
7019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7020 "Finish start not allowed in this state %d",
7021 pWDICtx->bScanInProgress );
7022
7023 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007024 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007025 }
7026
7027 /*-----------------------------------------------------------------------
7028 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007029 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007030 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7032 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007033 wpalMutexRelease(&pWDICtx->wptMutex);
7034#endif
7035
7036 if ( pWDICtx->bInBmps )
7037 {
7038 // notify DTS that we are entering BMPS
7039 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7040 }
7041
7042 /*-----------------------------------------------------------------------
7043 Get message buffer
7044 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007045 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007046 sizeof(halFinishScanReqMsg.finishScanParams),
7047 &pSendBuffer, &usDataOffset, &usSendSize))||
7048 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7049 {
7050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7051 "Unable to get send buffer in start scan req %x %x %x",
7052 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007055 }
7056
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7059
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7062
Jeff Johnsone7245742012-09-05 17:12:55 -07007063 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7065
7066 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7067 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7068
Jeff Johnsone7245742012-09-05 17:12:55 -07007069 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007070 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007071 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007073 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007074 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7075
Jeff Johnsone7245742012-09-05 17:12:55 -07007076 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007077 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7078
7079 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7080 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007081 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7083 }
7084
7085 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7086 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7087
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 wpalMemoryCopy( pSendBuffer+usDataOffset,
7089 &halFinishScanReqMsg.finishScanParams,
7090 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007091
7092 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007094
7095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007098 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007099 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7100}/*WDI_ProcessFinishScanReq*/
7101
7102
7103/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007104 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007105==========================================================================*/
7106/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007107 @brief Process BSS Join for a given Session
7108
7109 @param pWDICtx: pointer to the WLAN DAL context
7110 pEventData: pointer to the event information structure
7111
Jeff Johnson295189b2012-06-20 16:38:30 -07007112 @see
7113 @return Result of the function call
7114*/
7115WDI_Status
7116WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007117(
Jeff Johnson295189b2012-06-20 16:38:30 -07007118 WDI_ControlBlockType* pWDICtx,
7119 WDI_JoinReqParamsType* pwdiJoinParams,
7120 WDI_JoinRspCb wdiJoinRspCb,
7121 void* pUserData
7122)
7123{
7124 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007125 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007126 wpt_uint16 usDataOffset = 0;
7127 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007129
Jeff Johnsone7245742012-09-05 17:12:55 -07007130 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7132
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007133 wpalMutexAcquire(&pWDICtx->wptMutex);
7134
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 /*------------------------------------------------------------------------
7136 Check to see if we have any session with this BSSID already stored, we
7137 should not
7138 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007139 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7140 pwdiJoinParams->wdiReqInfo.macBSSID,
7141 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007142
7143 if ( NULL != pBSSSes )
7144 {
7145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007146 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7147 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007148
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007149 /*reset the bAssociationInProgress otherwise the next
7150 *join request will be queued*/
7151 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7152 wpalMutexRelease(&pWDICtx->wptMutex);
7153 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 }
7155
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007159 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 if ( NULL == pBSSSes )
7161 {
7162
7163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7164 "DAL has no free sessions - cannot run another join");
7165
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007166 /*reset the bAssociationInProgress otherwise the next
7167 *join request will be queued*/
7168 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007170 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 }
7172
7173 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007174 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7175 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 WDI_MAC_ADDR_LEN);
7177
7178 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007181
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 wpalMutexRelease(&pWDICtx->wptMutex);
7183
7184 /*-----------------------------------------------------------------------
7185 Get message buffer
7186 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 sizeof(halJoinReqMsg.joinReqParams),
7189 &pSendBuffer, &usDataOffset, &usSendSize))||
7190 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7191 {
7192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7193 "Unable to get send buffer in join req %x %x %x",
7194 pUserData, pwdiJoinParams, wdiJoinRspCb);
7195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 }
7198
7199 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007200 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007201
7202 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 pwdiJoinParams->wdiReqInfo.macSTASelf,
7204 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007205
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007207 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7208
7209 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7210
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007211#ifdef WLAN_FEATURE_VOWIFI
7212 halJoinReqMsg.joinReqParams.maxTxPower =
7213 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7214#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007215 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7217#endif
7218
Jeff Johnsone7245742012-09-05 17:12:55 -07007219 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007220 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7221 wdiSecondaryChannelOffset);
7222
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 wpalMemoryCopy( pSendBuffer+usDataOffset,
7224 &halJoinReqMsg.joinReqParams,
7225 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007226
7227 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007228 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007229
7230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7234 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007235
7236}/*WDI_ProcessBSSSessionJoinReq*/
7237
7238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007241
7242 @param pWDICtx: pointer to the WLAN DAL context
7243 pEventData: pointer to the event information structure
7244
Jeff Johnson295189b2012-06-20 16:38:30 -07007245 @see
7246 @return Result of the function call
7247*/
7248WDI_Status
7249WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007250(
Jeff Johnson295189b2012-06-20 16:38:30 -07007251 WDI_ControlBlockType* pWDICtx,
7252 WDI_EventInfoType* pEventData
7253)
7254{
7255 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7256 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7257 WDI_JoinRspCb wdiJoinRspCb = NULL;
7258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7259
7260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007261 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007262 -------------------------------------------------------------------------*/
7263 if (( NULL == pEventData ) ||
7264 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7265 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7266 {
7267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007272
Jeff Johnson295189b2012-06-20 16:38:30 -07007273 /*-------------------------------------------------------------------------
7274 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007275 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 -------------------------------------------------------------------------*/
7277 wpalMutexAcquire(&pWDICtx->wptMutex);
7278
7279 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7280 {
7281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7282 "Association is currently in progress, queueing new join req");
7283
7284 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 pwdiJoinParams->wdiReqInfo.macBSSID);
7287
7288 wpalMutexRelease(&pWDICtx->wptMutex);
7289
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 }
7292
7293 /*Starting a new association */
7294 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7295 wpalMutexRelease(&pWDICtx->wptMutex);
7296
7297 /*Process the Join Request*/
7298 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7299 wdiJoinRspCb,pEventData->pUserData);
7300
7301}/*WDI_ProcessJoinReq*/
7302
7303
7304/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007306 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007307
7308 @param pWDICtx: pointer to the WLAN DAL context
7309 pEventData: pointer to the event information structure
7310
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 @see
7312 @return Result of the function call
7313*/
7314WDI_Status
7315WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007316(
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 WDI_ControlBlockType* pWDICtx,
7318 WDI_EventInfoType* pEventData
7319)
7320{
7321 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7322 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 wpt_uint16 uMsgSize = 0;
7326 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 wpt_uint16 usDataOffset = 0;
7328 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007329 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007330
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7333
7334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007335 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 -------------------------------------------------------------------------*/
7337 if (( NULL == pEventData ) ||
7338 ( NULL == pEventData->pEventData ) ||
7339 ( NULL == pEventData->pCBfnc ))
7340 {
7341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007345 }
7346
7347 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7348 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7349 /*-------------------------------------------------------------------------
7350 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007351 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 -------------------------------------------------------------------------*/
7353 wpalMutexAcquire(&pWDICtx->wptMutex);
7354
7355 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7359 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7360 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007361
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 {
7364#ifdef WLAN_FEATURE_VOWIFI_11R
7365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007368 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 if ( NULL == pBSSSes )
7370 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007371
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7373 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007374
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007378
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007380 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7381 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007383
Jeff Johnson295189b2012-06-20 16:38:30 -07007384 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007385 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007386 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7387#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007388 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 * Request in case of IBSS*/
7390 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7391 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7392 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7393 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7394 {
7395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007397 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007398 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 if ( NULL == pBSSSes )
7400 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007401
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7403 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007404
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007408
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007410 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7411 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007413
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7417 }
7418 else
7419 {
7420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7422 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7423 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7424
Jeff Johnson295189b2012-06-20 16:38:30 -07007425 /* for IBSS testing */
7426 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 }
7429#endif
7430 }
7431
7432 /*------------------------------------------------------------------------
7433 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 ------------------------------------------------------------------------*/
7436 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7437 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7439 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7440 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7441 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007442
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007444
7445 wpalMutexRelease(&pWDICtx->wptMutex);
7446
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 }
7449
7450 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7452 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 sizeof(pWDICtx->wdiCachedConfigBssReq));
7454
7455 wpalMutexRelease(&pWDICtx->wptMutex);
7456
Jeff Johnsone7245742012-09-05 17:12:55 -07007457 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7458#ifdef WLAN_FEATURE_11AC
7459 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007460 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 else
7462#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007463 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007464
7465 /*-----------------------------------------------------------------------
7466 Get message buffer
7467 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7470 ( usSendSize < (usDataOffset + uMsgSize )))
7471 {
7472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7473 "Unable to get send buffer in config bss req %x %x %x",
7474 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007477 }
7478
7479 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007480#ifdef WLAN_FEATURE_11AC
7481 if (WDI_getFwWlanFeatCaps(DOT11AC))
7482 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7483 &pwdiConfigBSSParams->wdiReqInfo);
7484 else
7485#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 &pwdiConfigBSSParams->wdiReqInfo);
7488
7489 /* Need to fill in the STA Index to invalid, since at this point we have not
7490 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007492
7493 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7495
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007496#ifdef WLAN_FEATURE_11AC
7497 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7498 wpalMemoryCopy( pSendBuffer+usDataOffset,
7499 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7500 uMsgSize);
7501 }else
7502#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 wpalMemoryCopy( pSendBuffer+usDataOffset,
7504 &halConfigBssReqMsg.uBssParams.configBssParams,
7505 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007506
7507 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007509
7510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007511 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7514 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007515 WDI_CONFIG_BSS_RESP);
7516
7517}/*WDI_ProcessConfigBSSReq*/
7518
7519
7520/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007523
7524 @param pWDICtx: pointer to the WLAN DAL context
7525 pEventData: pointer to the event information structure
7526
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 @see
7528 @return Result of the function call
7529*/
7530WDI_Status
7531WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007532(
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 WDI_ControlBlockType* pWDICtx,
7534 WDI_EventInfoType* pEventData
7535)
7536{
7537 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7538 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 wpt_uint16 usDataOffset = 0;
7543 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007545
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7548
7549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 -------------------------------------------------------------------------*/
7552 if (( NULL == pEventData ) ||
7553 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7554 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7555 {
7556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 }
7561
7562 /*-------------------------------------------------------------------------
7563 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007564 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 -------------------------------------------------------------------------*/
7566 wpalMutexAcquire(&pWDICtx->wptMutex);
7567
7568 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007571 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7572 pwdiDelBSSParams->ucBssIdx,
7573 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007574
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 {
7577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007578 "%s: BSS does not yet exist. ucBssIdx %d",
7579 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007580
7581 wpalMutexRelease(&pWDICtx->wptMutex);
7582
7583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007585
7586 /*------------------------------------------------------------------------
7587 Check if this BSS is being currently processed or queued,
7588 if queued - queue the new request as well
7589 ------------------------------------------------------------------------*/
7590 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007591 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7593 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7594 __func__, pwdiDelBSSParams->ucBssIdx);
7595
7596 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7597
7598 wpalMutexRelease(&pWDICtx->wptMutex);
7599
7600 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007601 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007602
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 /*-----------------------------------------------------------------------
7604 If we receive a Del BSS request for an association that is already in
7605 progress, it indicates that the assoc has failed => we no longer have
7606 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007607 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 -----------------------------------------------------------------------*/
7609 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7610 {
7611 /*We can switch to false here because even if a subsequent Join comes in
7612 it will only be processed when DAL transitions out of BUSY state which
7613 happens when the Del BSS request comes */
7614 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7615
7616 /*Former association is complete - prepare next pending assoc for
7617 processing */
7618 WDI_DequeueAssocRequest(pWDICtx);
7619 }
7620
7621 wpalMutexRelease(&pWDICtx->wptMutex);
7622 /*-----------------------------------------------------------------------
7623 Get message buffer
7624 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007625 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007626 sizeof(halBssReqMsg.deleteBssParams),
7627 &pSendBuffer, &usDataOffset, &usSendSize))||
7628 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7629 {
7630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7631 "Unable to get send buffer in start req %x %x %x",
7632 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 }
7636
7637 /*Fill in the message request structure*/
7638
7639 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007640 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007641
Jeff Johnsone7245742012-09-05 17:12:55 -07007642 wpalMemoryCopy( pSendBuffer+usDataOffset,
7643 &halBssReqMsg.deleteBssParams,
7644 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007645
7646 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007648
Jeff Johnsone7245742012-09-05 17:12:55 -07007649
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007653 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007654 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7655
Jeff Johnsone7245742012-09-05 17:12:55 -07007656
Jeff Johnson295189b2012-06-20 16:38:30 -07007657}/*WDI_ProcessDelBSSReq*/
7658
7659/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007660 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007661 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007662
7663 @param pWDICtx: pointer to the WLAN DAL context
7664 pEventData: pointer to the event information structure
7665
Jeff Johnson295189b2012-06-20 16:38:30 -07007666 @see
7667 @return Result of the function call
7668*/
7669WDI_Status
7670WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007671(
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 WDI_ControlBlockType* pWDICtx,
7673 WDI_EventInfoType* pEventData
7674)
7675{
7676 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7677 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 wpt_uint16 usDataOffset = 0;
7682 wpt_uint16 usSendSize = 0;
7683 wpt_uint16 uMsgSize = 0;
7684 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007686
Jeff Johnsone7245742012-09-05 17:12:55 -07007687 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7689
7690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 -------------------------------------------------------------------------*/
7693 if (( NULL == pEventData ) ||
7694 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7695 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7696 {
7697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 }
7702
7703 /*-------------------------------------------------------------------------
7704 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 -------------------------------------------------------------------------*/
7707 wpalMutexAcquire(&pWDICtx->wptMutex);
7708
7709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7713 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7714 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
7716 if ( NULL == pBSSSes )
7717 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7719 "%s: Association sequence for this BSS does not yet exist - "
7720 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7721 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007722
7723 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 }
7726
7727 /*------------------------------------------------------------------------
7728 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007729 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 ------------------------------------------------------------------------*/
7731 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7732 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7734 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7735 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007736
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007738
7739 wpalMutexRelease(&pWDICtx->wptMutex);
7740
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 }
7743
7744 /*-----------------------------------------------------------------------
7745 If Post Assoc was not yet received - the current association must
7746 be in progress
7747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7750 {
7751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7752 "Association sequence for this BSS association no longer in "
7753 "progress - not allowed");
7754
7755 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 }
7758
7759 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 -----------------------------------------------------------------------*/
7762 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7763 {
7764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7765 "Post Assoc not allowed before JOIN - failing request");
7766
7767 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 }
7770
7771 wpalMutexRelease(&pWDICtx->wptMutex);
7772
7773 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7774 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7775 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7780 ( usSendSize < (usDataOffset + uMsgSize )))
7781 {
7782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7783 "Unable to get send buffer in start req %x %x %x",
7784 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 }
7788
7789 /*Copy the STA parameters */
7790 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7791 &pwdiPostAssocParams->wdiSTAParams );
7792
7793 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 WDI_STATableFindStaidByAddr(pWDICtx,
7796 pwdiPostAssocParams->wdiSTAParams.macSTA,
7797 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7798 {
7799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7800 "This station does not exist in the WDI Station Table %d");
7801 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007802 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 }
7805
7806 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007808 pBSSSes->ucBSSIdx;
7809
7810 /*Copy the BSS parameters */
7811 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7812 &pwdiPostAssocParams->wdiBSSParams);
7813
7814 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 WDI_STATableFindStaidByAddr(pWDICtx,
7817 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007818 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007819 {
7820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7821 "This station does not exist in the WDI Station Table %d");
7822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 }
7825
7826 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007827 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007828 pBSSSes->ucBSSIdx;
7829
Jeff Johnsone7245742012-09-05 17:12:55 -07007830
7831 wpalMemoryCopy( pSendBuffer+usDataOffset,
7832 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7833 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007834
7835 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7836
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7838 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7839 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007840
Jeff Johnsone7245742012-09-05 17:12:55 -07007841
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007843 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007844
Jeff Johnsone7245742012-09-05 17:12:55 -07007845
7846 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007849
7850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007851 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007852 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7855
Jeff Johnsone7245742012-09-05 17:12:55 -07007856
Jeff Johnson295189b2012-06-20 16:38:30 -07007857}/*WDI_ProcessPostAssocReq*/
7858
7859/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007862
7863 @param pWDICtx: pointer to the WLAN DAL context
7864 pEventData: pointer to the event information structure
7865
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 @see
7867 @return Result of the function call
7868*/
7869WDI_Status
7870WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007871(
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 WDI_ControlBlockType* pWDICtx,
7873 WDI_EventInfoType* pEventData
7874)
7875{
7876 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7877 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007879 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007880 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 wpt_uint16 usDataOffset = 0;
7882 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7885
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7888
7889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 -------------------------------------------------------------------------*/
7892 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7893 ( NULL == pEventData->pCBfnc ))
7894 {
7895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 }
7900
7901 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
7902 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
7903 /*-------------------------------------------------------------------------
7904 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 -------------------------------------------------------------------------*/
7907 wpalMutexAcquire(&pWDICtx->wptMutex);
7908
7909 /*------------------------------------------------------------------------
7910 Find the BSS for which the request is made and identify WDI session
7911 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007912 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
7913 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 &macBSSID))
7915 {
7916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7917 "This station does not exist in the WDI Station Table %d");
7918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 }
7921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
7923 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007924 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7926 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
7927 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007928
7929 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 }
7932
7933 /*------------------------------------------------------------------------
7934 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 ------------------------------------------------------------------------*/
7937 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7938 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7940 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7941 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007942
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 }
7947
7948 wpalMutexRelease(&pWDICtx->wptMutex);
7949 /*-----------------------------------------------------------------------
7950 Get message buffer
7951 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 sizeof(halDelStaReqMsg.delStaParams),
7954 &pSendBuffer, &usDataOffset, &usSendSize))||
7955 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
7956 {
7957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7958 "Unable to get send buffer in start req %x %x %x",
7959 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
7960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 }
7963
Jeff Johnsone7245742012-09-05 17:12:55 -07007964 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
7965 wpalMemoryCopy( pSendBuffer+usDataOffset,
7966 &halDelStaReqMsg.delStaParams,
7967 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007968
7969 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007971
7972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007973 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
7977
7978}/*WDI_ProcessDelSTAReq*/
7979
7980
7981/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007983==========================================================================*/
7984/**
7985 @brief Process Set BSS Key Request function (called when Main FSM
7986 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007987
7988 @param pWDICtx: pointer to the WLAN DAL context
7989 pEventData: pointer to the event information structure
7990
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 @see
7992 @return Result of the function call
7993*/
7994WDI_Status
7995WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007996(
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 WDI_ControlBlockType* pWDICtx,
7998 WDI_EventInfoType* pEventData
7999)
8000{
8001 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8002 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 wpt_uint16 usDataOffset = 0;
8007 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8010 wpt_uint8 keyIndex = 0;
8011
8012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8013
8014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 -------------------------------------------------------------------------*/
8017 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8018 ( NULL == pEventData->pCBfnc ))
8019 {
8020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 }
8025
8026 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8027 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8028 /*-------------------------------------------------------------------------
8029 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 -------------------------------------------------------------------------*/
8032 wpalMutexAcquire(&pWDICtx->wptMutex);
8033
8034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8038 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8039 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008040
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 {
8043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8045 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008046
8047 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 }
8050
8051 /*------------------------------------------------------------------------
8052 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 ------------------------------------------------------------------------*/
8055 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8056 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8058 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8059 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008060
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 }
8065
8066
8067 wpalMutexRelease(&pWDICtx->wptMutex);
8068 /*-----------------------------------------------------------------------
8069 Get message buffer
8070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8073 &pSendBuffer, &usDataOffset, &usSendSize))||
8074 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8075 {
8076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8077 "Unable to get send buffer in set bss key req %x %x %x",
8078 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008081 }
8082
8083 /*-----------------------------------------------------------------------
8084 Copy the Key parameters into the HAL message
8085 -----------------------------------------------------------------------*/
8086
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008088
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8091
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8094
8095 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8096 keyIndex++)
8097 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8100 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8101 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8102 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8103 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8104 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008105 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8111 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 WDI_MAX_KEY_LENGTH);
8114 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008115
8116 wpalMemoryCopy( pSendBuffer+usDataOffset,
8117 &halSetBssKeyReqMsg.setBssKeyParams,
8118 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008119
8120 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008122
8123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8127 wdiSetBSSKeyRspCb, pEventData->pUserData,
8128 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008129
8130}/*WDI_ProcessSetBssKeyReq*/
8131
8132/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008135
8136 @param pWDICtx: pointer to the WLAN DAL context
8137 pEventData: pointer to the event information structure
8138
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 @see
8140 @return Result of the function call
8141*/
8142WDI_Status
8143WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008144(
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 WDI_ControlBlockType* pWDICtx,
8146 WDI_EventInfoType* pEventData
8147)
8148{
8149 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8150 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 wpt_uint16 usDataOffset = 0;
8155 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008156 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8159
8160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 -------------------------------------------------------------------------*/
8163 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8164 ( NULL == pEventData->pCBfnc ))
8165 {
8166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 }
8171
8172 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8173 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8174 /*-------------------------------------------------------------------------
8175 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008176 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008177 -------------------------------------------------------------------------*/
8178 wpalMutexAcquire(&pWDICtx->wptMutex);
8179
8180 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8184 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8185 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008186
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 {
8189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8191 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008192
8193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 }
8196
8197 /*------------------------------------------------------------------------
8198 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 ------------------------------------------------------------------------*/
8201 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8202 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8204 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8205 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008206
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008209 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008210 }
8211
8212
8213 wpalMutexRelease(&pWDICtx->wptMutex);
8214
8215 /*-----------------------------------------------------------------------
8216 Get message buffer
8217 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008218 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008219 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8220 &pSendBuffer, &usDataOffset, &usSendSize))||
8221 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8222 {
8223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8224 "Unable to get send buffer in set bss key req %x %x %x",
8225 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008228 }
8229 /*-----------------------------------------------------------------------
8230 Copy the Key parameters into the HAL message
8231 -----------------------------------------------------------------------*/
8232 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8233
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8236
8237 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8238
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8241
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 wpalMemoryCopy( pSendBuffer+usDataOffset,
8243 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8244 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008245
8246 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008247 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008248
8249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008255}/*WDI_ProcessRemoveBssKeyReq*/
8256
8257/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008260
8261 @param pWDICtx: pointer to the WLAN DAL context
8262 pEventData: pointer to the event information structure
8263
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 @see
8265 @return Result of the function call
8266*/
8267WDI_Status
8268WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008269(
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 WDI_ControlBlockType* pWDICtx,
8271 WDI_EventInfoType* pEventData
8272)
8273{
8274 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8275 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8276 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008277 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 wpt_uint16 usDataOffset = 0;
8279 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008280 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8284 wpt_uint8 keyIndex = 0;
8285
8286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8287
8288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 -------------------------------------------------------------------------*/
8291 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8292 ( NULL == pEventData->pCBfnc ))
8293 {
8294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 }
8299
8300 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8301 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8302 /*-------------------------------------------------------------------------
8303 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 -------------------------------------------------------------------------*/
8306 wpalMutexAcquire(&pWDICtx->wptMutex);
8307
8308 /*------------------------------------------------------------------------
8309 Find the BSS for which the request is made and identify WDI session
8310 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8312 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008313 &macBSSID))
8314 {
8315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8316 "This station does not exist in the WDI Station Table %d");
8317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008319 }
8320
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8325 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8326 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
8328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008331
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 /*------------------------------------------------------------------------
8333 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 ------------------------------------------------------------------------*/
8336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8337 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8339 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8340 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008341
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 }
8346
8347
8348 wpalMutexRelease(&pWDICtx->wptMutex);
8349 /*-----------------------------------------------------------------------
8350 Get message buffer
8351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8354 &pSendBuffer, &usDataOffset, &usSendSize))||
8355 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8356 {
8357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8358 "Unable to get send buffer in set bss key req %x %x %x",
8359 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 }
8363 /*-----------------------------------------------------------------------
8364 Copy the STA Key parameters into the HAL message
8365 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8368
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8371
8372 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8373
8374 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8375
8376 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8377
8378#ifdef WLAN_SOFTAP_FEATURE
8379 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8380 keyIndex++)
8381 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8384 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8385 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8386 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8387 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8388 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008391 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008392 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8395 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 WDI_MAX_KEY_LENGTH);
8398 }
8399#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8402 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8403 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8404 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8405 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8406 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8413 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 WDI_MAX_KEY_LENGTH);
8416#endif
8417
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 wpalMemoryCopy( pSendBuffer+usDataOffset,
8419 &halSetStaKeyReqMsg.setStaKeyParams,
8420 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008421
8422 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008424
8425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008428 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8429 wdiSetSTAKeyRspCb, pEventData->pUserData,
8430 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008431
8432}/*WDI_ProcessSetSTAKeyReq*/
8433
8434/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008437
8438 @param pWDICtx: pointer to the WLAN DAL context
8439 pEventData: pointer to the event information structure
8440
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 @see
8442 @return Result of the function call
8443*/
8444WDI_Status
8445WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008446(
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 WDI_ControlBlockType* pWDICtx,
8448 WDI_EventInfoType* pEventData
8449)
8450{
8451 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8452 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8453 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 wpt_uint16 usDataOffset = 0;
8456 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 wpt_macAddr macBSSID;
8459 wpt_uint8 ucCurrentBSSSesIdx;
8460 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8462
8463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008465 -------------------------------------------------------------------------*/
8466 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8467 ( NULL == pEventData->pCBfnc ))
8468 {
8469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 }
8474
8475 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8476 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8477 /*-------------------------------------------------------------------------
8478 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008479 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 -------------------------------------------------------------------------*/
8481 wpalMutexAcquire(&pWDICtx->wptMutex);
8482
8483 /*------------------------------------------------------------------------
8484 Find the BSS for which the request is made and identify WDI session
8485 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8487 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 &macBSSID))
8489 {
8490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8491 "This station does not exist in the WDI Station Table %d");
8492 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 }
8495
Jeff Johnsone7245742012-09-05 17:12:55 -07008496 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8497 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8500 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8501 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008502
8503 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008506
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 /*------------------------------------------------------------------------
8508 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 ------------------------------------------------------------------------*/
8511 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8512 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8514 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8515 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008516
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 }
8521
8522
8523
8524 wpalMutexRelease(&pWDICtx->wptMutex);
8525 /*-----------------------------------------------------------------------
8526 Get message buffer
8527 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8530 &pSendBuffer, &usDataOffset, &usSendSize))||
8531 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8532 {
8533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8534 "Unable to get send buffer in set bss key req %x %x %x",
8535 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 }
8539
8540 /*-----------------------------------------------------------------------
8541 Copy the Key parameters into the HAL message
8542 -----------------------------------------------------------------------*/
8543
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8546
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8549
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8552
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8555
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 wpalMemoryCopy( pSendBuffer+usDataOffset,
8557 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8558 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008559
8560 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008561 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008562
8563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008569
8570}/*WDI_ProcessRemoveSTAKeyReq*/
8571
8572/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008575
8576 @param pWDICtx: pointer to the WLAN DAL context
8577 pEventData: pointer to the event information structure
8578
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 @see
8580 @return Result of the function call
8581*/
8582WDI_Status
8583WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008584(
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 WDI_ControlBlockType* pWDICtx,
8586 WDI_EventInfoType* pEventData
8587)
8588{
8589 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8590 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8591 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 wpt_uint16 usDataOffset = 0;
8594 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008598 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8599 wpt_uint8 keyIndex = 0;
8600
8601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8602
8603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 -------------------------------------------------------------------------*/
8606 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8607 ( NULL == pEventData->pCBfnc ))
8608 {
8609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 }
8614
8615 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8616 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8617 /*-------------------------------------------------------------------------
8618 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 -------------------------------------------------------------------------*/
8621 wpalMutexAcquire(&pWDICtx->wptMutex);
8622
8623 /*------------------------------------------------------------------------
8624 Find the BSS for which the request is made and identify WDI session
8625 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8627 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 &macBSSID))
8629 {
8630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8631 "This station does not exist in the WDI Station Table %d");
8632 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 }
8635
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8637 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 {
8639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8641 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008642
8643 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008646
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 /*------------------------------------------------------------------------
8648 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 ------------------------------------------------------------------------*/
8651 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8652 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8654 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8655 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008656
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008658 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 }
8661
8662
8663 wpalMutexRelease(&pWDICtx->wptMutex);
8664 /*-----------------------------------------------------------------------
8665 Get message buffer
8666 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8669 &pSendBuffer, &usDataOffset, &usSendSize))||
8670 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8671 {
8672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8673 "Unable to get send buffer in set bss key req %x %x %x",
8674 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 }
8678 /*-----------------------------------------------------------------------
8679 Copy the STA Key parameters into the HAL message
8680 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008682 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8683
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8686
8687 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8688
8689 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8690
8691 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8692
8693#ifdef WLAN_SOFTAP_FEATURE
8694 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8695 keyIndex++)
8696 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8699 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8700 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8701 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8702 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8703 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8710 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 WDI_MAX_KEY_LENGTH);
8713 }
8714#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008715 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8717 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8718 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8719 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8720 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8721 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8728 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 WDI_MAX_KEY_LENGTH);
8731#endif
8732
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 wpalMemoryCopy( pSendBuffer+usDataOffset,
8734 &halSetStaKeyReqMsg.setStaKeyParams,
8735 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008736
8737 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008739
8740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8744 wdiSetSTAKeyRspCb, pEventData->pUserData,
8745 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008746
8747}/*WDI_ProcessSetSTABcastKeyReq*/
8748
8749/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008752
8753 @param pWDICtx: pointer to the WLAN DAL context
8754 pEventData: pointer to the event information structure
8755
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 @see
8757 @return Result of the function call
8758*/
8759WDI_Status
8760WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008761(
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 WDI_ControlBlockType* pWDICtx,
8763 WDI_EventInfoType* pEventData
8764)
8765{
8766 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8767 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8768 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 wpt_uint16 usDataOffset = 0;
8771 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008772 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 wpt_macAddr macBSSID;
8774 wpt_uint8 ucCurrentBSSSesIdx;
8775 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8777
8778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 -------------------------------------------------------------------------*/
8781 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8782 ( NULL == pEventData->pCBfnc ))
8783 {
8784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008785 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 }
8789
8790 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8791 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8792 /*-------------------------------------------------------------------------
8793 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 -------------------------------------------------------------------------*/
8796 wpalMutexAcquire(&pWDICtx->wptMutex);
8797
8798 /*------------------------------------------------------------------------
8799 Find the BSS for which the request is made and identify WDI session
8800 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8802 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 &macBSSID))
8804 {
8805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8806 "This station does not exist in the WDI Station Table %d");
8807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 }
8810
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8812 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8815 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8816 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008817
8818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008821
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 /*------------------------------------------------------------------------
8823 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008825 ------------------------------------------------------------------------*/
8826 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8827 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8829 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8830 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 }
8836
8837
8838
8839 wpalMutexRelease(&pWDICtx->wptMutex);
8840 /*-----------------------------------------------------------------------
8841 Get message buffer
8842 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8845 &pSendBuffer, &usDataOffset, &usSendSize))||
8846 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8847 {
8848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8849 "Unable to get send buffer in set bss key req %x %x %x",
8850 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 }
8854
8855 /*-----------------------------------------------------------------------
8856 Copy the Key parameters into the HAL message
8857 -----------------------------------------------------------------------*/
8858
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8861
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8864
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8867
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8870
Jeff Johnsone7245742012-09-05 17:12:55 -07008871 wpalMemoryCopy( pSendBuffer+usDataOffset,
8872 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8873 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008874
8875 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008877
8878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008884
8885}/*WDI_ProcessRemoveSTABcastKeyReq*/
8886
8887/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008889==========================================================================*/
8890/**
8891 @brief Process Add TSpec Request function (called when Main FSM
8892 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008893
8894 @param pWDICtx: pointer to the WLAN DAL context
8895 pEventData: pointer to the event information structure
8896
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 @see
8898 @return Result of the function call
8899*/
8900WDI_Status
8901WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008902(
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 WDI_ControlBlockType* pWDICtx,
8904 WDI_EventInfoType* pEventData
8905)
8906{
8907 WDI_AddTSReqParamsType* pwdiAddTSParams;
8908 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 wpt_uint16 usDataOffset = 0;
8913 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 wpt_macAddr macBSSID;
8916 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07008917
Jeff Johnson295189b2012-06-20 16:38:30 -07008918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8919
8920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 -------------------------------------------------------------------------*/
8923 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8924 ( NULL == pEventData->pCBfnc ))
8925 {
8926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 }
8931
8932 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
8933 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
8934 /*-------------------------------------------------------------------------
8935 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 -------------------------------------------------------------------------*/
8938 wpalMutexAcquire(&pWDICtx->wptMutex);
8939
8940 /*------------------------------------------------------------------------
8941 Find the BSS for which the request is made and identify WDI session
8942 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008943 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8944 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 &macBSSID))
8946 {
8947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8948 "This station does not exist in the WDI Station Table %d");
8949 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 }
8952
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8954 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8957 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8958 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008959
8960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008963
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 /*------------------------------------------------------------------------
8965 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 ------------------------------------------------------------------------*/
8968 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8969 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8971 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8972 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008973
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 }
8978
8979 wpalMutexRelease(&pWDICtx->wptMutex);
8980 /*-----------------------------------------------------------------------
8981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
8985 sizeof(halAddTsParams),
8986 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 &usSendSize))||
8988 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
8989 {
8990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8991 "Unable to get send buffer in set bss key req %x %x %x",
8992 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
8993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 }
8996
8997 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
8998 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
8999
9000 //TSPEC IE
9001 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9002 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009007 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009009 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009018 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9033
9034 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9049
9050 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9055
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 wpalMemoryCopy( pSendBuffer+usDataOffset,
9057 &halAddTsParams,
9058 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009059
9060 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009062
9063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009069}/*WDI_ProcessAddTSpecReq*/
9070
9071
9072/**
9073 @brief Process Del TSpec Request function (called when Main FSM
9074 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009075
9076 @param pWDICtx: pointer to the WLAN DAL context
9077 pEventData: pointer to the event information structure
9078
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 @see
9080 @return Result of the function call
9081*/
9082WDI_Status
9083WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009084(
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 WDI_ControlBlockType* pWDICtx,
9086 WDI_EventInfoType* pEventData
9087)
9088{
9089 WDI_DelTSReqParamsType* pwdiDelTSParams;
9090 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 wpt_uint16 usDataOffset = 0;
9095 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9098
9099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 -------------------------------------------------------------------------*/
9102 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9103 ( NULL == pEventData->pCBfnc ))
9104 {
9105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 }
9110
9111 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9112 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9113
9114 /*-------------------------------------------------------------------------
9115 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 -------------------------------------------------------------------------*/
9118 wpalMutexAcquire(&pWDICtx->wptMutex);
9119
9120 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9124 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9125 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009126
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9130 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9131 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9132
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 }
9136
9137 /*------------------------------------------------------------------------
9138 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 ------------------------------------------------------------------------*/
9141 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9142 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9144 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9145 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009146
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009149 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009150 }
9151
9152
9153 wpalMutexRelease(&pWDICtx->wptMutex);
9154 /*-----------------------------------------------------------------------
9155 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9160 &pSendBuffer, &usDataOffset, &usSendSize))||
9161 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9162 {
9163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9164 "Unable to get send buffer in set bss key req %x %x %x",
9165 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 }
9169
Jeff Johnsone7245742012-09-05 17:12:55 -07009170 wpalMemoryCopy( pSendBuffer+usDataOffset,
9171 &pwdiDelTSParams->wdiDelTSInfo,
9172 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009173
9174 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009176
9177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9181 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009182}/*WDI_ProcessDelTSpecReq*/
9183
9184/**
9185 @brief Process Update EDCA Params Request function (called when
9186 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009187
9188 @param pWDICtx: pointer to the WLAN DAL context
9189 pEventData: pointer to the event information structure
9190
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 @see
9192 @return Result of the function call
9193*/
9194WDI_Status
9195WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009196(
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 WDI_ControlBlockType* pWDICtx,
9198 WDI_EventInfoType* pEventData
9199)
9200{
9201 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9202 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 wpt_uint16 usDataOffset = 0;
9207 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9210
9211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 -------------------------------------------------------------------------*/
9214 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9215 ( NULL == pEventData->pCBfnc ))
9216 {
9217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 }
9222
9223 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9224 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9225 /*-------------------------------------------------------------------------
9226 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 -------------------------------------------------------------------------*/
9229 wpalMutexAcquire(&pWDICtx->wptMutex);
9230
9231 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009233 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9235 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9236 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009237
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 {
9240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9242 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009243
9244 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 }
9247
9248 /*------------------------------------------------------------------------
9249 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 ------------------------------------------------------------------------*/
9252 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9253 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9255 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9256 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009257
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 }
9262
9263
9264 wpalMutexRelease(&pWDICtx->wptMutex);
9265 /*-----------------------------------------------------------------------
9266 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9271 &pSendBuffer, &usDataOffset, &usSendSize))||
9272 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9273 {
9274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9275 "Unable to get send buffer in set bss key req %x %x %x",
9276 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 }
9280
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 wpalMemoryCopy( pSendBuffer+usDataOffset,
9282 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9283 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009284
9285 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009287
9288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9292 wdiUpdateEDCARspCb, pEventData->pUserData,
9293 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009294}/*WDI_ProcessUpdateEDCAParamsReq*/
9295
9296/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009299
9300 @param pWDICtx: pointer to the WLAN DAL context
9301 pEventData: pointer to the event information structure
9302
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 @see
9304 @return Result of the function call
9305*/
9306WDI_Status
9307WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009308(
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 WDI_ControlBlockType* pWDICtx,
9310 WDI_EventInfoType* pEventData
9311)
9312{
9313 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9314 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 wpt_uint16 usDataOffset = 0;
9319 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 wpt_macAddr macBSSID;
9322
9323 tAddBASessionReqMsg halAddBASessionReq;
9324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9325
9326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 -------------------------------------------------------------------------*/
9329 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9330 ( NULL == pEventData->pCBfnc ))
9331 {
9332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 }
9337
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9342 /*-------------------------------------------------------------------------
9343 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 -------------------------------------------------------------------------*/
9346 wpalMutexAcquire(&pWDICtx->wptMutex);
9347
9348 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9352 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 &macBSSID))
9354 {
9355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9356 "This station does not exist in the WDI Station Table %d");
9357 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 }
9360
9361
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009363
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9367 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9368 __func__, MAC_ADDR_ARRAY(macBSSID));
9369
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 }
9373
9374 /*------------------------------------------------------------------------
9375 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009377 ------------------------------------------------------------------------*/
9378 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9379 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9381 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9382 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009383
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 }
9388
9389
9390 wpalMutexRelease(&pWDICtx->wptMutex);
9391 /*-----------------------------------------------------------------------
9392 Get message buffer
9393 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9395 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 sizeof(halAddBASessionReq.addBASessionParams),
9397 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9400 {
9401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9402 "Unable to get send buffer in Add BA session req %x %x %x",
9403 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 }
9407
9408 halAddBASessionReq.addBASessionParams.staIdx =
9409 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9410 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9411 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9412 WDI_MAC_ADDR_LEN);
9413 halAddBASessionReq.addBASessionParams.baTID =
9414 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9415 halAddBASessionReq.addBASessionParams.baPolicy =
9416 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9417 halAddBASessionReq.addBASessionParams.baBufferSize =
9418 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9419 halAddBASessionReq.addBASessionParams.baTimeout =
9420 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9421 halAddBASessionReq.addBASessionParams.baSSN =
9422 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9423 halAddBASessionReq.addBASessionParams.baDirection =
9424 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9425
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 wpalMemoryCopy( pSendBuffer+usDataOffset,
9427 &halAddBASessionReq.addBASessionParams,
9428 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009429
9430 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009432
9433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9437 wdiAddBASessionRspCb, pEventData->pUserData,
9438 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009439}/*WDI_ProcessAddBASessionReq*/
9440
9441/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009444
9445 @param pWDICtx: pointer to the WLAN DAL context
9446 pEventData: pointer to the event information structure
9447
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 @see
9449 @return Result of the function call
9450*/
9451WDI_Status
9452WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009453(
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 WDI_ControlBlockType* pWDICtx,
9455 WDI_EventInfoType* pEventData
9456)
9457{
9458 WDI_DelBAReqParamsType* pwdiDelBAParams;
9459 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 wpt_uint16 usDataOffset = 0;
9464 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 wpt_macAddr macBSSID;
9467 tDelBAParams halDelBAparam;
9468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9469
9470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 -------------------------------------------------------------------------*/
9473 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9474 ( NULL == pEventData->pCBfnc ))
9475 {
9476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 }
9481
9482 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9483 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9484 /*-------------------------------------------------------------------------
9485 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 -------------------------------------------------------------------------*/
9488 wpalMutexAcquire(&pWDICtx->wptMutex);
9489
9490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9494 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 &macBSSID))
9496 {
9497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9498 "This station does not exist in the WDI Station Table %d");
9499 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 }
9502
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009504
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9508 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9509 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009510
9511 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 }
9514
9515 /*------------------------------------------------------------------------
9516 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 ------------------------------------------------------------------------*/
9519 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9520 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9522 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9523 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009524
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 }
9529
9530 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 sizeof(halDelBAparam),
9533 &pSendBuffer, &usDataOffset, &usSendSize))||
9534 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9535 {
9536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9537 "Unable to get send buffer for DEL BA req %x %x %x",
9538 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 }
9542
9543 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9544 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9545 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9546
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 wpalMemoryCopy( pSendBuffer+usDataOffset,
9548 &halDelBAparam,
9549 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009550
9551 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009553
9554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9558 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009559}/*WDI_ProcessDelBAReq*/
9560
9561#ifdef FEATURE_WLAN_CCX
9562
9563WDI_Status
9564WDI_ProcessTSMStatsReq
9565(
9566 WDI_ControlBlockType* pWDICtx,
9567 WDI_EventInfoType* pEventData
9568)
9569{
9570 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9571 WDI_TsmRspCb wdiTSMRspCb;
9572 wpt_uint8 ucCurrentBSSSesIdx = 0;
9573 WDI_BSSSessionType* pBSSSes = NULL;
9574 wpt_uint8* pSendBuffer = NULL;
9575 wpt_uint16 usDataOffset = 0;
9576 wpt_uint16 usSendSize = 0;
9577 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9578 tTsmStatsParams halTsmStatsReqParams = {0};
9579
9580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9581
9582 /*-------------------------------------------------------------------------
9583 Sanity check
9584 -------------------------------------------------------------------------*/
9585 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9586 ( NULL == pEventData->pCBfnc ))
9587 {
9588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009590 WDI_ASSERT(0);
9591 return WDI_STATUS_E_FAILURE;
9592 }
9593
9594 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9595 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9596 /*-------------------------------------------------------------------------
9597 Check to see if we are in the middle of an association, if so queue, if
9598 not it means it is free to process request
9599 -------------------------------------------------------------------------*/
9600 wpalMutexAcquire(&pWDICtx->wptMutex);
9601
9602 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9603 if ( NULL == pBSSSes )
9604 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9606 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9607 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009608
9609 wpalMutexRelease(&pWDICtx->wptMutex);
9610 return WDI_STATUS_E_NOT_ALLOWED;
9611 }
9612
9613 /*------------------------------------------------------------------------
9614 Check if this BSS is being currently processed or queued,
9615 if queued - queue the new request as well
9616 ------------------------------------------------------------------------*/
9617 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9618 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9620 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9621 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009622
9623 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9624 wpalMutexRelease(&pWDICtx->wptMutex);
9625 return wdiStatus;
9626 }
9627
9628 wpalMutexRelease(&pWDICtx->wptMutex);
9629 /*-----------------------------------------------------------------------
9630 Get message buffer
9631 ! TO DO : proper conversion into the HAL Message Request Format
9632 -----------------------------------------------------------------------*/
9633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9634 sizeof(halTsmStatsReqParams),
9635 &pSendBuffer, &usDataOffset, &usSendSize))||
9636 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9637 {
9638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9639 "Unable to get send buffer in set bss key req %x %x %x",
9640 pEventData, pwdiTSMParams, wdiTSMRspCb);
9641 WDI_ASSERT(0);
9642 return WDI_STATUS_E_FAILURE;
9643 }
9644
9645 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9646 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9647 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9648 WDI_MAC_ADDR_LEN);
9649 wpalMemoryCopy( pSendBuffer+usDataOffset,
9650 &halTsmStatsReqParams,
9651 sizeof(halTsmStatsReqParams));
9652
9653 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9654 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9655
9656 /*-------------------------------------------------------------------------
9657 Send TSM Stats Request to HAL
9658 -------------------------------------------------------------------------*/
9659 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9660 wdiTSMRspCb, pEventData->pUserData,
9661 WDI_TSM_STATS_RESP);
9662}/*WDI_ProcessTSMStatsReq*/
9663
9664#endif
9665
9666
9667/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009670
9671 @param pWDICtx: pointer to the WLAN DAL context
9672 pEventData: pointer to the event information structure
9673
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 @see
9675 @return Result of the function call
9676*/
9677WDI_Status
9678WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009679(
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 WDI_ControlBlockType* pWDICtx,
9681 WDI_EventInfoType* pEventData
9682)
9683{
9684 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9685 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 wpt_uint16 usDataOffset = 0;
9688 wpt_uint16 usSendSize = 0;
9689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9690
9691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 -------------------------------------------------------------------------*/
9694 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9695 ( NULL == pEventData->pCBfnc ))
9696 {
9697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 }
9702
9703 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9704 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9705 /*-----------------------------------------------------------------------
9706 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009708 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9711 &pSendBuffer, &usDataOffset, &usSendSize))||
9712 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9713 {
9714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9715 "Unable to get send buffer in set bss key req %x %x %x",
9716 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 }
9720
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 wpalMemoryCopy( pSendBuffer+usDataOffset,
9722 &pwdiFlushAcParams->wdiFlushAcInfo,
9723 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009724
9725 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009727
9728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9732 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009733}/*WDI_ProcessFlushAcReq*/
9734
9735/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009738
9739 @param pWDICtx: pointer to the WLAN DAL context
9740 pEventData: pointer to the event information structure
9741
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 @see
9743 @return Result of the function call
9744*/
9745WDI_Status
9746WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009747(
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 WDI_ControlBlockType* pWDICtx,
9749 WDI_EventInfoType* pEventData
9750)
9751{
9752 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9753 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 wpt_uint16 usDataOffset = 0;
9756 wpt_uint16 usSendSize = 0;
9757
9758 tBtAmpEventMsg haltBtAmpEventMsg;
9759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9760
9761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 -------------------------------------------------------------------------*/
9764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9765 ( NULL == pEventData->pCBfnc ))
9766 {
9767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 }
9772
9773 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9774 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9775 /*-----------------------------------------------------------------------
9776 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9781 &pSendBuffer, &usDataOffset, &usSendSize))||
9782 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9783 {
9784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9785 "Unable to get send buffer in BT AMP event req %x %x %x",
9786 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 }
9790
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 wpalMemoryCopy( pSendBuffer+usDataOffset,
9794 &haltBtAmpEventMsg.btAmpEventParams,
9795 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009796
9797 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009799
9800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9804 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009805}/*WDI_ProcessBtAmpEventReq*/
9806
9807/**
9808 @brief Process Add STA self Request function (called when Main FSM
9809 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009810
9811 @param pWDICtx: pointer to the WLAN DAL context
9812 pEventData: pointer to the event information structure
9813
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 @see
9815 @return Result of the function call
9816*/
9817WDI_Status
9818WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009819(
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 WDI_ControlBlockType* pWDICtx,
9821 WDI_EventInfoType* pEventData
9822)
9823{
9824 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9825 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 wpt_uint16 usDataOffset = 0;
9828 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9831
9832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 -------------------------------------------------------------------------*/
9835 if (( NULL == pEventData ) ||
9836 ( NULL == pEventData->pEventData) ||
9837 ( NULL == pEventData->pCBfnc))
9838 {
9839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 }
9844
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9849 /*-----------------------------------------------------------------------
9850 Get message buffer
9851 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9853 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 sizeof(tAddStaSelfParams),
9855 &pSendBuffer, &usDataOffset, &usSendSize))||
9856 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9857 {
9858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9859 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9860 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 }
9864
9865 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9868
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9871
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9873 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009874
9875 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009877
9878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9882 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9883 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009884}/*WDI_ProcessAddSTASelfReq*/
9885
9886
9887
9888/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009891
9892 @param pWDICtx: pointer to the WLAN DAL context
9893 pEventData: pointer to the event information structure
9894
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 @see
9896 @return Result of the function call
9897*/
9898WDI_Status
9899WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009900(
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 WDI_ControlBlockType* pWDICtx,
9902 WDI_EventInfoType* pEventData
9903)
9904{
9905 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
9906 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 wpt_uint16 usDataOffset = 0;
9909 wpt_uint16 usSendSize = 0;
9910 tDelStaSelfParams halSetDelSelfSTAParams;
9911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9912
9913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 -------------------------------------------------------------------------*/
9916 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9917 ( NULL == pEventData->pCBfnc ))
9918 {
9919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 }
9924
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
9927 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
9928
9929 /*-----------------------------------------------------------------------
9930 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
9935 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009936 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009937 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
9938 {
9939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9940 "Unable to get send buffer in Del Sta Self req %x %x %x",
9941 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
9942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 }
9945
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
9948
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
9950 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009951
9952 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009954
9955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9959 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 WDI_DEL_STA_SELF_RESP);
9961
9962}
9963
Jeff Johnsone7245742012-09-05 17:12:55 -07009964#ifdef FEATURE_OEM_DATA_SUPPORT
9965/**
9966 @brief Process Start Oem Data Request function (called when Main
9967 FSM allows it)
9968
9969 @param pWDICtx: pointer to the WLAN DAL context
9970 pEventData: pointer to the event information structure
9971
9972 @see
9973 @return Result of the function call
9974*/
9975WDI_Status
9976WDI_ProcessStartOemDataReq
9977(
9978 WDI_ControlBlockType* pWDICtx,
9979 WDI_EventInfoType* pEventData
9980)
9981{
9982 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
9983 WDI_oemDataRspCb wdiOemDataRspCb;
9984 wpt_uint8* pSendBuffer = NULL;
9985 wpt_uint16 usDataOffset = 0;
9986 wpt_uint16 usSendSize = 0;
9987 wpt_uint16 reqLen;
9988 tStartOemDataReqParams* halStartOemDataReqParams;
9989
9990 /*-------------------------------------------------------------------------
9991 Sanity check
9992 -------------------------------------------------------------------------*/
9993 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9994 ( NULL == pEventData->pCBfnc ))
9995 {
9996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009997 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 WDI_ASSERT(0);
9999 return WDI_STATUS_E_FAILURE;
10000 }
10001
10002 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10003 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10004
10005 /*-----------------------------------------------------------------------
10006 Get message buffer
10007 -----------------------------------------------------------------------*/
10008
10009 reqLen = sizeof(tStartOemDataReqParams);
10010
10011 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10012 WDI_START_OEM_DATA_REQ, reqLen,
10013 &pSendBuffer, &usDataOffset, &usSendSize))||
10014 (usSendSize < (usDataOffset + reqLen)))
10015 {
10016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10017 "Unable to get send buffer in Start Oem Data req %x %x %x",
10018 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10019 WDI_ASSERT(0);
10020 return WDI_STATUS_E_FAILURE;
10021 }
10022
10023 //copying WDI OEM DATA REQ PARAMS to shared memory
10024 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10025
10026 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10027 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10028
10029 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10030 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10031
10032 /*-------------------------------------------------------------------------
10033 Send Start Request to HAL
10034 -------------------------------------------------------------------------*/
10035 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10036 wdiOemDataRspCb, pEventData->pUserData,
10037 WDI_START_OEM_DATA_RESP);
10038}/*WDI_ProcessStartOemDataReq*/
10039#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010040
10041/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010044
10045 @param pWDICtx: pointer to the WLAN DAL context
10046 pEventData: pointer to the event information structure
10047
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 @see
10049 @return Result of the function call
10050*/
10051WDI_Status
10052WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010053(
Jeff Johnson295189b2012-06-20 16:38:30 -070010054 WDI_ControlBlockType* pWDICtx,
10055 WDI_EventInfoType* pEventData
10056)
10057{
10058 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10059 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 wpt_uint16 usDataOffset = 0;
10062 wpt_uint16 usSendSize = 0;
10063 tHalWlanHostResumeReqParam halResumeReqParams;
10064
10065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10066
10067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 -------------------------------------------------------------------------*/
10070 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10071 ( NULL == pEventData->pCBfnc ))
10072 {
10073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010074 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 }
10078
10079 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10080 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10081
10082 /*-----------------------------------------------------------------------
10083 Get message buffer
10084 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10087 &pSendBuffer, &usDataOffset, &usSendSize))||
10088 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10089 {
10090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 }
10096
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010099
10100 wpalMemoryCopy( pSendBuffer+usDataOffset,
10101 &halResumeReqParams,
10102 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010103
10104 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010106
10107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010110 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10111 wdiHostResumeRspCb, pEventData->pUserData,
10112 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010113}/*WDI_ProcessHostResumeReq*/
10114
10115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010118
10119 @param pWDICtx: pointer to the WLAN DAL context
10120 pEventData: pointer to the event information structure
10121
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 @see
10123 @return Result of the function call
10124*/
10125WDI_Status
10126WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010127(
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 WDI_ControlBlockType* pWDICtx,
10129 WDI_EventInfoType* pEventData
10130)
10131{
10132 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10133 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 wpt_uint16 usDataOffset = 0;
10136 wpt_uint16 usSendSize = 0;
10137 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10139
10140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010142 -------------------------------------------------------------------------*/
10143 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10144 ( NULL == pEventData->pCBfnc ))
10145 {
10146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010147 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010150 }
10151
10152 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10153 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010154
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 /*-----------------------------------------------------------------------
10156 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 sizeof(halTxPerTrackingReqParam),
10161 &pSendBuffer, &usDataOffset, &usSendSize))||
10162 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10163 {
10164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10165 "Unable to get send buffer in set tx per tracking req %x %x %x",
10166 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010170
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10172 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10173 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10174 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010175
10176 wpalMemoryCopy( pSendBuffer+usDataOffset,
10177 &halTxPerTrackingReqParam,
10178 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010179
10180 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010182
10183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010184 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10187 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010188}/*WDI_ProcessSetTxPerTrackingReq*/
10189
10190/*=========================================================================
10191 Indications
10192=========================================================================*/
10193
10194/**
10195 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010196
10197 @param pWDICtx: pointer to the WLAN DAL context
10198 pEventData: pointer to the event information structure
10199
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 @see
10201 @return Result of the function call
10202*/
10203WDI_Status
10204WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010205(
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 WDI_ControlBlockType* pWDICtx,
10207 WDI_EventInfoType* pEventData
10208)
10209{
10210 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 wpt_uint16 usDataOffset = 0;
10213 wpt_uint16 usSendSize = 0;
10214 WDI_Status wdiStatus;
10215 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10217
10218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 -------------------------------------------------------------------------*/
10221 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10222 {
10223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010224 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 }
10228
10229 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10230
10231 /*-----------------------------------------------------------------------
10232 Get message buffer
10233 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010234 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10235 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 sizeof(halWlanSuspendIndparams),
10237 &pSendBuffer, &usDataOffset, &usSendSize))||
10238 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10239 {
10240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10241 "Unable to get send buffer in Suspend Ind ");
10242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 }
10245
10246 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10247 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10248
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010250 WDI_GetActiveSessionsCount(pWDICtx);
10251
Jeff Johnsone7245742012-09-05 17:12:55 -070010252 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10253 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010254
10255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010256 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 -------------------------------------------------------------------------*/
10258 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010260
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10263}/*WDI_ProcessHostSuspendInd*/
10264
10265/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010267==========================================================================*/
10268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010271
10272 @param pWDICtx: pointer to the WLAN DAL context
10273 pEventData: pointer to the event information structure
10274
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 @see
10276 @return Result of the function call
10277*/
10278WDI_Status
10279WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010280(
Jeff Johnson295189b2012-06-20 16:38:30 -070010281 WDI_ControlBlockType* pWDICtx,
10282 WDI_EventInfoType* pEventData
10283)
10284{
10285 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10286 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 wpt_uint16 usDataOffset = 0;
10289 wpt_uint16 usSendSize = 0;
10290 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10292
10293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 -------------------------------------------------------------------------*/
10296 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10297 ( NULL == pEventData->pCBfnc ))
10298 {
10299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 }
10304
10305 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10306 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10307 /*-----------------------------------------------------------------------
10308 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010309 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 sizeof(halSwitchChannelReq.switchChannelParams),
10313 &pSendBuffer, &usDataOffset, &usSendSize))||
10314 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10315 {
10316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10317 "Unable to get send buffer in channel switch req %x %x %x",
10318 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 }
10322
Jeff Johnsone7245742012-09-05 17:12:55 -070010323 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010325#ifndef WLAN_FEATURE_VOWIFI
10326 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10328#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10331
10332#ifdef WLAN_FEATURE_VOWIFI
10333 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10336 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10337 WDI_MAC_ADDR_LEN);
10338 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10339 pwdiSwitchChParams->wdiChInfo.macBSSId,
10340 WDI_MAC_ADDR_LEN);
10341#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 wpalMemoryCopy( pSendBuffer+usDataOffset,
10343 &halSwitchChannelReq.switchChannelParams,
10344 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010345
10346 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010347 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010348
10349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10353 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010354}/*WDI_ProcessChannelSwitchReq*/
10355
10356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010359
10360 @param pWDICtx: pointer to the WLAN DAL context
10361 pEventData: pointer to the event information structure
10362
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 @see
10364 @return Result of the function call
10365*/
10366WDI_Status
10367WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010368(
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 WDI_ControlBlockType* pWDICtx,
10370 WDI_EventInfoType* pEventData
10371)
10372{
10373 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10374 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 wpt_uint16 usDataOffset = 0;
10379 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010381
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 tConfigStaReqMsg halConfigStaReqMsg;
10383 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10385
10386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 -------------------------------------------------------------------------*/
10389 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10390 ( NULL == pEventData->pCBfnc ))
10391 {
10392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 }
10397
10398 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10399 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10400 /*-------------------------------------------------------------------------
10401 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 -------------------------------------------------------------------------*/
10404 wpalMutexAcquire(&pWDICtx->wptMutex);
10405
10406 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10410 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10411 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010412
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10416 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10417 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010418
10419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 }
10422
10423 /*------------------------------------------------------------------------
10424 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 ------------------------------------------------------------------------*/
10427 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10428 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10430 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10431 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010432
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 }
10437
10438 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010439
10440 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10441#ifdef WLAN_FEATURE_11AC
10442 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010443 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 else
10445#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010446 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010447
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 /*-----------------------------------------------------------------------
10449 Get message buffer
10450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10452 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 {
10456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10457 "Unable to get send buffer in config sta req %x %x %x",
10458 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 }
10462
10463 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 &pwdiConfigSTAParams->wdiReqInfo);
10466
10467 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10468 {
10469 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 WDI_STATableFindStaidByAddr(pWDICtx,
10472 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010473 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 {
10475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10476 "This station does not exist in the WDI Station Table %d");
10477 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010478 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 }
10481 }
10482 else
10483 {
10484 /* Need to fill in the STA Index to invalid, since at this point we have not
10485 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 }
10488
10489 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010491
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 wpalMemoryCopy( pSendBuffer+usDataOffset,
10493 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010494 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010495
10496 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010498
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10500 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 sizeof(pWDICtx->wdiCachedConfigStaReq));
10502
10503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10507 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010508}/*WDI_ProcessConfigStaReq*/
10509
10510
10511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010514
10515 @param pWDICtx: pointer to the WLAN DAL context
10516 pEventData: pointer to the event information structure
10517
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 @see
10519 @return Result of the function call
10520*/
10521WDI_Status
10522WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010523(
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 WDI_ControlBlockType* pWDICtx,
10525 WDI_EventInfoType* pEventData
10526)
10527{
10528 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10529 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 wpt_uint16 usDataOffset = 0;
10534 wpt_uint16 usSendSize = 0;
10535 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10538
10539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 -------------------------------------------------------------------------*/
10542 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10543 ( NULL == pEventData->pCBfnc ))
10544 {
10545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 }
10550
10551 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10552 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10553 /*-------------------------------------------------------------------------
10554 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010555 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010556 -------------------------------------------------------------------------*/
10557 wpalMutexAcquire(&pWDICtx->wptMutex);
10558
10559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010562 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10563 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10564 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010565
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10570 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010571 }
10572 else
10573 {
10574 /*------------------------------------------------------------------------
10575 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 ------------------------------------------------------------------------*/
10578 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10579 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10581 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10582 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10583
10584 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010585 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 }
10588 }
10589 /* If the link is set to enter IDLE - the Session allocated for this BSS
10590 will be deleted on the Set Link State response coming from HAL
10591 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10594
10595 wpalMutexRelease(&pWDICtx->wptMutex);
10596 /*-----------------------------------------------------------------------
10597 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010600
10601 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 sizeof(halLinkStateReqMsg),
10603 &pSendBuffer, &usDataOffset, &usSendSize))||
10604 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10605 {
10606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10607 "Unable to get send buffer in set bss key req %x %x %x",
10608 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 }
10612
10613 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10614 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10615
10616 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10617 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10618
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010620 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10621
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 wpalMemoryCopy( pSendBuffer+usDataOffset,
10623 &halLinkStateReqMsg,
10624 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010625
10626 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628
10629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10633 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010634}/*WDI_ProcessSetLinkStateReq*/
10635
10636
10637/**
10638 @brief Process Get Stats Request function (called when Main FSM
10639 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010640
10641 @param pWDICtx: pointer to the WLAN DAL context
10642 pEventData: pointer to the event information structure
10643
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 @see
10645 @return Result of the function call
10646*/
10647WDI_Status
10648WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010649(
Jeff Johnson295189b2012-06-20 16:38:30 -070010650 WDI_ControlBlockType* pWDICtx,
10651 WDI_EventInfoType* pEventData
10652)
10653{
10654 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10655 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 wpt_uint16 usDataOffset = 0;
10658 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010660 WDI_BSSSessionType* pBSSSes = NULL;
10661 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 tHalStatsReqMsg halStatsReqMsg;
10664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10665
10666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 -------------------------------------------------------------------------*/
10669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10670 ( NULL == pEventData->pCBfnc ) )
10671 {
10672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 }
10677
10678 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10679 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10680
10681 /*-------------------------------------------------------------------------
10682 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 -------------------------------------------------------------------------*/
10685 wpalMutexAcquire(&pWDICtx->wptMutex);
10686
10687 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10691 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 &macBSSID))
10693 {
10694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10695 "This station does not exist in the WDI Station Table %d");
10696 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 }
10699
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10701 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10704 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10705 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010706
10707 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 }
10710
10711 /*------------------------------------------------------------------------
10712 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 ------------------------------------------------------------------------*/
10715 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10716 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10718 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10719 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010720
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 }
10725
10726
10727 wpalMutexRelease(&pWDICtx->wptMutex);
10728
10729 /*-----------------------------------------------------------------------
10730 Get message buffer
10731 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 sizeof(halStatsReqMsg.statsReqParams),
10734 &pSendBuffer, &usDataOffset, &usSendSize))||
10735 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10736 {
10737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10738 "Unable to get send buffer in set bss key req %x %x %x",
10739 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 }
10743
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 wpalMemoryCopy( pSendBuffer+usDataOffset,
10749 &halStatsReqMsg.statsReqParams,
10750 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010751
10752 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010754
10755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10759 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010760}/*WDI_ProcessGetStatsReq*/
10761
10762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010765
10766 @param pWDICtx: pointer to the WLAN DAL context
10767 pEventData: pointer to the event information structure
10768
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 @see
10770 @return Result of the function call
10771*/
10772WDI_Status
10773WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010774(
Jeff Johnson295189b2012-06-20 16:38:30 -070010775 WDI_ControlBlockType* pWDICtx,
10776 WDI_EventInfoType* pEventData
10777)
10778{
10779 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10780 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10781
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 wpt_uint16 usDataOffset = 0;
10784 wpt_uint16 usSendSize = 0;
10785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10786
10787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 -------------------------------------------------------------------------*/
10790 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10791 ( NULL == pEventData->pCBfnc))
10792 {
10793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 }
10798
10799 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10800 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10801
10802 /*-----------------------------------------------------------------------
10803 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 -----------------------------------------------------------------------*/
10806
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010808 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10809 &pSendBuffer, &usDataOffset, &usSendSize))||
10810 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10811 {
10812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10813 "Unable to get send buffer in set bss key req %x %x %x",
10814 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 }
10818
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 wpalMemoryCopy( pSendBuffer+usDataOffset,
10820 &pwdiUpdateCfgParams->uConfigBufferLen,
10821 sizeof(wpt_uint32));
10822 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
10823 pwdiUpdateCfgParams->pConfigBuffer,
10824 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070010825
10826 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010828
10829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010831 -------------------------------------------------------------------------*/
10832
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10834 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010835
10836}/*WDI_ProcessUpdateCfgReq*/
10837
10838
10839/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010842
10843 @param pWDICtx: pointer to the WLAN DAL context
10844 pEventData: pointer to the event information structure
10845
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 @see
10847 @return Result of the function call
10848*/
10849WDI_Status
10850WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010851(
Jeff Johnson295189b2012-06-20 16:38:30 -070010852 WDI_ControlBlockType* pWDICtx,
10853 WDI_EventInfoType* pEventData
10854)
10855{
10856 WDI_AddBAReqParamsType* pwdiAddBAParams;
10857 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010858 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010859 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 wpt_uint16 usDataOffset = 0;
10862 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010863 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 wpt_macAddr macBSSID;
10865
10866 tAddBAReqMsg halAddBAReq;
10867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10868
10869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 -------------------------------------------------------------------------*/
10872 if (( NULL == pEventData ) ||
10873 ( NULL == pEventData->pEventData) ||
10874 ( NULL == pEventData->pCBfnc ))
10875 {
10876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010880 }
10881
10882 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
10883 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
10884
10885 /*-------------------------------------------------------------------------
10886 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 -------------------------------------------------------------------------*/
10889 wpalMutexAcquire(&pWDICtx->wptMutex);
10890
10891 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10895 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 &macBSSID))
10897 {
10898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10899 "This station does not exist in the WDI Station Table %d");
10900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 }
10903
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10905 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10908 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10909 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010910
10911 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010912 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 }
10914
10915 /*------------------------------------------------------------------------
10916 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 ------------------------------------------------------------------------*/
10919 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10920 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10922 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10923 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010924
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 }
10929
10930
10931 wpalMutexRelease(&pWDICtx->wptMutex);
10932 /*-----------------------------------------------------------------------
10933 Get message buffer
10934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 sizeof(halAddBAReq.addBAParams),
10937 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
10940 {
10941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10942 "Unable to get send buffer in Add BA req %x %x %x",
10943 pEventData, pwdiAddBAParams, wdiAddBARspCb);
10944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010946 }
10947
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
10950 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
10951#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070010953 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
10954#endif
10955
Jeff Johnsone7245742012-09-05 17:12:55 -070010956 wpalMemoryCopy( pSendBuffer+usDataOffset,
10957 &halAddBAReq.addBAParams,
10958 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010959
10960 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962
10963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10967 wdiAddBARspCb, pEventData->pUserData,
10968 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010969}/*WDI_ProcessAddBAReq*/
10970
10971
10972
10973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010976
10977 @param pWDICtx: pointer to the WLAN DAL context
10978 pEventData: pointer to the event information structure
10979
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 @see
10981 @return Result of the function call
10982*/
10983WDI_Status
10984WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010985(
Jeff Johnson295189b2012-06-20 16:38:30 -070010986 WDI_ControlBlockType* pWDICtx,
10987 WDI_EventInfoType* pEventData
10988)
10989{
10990 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
10991 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010992 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 wpt_uint16 usDataOffset = 0;
10996 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010998 wpt_uint16 index;
10999 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011000
Jeff Johnson295189b2012-06-20 16:38:30 -070011001 tTriggerBAReqMsg halTriggerBAReq;
11002 tTriggerBaReqCandidate* halTriggerBACandidate;
11003 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11005
11006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011008 -------------------------------------------------------------------------*/
11009 if (( NULL == pEventData ) ||
11010 ( NULL == pEventData->pEventData ) ||
11011 ( NULL == pEventData->pCBfnc ))
11012 {
11013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011017 }
11018
11019 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11020 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11021 /*-------------------------------------------------------------------------
11022 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 -------------------------------------------------------------------------*/
11025 wpalMutexAcquire(&pWDICtx->wptMutex);
11026
11027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011028 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011029 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011030 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11031 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 &macBSSID))
11033 {
11034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11035 "This station does not exist in the WDI Station Table %d");
11036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011038 }
11039
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11041 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011042 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11044 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11045 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011046
11047 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011049 }
11050
11051 /*------------------------------------------------------------------------
11052 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011054 ------------------------------------------------------------------------*/
11055 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11056 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11058 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11059 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011060
Jeff Johnsone7245742012-09-05 17:12:55 -070011061 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011062 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 }
11065
11066
11067 wpalMutexRelease(&pWDICtx->wptMutex);
11068 /*-----------------------------------------------------------------------
11069 Get message buffer
11070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11072 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011073 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011074 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11076 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11081 {
11082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11083 "Unable to get send buffer in Trigger BA req %x %x %x",
11084 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011087 }
11088
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011091 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011092 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11093
Jeff Johnsone7245742012-09-05 17:12:55 -070011094 wpalMemoryCopy( pSendBuffer+usDataOffset,
11095 &halTriggerBAReq.triggerBAParams,
11096 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011097
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11100 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11101 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011102
11103 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 index++)
11105 {
11106 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11107 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11108 halTriggerBACandidate++;
11109 wdiTriggerBACandidate++;
11110 }
11111
11112 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011113 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011114
11115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011118 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11119 wdiTriggerBARspCb, pEventData->pUserData,
11120 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011121}/*WDI_ProcessTriggerBAReq*/
11122
11123
11124
11125/**
11126 @brief Process Update Beacon Params Request function (called when Main FSM
11127 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011128
11129 @param pWDICtx: pointer to the WLAN DAL context
11130 pEventData: pointer to the event information structure
11131
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 @see
11133 @return Result of the function call
11134*/
11135WDI_Status
11136WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011137(
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 WDI_ControlBlockType* pWDICtx,
11139 WDI_EventInfoType* pEventData
11140)
11141{
11142 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11143 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 wpt_uint16 usDataOffset = 0;
11146 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11149
11150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 -------------------------------------------------------------------------*/
11153 if (( NULL == pEventData ) ||
11154 ( NULL == pEventData->pEventData) ||
11155 ( NULL == pEventData->pCBfnc))
11156 {
11157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 }
11162
11163 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11164 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11165 /*-----------------------------------------------------------------------
11166 Get message buffer
11167 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 sizeof(halUpdateBeaconParams),
11170 &pSendBuffer, &usDataOffset, &usSendSize))||
11171 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11172 {
11173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11174 "Unable to get send buffer in set bss key req %x %x %x",
11175 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011178 }
11179
11180 /*BSS Index of the BSS*/
11181 halUpdateBeaconParams.bssIdx =
11182 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11183 /*shortPreamble mode. HAL should update all the STA rates when it
11184 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11187 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11190 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11193
11194 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11207 halUpdateBeaconParams.fRIFSMode =
11208 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11211
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11213 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011214
11215 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011217
11218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11222 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011223}/*WDI_ProcessUpdateBeaconParamsReq*/
11224
11225
11226
11227/**
11228 @brief Process Send Beacon template Request function (called when Main FSM
11229 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011230
11231 @param pWDICtx: pointer to the WLAN DAL context
11232 pEventData: pointer to the event information structure
11233
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 @see
11235 @return Result of the function call
11236*/
11237WDI_Status
11238WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011239(
Jeff Johnson295189b2012-06-20 16:38:30 -070011240 WDI_ControlBlockType* pWDICtx,
11241 WDI_EventInfoType* pEventData
11242)
11243{
11244 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11245 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 wpt_uint16 usDataOffset = 0;
11248 wpt_uint16 usSendSize = 0;
11249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11250
11251 tSendBeaconReqMsg halSendBeaconReq;
11252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011254 -------------------------------------------------------------------------*/
11255 if (( NULL == pEventData ) ||
11256 ( NULL == pEventData->pEventData ) ||
11257 ( NULL == pEventData->pCBfnc ))
11258 {
11259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011263 }
11264
11265 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11266 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11267 /*-----------------------------------------------------------------------
11268 Get message buffer
11269 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 sizeof(halSendBeaconReq.sendBeaconParam),
11272 &pSendBuffer, &usDataOffset, &usSendSize))||
11273 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11274 {
11275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11276 "Unable to get send buffer in send beacon req %x %x %x",
11277 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 }
11281
11282 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11283 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11284 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011285 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011286 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11287 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11288 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11289 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
11290#ifdef WLAN_SOFTAP_FEATURE
Jeff Johnsone7245742012-09-05 17:12:55 -070011291 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
11293#endif
11294#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011295 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11297#endif
11298
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 wpalMemoryCopy( pSendBuffer+usDataOffset,
11300 &halSendBeaconReq.sendBeaconParam,
11301 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011302
11303 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011305
11306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11310 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011311}/*WDI_ProcessSendBeaconParamsReq*/
11312
11313/**
11314 @brief Process Update Beacon Params Request function (called when Main FSM
11315 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011316
11317 @param pWDICtx: pointer to the WLAN DAL context
11318 pEventData: pointer to the event information structure
11319
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 @see
11321 @return Result of the function call
11322*/
11323WDI_Status
11324WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011325(
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 WDI_ControlBlockType* pWDICtx,
11327 WDI_EventInfoType* pEventData
11328)
11329{
11330 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11331 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 wpt_uint16 usDataOffset = 0;
11334 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11337
11338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011340 -------------------------------------------------------------------------*/
11341 if (( NULL == pEventData ) ||
11342 ( NULL == pEventData->pEventData) ||
11343 ( NULL == pEventData->pCBfnc))
11344 {
11345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 }
11350
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11355 /*-----------------------------------------------------------------------
11356 Get message buffer
11357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 sizeof(halUpdateProbeRspTmplParams),
11360 &pSendBuffer, &usDataOffset, &usSendSize))||
11361 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11362 {
11363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11364 "Unable to get send buffer in set bss key req %x %x %x",
11365 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 }
11369
11370 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 WDI_MAC_ADDR_LEN);
11373
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11376
11377 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11378 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011380
11381
11382 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11383 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11384 WDI_PROBE_REQ_BITMAP_IE_LEN);
11385
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 wpalMemoryCopy( pSendBuffer+usDataOffset,
11387 &halUpdateProbeRspTmplParams,
11388 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011389
11390 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011392
11393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011396 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11397 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11398 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011399}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11400
11401/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011404
11405 @param pWDICtx: pointer to the WLAN DAL context
11406 pEventData: pointer to the event information structure
11407
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 @see
11409 @return Result of the function call
11410*/
11411WDI_Status
11412WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011413(
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 WDI_ControlBlockType* pWDICtx,
11415 WDI_EventInfoType* pEventData
11416)
11417{
11418
11419 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11420 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11421
11422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 -------------------------------------------------------------------------*/
11425 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011427 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11430 {
11431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 }
11436
11437 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011438 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011439 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11440
11441 /*cache the wdi nv request message here if the the first fragment
11442 * To issue the request to HAL for the next fragment */
11443 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11444 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011445 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11446 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11448
11449 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11450 pWDICtx->pRspCBUserData = pEventData->pUserData;
11451 }
11452
11453 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11454}
11455
11456/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011459
11460 @param pWDICtx: pointer to the WLAN DAL context
11461 pEventData: pointer to the event information structure
11462
Jeff Johnson295189b2012-06-20 16:38:30 -070011463 @see
11464 @return Result of the function call
11465*/
11466WDI_Status WDI_ProcessSetMaxTxPowerReq
11467(
11468 WDI_ControlBlockType* pWDICtx,
11469 WDI_EventInfoType* pEventData
11470)
11471{
11472 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11473 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 wpt_uint16 usDataOffset = 0;
11476 wpt_uint16 usSendSize = 0;
11477 tSetMaxTxPwrReq halSetMaxTxPower;
11478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11479
11480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 -------------------------------------------------------------------------*/
11483 if (( NULL == pEventData ) ||
11484 ( NULL == pEventData->pEventData ) ||
11485 ( NULL == pEventData->pCBfnc ))
11486 {
11487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11496
11497 /*-----------------------------------------------------------------------
11498 Get message buffer
11499 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011500if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11502 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011504)))
11505 {
11506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11507 "Unable to get Set Max Tx Power req %x %x %x",
11508 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 }
11512
11513 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11514 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11515 WDI_MAC_ADDR_LEN);
11516
11517 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11518 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11519 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011522
11523 wpalMemoryCopy( pSendBuffer+usDataOffset,
11524 &halSetMaxTxPower.setMaxTxPwrParams,
11525 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011526
11527 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011528 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011529
11530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11534 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11535 WDI_SET_MAX_TX_POWER_RESP);
11536
Jeff Johnson295189b2012-06-20 16:38:30 -070011537}
11538
11539#ifdef WLAN_FEATURE_P2P
11540
11541/**
11542 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11543 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011544
11545 @param pWDICtx: pointer to the WLAN DAL context
11546 pEventData: pointer to the event information structure
11547
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 @see
11549 @return Result of the function call
11550*/
11551WDI_Status
11552WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011553(
Jeff Johnson295189b2012-06-20 16:38:30 -070011554 WDI_ControlBlockType* pWDICtx,
11555 WDI_EventInfoType* pEventData
11556)
11557{
11558 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11559 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011561 wpt_uint16 usDataOffset = 0;
11562 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11565
11566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 -------------------------------------------------------------------------*/
11569 if (( NULL == pEventData ) ||
11570 ( NULL == pEventData->pEventData) ||
11571 ( NULL == pEventData->pCBfnc))
11572 {
11573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 }
11578
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11583 /*-----------------------------------------------------------------------
11584 Get message buffer
11585 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11587 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 sizeof(halSetP2PGONOAParams),
11589 &pSendBuffer, &usDataOffset, &usSendSize))||
11590 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11591 {
11592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11593 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11594 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 }
11598
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011601 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011602 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11603 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011607 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11612
Jeff Johnsone7245742012-09-05 17:12:55 -070011613 wpalMemoryCopy( pSendBuffer+usDataOffset,
11614 &halSetP2PGONOAParams,
11615 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011616
11617 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011618 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011619
11620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11624 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11625 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011626}/*WDI_ProcessP2PGONOAReq*/
11627
11628#endif
11629
11630
11631/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 @param None
11635
11636 @see
11637 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011638*/
11639void
11640WDI_SetPowerStateCb
11641(
11642 wpt_status status,
11643 unsigned int dxePhyAddr,
11644 void *pContext
11645)
11646{
11647 wpt_status wptStatus;
11648 WDI_ControlBlockType *pCB = NULL;
11649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11650 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11651 {
11652 //it shouldn't happen, put an error msg
11653 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 /*
11655 * Trigger the event to bring the Enter BMPS req function to come
11656 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011657*/
11658 if( NULL != pContext )
11659 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 }
11662 else
11663 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 pCB = &gWDICb;
11666 }
11667 pCB->dxePhyAddr = dxePhyAddr;
11668 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11669 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11670 {
11671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11672 "Failed to set an event");
11673
Jeff Johnsone7245742012-09-05 17:12:55 -070011674 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 }
11676 return;
11677}
11678
11679
11680/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011681 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011683
11684 @param pWDICtx: pointer to the WLAN DAL context
11685 pEventData: pointer to the event information structure
11686
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 @see
11688 @return Result of the function call
11689*/
11690WDI_Status
11691WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011692(
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 WDI_ControlBlockType* pWDICtx,
11694 WDI_EventInfoType* pEventData
11695)
11696{
Jeff Johnson43971f52012-07-17 12:26:56 -070011697 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011698 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 wpt_uint16 usDataOffset = 0;
11701 wpt_uint16 usSendSize = 0;
11702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11703
11704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011706 -------------------------------------------------------------------------*/
11707 if (( NULL == pEventData ) ||
11708 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11709 {
11710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011711 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011712 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 /*-----------------------------------------------------------------------
11717 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011718 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011721 0,
11722 &pSendBuffer, &usDataOffset, &usSendSize))||
11723 ( usSendSize < (usDataOffset )))
11724 {
11725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11726 "Unable to get send buffer in Enter IMPS req %x %x",
11727 pEventData, wdiEnterImpsRspCb);
11728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011730 }
11731
11732 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011733 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11734 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 {
11736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11737 "WDI Init failed to reset an event");
11738
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 return VOS_STATUS_E_FAILURE;
11741 }
11742
11743 // notify DTS that we are entering IMPS
11744 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11745
11746 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011748 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011749 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11750 WDI_SET_POWER_STATE_TIMEOUT);
11751 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 {
11753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11754 "WDI Init failed to wait on an event");
11755
Jeff Johnsone7245742012-09-05 17:12:55 -070011756 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011757 return VOS_STATUS_E_FAILURE;
11758 }
11759
11760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11764 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011765}/*WDI_ProcessEnterImpsReq*/
11766
11767/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011770
11771 @param pWDICtx: pointer to the WLAN DAL context
11772 pEventData: pointer to the event information structure
11773
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 @see
11775 @return Result of the function call
11776*/
11777WDI_Status
11778WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011779(
Jeff Johnson295189b2012-06-20 16:38:30 -070011780 WDI_ControlBlockType* pWDICtx,
11781 WDI_EventInfoType* pEventData
11782)
11783{
11784 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 wpt_uint16 usDataOffset = 0;
11787 wpt_uint16 usSendSize = 0;
11788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11789
11790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 -------------------------------------------------------------------------*/
11793 if (( NULL == pEventData ) ||
11794 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11795 {
11796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 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 /*-----------------------------------------------------------------------
11803 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 0,
11808 &pSendBuffer, &usDataOffset, &usSendSize))||
11809 ( usSendSize < (usDataOffset )))
11810 {
11811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11812 "Unable to get send buffer in Exit IMPS req %x %x",
11813 pEventData, wdiExitImpsRspCb);
11814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 }
11817
11818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011819 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011821 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11822 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011823}/*WDI_ProcessExitImpsReq*/
11824
11825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011828
11829 @param pWDICtx: pointer to the WLAN DAL context
11830 pEventData: pointer to the event information structure
11831
Jeff Johnson295189b2012-06-20 16:38:30 -070011832 @see
11833 @return Result of the function call
11834*/
11835WDI_Status
11836WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011837(
Jeff Johnson295189b2012-06-20 16:38:30 -070011838 WDI_ControlBlockType* pWDICtx,
11839 WDI_EventInfoType* pEventData
11840)
11841{
11842 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
11843 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011844 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 wpt_uint16 usDataOffset = 0;
11846 wpt_uint16 usSendSize = 0;
11847 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070011848 wpt_status wptStatus;
11849
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11851
11852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 -------------------------------------------------------------------------*/
11855 if (( NULL == pEventData ) ||
11856 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
11857 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
11858 {
11859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011861 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 /*-----------------------------------------------------------------------
11866 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011869 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011870 sizeof(enterBmpsReq),
11871 &pSendBuffer, &usDataOffset, &usSendSize))||
11872 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
11873 {
11874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11875 "Unable to get send buffer in Enter BMPS req %x %x %x",
11876 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
11877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 }
11880
11881 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011882 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11883 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 {
11885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11886 "WDI Init failed to reset an event");
11887
Jeff Johnsone7245742012-09-05 17:12:55 -070011888 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011889 return VOS_STATUS_E_FAILURE;
11890 }
11891
11892 // notify DTS that we are entering BMPS
11893 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
11894
11895/*
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011898 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11899 WDI_SET_POWER_STATE_TIMEOUT);
11900 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 {
11902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11903 "WDI Init failed to wait on an event");
11904
Jeff Johnsone7245742012-09-05 17:12:55 -070011905 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011906 return VOS_STATUS_E_FAILURE;
11907 }
11908
11909 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
11910
11911 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
11912 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
11913 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
11914 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
11915
11916 // For CCX and 11R Roaming
11917 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
11918 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
11919 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
11920
11921 wpalMemoryCopy( pSendBuffer+usDataOffset,
11922 &enterBmpsReq,
11923 sizeof(enterBmpsReq));
11924
11925 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011927
11928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11932 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011933}/*WDI_ProcessEnterBmpsReq*/
11934
11935/**
11936 @brief Process Exit BMPS Request function (called when Main FSM
11937 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011938
11939 @param pWDICtx: pointer to the WLAN DAL context
11940 pEventData: pointer to the event information structure
11941
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 @see
11943 @return Result of the function call
11944*/
11945WDI_Status
11946WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011947(
Jeff Johnson295189b2012-06-20 16:38:30 -070011948 WDI_ControlBlockType* pWDICtx,
11949 WDI_EventInfoType* pEventData
11950)
11951{
11952 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
11953 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 wpt_uint16 usDataOffset = 0;
11956 wpt_uint16 usSendSize = 0;
11957 tHalExitBmpsReqParams exitBmpsReq;
11958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11959
11960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 -------------------------------------------------------------------------*/
11963 if (( NULL == pEventData ) ||
11964 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
11965 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
11966 {
11967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 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
11973 /*-----------------------------------------------------------------------
11974 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 sizeof(exitBmpsReq),
11979 &pSendBuffer, &usDataOffset, &usSendSize))||
11980 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
11981 {
11982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11983 "Unable to get send buffer in Exit BMPS req %x %x %x",
11984 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
11985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 }
11988 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
11989
Jeff Johnsone7245742012-09-05 17:12:55 -070011990 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
11991
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 wpalMemoryCopy( pSendBuffer+usDataOffset,
11993 &exitBmpsReq,
11994 sizeof(exitBmpsReq));
11995
11996 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011998
11999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012002 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12003 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012004}/*WDI_ProcessExitBmpsReq*/
12005
12006/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012009
12010 @param pWDICtx: pointer to the WLAN DAL context
12011 pEventData: pointer to the event information structure
12012
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 @see
12014 @return Result of the function call
12015*/
12016WDI_Status
12017WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012018(
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 WDI_ControlBlockType* pWDICtx,
12020 WDI_EventInfoType* pEventData
12021)
12022{
12023 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12024 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012025 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012026 wpt_uint16 usDataOffset = 0;
12027 wpt_uint16 usSendSize = 0;
12028 tUapsdReqParams enterUapsdReq;
12029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12030
12031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 -------------------------------------------------------------------------*/
12034 if (( NULL == pEventData ) ||
12035 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12036 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12037 {
12038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 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 /*-----------------------------------------------------------------------
12045 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 sizeof(enterUapsdReq),
12050 &pSendBuffer, &usDataOffset, &usSendSize))||
12051 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12052 {
12053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12054 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12055 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 }
12059
12060 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12061 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12062 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12063 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12064 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12065 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12066 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12067 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012069
Jeff Johnsone7245742012-09-05 17:12:55 -070012070 wpalMemoryCopy( pSendBuffer+usDataOffset,
12071 &enterUapsdReq,
12072 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012073
12074 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012076
12077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12081 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012082}/*WDI_ProcessEnterUapsdReq*/
12083
12084/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012087
12088 @param pWDICtx: pointer to the WLAN DAL context
12089 pEventData: pointer to the event information structure
12090
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 @see
12092 @return Result of the function call
12093*/
12094WDI_Status
12095WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012096(
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 WDI_ControlBlockType* pWDICtx,
12098 WDI_EventInfoType* pEventData
12099)
12100{
12101 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012102 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 wpt_uint16 usDataOffset = 0;
12104 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012105 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12106 wpt_uint8 bssIdx = 0;
12107
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12109
12110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012112 -------------------------------------------------------------------------*/
12113 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012114 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12116 {
12117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012119 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
12123 /*-----------------------------------------------------------------------
12124 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012128 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012130 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 {
12132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12133 "Unable to get send buffer in Exit UAPSD req %x %x",
12134 pEventData, wdiExitUapsdRspCb);
12135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 }
12138
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012139 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12140
12141 wpalMemoryCopy( pSendBuffer+usDataOffset,
12142 &bssIdx,
12143 sizeof(wpt_uint8));
12144
12145 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12146 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12147
Jeff Johnson295189b2012-06-20 16:38:30 -070012148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12152 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012153}/*WDI_ProcessExitUapsdReq*/
12154
12155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012156 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012157 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012158
12159 @param pWDICtx: pointer to the WLAN DAL context
12160 pEventData: pointer to the event information structure
12161
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 @see
12163 @return Result of the function call
12164*/
12165WDI_Status
12166WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012167(
Jeff Johnson295189b2012-06-20 16:38:30 -070012168 WDI_ControlBlockType* pWDICtx,
12169 WDI_EventInfoType* pEventData
12170)
12171{
12172 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12173 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012174 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012175 wpt_uint16 usDataOffset = 0;
12176 wpt_uint16 usSendSize = 0;
12177 tUapsdInfo uapsdAcParamsReq;
12178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12179
12180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 -------------------------------------------------------------------------*/
12183 if (( NULL == pEventData ) ||
12184 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12185 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12186 {
12187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 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 /*-----------------------------------------------------------------------
12194 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012197 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 sizeof(uapsdAcParamsReq),
12199 &pSendBuffer, &usDataOffset, &usSendSize))||
12200 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12201 {
12202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12203 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12204 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 }
12208
12209 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12210 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12211 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12212 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12213 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12214 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12215
Jeff Johnsone7245742012-09-05 17:12:55 -070012216 wpalMemoryCopy( pSendBuffer+usDataOffset,
12217 &uapsdAcParamsReq,
12218 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012219
12220 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012222
12223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012224 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12227 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012228}/*WDI_ProcessSetUapsdAcParamsReq*/
12229
12230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012231 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012233
12234 @param pWDICtx: pointer to the WLAN DAL context
12235 pEventData: pointer to the event information structure
12236
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 @see
12238 @return Result of the function call
12239*/
12240WDI_Status
12241WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012242(
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 WDI_ControlBlockType* pWDICtx,
12244 WDI_EventInfoType* pEventData
12245)
12246{
12247 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12248 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 wpt_uint16 usDataOffset = 0;
12251 wpt_uint16 usSendSize = 0;
12252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12253
12254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012256 -------------------------------------------------------------------------*/
12257 if (( NULL == pEventData ) ||
12258 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12259 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12260 {
12261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 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
12267 /*-----------------------------------------------------------------------
12268 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012272 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12273 &pSendBuffer, &usDataOffset, &usSendSize))||
12274 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12275 {
12276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12277 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12278 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 }
12282
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 wpalMemoryCopy( pSendBuffer+usDataOffset,
12284 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12285 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012286
12287 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012289
12290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012291 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12294 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012295}/*WDI_ProcessUpdateUapsdParamsReq*/
12296
12297/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012300
12301 @param pWDICtx: pointer to the WLAN DAL context
12302 pEventData: pointer to the event information structure
12303
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 @see
12305 @return Result of the function call
12306*/
12307WDI_Status
12308WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012309(
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 WDI_ControlBlockType* pWDICtx,
12311 WDI_EventInfoType* pEventData
12312)
12313{
12314 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12315 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 wpt_uint16 usDataOffset = 0;
12318 wpt_uint16 usSendSize = 0;
12319 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12320
12321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12322
12323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 -------------------------------------------------------------------------*/
12326 if (( NULL == pEventData ) ||
12327 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12328 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12329 {
12330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 }
12335
12336 /*-----------------------------------------------------------------------
12337 Get message buffer
12338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 sizeof(halRxpFilterParams),
12341 &pSendBuffer, &usDataOffset, &usSendSize))||
12342 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12343 {
12344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12345 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12346 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 }
12350
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012352 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12355
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 wpalMemoryCopy( pSendBuffer+usDataOffset,
12357 &halRxpFilterParams,
12358 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012359
12360 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012361 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012362
12363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012365 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12367 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012368}/*WDI_ProcessConfigureRxpFilterReq*/
12369
12370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012373
12374 @param pWDICtx: pointer to the WLAN DAL context
12375 pEventData: pointer to the event information structure
12376
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 @see
12378 @return Result of the function call
12379*/
12380WDI_Status
12381WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012382(
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 WDI_ControlBlockType* pWDICtx,
12384 WDI_EventInfoType* pEventData
12385)
12386{
12387 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12388 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012389 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 wpt_uint16 usDataOffset = 0;
12391 wpt_uint16 usSendSize = 0;
12392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12393
12394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 -------------------------------------------------------------------------*/
12397 if (( NULL == pEventData ) ||
12398 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12399 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12400 {
12401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012403 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
12407 /*-----------------------------------------------------------------------
12408 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12413 &pSendBuffer, &usDataOffset, &usSendSize))||
12414 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12415 {
12416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12417 "Unable to get send buffer in Set beacon filter req %x %x %x",
12418 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 }
12422
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 wpalMemoryCopy( pSendBuffer+usDataOffset,
12424 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12425 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12426 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12427 &pwdiBeaconFilterParams->aFilters[0],
12428 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012429
12430 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012432
12433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12437 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012438}/*WDI_ProcessSetBeaconFilterReq*/
12439
12440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012443
12444 @param pWDICtx: pointer to the WLAN DAL context
12445 pEventData: pointer to the event information structure
12446
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 @see
12448 @return Result of the function call
12449*/
12450WDI_Status
12451WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012452(
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 WDI_ControlBlockType* pWDICtx,
12454 WDI_EventInfoType* pEventData
12455)
12456{
12457 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12458 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 wpt_uint16 usDataOffset = 0;
12461 wpt_uint16 usSendSize = 0;
12462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12463
12464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012466 -------------------------------------------------------------------------*/
12467 if (( NULL == pEventData ) ||
12468 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12469 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12470 {
12471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 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
12477 /*-----------------------------------------------------------------------
12478 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12483 &pSendBuffer, &usDataOffset, &usSendSize))||
12484 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12485 {
12486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12487 "Unable to get send buffer in remove beacon filter req %x %x %x",
12488 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 }
12492
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 wpalMemoryCopy( pSendBuffer+usDataOffset,
12494 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12495 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012496
12497 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012499
12500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12504 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012505}
12506
12507/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012510
12511 @param pWDICtx: pointer to the WLAN DAL context
12512 pEventData: pointer to the event information structure
12513
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 @see
12515 @return Result of the function call
12516*/
12517WDI_Status
12518WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012519(
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 WDI_ControlBlockType* pWDICtx,
12521 WDI_EventInfoType* pEventData
12522)
12523{
12524 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12525 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012526 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012527 wpt_uint16 usDataOffset = 0;
12528 wpt_uint16 usSendSize = 0;
12529 tHalRSSIThresholds rssiThresholdsReq;
12530 WDI_Status ret_status = 0;
12531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12532
12533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 -------------------------------------------------------------------------*/
12536 if (( NULL == pEventData ) ||
12537 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12538 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12539 {
12540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 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
12546 /*-----------------------------------------------------------------------
12547 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 sizeof(rssiThresholdsReq),
12552 &pSendBuffer, &usDataOffset, &usSendSize))||
12553 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12554 {
12555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12556 "Unable to get send buffer in remove beacon filter req %x %x %x",
12557 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 }
12561
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012568 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012570 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12582
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 wpalMemoryCopy( pSendBuffer+usDataOffset,
12584 &rssiThresholdsReq,
12585 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012586
12587 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012589
12590 /*-------------------------------------------------------------------------
12591 Send Set threshold req to HAL
12592 -------------------------------------------------------------------------*/
12593 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12594 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12595 {
12596 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12597 // req. Then as a result of processing the threshold cross ind, we trigger
12598 // a Set threshold req, then we need to indicate to WDI that it needs to
12599 // go to busy state as a result of the indication as we sent a req in the
12600 // same WDI context.
12601 // Hence expected state transition is to busy.
12602 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12603 }
12604
12605 return ret_status;
12606}
12607
12608/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012611
12612 @param pWDICtx: pointer to the WLAN DAL context
12613 pEventData: pointer to the event information structure
12614
Jeff Johnson295189b2012-06-20 16:38:30 -070012615 @see
12616 @return Result of the function call
12617*/
12618WDI_Status
12619WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012620(
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 WDI_ControlBlockType* pWDICtx,
12622 WDI_EventInfoType* pEventData
12623)
12624{
12625 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12626 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 wpt_uint16 usDataOffset = 0;
12629 wpt_uint16 usSendSize = 0;
12630 tHalHostOffloadReq hostOffloadParams;
12631 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012632 wpt_uint8 ucCurrentBSSSesIdx = 0;
12633 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012634
12635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12636
12637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 -------------------------------------------------------------------------*/
12640 if (( NULL == pEventData ) ||
12641 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12642 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12643 {
12644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012646 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
12650 /*-----------------------------------------------------------------------
12651 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012652 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012653 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012654 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12656 &pSendBuffer, &usDataOffset, &usSendSize))||
12657 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12658 {
12659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12660 "Unable to get send buffer in host offload req %x %x %x",
12661 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012664 }
12665
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012666 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12667 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12668 &pBSSSes);
12669 if ( NULL == pBSSSes )
12670 {
12671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012672 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012673 return WDI_STATUS_E_FAILURE;
12674 }
12675
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12677 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012678
Jeff Johnson295189b2012-06-20 16:38:30 -070012679 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12680 {
12681 // ARP Offload
12682 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12683 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12684 4);
12685 }
12686 else
12687 {
12688 // NS Offload
12689 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12690 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12691 16);
12692
12693#ifdef WLAN_NS_OFFLOAD
12694 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12695 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12696 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12697 16);
12698 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12699 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12700 16);
12701 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12702 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12703 16);
12704 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12705 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12706 16);
12707 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12708 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12709 6);
12710 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12711 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12712 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012713
Jeff Johnson295189b2012-06-20 16:38:30 -070012714#endif // WLAN_NS_OFFLOAD
12715 }
12716
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012717 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12718
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 // copy hostOffloadParams into pSendBuffer
12720 wpalMemoryCopy( pSendBuffer+usDataOffset,
12721 &hostOffloadParams,
12722 sizeof(hostOffloadParams));
12723
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012724 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012726 // copy nsOffloadParams into pSendBuffer
12727 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 &nsOffloadParams,
12729 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012730 }
12731 else
12732 {
12733#ifdef WLAN_NS_OFFLOAD
12734 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12735 {
12736 // copy nsOffloadParams into pSendBuffer
12737 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12738 &nsOffloadParams,
12739 sizeof(nsOffloadParams));
12740 }
12741#endif
12742 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012743
12744 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012746
12747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12751 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012752}/*WDI_ProcessHostOffloadReq*/
12753
12754/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012755 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012756 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012757
12758 @param pWDICtx: pointer to the WLAN DAL context
12759 pEventData: pointer to the event information structure
12760
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 @see
12762 @return Result of the function call
12763*/
12764WDI_Status
12765WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012766(
Jeff Johnson295189b2012-06-20 16:38:30 -070012767 WDI_ControlBlockType* pWDICtx,
12768 WDI_EventInfoType* pEventData
12769)
12770{
12771 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12772 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012774 wpt_uint16 usDataOffset = 0;
12775 wpt_uint16 usSendSize = 0;
12776 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012777 wpt_uint8 ucCurrentBSSSesIdx = 0;
12778 WDI_BSSSessionType* pBSSSes = NULL;
12779
Jeff Johnson295189b2012-06-20 16:38:30 -070012780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12781
12782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 -------------------------------------------------------------------------*/
12785 if (( NULL == pEventData ) ||
12786 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
12787 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
12788 {
12789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12790 "Invalid parameters in Keep Alive req");
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
12795 /*-----------------------------------------------------------------------
12796 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012797 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 sizeof(keepAliveReq),
12801 &pSendBuffer, &usDataOffset, &usSendSize))||
12802 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
12803 {
12804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12805 "Unable to get send buffer in keep alive req %x %x %x",
12806 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
12807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 }
12810
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012811 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12812 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
12813 &pBSSSes);
12814 if ( NULL == pBSSSes )
12815 {
12816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012817 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012818 return WDI_STATUS_E_FAILURE;
12819 }
12820
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
12822 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
12823
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012824 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012825
Jeff Johnson295189b2012-06-20 16:38:30 -070012826 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
12827 {
12828 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
12829 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
12830 HAL_IPV4_ADDR_LEN);
12831 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
12832 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070012834 wpalMemoryCopy(keepAliveReq.destMacAddr,
12835 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
12836 HAL_MAC_ADDR_LEN);
12837 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012838
12839 wpalMemoryCopy( pSendBuffer+usDataOffset,
12840 &keepAliveReq,
12841 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012842
12843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12844 "Process keep alive req %d",sizeof(keepAliveReq));
12845
12846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12847 "Process keep alive req time period %d",keepAliveReq.timePeriod);
12848
12849 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012851
12852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12853 "Sending keep alive req to HAL");
12854
12855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12859 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012860}/*WDI_ProcessKeepAliveReq*/
12861
12862
12863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012866
12867 @param pWDICtx: pointer to the WLAN DAL context
12868 pEventData: pointer to the event information structure
12869
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 @see
12871 @return Result of the function call
12872*/
12873WDI_Status
12874WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012875(
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 WDI_ControlBlockType* pWDICtx,
12877 WDI_EventInfoType* pEventData
12878)
12879{
12880 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
12881 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 wpt_uint16 usDataOffset = 0;
12884 wpt_uint16 usSendSize = 0;
12885 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012886 wpt_uint8 ucCurrentBSSSesIdx = 0;
12887 WDI_BSSSessionType* pBSSSes = NULL;
12888
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12890
12891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 -------------------------------------------------------------------------*/
12894 if (( NULL == pEventData ) ||
12895 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
12896 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
12897 {
12898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 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
12904 /*-----------------------------------------------------------------------
12905 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012907 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 sizeof(wowlAddBcPtrnReq),
12910 &pSendBuffer, &usDataOffset, &usSendSize))||
12911 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
12912 {
12913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12914 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
12915 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
12916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 }
12919
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012920 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12921 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
12922 &pBSSSes);
12923 if ( NULL == pBSSSes )
12924 {
12925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012926 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012927 return WDI_STATUS_E_FAILURE;
12928 }
12929
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070012932 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012933 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070012936 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
12938
12939 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
12940 {
12941 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12942 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12943 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
12944 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
12945 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
12946 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
12947 }
12948 else
12949 {
12950 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12951 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12952 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12953 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
12954 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
12955 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12956
12957 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
12958 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
12959 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12960 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
12961 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
12962 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
12963 }
12964
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012965 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
12966
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 wpalMemoryCopy( pSendBuffer+usDataOffset,
12968 &wowlAddBcPtrnReq,
12969 sizeof(wowlAddBcPtrnReq));
12970
12971 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012972 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012973
12974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012975 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12978 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012979}/*WDI_ProcessWowlAddBcPtrnReq*/
12980
12981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012984
12985 @param pWDICtx: pointer to the WLAN DAL context
12986 pEventData: pointer to the event information structure
12987
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 @see
12989 @return Result of the function call
12990*/
12991WDI_Status
12992WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012993(
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 WDI_ControlBlockType* pWDICtx,
12995 WDI_EventInfoType* pEventData
12996)
12997{
12998 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
12999 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013001 wpt_uint16 usDataOffset = 0;
13002 wpt_uint16 usSendSize = 0;
13003 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013004 wpt_uint8 ucCurrentBSSSesIdx = 0;
13005 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13007
13008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 -------------------------------------------------------------------------*/
13011 if (( NULL == pEventData ) ||
13012 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13013 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13014 {
13015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 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
13021 /*-----------------------------------------------------------------------
13022 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 sizeof(wowlDelBcPtrnReq),
13027 &pSendBuffer, &usDataOffset, &usSendSize))||
13028 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13029 {
13030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13031 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13032 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 }
13036
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013037 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13038 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13039 &pBSSSes);
13040 if ( NULL == pBSSSes )
13041 {
13042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013043 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013044 return WDI_STATUS_E_FAILURE;
13045 }
13046
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013049
13050 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13051
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 wpalMemoryCopy( pSendBuffer+usDataOffset,
13053 &wowlDelBcPtrnReq,
13054 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013055
13056 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013058
13059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13063 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013064}/*WDI_ProcessWowlDelBcPtrnReq*/
13065
13066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013069
13070 @param pWDICtx: pointer to the WLAN DAL context
13071 pEventData: pointer to the event information structure
13072
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 @see
13074 @return Result of the function call
13075*/
13076WDI_Status
13077WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013078(
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 WDI_ControlBlockType* pWDICtx,
13080 WDI_EventInfoType* pEventData
13081)
13082{
13083 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13084 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 wpt_uint16 usDataOffset = 0;
13087 wpt_uint16 usSendSize = 0;
13088 tHalWowlEnterParams wowlEnterReq;
13089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13090
13091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 -------------------------------------------------------------------------*/
13094 if (( NULL == pEventData ) ||
13095 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13096 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13097 {
13098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 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
13104 /*-----------------------------------------------------------------------
13105 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 sizeof(wowlEnterReq),
13110 &pSendBuffer, &usDataOffset, &usSendSize))||
13111 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13112 {
13113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13114 "Unable to get send buffer in Wowl enter req %x %x %x",
13115 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 }
13119
Jeff Johnsone7245742012-09-05 17:12:55 -070013120 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013121 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013124 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013125 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013132 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013134 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013135 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13136
13137#ifdef WLAN_WAKEUP_EVENTS
13138 wowlEnterReq.ucWoWEAPIDRequestEnable =
13139 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13140
13141 wowlEnterReq.ucWoWEAPOL4WayEnable =
13142 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13143
13144 wowlEnterReq.ucWowNetScanOffloadMatch =
13145 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13146
13147 wowlEnterReq.ucWowGTKRekeyError =
13148 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13149
13150 wowlEnterReq.ucWoWBSSConnLoss =
13151 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13152#endif // WLAN_WAKEUP_EVENTS
13153
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013154 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13155
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13157 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13158 sizeof(tSirMacAddr));
13159
Jeff Johnsone7245742012-09-05 17:12:55 -070013160 wpalMemoryCopy( pSendBuffer+usDataOffset,
13161 &wowlEnterReq,
13162 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013163
13164 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013165 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013166
13167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13171 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013172}/*WDI_ProcessWowlEnterReq*/
13173
13174/**
13175 @brief Process Wowl exit Request function (called when Main FSM
13176 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013177
13178 @param pWDICtx: pointer to the WLAN DAL context
13179 pEventData: pointer to the event information structure
13180
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 @see
13182 @return Result of the function call
13183*/
13184WDI_Status
13185WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013186(
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 WDI_ControlBlockType* pWDICtx,
13188 WDI_EventInfoType* pEventData
13189)
13190{
13191 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013192 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 wpt_uint16 usDataOffset = 0;
13195 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013196 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13198
13199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 -------------------------------------------------------------------------*/
13202 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013203 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13205 {
13206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 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
13212 /*-----------------------------------------------------------------------
13213 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013217 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013219 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 {
13221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13222 "Unable to get send buffer in Wowl Exit req %x %x",
13223 pEventData, wdiWowlExitCb);
13224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 }
13227
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013228 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13229
13230 wpalMemoryCopy( pSendBuffer+usDataOffset,
13231 &wowlExitparams,
13232 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013236 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13237 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013238}/*WDI_ProcessWowlExitReq*/
13239
13240/**
13241 @brief Process Configure Apps Cpu Wakeup State Request function
13242 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013243
13244 @param pWDICtx: pointer to the WLAN DAL context
13245 pEventData: pointer to the event information structure
13246
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 @see
13248 @return Result of the function call
13249*/
13250WDI_Status
13251WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013252(
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 WDI_ControlBlockType* pWDICtx,
13254 WDI_EventInfoType* pEventData
13255)
13256{
13257 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13258 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 wpt_uint16 usDataOffset = 0;
13261 wpt_uint16 usSendSize = 0;
13262 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13264
13265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 -------------------------------------------------------------------------*/
13268 if (( NULL == pEventData ) ||
13269 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13270 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13271 {
13272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013276 }
13277
13278 /*-----------------------------------------------------------------------
13279 Get message buffer
13280 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 sizeof(halCfgAppsCpuWakeupStateReqParams),
13283 &pSendBuffer, &usDataOffset, &usSendSize))||
13284 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13285 {
13286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13287 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13288 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 }
13292
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13295
Jeff Johnsone7245742012-09-05 17:12:55 -070013296 wpalMemoryCopy( pSendBuffer+usDataOffset,
13297 &halCfgAppsCpuWakeupStateReqParams,
13298 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013299
13300 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013301 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013302
13303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13307 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13308 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013309}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13310
13311#ifdef WLAN_FEATURE_VOWIFI_11R
13312/**
13313 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13314 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013315
13316 @param pWDICtx: pointer to the WLAN DAL context
13317 pEventData: pointer to the event information structure
13318
Jeff Johnson295189b2012-06-20 16:38:30 -070013319 @see
13320 @return Result of the function call
13321*/
13322WDI_Status
13323WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013324(
Jeff Johnson295189b2012-06-20 16:38:30 -070013325 WDI_ControlBlockType* pWDICtx,
13326 WDI_EventInfoType* pEventData
13327)
13328{
13329 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13330 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013331 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 wpt_uint16 usDataOffset = 0;
13335 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 wpt_macAddr macBSSID;
13338 tAggrAddTsReq halAggrAddTsReq;
13339 int i;
13340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13341
13342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013344 -------------------------------------------------------------------------*/
13345 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13346 ( NULL == pEventData->pCBfnc ))
13347 {
13348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 }
13353 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13354 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13355 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13356 /*-------------------------------------------------------------------------
13357 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 -------------------------------------------------------------------------*/
13360 wpalMutexAcquire(&pWDICtx->wptMutex);
13361
13362 /*------------------------------------------------------------------------
13363 Find the BSS for which the request is made and identify WDI session
13364 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13366 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 &macBSSID))
13368 {
13369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13370 "This station does not exist in the WDI Station Table %d");
13371 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 }
13374
Jeff Johnsone7245742012-09-05 17:12:55 -070013375 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13376 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13379 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13380 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013381
13382 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013385
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 /*------------------------------------------------------------------------
13387 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 ------------------------------------------------------------------------*/
13390 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13391 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13393 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13394 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013395
Jeff Johnsone7245742012-09-05 17:12:55 -070013396 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013397 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 }
13400
13401 wpalMutexRelease(&pWDICtx->wptMutex);
13402 /*-----------------------------------------------------------------------
13403 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013404 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 sizeof(tAggrAddTsParams),
13408 &pSendBuffer, &usDataOffset, &usSendSize))||
13409 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13410 {
13411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13412 "Unable to get send buffer in set bss key req %x %x %x",
13413 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13414 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 }
13417
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013419 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013420 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13422
13423 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13424 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013425 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013427 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13431 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13434 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13437 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013438 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013439 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13440 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13443 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13446 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13449 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13452 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013457
13458
13459 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013461 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13489 }
13490
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 wpalMemoryCopy( pSendBuffer+usDataOffset,
13492 &halAggrAddTsReq,
13493 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013494
13495 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013497
13498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013504}/*WDI_ProcessAggrAddTSpecReq*/
13505#endif /* WLAN_FEATURE_VOWIFI_11R */
13506
13507/**
13508 @brief Process Shutdown Request function (called when Main FSM
13509 allows it)
13510
13511 @param pWDICtx: pointer to the WLAN DAL context
13512 pEventData: pointer to the event information structure
13513
13514 @see
13515 @return Result of the function call
13516*/
13517WDI_Status
13518WDI_ProcessShutdownReq
13519(
13520 WDI_ControlBlockType* pWDICtx,
13521 WDI_EventInfoType* pEventData
13522 )
13523{
13524 wpt_status wptStatus;
13525
13526
13527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13528
13529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 -------------------------------------------------------------------------*/
13532 if ( NULL == pEventData )
13533 {
13534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 WDI_ASSERT(0);
13537 return WDI_STATUS_E_FAILURE;
13538 }
13539
13540 wpalMutexAcquire(&pWDICtx->wptMutex);
13541
13542
13543 gWDIInitialized = eWLAN_PAL_FALSE;
13544 /*! TO DO: stop the data services */
13545 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13546 {
13547 /*Stop the STA Table !UT- check this logic again
13548 It is safer to do it here than on the response - because a stop is imminent*/
13549 WDI_STATableStop(pWDICtx);
13550
13551 /* Stop Transport Driver, DXE */
13552 WDTS_Stop(pWDICtx);
13553 }
13554
13555 /*Clear all pending request*/
13556 WDI_ClearPendingRequests(pWDICtx);
13557 /* Close Data transport*/
13558 /* FTM mode does not open Data Path */
13559 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13560 {
13561 WDTS_Close(pWDICtx);
13562 }
13563 /*Close the STA Table !UT- check this logic again*/
13564 WDI_STATableClose(pWDICtx);
13565 /*close the PAL */
13566 wptStatus = wpalClose(pWDICtx->pPALContext);
13567 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13568 {
13569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13570 "Failed to wpal Close %d", wptStatus);
13571 WDI_ASSERT(0);
13572 }
13573
13574 /*Transition back to init state*/
13575 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13576
13577 wpalMutexRelease(&pWDICtx->wptMutex);
13578
13579 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013581
13582
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013584}/*WDI_ProcessShutdownReq*/
13585
13586/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013587 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013588========================================================================*/
13589
13590/**
13591 @brief Process Start Response function (called when a response
13592 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013593
13594 @param pWDICtx: pointer to the WLAN DAL context
13595 pEventData: pointer to the event information structure
13596
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 @see
13598 @return Result of the function call
13599*/
13600WDI_Status
13601WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013602(
Jeff Johnson295189b2012-06-20 16:38:30 -070013603 WDI_ControlBlockType* pWDICtx,
13604 WDI_EventInfoType* pEventData
13605)
13606{
13607 WDI_StartRspParamsType wdiRspParams;
13608 WDI_StartRspCb wdiStartRspCb = NULL;
13609
13610 tHalMacStartRspParams* startRspParams;
13611
13612#ifndef HAL_SELF_STA_PER_BSS
13613 WDI_AddStaParams wdiAddSTAParam = {0};
13614#endif
13615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13616
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 -------------------------------------------------------------------------*/
13621 if (( NULL == pEventData ) ||
13622 ( NULL == pEventData->pEventData) ||
13623 ( NULL == wdiStartRspCb ))
13624 {
13625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 }
13630
13631 /*-------------------------------------------------------------------------
13632 Extract response and send it to UMAC
13633 -------------------------------------------------------------------------*/
13634 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13635 {
13636 // not enough data was received
13637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13638 "Invalid response length in Start Resp Expect %x Rcvd %x",
13639 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013642 }
13643
13644 /*-------------------------------------------------------------------------
13645 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 -------------------------------------------------------------------------*/
13648 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13649
13650 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13651 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13652 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13653 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13654 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13655 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13656 wdiRspParams.wlanReportedVersion.major =
13657 startRspParams->wcnssWlanVersion.major;
13658 wdiRspParams.wlanReportedVersion.minor =
13659 startRspParams->wcnssWlanVersion.minor;
13660 wdiRspParams.wlanReportedVersion.version =
13661 startRspParams->wcnssWlanVersion.version;
13662 wdiRspParams.wlanReportedVersion.revision =
13663 startRspParams->wcnssWlanVersion.revision;
13664 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13665 startRspParams->wcnssCrmVersionString,
13666 sizeof(wdiRspParams.wcnssSoftwareVersion));
13667 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13668 startRspParams->wcnssWlanVersionString,
13669 sizeof(wdiRspParams.wcnssHardwareVersion));
13670 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13671
Pratik Bhalgatd4404592012-11-22 17:49:14 +053013672 /*Save the HAL Version*/
13673 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
13674
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 wpalMutexAcquire(&pWDICtx->wptMutex);
13676 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13677 {
13678 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13679
13680 /*Cache the start response for further use*/
13681 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 sizeof(pWDICtx->wdiCachedStartRspParams));
13684
13685 }
13686 else
13687 {
13688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13689 "Failed to start device with status %s(%d)",
13690 WDI_getHALStatusMsgString(startRspParams->status),
13691 startRspParams->status);
13692
13693 /*Set the expected state transition to stopped - because the start has
13694 failed*/
13695 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13696
13697 wpalMutexRelease(&pWDICtx->wptMutex);
13698
13699 /*Notify UMAC*/
13700 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013701
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13703
13704 /*Although the response is an error - it was processed by our function
13705 so as far as the caller is concerned this is a succesful reponse processing*/
13706 return WDI_STATUS_SUCCESS;
13707 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013708
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 wpalMutexRelease(&pWDICtx->wptMutex);
13710
13711 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13712 {
13713 /* FTM mode does not need to execute below */
13714 /* Notify UMAC */
13715 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13716 return WDI_STATUS_SUCCESS;
13717 }
13718
13719 /* START the Data transport */
13720 WDTS_startTransport(pWDICtx);
13721
13722 /*Start the STA Table !- check this logic again*/
13723 WDI_STATableStart(pWDICtx);
13724
13725#ifndef HAL_SELF_STA_PER_BSS
13726 /* Store the Self STA Index */
13727 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13728
13729 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13730 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13731 WDI_MAC_ADDR_LEN);
13732
13733 /* At this point add the self-STA */
13734
13735 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13736 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13737 /*! TO DO: wdiAddSTAParam.dpuSig */
13738 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13739 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13740 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13741
13742 //all DPU indices are the same for self STA
13743 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13744 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013745 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13747 WDI_MAC_ADDR_LEN);
13748 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13749 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13750
13751 /* Note: Since we don't get an explicit config STA request for self STA, we
13752 add the self STA upon receiving the Start response message. But the
13753 self STA entry in the table is deleted when WDI gets an explicit delete STA
13754 request */
13755 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13756#endif
13757
13758 /*Notify UMAC*/
13759 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13760
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013762}/*WDI_ProcessStartRsp*/
13763
13764
13765/**
13766 @brief Process Stop Response function (called when a response
13767 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013768
13769 @param pWDICtx: pointer to the WLAN DAL context
13770 pEventData: pointer to the event information structure
13771
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 @see
13773 @return Result of the function call
13774*/
13775WDI_Status
13776WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013777(
Jeff Johnson295189b2012-06-20 16:38:30 -070013778 WDI_ControlBlockType* pWDICtx,
13779 WDI_EventInfoType* pEventData
13780)
13781{
13782 WDI_Status wdiStatus;
13783 WDI_StopRspCb wdiStopRspCb = NULL;
13784
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13787
Jeff Johnsone7245742012-09-05 17:12:55 -070013788 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 -------------------------------------------------------------------------*/
13792 if (( NULL == pEventData ) ||
13793 ( NULL == pEventData->pEventData) ||
13794 ( NULL == wdiStopRspCb ))
13795 {
13796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013800 }
13801
13802 /*-------------------------------------------------------------------------
13803 Extract response and send it to UMAC
13804 -------------------------------------------------------------------------*/
13805 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
13806 {
13807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13808 "Invalid response length in Stop Resp %x %x",
13809 pEventData->uEventDataSize);
13810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 }
13813
13814 /*-------------------------------------------------------------------------
13815 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
13819 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 sizeof(halMacStopRspMsg.stopRspParams));
13821
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013823
13824 wpalMutexAcquire(&pWDICtx->wptMutex);
13825
13826 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 --------------------------------------------------------------------------*/
13829 if ( WDI_STATUS_SUCCESS != wdiStatus )
13830 {
13831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13832 "Failed to stop the device with status %s (%d)",
13833 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
13834 halMacStopRspMsg.stopRspParams.status);
13835
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
13837
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013841
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13843
13844 /*Transition now as WDI may get preempted imediately after it sends
13845 up the Stop Response and it will not get to process the state transition
13846 from Main Rsp function*/
13847 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
13848 wpalMutexRelease(&pWDICtx->wptMutex);
13849
13850 /*! TO DO: - STOP the Data transport */
13851
13852 /*Notify UMAC*/
13853 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
13854
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013856}/*WDI_ProcessStopRsp*/
13857
13858/**
13859 @brief Process Close Rsp function (called when a response
13860 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013861
13862 @param pWDICtx: pointer to the WLAN DAL context
13863 pEventData: pointer to the event information structure
13864
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 @see
13866 @return Result of the function call
13867*/
13868WDI_Status
13869WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013870(
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 WDI_ControlBlockType* pWDICtx,
13872 WDI_EventInfoType* pEventData
13873)
13874{
13875 /*There is no close response comming from HAL - function just kept for
13876 simmetry */
13877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013879}/*WDI_ProcessCloseRsp*/
13880
13881
13882/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070013884============================================================================*/
13885
13886/**
13887 @brief Process Init Scan Rsp function (called when a response
13888 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013889
13890 @param pWDICtx: pointer to the WLAN DAL context
13891 pEventData: pointer to the event information structure
13892
Jeff Johnson295189b2012-06-20 16:38:30 -070013893 @see
13894 @return Result of the function call
13895*/
13896WDI_Status
13897WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013898(
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 WDI_ControlBlockType* pWDICtx,
13900 WDI_EventInfoType* pEventData
13901)
13902{
13903 WDI_Status wdiStatus;
13904 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013905 tHalInitScanRspMsg halInitScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13907
13908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013910 -------------------------------------------------------------------------*/
13911 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
13912 ( NULL == pEventData->pEventData))
13913 {
13914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013918 }
13919
13920 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
13921 if( NULL == wdiInitScanRspCb)
13922 {
13923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013924 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 }
13928
13929 /*-------------------------------------------------------------------------
13930 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013931 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013933 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
13934 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 sizeof(halInitScanRspMsg.initScanRspParams));
13936
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013938
13939 if ( pWDICtx->bInBmps )
13940 {
13941 // notify DTS that we are entering Full power
13942 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
13943 }
13944
13945 /*Notify UMAC*/
13946 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
13947
Jeff Johnsone7245742012-09-05 17:12:55 -070013948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013949}/*WDI_ProcessInitScanRsp*/
13950
13951
13952/**
13953 @brief Process Start Scan Rsp function (called when a response
13954 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013955
13956 @param pWDICtx: pointer to the WLAN DAL context
13957 pEventData: pointer to the event information structure
13958
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 @see
13960 @return Result of the function call
13961*/
13962WDI_Status
13963WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013964(
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 WDI_ControlBlockType* pWDICtx,
13966 WDI_EventInfoType* pEventData
13967)
13968{
13969 WDI_StartScanRspParamsType wdiStartScanParams;
13970 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013971
13972 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13974
13975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 -------------------------------------------------------------------------*/
13978 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
13979 ( NULL == pEventData->pEventData))
13980 {
13981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 }
13986
13987 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
13988 if( NULL == wdiStartScanRspCb)
13989 {
13990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013991 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 }
13995
13996 /*-------------------------------------------------------------------------
13997 Extract response and send it to UMAC
13998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14000 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 sizeof(halStartScanRspMsg.startScanRspParams));
14002
14003 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14004 halStartScanRspMsg.startScanRspParams.status);
14005#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 halStartScanRspMsg.startScanRspParams.startTSF,
14010 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014011#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014012
14013 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14014 {
14015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14016 "Start scan failed with status %s (%d)",
14017 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14018 halStartScanRspMsg.startScanRspParams.status);
14019 /* send the status to UMAC, don't return from here*/
14020 }
14021
14022 /*Notify UMAC*/
14023 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14024
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014026
14027}/*WDI_ProcessStartScanRsp*/
14028
14029
14030/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014033
14034 @param pWDICtx: pointer to the WLAN DAL context
14035 pEventData: pointer to the event information structure
14036
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 @see
14038 @return Result of the function call
14039*/
14040WDI_Status
14041WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014042(
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 WDI_ControlBlockType* pWDICtx,
14044 WDI_EventInfoType* pEventData
14045)
14046{
14047 WDI_Status wdiStatus;
14048 tHalEndScanRspMsg halEndScanRspMsg;
14049 WDI_EndScanRspCb wdiEndScanRspCb;
14050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14051
14052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 -------------------------------------------------------------------------*/
14055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14056 ( NULL == pEventData->pEventData))
14057 {
14058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 }
14063
14064 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14065
14066 /*-------------------------------------------------------------------------
14067 Extract response and send it to UMAC
14068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14070 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 sizeof(halEndScanRspMsg.endScanRspParams));
14072
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014074
14075 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14076 {
14077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14078 "End Scan failed with status %s (%d )",
14079 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14080 halEndScanRspMsg.endScanRspParams.status);
14081 /* send the status to UMAC, don't return from here*/
14082 }
14083
14084 /*Notify UMAC*/
14085 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14086
Jeff Johnsone7245742012-09-05 17:12:55 -070014087 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014088}/*WDI_ProcessEndScanRsp*/
14089
14090
14091/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014094
14095 @param pWDICtx: pointer to the WLAN DAL context
14096 pEventData: pointer to the event information structure
14097
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 @see
14099 @return Result of the function call
14100*/
14101WDI_Status
14102WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014103(
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 WDI_ControlBlockType* pWDICtx,
14105 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014106)
Jeff Johnson295189b2012-06-20 16:38:30 -070014107{
14108 WDI_Status wdiStatus;
14109 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014110
14111 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14113
14114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 -------------------------------------------------------------------------*/
14117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14118 ( NULL == pEventData->pEventData))
14119 {
14120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 }
14125
14126 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14127
14128 /*-------------------------------------------------------------------------
14129 Extract response and send it to UMAC
14130 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014131 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14132 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14134
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014136
14137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014138 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014139 halFinishScanRspMsg.finishScanRspParams.status);
14140
14141 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14142 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14143 {
14144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14145 "Finish Scan failed with status %s (%d)",
14146 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14147 halFinishScanRspMsg.finishScanRspParams.status);
14148 /* send the status to UMAC, don't return from here*/
14149 }
14150
14151 /*Notify UMAC*/
14152 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14153
Jeff Johnsone7245742012-09-05 17:12:55 -070014154 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014155}/*WDI_ProcessFinishScanRsp*/
14156
14157/**
14158 @brief Process Join Response function (called when a response
14159 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014160
14161 @param pWDICtx: pointer to the WLAN DAL context
14162 pEventData: pointer to the event information structure
14163
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 @see
14165 @return Result of the function call
14166*/
14167WDI_Status
14168WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014169(
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 WDI_ControlBlockType* pWDICtx,
14171 WDI_EventInfoType* pEventData
14172)
14173{
14174 WDI_Status wdiStatus;
14175 WDI_JoinRspCb wdiJoinRspCb;
14176 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014177
14178 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14180
14181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 -------------------------------------------------------------------------*/
14184 if (( NULL == pWDICtx ) ||
14185 ( NULL == pWDICtx->pfncRspCB ) ||
14186 ( NULL == pEventData ) ||
14187 ( NULL == pEventData->pEventData))
14188 {
14189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014190 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014191 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 }
14194
14195 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14196
14197 /*-------------------------------------------------------------------------
14198 Extract response and send it to UMAC
14199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14201 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 sizeof(halJoinRspMsg.joinRspParams));
14203
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014205
14206 wpalMutexAcquire(&pWDICtx->wptMutex);
14207
14208 /*-----------------------------------------------------------------------
14209 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014211 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014212 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014213 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14214 {
14215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14217 "association no longer in progress %d - mysterious HAL response",
14218 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014219
Jeff Johnsone7245742012-09-05 17:12:55 -070014220 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014221 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014222 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 }
14224
14225 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14226
14227 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014228 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014229 -----------------------------------------------------------------------*/
14230 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14231 {
14232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14233 "Join only allowed in Joining state - failure state is %d "
14234 "strange HAL response", pBSSSes->wdiAssocState);
14235
Jeff Johnsone7245742012-09-05 17:12:55 -070014236 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14237
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014239 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014240 }
14241
14242
14243 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 -----------------------------------------------------------------------*/
14246 if ( WDI_STATUS_SUCCESS != wdiStatus )
14247 {
14248 /*Association was failed by HAL - remove session*/
14249 WDI_DeleteSession(pWDICtx, pBSSSes);
14250
14251 /*Association no longer in progress */
14252 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14253
14254 /*Association no longer in progress - prepare pending assoc for processing*/
14255 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014256
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 }
14258 else
14259 {
14260 /*Transition to state Joining - this may be redundant as we are supposed
14261 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014262 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014263 }
14264
14265 wpalMutexRelease(&pWDICtx->wptMutex);
14266
14267 /*Notify UMAC*/
14268 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14269
Jeff Johnsone7245742012-09-05 17:12:55 -070014270 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014271}/*WDI_ProcessJoinRsp*/
14272
14273
14274/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014275 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014277
14278 @param pWDICtx: pointer to the WLAN DAL context
14279 pEventData: pointer to the event information structure
14280
Jeff Johnson295189b2012-06-20 16:38:30 -070014281 @see
14282 @return Result of the function call
14283*/
14284WDI_Status
14285WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014286(
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 WDI_ControlBlockType* pWDICtx,
14288 WDI_EventInfoType* pEventData
14289)
14290{
14291 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14292 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 WDI_BSSSessionType* pBSSSes = NULL;
14295
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14298 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014299
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14301
14302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 -------------------------------------------------------------------------*/
14305 if (( NULL == pEventData ) ||
14306 ( NULL == pEventData->pEventData))
14307 {
14308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 }
14313
14314 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14315
14316 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14320 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 sizeof(halConfigBssRspMsg.configBssRspParams));
14322
14323 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14324 halConfigBssRspMsg.configBssRspParams.status);
14325 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14326 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14329 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014330
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014332
14333 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014335
14336 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014337 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014338
Jeff Johnson295189b2012-06-20 16:38:30 -070014339 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014340
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14344 #endif
14345 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14346 halConfigBssRspMsg.configBssRspParams.staMac,
14347 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014348
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 wpalMutexAcquire(&pWDICtx->wptMutex);
14350 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014353 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14354 wdiConfigBSSParams.macBSSID,
14355 &pBSSSes);
14356
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 /*-----------------------------------------------------------------------
14358 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014359 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014360 -----------------------------------------------------------------------*/
14361 if ( NULL == pBSSSes )
14362 {
14363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14364 "Association sequence for this BSS does not yet exist "
14365 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014366
14367 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14368
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014370 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014371 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014372
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 /*Save data for this BSS*/
14374 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14375 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14386 pBSSSes->bcastStaIdx =
14387 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014388
Jeff Johnson295189b2012-06-20 16:38:30 -070014389 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014390
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 /*-------------------------------------------------------------------------
14392 Add Peer STA
14393 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14396 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014397
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 wdiAddSTAParam.ucHTCapable =
14402 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14403 wdiAddSTAParam.ucStaType =
14404 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14405
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14408 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014409 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014410
14411 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14412 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14413 WDI_MAC_ADDR_LEN);
14414
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014421 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014428
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14430 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014431
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14433 /*-------------------------------------------------------------------------
14434 Add Broadcast STA only in AP mode
14435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014436 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 WDI_BSS_OPERATIONAL_MODE_AP )
14438 {
14439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14440 "Add BCAST STA to table for index: %d",
14441 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014442
14443 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014444 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014445
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14447 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14448 }
14449 wpalMutexRelease(&pWDICtx->wptMutex);
14450 }
14451 else
14452 {
14453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14454 "Config BSS RSP failed with status : %s(%d)",
14455 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014456 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 halConfigBssRspMsg.configBssRspParams.status);
14458
Jeff Johnsone7245742012-09-05 17:12:55 -070014459
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 /*Association was failed by HAL - remove session*/
14461 WDI_DeleteSession(pWDICtx, pBSSSes);
14462
14463 /*Association no longer in progress */
14464 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14465
14466 /*Association no longer in progress - prepare pending assoc for processing*/
14467 WDI_DequeueAssocRequest(pWDICtx);
14468
14469 }
14470
14471 /*Notify UMAC*/
14472 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14473
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014475}/*WDI_ProcessConfigBSSRsp*/
14476
14477
14478/**
14479 @brief Process Del BSS Response function (called when a response
14480 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014481
14482 @param pWDICtx: pointer to the WLAN DAL context
14483 pEventData: pointer to the event information structure
14484
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 @see
14486 @return Result of the function call
14487*/
14488WDI_Status
14489WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014490(
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 WDI_ControlBlockType* pWDICtx,
14492 WDI_EventInfoType* pEventData
14493)
14494{
14495 WDI_DelBSSRspParamsType wdiDelBSSParams;
14496 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014497 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 WDI_BSSSessionType* pBSSSes = NULL;
14499
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14502
14503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 -------------------------------------------------------------------------*/
14506 if (( NULL == pEventData ) ||
14507 ( NULL == pEventData->pEventData))
14508 {
14509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 }
14514
14515 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14516
14517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014520 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14521 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 sizeof(halDelBssRspMsg.deleteBssRspParams));
14523
14524
14525 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014527
14528 wpalMutexAcquire(&pWDICtx->wptMutex);
14529
14530 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014533 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14534 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14535 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014536
14537 /*-----------------------------------------------------------------------
14538 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014539 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 -----------------------------------------------------------------------*/
14541 if ( NULL == pBSSSes )
14542 {
14543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14544 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014545 "association no longer in progress - mysterious HAL response");
14546
14547 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14548
14549 wpalMutexRelease(&pWDICtx->wptMutex);
14550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014552
14553 /*Extract BSSID for the response to UMAC*/
14554 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14555 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14556
14557 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14558
14559 /*-----------------------------------------------------------------------
14560 The current session will be deleted
14561 -----------------------------------------------------------------------*/
14562 WDI_DeleteSession(pWDICtx, pBSSSes);
14563
14564
14565 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14566 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014568 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014569 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014570
14571 /* Delete the STA's in this BSS */
14572 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14573
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 wpalMutexRelease(&pWDICtx->wptMutex);
14575
14576 /*Notify UMAC*/
14577 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14578
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014580}/*WDI_ProcessDelBSSRsp*/
14581
14582/**
14583 @brief Process Post Assoc Rsp function (called when a response
14584 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014585
14586 @param pWDICtx: pointer to the WLAN DAL context
14587 pEventData: pointer to the event information structure
14588
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 @see
14590 @return Result of the function call
14591*/
14592WDI_Status
14593WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014594(
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 WDI_ControlBlockType* pWDICtx,
14596 WDI_EventInfoType* pEventData
14597)
14598{
14599 WDI_PostAssocRspParamsType wdiPostAssocParams;
14600 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014603 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14605
14606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 -------------------------------------------------------------------------*/
14609 if (( NULL == pEventData ) ||
14610 ( NULL == pEventData->pEventData))
14611 {
14612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 }
14617
14618 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14619
14620 /*-------------------------------------------------------------------------
14621 Extract response and send it to UMAC
14622 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14624 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014625 sizeof(halPostAssocRspMsg.postAssocRspParams));
14626
14627 /*Extract the Post Assoc STA Params */
14628
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014633 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14635
Jeff Johnsone7245742012-09-05 17:12:55 -070014636 wdiPostAssocParams.wdiStatus =
14637 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014638
14639 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14640 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14642 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 WDI_MAC_ADDR_LEN);
14644
14645 /* Extract Post Assoc BSS Params */
14646
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14648 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14649 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014650
14651 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14652 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14655 .macSTA, WDI_MAC_ADDR_LEN);
14656
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14659
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14662
14663 wdiPostAssocParams.bssParams.ucBSSIdx =
14664 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14665
Jeff Johnsone7245742012-09-05 17:12:55 -070014666 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14668
14669 wpalMutexAcquire(&pWDICtx->wptMutex);
14670
14671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014677
14678 /*-----------------------------------------------------------------------
14679 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 -----------------------------------------------------------------------*/
14682 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14685 {
14686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14687 "Association sequence for this BSS does not yet exist or "
14688 "association no longer in progress - mysterious HAL response");
14689
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14691
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 }
14695
14696 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 -----------------------------------------------------------------------*/
14699 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14700 {
14701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14702 "Post Assoc not allowed before JOIN - failing request "
14703 "strange HAL response");
14704
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14706
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 }
14710
14711 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014712 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 -----------------------------------------------------------------------*/
14714 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14715 {
14716 /*Association was failed by HAL - remove session*/
14717 WDI_DeleteSession(pWDICtx, pBSSSes);
14718 }
14719 else
14720 {
14721 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014723
14724 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14733
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14736 }
14737
14738 /*Association no longer in progress */
14739 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14740
14741 /*Association no longer in progress - prepare pending assoc for processing*/
14742 WDI_DequeueAssocRequest(pWDICtx);
14743
14744 wpalMutexRelease(&pWDICtx->wptMutex);
14745
14746 /*Notify UMAC*/
14747 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14748
Jeff Johnsone7245742012-09-05 17:12:55 -070014749 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014750}/*WDI_ProcessPostAssocRsp*/
14751
14752/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014755
14756 @param pWDICtx: pointer to the WLAN DAL context
14757 pEventData: pointer to the event information structure
14758
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 @see
14760 @return Result of the function call
14761*/
14762WDI_Status
14763WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014764(
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 WDI_ControlBlockType* pWDICtx,
14766 WDI_EventInfoType* pEventData
14767)
14768{
14769 WDI_DelSTARspParamsType wdiDelSTARsp;
14770 WDI_DelSTARspCb wdiDelSTARspCb;
14771 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14774
14775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 -------------------------------------------------------------------------*/
14778 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14779 ( NULL == pEventData->pEventData))
14780 {
14781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014782 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 }
14786
14787 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
14788
14789 /*-------------------------------------------------------------------------
14790 Extract response and send it to UMAC
14791 -------------------------------------------------------------------------*/
14792 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 sizeof(halDelStaRspMsg.delStaRspParams));
14795
14796 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 wdiDelSTARsp.wdiStatus =
14798 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014799
14800 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
14801
14802 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
14803 if(staType == WDI_STA_ENTRY_SELF)
14804 {
14805 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
14806
14807 /* At this point add the self-STA */
14808
14809 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14810 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14811 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14812
14813#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
14814#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
14815
14816 //all DPU indices are the same for self STA
14817 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14818 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14819 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14820 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14821 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14822 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070014823
14824 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 }
14826 else
14827 {
14828 //Delete the station in the table
14829 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
14830 }
14831
14832 /*Notify UMAC*/
14833 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
14834
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014836}/*WDI_ProcessDelSTARsp*/
14837
14838
14839/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070014841==========================================================================*/
14842
14843/**
14844 @brief Process Set BSS Key Rsp function (called when a response
14845 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014846
14847 @param pWDICtx: pointer to the WLAN DAL context
14848 pEventData: pointer to the event information structure
14849
Jeff Johnson295189b2012-06-20 16:38:30 -070014850 @see
14851 @return Result of the function call
14852*/
14853WDI_Status
14854WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014855(
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 WDI_ControlBlockType* pWDICtx,
14857 WDI_EventInfoType* pEventData
14858)
14859{
14860 WDI_Status wdiStatus;
14861 eHalStatus halStatus;
14862 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
14863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14864
14865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 -------------------------------------------------------------------------*/
14868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14869 ( NULL == pEventData->pEventData))
14870 {
14871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 }
14876
14877 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
14878
14879 /*-------------------------------------------------------------------------
14880 Extract response and send it to UMAC
14881 -------------------------------------------------------------------------*/
14882 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014884
14885 if ( eHAL_STATUS_SUCCESS != halStatus )
14886 {
14887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14888 "Set BSS Key failed with status %s (%d)",
14889 WDI_getHALStatusMsgString(halStatus),
14890 halStatus);
14891 /* send the status to UMAC, don't return from here*/
14892 }
14893
14894 /*Notify UMAC*/
14895 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14896
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898}/*WDI_ProcessSetBssKeyRsp*/
14899
14900/**
14901 @brief Process Remove BSS Key Rsp function (called when a response
14902 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014903
14904 @param pWDICtx: pointer to the WLAN DAL context
14905 pEventData: pointer to the event information structure
14906
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 @see
14908 @return Result of the function call
14909*/
14910WDI_Status
14911WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014912(
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 WDI_ControlBlockType* pWDICtx,
14914 WDI_EventInfoType* pEventData
14915)
14916{
14917 WDI_Status wdiStatus;
14918 eHalStatus halStatus;
14919 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
14920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14921
14922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 -------------------------------------------------------------------------*/
14925 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14926 ( NULL == pEventData->pEventData))
14927 {
14928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014929 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014932 }
14933
14934 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
14935
14936 /*-------------------------------------------------------------------------
14937 Extract response and send it to UMAC
14938 -------------------------------------------------------------------------*/
14939 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014941
14942 if ( eHAL_STATUS_SUCCESS != halStatus )
14943 {
14944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14945 "Remove BSS Key failed with status %s (%d )",
14946 WDI_getHALStatusMsgString(halStatus),
14947 halStatus);
14948 /* send the status to UMAC, don't return from here*/
14949 }
14950
14951 /*Notify UMAC*/
14952 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14953
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014955}/*WDI_ProcessSetBssKeyRsp*/
14956
14957
14958/**
14959 @brief Process Set STA Key Rsp function (called when a response
14960 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014961
14962 @param pWDICtx: pointer to the WLAN DAL context
14963 pEventData: pointer to the event information structure
14964
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 @see
14966 @return Result of the function call
14967*/
14968WDI_Status
14969WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014970(
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 WDI_ControlBlockType* pWDICtx,
14972 WDI_EventInfoType* pEventData
14973)
14974{
14975 WDI_Status wdiStatus;
14976 eHalStatus halStatus;
14977 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
14978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14979
14980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 -------------------------------------------------------------------------*/
14983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14984 ( NULL == pEventData->pEventData))
14985 {
14986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 }
14991
14992 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
14993
14994 /*-------------------------------------------------------------------------
14995 Extract response and send it to UMAC
14996 -------------------------------------------------------------------------*/
14997 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014998 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014999
15000 if ( eHAL_STATUS_SUCCESS != halStatus )
15001 {
15002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15003 "Set STA Key failed with status %s (%d)",
15004 WDI_getHALStatusMsgString(halStatus),
15005 halStatus);
15006 /* send the status to UMAC, don't return from here*/
15007 }
15008
15009 /*Notify UMAC*/
15010 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15011
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015013}/*WDI_ProcessSetSTAKeyRsp*/
15014
15015/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015016 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015018
15019 @param pWDICtx: pointer to the WLAN DAL context
15020 pEventData: pointer to the event information structure
15021
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 @see
15023 @return Result of the function call
15024*/
15025WDI_Status
15026WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015027(
Jeff Johnson295189b2012-06-20 16:38:30 -070015028 WDI_ControlBlockType* pWDICtx,
15029 WDI_EventInfoType* pEventData
15030)
15031{
15032 WDI_Status wdiStatus;
15033 eHalStatus halStatus;
15034 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15036
15037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 -------------------------------------------------------------------------*/
15040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15041 ( NULL == pEventData->pEventData))
15042 {
15043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 }
15048
15049 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15050
15051 /*-------------------------------------------------------------------------
15052 Extract response and send it to UMAC
15053 -------------------------------------------------------------------------*/
15054 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015055 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015056
15057 if ( eHAL_STATUS_SUCCESS != halStatus )
15058 {
15059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15060 "Remove STA Key failed with status %s (%d)",
15061 WDI_getHALStatusMsgString(halStatus),
15062 halStatus);
15063 /* send the status to UMAC, don't return from here*/
15064 }
15065
15066 /*Notify UMAC*/
15067 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15068
Jeff Johnsone7245742012-09-05 17:12:55 -070015069 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015070}/*WDI_ProcessRemoveStaKeyRsp*/
15071
15072/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015073 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015075
15076 @param pWDICtx: pointer to the WLAN DAL context
15077 pEventData: pointer to the event information structure
15078
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 @see
15080 @return Result of the function call
15081*/
15082WDI_Status
15083WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015084(
Jeff Johnson295189b2012-06-20 16:38:30 -070015085 WDI_ControlBlockType* pWDICtx,
15086 WDI_EventInfoType* pEventData
15087)
15088{
15089 WDI_Status wdiStatus;
15090 eHalStatus halStatus;
15091 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15093
15094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015096 -------------------------------------------------------------------------*/
15097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15098 ( NULL == pEventData->pEventData))
15099 {
15100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 }
15105
15106 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15107
15108 /*-------------------------------------------------------------------------
15109 Extract response and send it to UMAC
15110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 wpalMemoryCopy( &halStatus,
15112 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015113 sizeof(halStatus));
15114
Jeff Johnsone7245742012-09-05 17:12:55 -070015115 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015116
15117 if ( eHAL_STATUS_SUCCESS != halStatus )
15118 {
15119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15120 "Set STA Key failed with status %s (%d)",
15121 WDI_getHALStatusMsgString(halStatus),
15122 halStatus);
15123 /* send the status to UMAC, don't return from here*/
15124 }
15125
15126 /*Notify UMAC*/
15127 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15128
Jeff Johnsone7245742012-09-05 17:12:55 -070015129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015130}/*WDI_ProcessSetSTABcastKeyRsp*/
15131
15132/**
15133 @brief Process Remove STA Bcast Key Rsp function (called when a
15134 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015135
15136 @param pWDICtx: pointer to the WLAN DAL context
15137 pEventData: pointer to the event information structure
15138
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 @see
15140 @return Result of the function call
15141*/
15142WDI_Status
15143WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015144(
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 WDI_ControlBlockType* pWDICtx,
15146 WDI_EventInfoType* pEventData
15147)
15148{
15149 WDI_Status wdiStatus;
15150 eHalStatus halStatus;
15151 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15153
15154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 -------------------------------------------------------------------------*/
15157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15158 ( NULL == pEventData->pEventData))
15159 {
15160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 }
15165
15166 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15167
15168 /*-------------------------------------------------------------------------
15169 Extract response and send it to UMAC
15170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 wpalMemoryCopy( &halStatus,
15172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 sizeof(halStatus));
15174
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015176
15177 if ( eHAL_STATUS_SUCCESS != halStatus )
15178 {
15179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15180 "Remove STA Key failed with status %s (%d)",
15181 WDI_getHALStatusMsgString(halStatus),
15182 halStatus);
15183 /* send the status to UMAC, don't return from here*/
15184 }
15185
15186 /*Notify UMAC*/
15187 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15188
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015190}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15191
15192
15193/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015195==========================================================================*/
15196
15197/**
15198 @brief Process Add TSpec Rsp function (called when a response
15199 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015200
15201 @param pWDICtx: pointer to the WLAN DAL context
15202 pEventData: pointer to the event information structure
15203
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 @see
15205 @return Result of the function call
15206*/
15207WDI_Status
15208WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015209(
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 WDI_ControlBlockType* pWDICtx,
15211 WDI_EventInfoType* pEventData
15212)
15213{
15214 WDI_Status wdiStatus;
15215 eHalStatus halStatus;
15216 WDI_AddTsRspCb wdiAddTsRspCb;
15217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15218
15219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 -------------------------------------------------------------------------*/
15222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15223 ( NULL == pEventData->pEventData))
15224 {
15225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 }
15230
15231 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15232
15233 /*-------------------------------------------------------------------------
15234 Extract response and send it to UMAC
15235 -------------------------------------------------------------------------*/
15236 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015237 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015238
15239 /*Notify UMAC*/
15240 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15241
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015243}/*WDI_ProcessAddTSpecRsp*/
15244
15245
15246/**
15247 @brief Process Del TSpec Rsp function (called when a response
15248 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015249
15250 @param pWDICtx: pointer to the WLAN DAL context
15251 pEventData: pointer to the event information structure
15252
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 @see
15254 @return Result of the function call
15255*/
15256WDI_Status
15257WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015258(
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 WDI_ControlBlockType* pWDICtx,
15260 WDI_EventInfoType* pEventData
15261)
15262{
15263 WDI_Status wdiStatus;
15264 eHalStatus halStatus;
15265 WDI_DelTsRspCb wdiDelTsRspCb;
15266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15267
15268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 -------------------------------------------------------------------------*/
15271 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15272 ( NULL == pEventData->pEventData))
15273 {
15274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 }
15279
15280 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15281
15282 /*-------------------------------------------------------------------------
15283 Extract response and send it to UMAC
15284 -------------------------------------------------------------------------*/
15285 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015287
15288 /*Notify UMAC*/
15289 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15290
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015292}/*WDI_ProcessDelTSpecRsp*/
15293
15294/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015297
15298 @param pWDICtx: pointer to the WLAN DAL context
15299 pEventData: pointer to the event information structure
15300
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 @see
15302 @return Result of the function call
15303*/
15304WDI_Status
15305WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015306(
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 WDI_ControlBlockType* pWDICtx,
15308 WDI_EventInfoType* pEventData
15309)
15310{
15311 WDI_Status wdiStatus;
15312 eHalStatus halStatus;
15313 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15315
15316 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015317 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 -------------------------------------------------------------------------*/
15319 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15320 ( NULL == pEventData->pEventData))
15321 {
15322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015323 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 }
15327
15328 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15329
15330 /*-------------------------------------------------------------------------
15331 Extract response and send it to UMAC
15332 -------------------------------------------------------------------------*/
15333 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015335
15336 /*Notify UMAC*/
15337 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15338
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015340}/*WDI_ProcessUpdateEDCAParamsRsp*/
15341
15342
15343/**
15344 @brief Process Add BA Rsp function (called when a response
15345 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015346
15347 @param pWDICtx: pointer to the WLAN DAL context
15348 pEventData: pointer to the event information structure
15349
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 @see
15351 @return Result of the function call
15352*/
15353WDI_Status
15354WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015355(
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 WDI_ControlBlockType* pWDICtx,
15357 WDI_EventInfoType* pEventData
15358)
15359{
15360 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15361
15362 tAddBASessionRspParams halBASessionRsp;
15363 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15364
Jeff Johnsone7245742012-09-05 17:12:55 -070015365
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15367
15368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 -------------------------------------------------------------------------*/
15371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15372 ( NULL == pEventData->pEventData))
15373 {
15374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 }
15379
15380 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15381
15382 /*-------------------------------------------------------------------------
15383 Extract response and send it to UMAC
15384 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015385 wpalMemoryCopy( &halBASessionRsp,
15386 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 sizeof(halBASessionRsp));
15388
15389 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15390
Jeff Johnson43971f52012-07-17 12:26:56 -070015391 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 {
15393 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15394 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15395 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15396 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15397 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15398 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15399 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15400 }
15401
15402 /*Notify UMAC*/
15403 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15404
Jeff Johnsone7245742012-09-05 17:12:55 -070015405 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015406}/*WDI_ProcessAddSessionBARsp*/
15407
15408
15409/**
15410 @brief Process Del BA Rsp function (called when a response
15411 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015412
15413 @param pWDICtx: pointer to the WLAN DAL context
15414 pEventData: pointer to the event information structure
15415
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 @see
15417 @return Result of the function call
15418*/
15419WDI_Status
15420WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015421(
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 WDI_ControlBlockType* pWDICtx,
15423 WDI_EventInfoType* pEventData
15424)
15425{
15426 WDI_Status wdiStatus;
15427 eHalStatus halStatus;
15428 WDI_DelBARspCb wdiDelBARspCb;
15429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15430
15431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 -------------------------------------------------------------------------*/
15434 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15435 ( NULL == pEventData->pEventData))
15436 {
15437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 }
15442
15443 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15444
15445 /*-------------------------------------------------------------------------
15446 Extract response and send it to UMAC
15447 -------------------------------------------------------------------------*/
15448 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015450
15451 if ( eHAL_STATUS_SUCCESS == halStatus )
15452 {
15453 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15454 }
15455
15456 /*Notify UMAC*/
15457 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15458
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015460}/*WDI_ProcessDelBARsp*/
15461
15462#ifdef FEATURE_WLAN_CCX
15463/**
15464 @brief Process TSM Stats Rsp function (called when a response
15465 is being received over the bus from HAL)
15466
15467 @param pWDICtx: pointer to the WLAN DAL context
15468 pEventData: pointer to the event information structure
15469
15470 @see
15471 @return Result of the function call
15472*/
15473WDI_Status
15474WDI_ProcessTsmStatsRsp
15475(
15476 WDI_ControlBlockType* pWDICtx,
15477 WDI_EventInfoType* pEventData
15478)
15479{
15480 WDI_TsmRspCb wdiTsmStatsRspCb;
15481 tTsmStatsRspMsg halTsmStatsRspMsg;
15482 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15484
15485 /*-------------------------------------------------------------------------
15486 Sanity check
15487 -------------------------------------------------------------------------*/
15488 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15489 ( NULL == pEventData->pEventData))
15490 {
15491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 WDI_ASSERT(0);
15494 return WDI_STATUS_E_FAILURE;
15495 }
15496
15497 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15498
15499 /*-------------------------------------------------------------------------
15500 Unpack HAL Response Message - the header was already extracted by the
15501 main Response Handling procedure
15502 -------------------------------------------------------------------------*/
15503 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15504 pEventData->pEventData,
15505 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15506
15507 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15508 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15509 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15510 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15511 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15512 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15513 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15514 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15515 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15516 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15517 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15518 halTsmStatsRspMsg.tsmStatsRspParams.status);
15519
15520 /*Notify UMAC*/
15521 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15522
15523 return WDI_STATUS_SUCCESS;
15524}/*WDI_ProcessTsmStatsRsp*/
15525
15526#endif
15527
15528
15529
15530/**
15531 @brief Process Flush AC Rsp function (called when a response
15532 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015533
15534 @param pWDICtx: pointer to the WLAN DAL context
15535 pEventData: pointer to the event information structure
15536
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 @see
15538 @return Result of the function call
15539*/
15540WDI_Status
15541WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015542(
Jeff Johnson295189b2012-06-20 16:38:30 -070015543 WDI_ControlBlockType* pWDICtx,
15544 WDI_EventInfoType* pEventData
15545)
15546{
15547 WDI_Status wdiStatus;
15548 eHalStatus halStatus;
15549 WDI_FlushAcRspCb wdiFlushAcRspCb;
15550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15551
15552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 -------------------------------------------------------------------------*/
15555 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15556 ( NULL == pEventData->pEventData))
15557 {
15558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015559 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 }
15563
15564 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15565
15566 /*-------------------------------------------------------------------------
15567 Extract response and send it to UMAC
15568 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 wpalMemoryCopy( &halStatus,
15570 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 sizeof(halStatus));
15572
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015574
15575 /*Notify UMAC*/
15576 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15577
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015579}/*WDI_ProcessFlushAcRsp*/
15580
15581/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015584
15585 @param pWDICtx: pointer to the WLAN DAL context
15586 pEventData: pointer to the event information structure
15587
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 @see
15589 @return Result of the function call
15590*/
15591WDI_Status
15592WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015593(
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 WDI_ControlBlockType* pWDICtx,
15595 WDI_EventInfoType* pEventData
15596)
15597{
15598 WDI_Status wdiStatus;
15599 eHalStatus halStatus;
15600 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15602
15603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 -------------------------------------------------------------------------*/
15606 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15607 ( NULL == pEventData->pEventData))
15608 {
15609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 }
15614
15615 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15616
15617 /*-------------------------------------------------------------------------
15618 Extract response and send it to UMAC
15619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 wpalMemoryCopy( &halStatus,
15621 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 sizeof(halStatus));
15623
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015625
15626 /*Notify UMAC*/
15627 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15628
Jeff Johnsone7245742012-09-05 17:12:55 -070015629 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015630}/*WDI_ProcessBtAmpEventRsp*/
15631
15632
15633/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015636
15637 @param pWDICtx: pointer to the WLAN DAL context
15638 pEventData: pointer to the event information structure
15639
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 @see
15641 @return Result of the function call
15642*/
15643WDI_Status
15644WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015645(
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 WDI_ControlBlockType* pWDICtx,
15647 WDI_EventInfoType* pEventData
15648)
15649{
15650 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15651 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15652 tAddStaSelfRspMsg halAddStaSelfRsp;
15653 WDI_AddStaParams wdiAddSTAParam = {0};
15654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15655
15656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 -------------------------------------------------------------------------*/
15659 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15660 ( NULL == pEventData->pEventData))
15661 {
15662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 }
15667
Jeff Johnsone7245742012-09-05 17:12:55 -070015668 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15670
15671 /*-------------------------------------------------------------------------
15672 Extract response and send it to UMAC
15673 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15675 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15677
15678
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 wdiAddSTASelfParams.wdiStatus =
15680 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015681
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15688
15689 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15690 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15691 WDI_MAC_ADDR_LEN);
15692
15693
15694#ifdef HAL_SELF_STA_PER_BSS
15695
15696 /* At this point add the self-STA */
15697
15698 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15699 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15700 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15701
15702 //all DPU indices are the same for self STA
15703
15704 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15707 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15708 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15709 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15710 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15711
15712 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15713 WDI_MAC_ADDR_LEN);
15714
15715 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15716 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15717
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15720 {
15721 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15722 }
15723#endif
15724
15725 /*Notify UMAC*/
15726 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15727
Jeff Johnsone7245742012-09-05 17:12:55 -070015728 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015729}/*WDI_ProcessAddSTASelfRsp*/
15730
15731
15732
15733/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015734 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015736
15737 @param pWDICtx: pointer to the WLAN DAL context
15738 pEventData: pointer to the event information structure
15739
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 @see
15741 @return Result of the function call
15742*/
15743WDI_Status
15744WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015745(
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 WDI_ControlBlockType* pWDICtx,
15747 WDI_EventInfoType* pEventData
15748)
15749{
15750 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15751 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15752 tDelStaSelfRspParams delStaSelfRspParams;
15753 wpt_uint8 ucStaIdx;
15754
15755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15756
15757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 -------------------------------------------------------------------------*/
15760 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15761 ( NULL == pEventData->pEventData))
15762 {
15763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 }
15768
15769 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
15770
15771 /*-------------------------------------------------------------------------
15772 Extract response and send it to UMAC
15773 -------------------------------------------------------------------------*/
15774
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 (wpt_uint8*)pEventData->pEventData,
15777 sizeof(tDelStaSelfRspParams));
15778
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 wdiDelStaSelfRspParams.wdiStatus =
15780 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015781
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
15784 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
15785 {
15786 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 delStaSelfRspParams.selfMacAddr,
15789 &ucStaIdx);
15790 if(WDI_STATUS_E_FAILURE == wdiStatus)
15791 {
15792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015793 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 }
15797 WDI_STATableDelSta(pWDICtx, ucStaIdx);
15798 }
15799
15800 /*Notify UMAC*/
15801 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
15802
15803 return WDI_STATUS_SUCCESS;
15804}
15805
Jeff Johnsone7245742012-09-05 17:12:55 -070015806#ifdef FEATURE_OEM_DATA_SUPPORT
15807/**
15808 @brief Start Oem Data Rsp function (called when a
15809 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070015810
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 @param pWDICtx: pointer to the WLAN DAL context
15812 pEventData: pointer to the event information structure
15813
15814 @see
15815 @return Result of the function call
15816*/
15817#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
15818
15819WDI_Status
15820WDI_ProcessStartOemDataRsp
15821(
15822 WDI_ControlBlockType* pWDICtx,
15823 WDI_EventInfoType* pEventData
15824)
15825{
15826 WDI_oemDataRspCb wdiOemDataRspCb;
15827 WDI_oemDataRspParamsType* wdiOemDataRspParams;
15828 tStartOemDataRspParams* halStartOemDataRspParams;
15829
15830 /*-------------------------------------------------------------------------
15831 Sanity check
15832 -------------------------------------------------------------------------*/
15833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15834 ( NULL == pEventData->pEventData))
15835 {
15836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015837 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070015838 WDI_ASSERT(0);
15839 return WDI_STATUS_E_FAILURE;
15840 }
15841
15842 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
15843
15844 /*-------------------------------------------------------------------------
15845 Extract response and send it to UMAC
15846 -------------------------------------------------------------------------*/
15847 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
15848
15849
15850 //It is the responsibility of the application code to check for failure
15851 //conditions!
15852
15853 //Allocate memory for WDI OEM DATA RSP structure
15854 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
15855
15856 if(NULL == wdiOemDataRspParams)
15857 {
15858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15859 "Failed to allocate memory in OEM DATA Response %x %x %x ",
15860 pWDICtx, pEventData, pEventData->pEventData);
15861 WDI_ASSERT(0);
15862 return WDI_STATUS_E_FAILURE;
15863 }
15864
15865 /* Populate WDI structure members */
15866 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
15867
15868 /*Notify UMAC*/
15869 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
15870
15871 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
15872 wpalMemoryFree(wdiOemDataRspParams);
15873
15874 return WDI_STATUS_SUCCESS;
15875}/*WDI_PrcoessStartOemDataRsp*/
15876#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015877
15878/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015880===========================================================================*/
15881
15882/**
15883 @brief Process Channel Switch Rsp function (called when a response
15884 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015885
15886 @param pWDICtx: pointer to the WLAN DAL context
15887 pEventData: pointer to the event information structure
15888
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 @see
15890 @return Result of the function call
15891*/
15892WDI_Status
15893WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015894(
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 WDI_ControlBlockType* pWDICtx,
15896 WDI_EventInfoType* pEventData
15897)
15898{
15899 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
15900 WDI_SwitchChRspCb wdiChSwitchRspCb;
15901 tSwitchChannelRspParams halSwitchChannelRsp;
15902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15903
15904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 -------------------------------------------------------------------------*/
15907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15908 ( NULL == pEventData->pEventData))
15909 {
15910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 }
15915
15916 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
15917
15918 /*-------------------------------------------------------------------------
15919 Extract response and send it to UMAC
15920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 (wpt_uint8*)pEventData->pEventData,
15923 sizeof(halSwitchChannelRsp));
15924
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 wdiSwitchChRsp.wdiStatus =
15926 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
15928
15929#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070015931#endif
15932
15933 /*Notify UMAC*/
15934 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
15935
Jeff Johnsone7245742012-09-05 17:12:55 -070015936 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015937}/*WDI_ProcessChannelSwitchRsp*/
15938
15939
15940/**
15941 @brief Process Config STA Rsp function (called when a response
15942 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015943
15944 @param pWDICtx: pointer to the WLAN DAL context
15945 pEventData: pointer to the event information structure
15946
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 @see
15948 @return Result of the function call
15949*/
15950WDI_Status
15951WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015952(
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 WDI_ControlBlockType* pWDICtx,
15954 WDI_EventInfoType* pEventData
15955)
15956{
15957 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
15958 WDI_ConfigSTARspCb wdiConfigSTARspCb;
15959 WDI_AddStaParams wdiAddSTAParam;
15960
15961 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015963
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15966
15967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 -------------------------------------------------------------------------*/
15970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15971 ( NULL == pEventData->pEventData))
15972 {
15973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 }
15978
15979 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
15980
15981 /*-------------------------------------------------------------------------
15982 Extract response and send it to UMAC
15983 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
15985 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 sizeof(halConfigStaRsp.configStaRspParams));
15987
15988
15989 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
15990 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
15991 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
15992 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
15993 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
15994
15995 /* MAC Address of STA - take from cache as it does not come back in the
15996 response*/
15997 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016000
16001 wdiCfgSTAParams.wdiStatus =
16002 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016003
16004 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16005 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16006 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16007
16008 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16009 {
16010 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16011 {
16012 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16015 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016016
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016018 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016020 wdiAddSTAParam.ucHTCapable =
16021 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16022 wdiAddSTAParam.ucStaType =
16023 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16024
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16027 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016029
16030 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16031 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16032 WDI_MAC_ADDR_LEN);
16033
16034 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16035 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16036 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016037
16038 if ( NULL == pBSSSes )
16039 {
16040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16041 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016042
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 }
16046
16047 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016048 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016049 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 halConfigStaRsp.configStaRspParams.ucBcastSig;
16056 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16057 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016058
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16060 }
16061 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16062 {
16063 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16064
Jeff Johnsone7245742012-09-05 17:12:55 -070016065 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016066 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016076 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 halConfigStaRsp.configStaRspParams.ucUcastSig;
16079 }
16080 }
16081
16082 /*Notify UMAC*/
16083 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16084
Jeff Johnsone7245742012-09-05 17:12:55 -070016085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016086}/*WDI_ProcessConfigStaRsp*/
16087
16088
16089/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016090 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016092
16093 @param pWDICtx: pointer to the WLAN DAL context
16094 pEventData: pointer to the event information structure
16095
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 @see
16097 @return Result of the function call
16098*/
16099WDI_Status
16100WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016101(
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 WDI_ControlBlockType* pWDICtx,
16103 WDI_EventInfoType* pEventData
16104)
16105{
16106 WDI_Status wdiStatus;
16107 eHalStatus halStatus;
16108 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16109
16110 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016111 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16113
16114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 -------------------------------------------------------------------------*/
16117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16118 ( NULL == pEventData->pEventData))
16119 {
16120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 }
16125
16126 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16127
16128 wpalMutexAcquire(&pWDICtx->wptMutex);
16129
16130 /*If the link is being transitioned to idle - the BSS is to be deleted
16131 - this type of ending a session is possible when UMAC has failed an
16132 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16135 {
16136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016137 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16140 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16141 &pBSSSes);
16142
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 /*-----------------------------------------------------------------------
16144 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016145 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016146 -----------------------------------------------------------------------*/
16147 if ( NULL == pBSSSes )
16148 {
16149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16150 "Set link response received outside association session");
16151 }
16152 else
16153 {
16154 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16155 will be del BSS coming after this to stop the beaconing & cleaning up the
16156 sessions*/
16157 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16158 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16159 {
16160 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 -----------------------------------------------------------------------*/
16163 WDI_DeleteSession(pWDICtx, pBSSSes);
16164
16165 /*-----------------------------------------------------------------------
16166 Check to see if this association is in progress - if so disable the
16167 flag as this has ended
16168 -----------------------------------------------------------------------*/
16169 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 /*Association no longer in progress */
16172 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16173 /*Association no longer in progress - prepare pending assoc for processing*/
16174 WDI_DequeueAssocRequest(pWDICtx);
16175 }
16176 }
16177 }
16178 }
16179 /* If the link state has been set to POST ASSOC, reset the "association in
16180 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16183 {
16184 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16185 WDI_DequeueAssocRequest(pWDICtx);
16186 }
16187
16188 wpalMutexRelease(&pWDICtx->wptMutex);
16189
16190 /*-------------------------------------------------------------------------
16191 Extract response and send it to UMAC
16192 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 wpalMemoryCopy( &halStatus,
16194 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 sizeof(halStatus));
16196
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016198
16199 /*Notify UMAC*/
16200 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16201
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016203}/*WDI_ProcessSetLinkStateRsp*/
16204
16205/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016208
16209 @param pWDICtx: pointer to the WLAN DAL context
16210 pEventData: pointer to the event information structure
16211
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 @see
16213 @return Result of the function call
16214*/
16215WDI_Status
16216WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016217(
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 WDI_ControlBlockType* pWDICtx,
16219 WDI_EventInfoType* pEventData
16220)
16221{
16222 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16223 WDI_GetStatsRspCb wdiGetStatsRspCb;
16224 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016225
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16227
16228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 -------------------------------------------------------------------------*/
16231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16232 ( NULL == pEventData->pEventData))
16233 {
16234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 }
16239
16240 /*-------------------------------------------------------------------------
16241 Extract response and send it to UMAC
16242 -------------------------------------------------------------------------*/
16243 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16244
16245 /*allocate the stats response buffer */
16246 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16247 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16248 + sizeof(WDI_GetStatsRspParamsType));
16249
16250 if(NULL == wdiGetStatsRsp)
16251 {
16252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16253 "Failed to allocate memory in Get Stats Response %x %x %x ",
16254 pWDICtx, pEventData, pEventData->pEventData);
16255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 }
16258
16259 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16260
16261 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16262 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16263 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16264 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16265 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16266 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16267
16268 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16269 wpalMemoryCopy(wdiGetStatsRsp + 1,
16270 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16271 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16272
16273 /*Notify UMAC*/
16274 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16275
16276 wpalMemoryFree(wdiGetStatsRsp);
16277
Jeff Johnsone7245742012-09-05 17:12:55 -070016278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016279}/*WDI_ProcessGetStatsRsp*/
16280
16281
16282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016283 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016285
16286 @param pWDICtx: pointer to the WLAN DAL context
16287 pEventData: pointer to the event information structure
16288
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 @see
16290 @return Result of the function call
16291*/
16292WDI_Status
16293WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016294(
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 WDI_ControlBlockType* pWDICtx,
16296 WDI_EventInfoType* pEventData
16297)
16298{
16299 WDI_Status wdiStatus;
16300 eHalStatus halStatus;
16301 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16303
16304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 -------------------------------------------------------------------------*/
16307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16308 ( NULL == pEventData->pEventData))
16309 {
16310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 }
16315
16316 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16317
16318 /*-------------------------------------------------------------------------
16319 Extract response and send it to UMAC
16320 -------------------------------------------------------------------------*/
16321 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016322 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016323
16324 /*Notify UMAC*/
16325 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16326
Jeff Johnsone7245742012-09-05 17:12:55 -070016327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016328}/*WDI_ProcessUpdateCfgRsp*/
16329
16330
16331
16332/**
16333 @brief Process Add BA Rsp function (called when a response
16334 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016335
16336 @param pWDICtx: pointer to the WLAN DAL context
16337 pEventData: pointer to the event information structure
16338
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 @see
16340 @return Result of the function call
16341*/
16342WDI_Status
16343WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016344(
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 WDI_ControlBlockType* pWDICtx,
16346 WDI_EventInfoType* pEventData
16347)
16348{
16349 WDI_AddBARspCb wdiAddBARspCb;
16350
16351 tAddBARspParams halAddBARsp;
16352 WDI_AddBARspinfoType wdiAddBARsp;
16353
16354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16355
16356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016358 -------------------------------------------------------------------------*/
16359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16360 ( NULL == pEventData->pEventData))
16361 {
16362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 }
16367
16368 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16369
16370 /*-------------------------------------------------------------------------
16371 Extract response and send it to UMAC
16372 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016373 wpalMemoryCopy( &halAddBARsp,
16374 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 sizeof(halAddBARsp));
16376
16377 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16378
Jeff Johnson43971f52012-07-17 12:26:56 -070016379 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 {
16381 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16382 }
16383
16384 /*Notify UMAC*/
16385 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16386
Jeff Johnsone7245742012-09-05 17:12:55 -070016387 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016388}/*WDI_ProcessAddSessionBARsp*/
16389
16390/**
16391 @brief Process Add BA Rsp function (called when a response
16392 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016393
16394 @param pWDICtx: pointer to the WLAN DAL context
16395 pEventData: pointer to the event information structure
16396
Jeff Johnson295189b2012-06-20 16:38:30 -070016397 @see
16398 @return Result of the function call
16399*/
16400WDI_Status
16401WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016402(
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 WDI_ControlBlockType* pWDICtx,
16404 WDI_EventInfoType* pEventData
16405)
16406{
16407 WDI_TriggerBARspCb wdiTriggerBARspCb;
16408
16409 tTriggerBARspParams* halTriggerBARsp;
16410 tTriggerBaRspCandidate* halBaCandidate;
16411 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16412 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16413 wpt_uint16 index;
16414 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016415
Jeff Johnson295189b2012-06-20 16:38:30 -070016416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16417
16418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 -------------------------------------------------------------------------*/
16421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16422 ( NULL == pEventData->pEventData))
16423 {
16424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 }
16429
16430 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16431
16432 /*-------------------------------------------------------------------------
16433 Extract response and send it to UMAC
16434 -------------------------------------------------------------------------*/
16435 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16436
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16438 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 sizeof(WDI_TriggerBARspCandidateType));
16440 if(NULL == wdiTriggerBARsp)
16441 {
16442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16443 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16444 pWDICtx, pEventData, pEventData->pEventData);
16445 wpalMemoryFree(halTriggerBARsp);
16446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 }
16449
16450 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16451
16452 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16453 {
16454 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016455 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16457
16458 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16459 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16460
16461 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16462 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016463 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16465 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16466 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016467 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016469 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016470 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16471 }
16472 wdiTriggerBARspCandidate++;
16473 halBaCandidate++;
16474 }
16475 }
16476
16477 /*Notify UMAC*/
16478 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16479
16480 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016482}/*WDI_ProcessAddSessionBARsp*/
16483
16484/**
16485 @brief Process Update Beacon Params Rsp function (called when a response
16486 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016487
16488 @param pWDICtx: pointer to the WLAN DAL context
16489 pEventData: pointer to the event information structure
16490
Jeff Johnson295189b2012-06-20 16:38:30 -070016491 @see
16492 @return Result of the function call
16493*/
16494WDI_Status
16495WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016496(
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 WDI_ControlBlockType* pWDICtx,
16498 WDI_EventInfoType* pEventData
16499)
16500{
16501 WDI_Status wdiStatus;
16502 eHalStatus halStatus;
16503 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16505
16506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016508 -------------------------------------------------------------------------*/
16509 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16510 ( NULL == pEventData->pEventData))
16511 {
16512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 }
16517
16518 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16519
16520 /*-------------------------------------------------------------------------
16521 Extract response and send it to UMAC
16522 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 wpalMemoryCopy( &halStatus,
16524 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 sizeof(halStatus));
16526
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016528
16529 /*Notify UMAC*/
16530 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16531
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016533}/*WDI_ProcessUpdateBeaconParamsRsp*/
16534
16535/**
16536 @brief Process Send Beacon template Rsp function (called when a response
16537 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016538
16539 @param pWDICtx: pointer to the WLAN DAL context
16540 pEventData: pointer to the event information structure
16541
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 @see
16543 @return Result of the function call
16544*/
16545WDI_Status
16546WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016547(
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 WDI_ControlBlockType* pWDICtx,
16549 WDI_EventInfoType* pEventData
16550)
16551{
16552 WDI_Status wdiStatus;
16553 eHalStatus halStatus;
16554 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16556
16557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 -------------------------------------------------------------------------*/
16560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16561 ( NULL == pEventData->pEventData))
16562 {
16563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016567 }
16568
16569 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16570
16571 /*-------------------------------------------------------------------------
16572 Extract response and send it to UMAC
16573 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 wpalMemoryCopy( &halStatus,
16575 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 sizeof(halStatus));
16577
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016579
16580 /*Notify UMAC*/
16581 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16582
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016584}/*WDI_ProcessSendBeaconParamsRsp*/
16585
Jeff Johnsone7245742012-09-05 17:12:55 -070016586
Jeff Johnson295189b2012-06-20 16:38:30 -070016587/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016590
16591 @param pWDICtx: pointer to the WLAN DAL context
16592 pEventData: pointer to the event information structure
16593
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 @see
16595 @return Result of the function call
16596*/
16597WDI_Status
16598WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016599(
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 WDI_ControlBlockType* pWDICtx,
16601 WDI_EventInfoType* pEventData
16602)
16603{
16604 WDI_Status wdiStatus;
16605 eHalStatus halStatus;
16606 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16608
16609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 -------------------------------------------------------------------------*/
16612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16613 ( NULL == pEventData->pEventData))
16614 {
16615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 }
16620
16621 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16622
16623 /*-------------------------------------------------------------------------
16624 Extract response and send it to UMAC
16625 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 wpalMemoryCopy( &halStatus,
16627 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 sizeof(halStatus));
16629
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016631
16632 /*Notify UMAC*/
16633 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16634
Jeff Johnsone7245742012-09-05 17:12:55 -070016635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016636}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16637
16638 /**
16639 @brief Process Set Max Tx Power Rsp function (called when a response
16640 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016641
16642 @param pWDICtx: pointer to the WLAN DAL context
16643 pEventData: pointer to the event information structure
16644
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 @see
16646 @return Result of the function call
16647*/
16648WDI_Status
16649WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016650(
Jeff Johnson295189b2012-06-20 16:38:30 -070016651 WDI_ControlBlockType* pWDICtx,
16652 WDI_EventInfoType* pEventData
16653)
16654{
16655 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016656
Jeff Johnson295189b2012-06-20 16:38:30 -070016657 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016658
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16661
16662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 -------------------------------------------------------------------------*/
16665 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16666 ( NULL == pEventData->pEventData))
16667 {
16668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016672 }
16673
16674 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16675
16676 /*-------------------------------------------------------------------------
16677 Extract response and send it to UMAC
16678 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16680 pEventData->pEventData,
16681 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016682
16683 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16684 {
16685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16686 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016687 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 }
16690
Jeff Johnsone7245742012-09-05 17:12:55 -070016691 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016692 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016693 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016694
16695 /*Notify UMAC*/
16696 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16697
Jeff Johnsone7245742012-09-05 17:12:55 -070016698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016699}
16700
16701#ifdef WLAN_FEATURE_P2P
16702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016705
16706 @param pWDICtx: pointer to the WLAN DAL context
16707 pEventData: pointer to the event information structure
16708
Jeff Johnson295189b2012-06-20 16:38:30 -070016709 @see
16710 @return Result of the function call
16711*/
16712WDI_Status
16713WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016714(
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 WDI_ControlBlockType* pWDICtx,
16716 WDI_EventInfoType* pEventData
16717)
16718{
16719 WDI_Status wdiStatus;
16720 eHalStatus halStatus;
16721 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16723
16724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 -------------------------------------------------------------------------*/
16727 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16728 ( NULL == pEventData->pEventData))
16729 {
16730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 }
16735
16736 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16737
16738 /*-------------------------------------------------------------------------
16739 Extract response and send it to UMAC
16740 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016741 wpalMemoryCopy( &halStatus,
16742 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 sizeof(halStatus));
16744
Jeff Johnsone7245742012-09-05 17:12:55 -070016745 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016746
16747 /*Notify UMAC*/
16748 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16749
Jeff Johnsone7245742012-09-05 17:12:55 -070016750 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016751}/*WDI_ProcessP2PGONOARsp*/
16752#endif
16753/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016756
16757 @param pWDICtx: pointer to the WLAN DAL context
16758 pEventData: pointer to the event information structure
16759
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 @see
16761 @return Result of the function call
16762*/
16763WDI_Status
16764WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016765(
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 WDI_ControlBlockType* pWDICtx,
16767 WDI_EventInfoType* pEventData
16768)
16769{
16770 WDI_Status wdiStatus;
16771 eHalStatus halStatus;
16772 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
16773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16774
16775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016777 -------------------------------------------------------------------------*/
16778 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16779 ( NULL == pEventData->pEventData))
16780 {
16781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016782 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 }
16786
16787 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
16788
16789 /*-------------------------------------------------------------------------
16790 Extract response and send it to UMAC
16791 -------------------------------------------------------------------------*/
16792 halStatus = *((eHalStatus*)pEventData->pEventData);
16793
Jeff Johnsone7245742012-09-05 17:12:55 -070016794 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016795
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016796 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
16797 * Other module states are taken care by PMC.
16798 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
16799 */
16800 if (wdiStatus != WDI_STATUS_SUCCESS) {
16801
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16803 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
16804 halStatus);
16805 /* Call Back is not required as we are putting the DXE in FULL
16806 * and riva is already in full (IMPS RSP Failed)*/
16807 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016808 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016809 /*Notify UMAC*/
16810 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16811
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016813}/*WDI_ProcessEnterImpsRsp*/
16814
16815/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016816 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016818
16819 @param pWDICtx: pointer to the WLAN DAL context
16820 pEventData: pointer to the event information structure
16821
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 @see
16823 @return Result of the function call
16824*/
16825WDI_Status
16826WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016827(
Jeff Johnson295189b2012-06-20 16:38:30 -070016828 WDI_ControlBlockType* pWDICtx,
16829 WDI_EventInfoType* pEventData
16830)
16831{
16832 WDI_Status wdiStatus;
16833 eHalStatus halStatus;
16834 WDI_ExitImpsRspCb wdiExitImpsRspCb;
16835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16836
16837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 -------------------------------------------------------------------------*/
16840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16841 ( NULL == pEventData->pEventData))
16842 {
16843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 }
16848
16849 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
16850
16851 /*-------------------------------------------------------------------------
16852 Extract response and send it to UMAC
16853 -------------------------------------------------------------------------*/
16854 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016855 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016856
16857 // notify DTS that we are entering Full power
16858 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16859
16860 /*Notify UMAC*/
16861 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16862
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016864}/*WDI_ProcessExitImpsRsp*/
16865
16866/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016867 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016868 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016869
16870 @param pWDICtx: pointer to the WLAN DAL context
16871 pEventData: pointer to the event information structure
16872
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 @see
16874 @return Result of the function call
16875*/
16876WDI_Status
16877WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016878(
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 WDI_ControlBlockType* pWDICtx,
16880 WDI_EventInfoType* pEventData
16881)
16882{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016883 eHalStatus halStatus = eHAL_STATUS_FAILURE;
16884 tHalEnterBmpsRspParams halEnterBmpsRsp;
16885 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
16886 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
16887
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16889
16890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 -------------------------------------------------------------------------*/
16893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16894 ( NULL == pEventData->pEventData))
16895 {
16896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 }
16901
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016903 Extract response and send it to UMAC
16904 -------------------------------------------------------------------------*/
16905 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
16906 {
16907 wpalMemoryCopy( &halEnterBmpsRsp,
16908 pEventData->pEventData,
16909 sizeof(halEnterBmpsRsp));
16910
16911 //Used to print debug message
16912 halStatus = halEnterBmpsRsp.status;
16913 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
16914 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
16915 }
16916 else
16917 {
16918 halStatus = *((eHalStatus*)pEventData->pEventData);
16919 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
16920 }
16921
16922 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016923
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016924 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
16925 * Other module states are taken care by PMC.
16926 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
16927 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016928 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
16929 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016930
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016932 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
16933 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016934 /* Call Back is not required as we are putting the DXE in FULL
16935 * and riva is already in FULL (BMPS RSP Failed)*/
16936 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16937 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016938 }
16939
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016941 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016942
Jeff Johnsone7245742012-09-05 17:12:55 -070016943 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016944}/*WDI_ProcessEnterBmpsRsp*/
16945
16946/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016947 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016949
16950 @param pWDICtx: pointer to the WLAN DAL context
16951 pEventData: pointer to the event information structure
16952
Jeff Johnson295189b2012-06-20 16:38:30 -070016953 @see
16954 @return Result of the function call
16955*/
16956WDI_Status
16957WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016958(
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 WDI_ControlBlockType* pWDICtx,
16960 WDI_EventInfoType* pEventData
16961)
16962{
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 eHalStatus halStatus;
16964 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016965 tHalExitBmpsRspParams halExitBmpsRsp;
16966 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070016967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16968
16969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 -------------------------------------------------------------------------*/
16972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16973 ( NULL == pEventData->pEventData))
16974 {
16975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 }
16980
16981 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
16982
16983 /*-------------------------------------------------------------------------
16984 Extract response and send it to UMAC
16985 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016986
16987 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
16988 {
16989 wpalMemoryCopy( &halExitBmpsRsp,
16990 pEventData->pEventData,
16991 sizeof(halExitBmpsRsp));
16992
16993 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
16994 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
16995 }
16996 else
16997 {
16998 halStatus = *((eHalStatus*)pEventData->pEventData);
16999 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17000 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017001
17002 // notify DTS that we are entering Full power
17003 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17004
17005 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17006
17007 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017008 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017009
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017011}/*WDI_ProcessExitBmpsRsp*/
17012
17013/**
17014 @brief Process Enter UAPSD Rsp function (called when a response
17015 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017016
17017 @param pWDICtx: pointer to the WLAN DAL context
17018 pEventData: pointer to the event information structure
17019
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 @see
17021 @return Result of the function call
17022*/
17023WDI_Status
17024WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017025(
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 WDI_ControlBlockType* pWDICtx,
17027 WDI_EventInfoType* pEventData
17028)
17029{
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017031 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017033 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17034
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17036
17037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 -------------------------------------------------------------------------*/
17040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17041 ( NULL == pEventData->pEventData))
17042 {
17043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 }
17048
17049 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17050
17051 /*-------------------------------------------------------------------------
17052 Extract response and send it to UMAC
17053 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017054 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17055 {
17056 wpalMemoryCopy( &halEnterUapsdRsp,
17057 pEventData->pEventData,
17058 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017059
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017060 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17061 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17062 }
17063 else
17064 {
17065 halStatus = *((eHalStatus*)pEventData->pEventData);
17066 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17067 }
17068
17069 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 {
17071 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17072 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17073 // the traffic to decide when to suspend the trigger frames when there is no traffic
17074 // activity on the trigger enabled ACs
17075 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17076
17077#ifdef WLAN_PERF
17078 // Increment the BD signature to refresh the fast path BD utilization
17079 pWDICtx->uBdSigSerialNum++;
17080#endif
17081 }
17082
17083 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017084 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017085
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017087}/*WDI_ProcessEnterUapsdRsp*/
17088
17089/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017092
17093 @param pWDICtx: pointer to the WLAN DAL context
17094 pEventData: pointer to the event information structure
17095
Jeff Johnson295189b2012-06-20 16:38:30 -070017096 @see
17097 @return Result of the function call
17098*/
17099WDI_Status
17100WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017101(
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 WDI_ControlBlockType* pWDICtx,
17103 WDI_EventInfoType* pEventData
17104)
17105{
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 eHalStatus halStatus;
17107 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017108 tHalExitUapsdRspParams halExitUapsdRsp;
17109 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17111
17112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 -------------------------------------------------------------------------*/
17115 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17116 ( NULL == pEventData->pEventData))
17117 {
17118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 }
17123
17124 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17125
17126 /*-------------------------------------------------------------------------
17127 Extract response and send it to UMAC
17128 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017129 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17130 {
17131 wpalMemoryCopy( &halExitUapsdRsp,
17132 pEventData->pEventData,
17133 sizeof(halExitUapsdRsp));
17134
17135 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17136 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17137 }
17138 else
17139 {
17140 halStatus = *((eHalStatus*)pEventData->pEventData);
17141 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017143 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17144 // directly instead of the FW WQ.
17145 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17146
17147#ifdef WLAN_PERF
17148 // Increment the BD signature to refresh the fast path BD utilization
17149 pWDICtx->uBdSigSerialNum++;
17150#endif
17151
17152 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017153 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017154
Jeff Johnsone7245742012-09-05 17:12:55 -070017155 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017156}/*WDI_ProcessExitUapsdRsp*/
17157
17158/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017159 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017161
17162 @param pWDICtx: pointer to the WLAN DAL context
17163 pEventData: pointer to the event information structure
17164
Jeff Johnson295189b2012-06-20 16:38:30 -070017165 @see
17166 @return Result of the function call
17167*/
17168WDI_Status
17169WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017170(
Jeff Johnson295189b2012-06-20 16:38:30 -070017171 WDI_ControlBlockType* pWDICtx,
17172 WDI_EventInfoType* pEventData
17173)
17174{
17175 WDI_Status wdiStatus;
17176 eHalStatus halStatus;
17177 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17179
17180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 -------------------------------------------------------------------------*/
17183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17184 ( NULL == pEventData->pEventData))
17185 {
17186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 }
17191
17192 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17193
17194 /*-------------------------------------------------------------------------
17195 Extract response and send it to UMAC
17196 -------------------------------------------------------------------------*/
17197 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017198 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017199
17200 /*Notify UMAC*/
17201 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17202
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017204}/*WDI_ProcessSetUapsdAcParamsRsp*/
17205
17206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017207 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017209
17210 @param pWDICtx: pointer to the WLAN DAL context
17211 pEventData: pointer to the event information structure
17212
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 @see
17214 @return Result of the function call
17215*/
17216WDI_Status
17217WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017218(
Jeff Johnson295189b2012-06-20 16:38:30 -070017219 WDI_ControlBlockType* pWDICtx,
17220 WDI_EventInfoType* pEventData
17221)
17222{
17223 WDI_Status wdiStatus;
17224 eHalStatus halStatus;
17225 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17227
17228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 -------------------------------------------------------------------------*/
17231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17232 ( NULL == pEventData->pEventData))
17233 {
17234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 }
17239
17240 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17241
17242 /*-------------------------------------------------------------------------
17243 Extract response and send it to UMAC
17244 -------------------------------------------------------------------------*/
17245 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017246 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017247
17248 /*Notify UMAC*/
17249 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17250
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017252}/*WDI_ProcessUpdateUapsdParamsRsp*/
17253
17254/**
17255 @brief Process Configure RXP filter Rsp function (called when a
17256 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017257
17258 @param pWDICtx: pointer to the WLAN DAL context
17259 pEventData: pointer to the event information structure
17260
Jeff Johnson295189b2012-06-20 16:38:30 -070017261 @see
17262 @return Result of the function call
17263*/
17264WDI_Status
17265WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017266(
Jeff Johnson295189b2012-06-20 16:38:30 -070017267 WDI_ControlBlockType* pWDICtx,
17268 WDI_EventInfoType* pEventData
17269)
17270{
17271 WDI_Status wdiStatus;
17272 eHalStatus halStatus;
17273 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17275
17276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 -------------------------------------------------------------------------*/
17279 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17280 ( NULL == pEventData->pEventData))
17281 {
17282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 }
17287
17288 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17289
17290 /*-------------------------------------------------------------------------
17291 Extract response and send it to UMAC
17292 -------------------------------------------------------------------------*/
17293 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017294 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017295
17296 /*Notify UMAC*/
17297 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17298
Jeff Johnsone7245742012-09-05 17:12:55 -070017299 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017300}/*WDI_ProcessConfigureRxpFilterRsp*/
17301
17302/**
17303 @brief Process Set beacon filter Rsp function (called when a
17304 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017305
17306 @param pWDICtx: pointer to the WLAN DAL context
17307 pEventData: pointer to the event information structure
17308
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 @see
17310 @return Result of the function call
17311*/
17312WDI_Status
17313WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017314(
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 WDI_ControlBlockType* pWDICtx,
17316 WDI_EventInfoType* pEventData
17317)
17318{
17319 WDI_Status wdiStatus;
17320 eHalStatus halStatus;
17321 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17323
17324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 -------------------------------------------------------------------------*/
17327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17328 ( NULL == pEventData->pEventData))
17329 {
17330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 }
17335
17336 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17337
17338 /*-------------------------------------------------------------------------
17339 Extract response and send it to UMAC
17340 -------------------------------------------------------------------------*/
17341 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017342 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017343
17344 /*Notify UMAC*/
17345 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17346
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017348}/*WDI_ProcessSetBeaconFilterRsp*/
17349
17350/**
17351 @brief Process remove beacon filter Rsp function (called when a
17352 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017353
17354 @param pWDICtx: pointer to the WLAN DAL context
17355 pEventData: pointer to the event information structure
17356
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 @see
17358 @return Result of the function call
17359*/
17360WDI_Status
17361WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017362(
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 WDI_ControlBlockType* pWDICtx,
17364 WDI_EventInfoType* pEventData
17365)
17366{
17367 WDI_Status wdiStatus;
17368 eHalStatus halStatus;
17369 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17371
17372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 -------------------------------------------------------------------------*/
17375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17376 ( NULL == pEventData->pEventData))
17377 {
17378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 }
17383
17384 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17385
17386 /*-------------------------------------------------------------------------
17387 Extract response and send it to UMAC
17388 -------------------------------------------------------------------------*/
17389 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017391
17392 /*Notify UMAC*/
17393 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17394
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017396}/*WDI_ProcessRemBeaconFilterRsp*/
17397
17398/**
17399 @brief Process set RSSI thresholds Rsp function (called when a
17400 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017401
17402 @param pWDICtx: pointer to the WLAN DAL context
17403 pEventData: pointer to the event information structure
17404
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 @see
17406 @return Result of the function call
17407*/
17408WDI_Status
17409WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017410(
Jeff Johnson295189b2012-06-20 16:38:30 -070017411 WDI_ControlBlockType* pWDICtx,
17412 WDI_EventInfoType* pEventData
17413)
17414{
17415 WDI_Status wdiStatus;
17416 eHalStatus halStatus;
17417 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17419
17420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 -------------------------------------------------------------------------*/
17423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17424 ( NULL == pEventData->pEventData))
17425 {
17426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 }
17431
17432 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17433
17434 /*-------------------------------------------------------------------------
17435 Extract response and send it to UMAC
17436 -------------------------------------------------------------------------*/
17437 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017438 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017439
17440 /*Notify UMAC*/
17441 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17442
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017444}/*WDI_ProcessSetRSSIThresoldsRsp*/
17445
17446/**
17447 @brief Process host offload Rsp function (called when a
17448 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017449
17450 @param pWDICtx: pointer to the WLAN DAL context
17451 pEventData: pointer to the event information structure
17452
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 @see
17454 @return Result of the function call
17455*/
17456WDI_Status
17457WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017458(
Jeff Johnson295189b2012-06-20 16:38:30 -070017459 WDI_ControlBlockType* pWDICtx,
17460 WDI_EventInfoType* pEventData
17461)
17462{
17463 WDI_Status wdiStatus;
17464 eHalStatus halStatus;
17465 WDI_HostOffloadCb wdiHostOffloadCb;
17466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17467
17468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 -------------------------------------------------------------------------*/
17471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17472 ( NULL == pEventData->pEventData))
17473 {
17474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017478 }
17479
17480 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17481
17482 /*-------------------------------------------------------------------------
17483 Extract response and send it to UMAC
17484 -------------------------------------------------------------------------*/
17485 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017487
17488 /*Notify UMAC*/
17489 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17490
Jeff Johnsone7245742012-09-05 17:12:55 -070017491 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017492}/*WDI_ProcessHostOffloadRsp*/
17493
17494/**
17495 @brief Process keep alive Rsp function (called when a
17496 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017497
17498 @param pWDICtx: pointer to the WLAN DAL context
17499 pEventData: pointer to the event information structure
17500
Jeff Johnson295189b2012-06-20 16:38:30 -070017501 @see
17502 @return Result of the function call
17503*/
17504WDI_Status
17505WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017506(
Jeff Johnson295189b2012-06-20 16:38:30 -070017507 WDI_ControlBlockType* pWDICtx,
17508 WDI_EventInfoType* pEventData
17509)
17510{
17511 WDI_Status wdiStatus;
17512 eHalStatus halStatus;
17513 WDI_KeepAliveCb wdiKeepAliveCb;
17514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17516 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17517
17518
17519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 -------------------------------------------------------------------------*/
17522 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17523 ( NULL == pEventData->pEventData))
17524 {
17525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017526 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 }
17530
Jeff Johnsone7245742012-09-05 17:12:55 -070017531 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17532
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 /*-------------------------------------------------------------------------
17534 Extract response and send it to UMAC
17535 -------------------------------------------------------------------------*/
17536 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017537 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017538
17539 /*Notify UMAC*/
17540 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17541
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017543}/*WDI_ProcessKeepAliveRsp*/
17544
17545/**
17546 @brief Process wowl add ptrn Rsp function (called when a
17547 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017548
17549 @param pWDICtx: pointer to the WLAN DAL context
17550 pEventData: pointer to the event information structure
17551
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 @see
17553 @return Result of the function call
17554*/
17555WDI_Status
17556WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017557(
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 WDI_ControlBlockType* pWDICtx,
17559 WDI_EventInfoType* pEventData
17560)
17561{
Jeff Johnson295189b2012-06-20 16:38:30 -070017562 eHalStatus halStatus;
17563 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017564 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17565 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17566
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17568
17569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 -------------------------------------------------------------------------*/
17572 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17573 ( NULL == pEventData->pEventData))
17574 {
17575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 }
17580
17581 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17582
17583 /*-------------------------------------------------------------------------
17584 Extract response and send it to UMAC
17585 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017586 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17587 {
17588 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17589 pEventData->pEventData,
17590 sizeof(halAddWowlBcastPtrRsp));
17591
17592 wdiWowlAddBcPtrRsp.wdiStatus =
17593 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17594 }
17595 else
17596 {
17597 halStatus = *((eHalStatus*)pEventData->pEventData);
17598 wdiWowlAddBcPtrRsp.wdiStatus =
17599 WDI_HAL_2_WDI_STATUS(halStatus);
17600 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017601
17602 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017603 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017604
Jeff Johnsone7245742012-09-05 17:12:55 -070017605 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017606}/*WDI_ProcessWowlAddBcPtrnRsp*/
17607
17608/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017611
17612 @param pWDICtx: pointer to the WLAN DAL context
17613 pEventData: pointer to the event information structure
17614
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 @see
17616 @return Result of the function call
17617*/
17618WDI_Status
17619WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017620(
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 WDI_ControlBlockType* pWDICtx,
17622 WDI_EventInfoType* pEventData
17623)
17624{
Jeff Johnson295189b2012-06-20 16:38:30 -070017625 eHalStatus halStatus;
17626 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017627 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17628 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17630
17631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017633 -------------------------------------------------------------------------*/
17634 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17635 ( NULL == pEventData->pEventData))
17636 {
17637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017641 }
17642
17643 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17644
17645 /*-------------------------------------------------------------------------
17646 Extract response and send it to UMAC
17647 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017648 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17649 {
17650 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17651 pEventData->pEventData,
17652 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017654 wdiWowlDelBcstPtrRsp.wdiStatus =
17655 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17656 }
17657 else
17658 {
17659 halStatus = *((eHalStatus*)pEventData->pEventData);
17660 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17661 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017663 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017664
Jeff Johnsone7245742012-09-05 17:12:55 -070017665 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017666}/*WDI_ProcessWowlDelBcPtrnRsp*/
17667
17668/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017671
17672 @param pWDICtx: pointer to the WLAN DAL context
17673 pEventData: pointer to the event information structure
17674
Jeff Johnson295189b2012-06-20 16:38:30 -070017675 @see
17676 @return Result of the function call
17677*/
17678WDI_Status
17679WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017680(
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 WDI_ControlBlockType* pWDICtx,
17682 WDI_EventInfoType* pEventData
17683)
17684{
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 eHalStatus halStatus;
17686 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017687 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17688 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17690
17691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 -------------------------------------------------------------------------*/
17694 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17695 ( NULL == pEventData->pEventData))
17696 {
17697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017701 }
17702
17703 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17704
17705 /*-------------------------------------------------------------------------
17706 Extract response and send it to UMAC
17707 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017708 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17709 {
17710 wpalMemoryCopy( &halEnterWowlRspParams,
17711 (wpt_uint8*)pEventData->pEventData,
17712 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017713
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017714 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17715 wdiwowlEnterRsp.status =
17716 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17717 }
17718 else
17719 {
17720 halStatus = *((eHalStatus*)pEventData->pEventData);
17721 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17722 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017724 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017725
Jeff Johnsone7245742012-09-05 17:12:55 -070017726 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017727}/*WDI_ProcessWowlEnterRsp*/
17728
17729/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017730 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017731 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017732
17733 @param pWDICtx: pointer to the WLAN DAL context
17734 pEventData: pointer to the event information structure
17735
Jeff Johnson295189b2012-06-20 16:38:30 -070017736 @see
17737 @return Result of the function call
17738*/
17739WDI_Status
17740WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017741(
Jeff Johnson295189b2012-06-20 16:38:30 -070017742 WDI_ControlBlockType* pWDICtx,
17743 WDI_EventInfoType* pEventData
17744)
17745{
Jeff Johnson295189b2012-06-20 16:38:30 -070017746 eHalStatus halStatus;
17747 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017748 tHalExitWowlRspParams halExitWowlRspParams;
17749 WDI_WowlExitRspParamsType wdiWowlExitRsp;
17750
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17752
17753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017754 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017755 -------------------------------------------------------------------------*/
17756 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17757 ( NULL == pEventData->pEventData))
17758 {
17759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017763 }
17764
17765 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
17766
17767 /*-------------------------------------------------------------------------
17768 Extract response and send it to UMAC
17769 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017770 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17771 {
17772 wpalMemoryCopy( &halExitWowlRspParams,
17773 pEventData->pEventData,
17774 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017775
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017776 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
17777 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
17778
17779 }
17780 else
17781 {
17782 halStatus = *((eHalStatus*)pEventData->pEventData);
17783 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17784 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017786 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017787
Jeff Johnsone7245742012-09-05 17:12:55 -070017788 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017789}/*WDI_ProcessWowlExitRsp*/
17790
17791/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017792 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 (called when a response is being received over the bus
17794 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017795
17796 @param pWDICtx: pointer to the WLAN DAL context
17797 pEventData: pointer to the event information structure
17798
Jeff Johnson295189b2012-06-20 16:38:30 -070017799 @see
17800 @return Result of the function call
17801*/
17802WDI_Status
17803WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017804(
Jeff Johnson295189b2012-06-20 16:38:30 -070017805 WDI_ControlBlockType* pWDICtx,
17806 WDI_EventInfoType* pEventData
17807)
17808{
17809 WDI_Status wdiStatus;
17810 eHalStatus halStatus;
17811 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
17812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17813
17814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017815 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017816 -------------------------------------------------------------------------*/
17817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17818 ( NULL == pEventData->pEventData))
17819 {
17820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 }
17825
17826 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
17827
17828 /*-------------------------------------------------------------------------
17829 Extract response and send it to UMAC
17830 -------------------------------------------------------------------------*/
17831 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017832 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017833
17834 /*Notify UMAC*/
17835 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
17836
Jeff Johnsone7245742012-09-05 17:12:55 -070017837 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017838}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
17839
17840
17841/**
17842 @brief Process Nv download(called when a response
17843 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070017844
17845 @param pWDICtx: pointer to the WLAN DAL context
17846 pEventData: pointer to the event information structure
17847
Jeff Johnson295189b2012-06-20 16:38:30 -070017848 @see
17849 @return Result of the function call
17850*/
17851WDI_Status
17852WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017853(
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 WDI_ControlBlockType* pWDICtx,
17855 WDI_EventInfoType* pEventData
17856)
17857{
17858
17859 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
17860 tHalNvImgDownloadRspParams halNvDownloadRsp;
17861 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
17862
17863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017865 -------------------------------------------------------------------------*/
17866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17867 ( NULL == pEventData->pEventData))
17868 {
17869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017873 }
17874
17875 /*-------------------------------------------------------------------------
17876 Extract response and send it to UMAC
17877 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017878 wpalMemoryCopy( &halNvDownloadRsp,
17879 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017880 sizeof(halNvDownloadRsp));
17881
17882 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
17883
17884 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
17886 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 {
17888 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017890 }
17891 else
17892 {
17893 /*Reset the Nv related global information in WDI context information */
17894 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
17895 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
17896 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
17897 /*call WDA callback function for last fragment */
17898 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
17899 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
17900 }
17901
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017903}
17904#ifdef WLAN_FEATURE_VOWIFI_11R
17905/**
17906 @brief Process Add TSpec Rsp function (called when a response
17907 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017908
17909 @param pWDICtx: pointer to the WLAN DAL context
17910 pEventData: pointer to the event information structure
17911
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 @see
17913 @return Result of the function call
17914*/
17915WDI_Status
17916WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017917(
Jeff Johnson295189b2012-06-20 16:38:30 -070017918 WDI_ControlBlockType* pWDICtx,
17919 WDI_EventInfoType* pEventData
17920)
17921{
17922 WDI_Status wdiStatus;
17923 tAggrAddTsRspParams aggrAddTsRsp;
17924 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
17925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17926
17927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 -------------------------------------------------------------------------*/
17930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17931 ( NULL == pEventData->pEventData))
17932 {
17933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 }
17938
17939 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17940
17941 /*-------------------------------------------------------------------------
17942 Extract response and send it to UMAC
17943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017944 wpalMemoryCopy( &aggrAddTsRsp,
17945 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017946 sizeof(aggrAddTsRsp));
17947
17948 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017949 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070017950
17951 /*Notify UMAC*/
17952 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17953
Jeff Johnsone7245742012-09-05 17:12:55 -070017954 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017955}/*WDI_ProcessAddTSpecRsp*/
17956#endif /* WLAN_FEATURE_VOWIFI_11R */
17957
17958/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017959 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017961
17962 @param pWDICtx: pointer to the WLAN DAL context
17963 pEventData: pointer to the event information structure
17964
Jeff Johnson295189b2012-06-20 16:38:30 -070017965 @see
17966 @return Result of the function call
17967*/
17968WDI_Status
17969WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017970(
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 WDI_ControlBlockType* pWDICtx,
17972 WDI_EventInfoType* pEventData
17973)
17974{
17975 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
17976 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
17977 tHalHostResumeRspParams hostResumeRspMsg;
17978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17979
17980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017982 -------------------------------------------------------------------------*/
17983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17984 ( NULL == pEventData->pEventData))
17985 {
17986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 }
17991
17992 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
17993
17994 /*-------------------------------------------------------------------------
17995 Extract response and send it to UMAC
17996 -------------------------------------------------------------------------*/
17997
Jeff Johnsone7245742012-09-05 17:12:55 -070017998 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070017999 (wpt_uint8*)pEventData->pEventData,
18000 sizeof(hostResumeRspMsg));
18001
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 wdiResumeRspParams.wdiStatus =
18003 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018004
18005 /*Notify UMAC*/
18006 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18007
18008 return WDI_STATUS_SUCCESS;
18009}
18010
18011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018014
18015 @param pWDICtx: pointer to the WLAN DAL context
18016 pEventData: pointer to the event information structure
18017
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 @see
18019 @return Result of the function call
18020*/
18021WDI_Status
18022WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018023(
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 WDI_ControlBlockType* pWDICtx,
18025 WDI_EventInfoType* pEventData
18026)
18027{
18028 WDI_Status wdiStatus;
18029 eHalStatus halStatus;
18030 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18032
18033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 -------------------------------------------------------------------------*/
18036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18037 ( NULL == pEventData->pEventData))
18038 {
18039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018044
18045 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018046
18047 /*-------------------------------------------------------------------------
18048 Extract response and send it to UMAC
18049 -------------------------------------------------------------------------*/
18050 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018051 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018052
18053 /*Notify UMAC*/
18054 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18055
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018057}/*WDI_ProcessSetTxPerTrackingRsp*/
18058
18059/*==========================================================================
18060 Indications from HAL
18061 ==========================================================================*/
18062/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018063 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 indication of this kind is being received over the bus
18065 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018066
18067 @param pWDICtx: pointer to the WLAN DAL context
18068 pEventData: pointer to the event information structure
18069
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 @see
18071 @return Result of the function call
18072*/
18073WDI_Status
18074WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018075(
Jeff Johnson295189b2012-06-20 16:38:30 -070018076 WDI_ControlBlockType* pWDICtx,
18077 WDI_EventInfoType* pEventData
18078)
18079{
18080 WDI_LowLevelIndType wdiInd;
18081 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18083
18084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 -------------------------------------------------------------------------*/
18087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18088 ( NULL == pEventData->pEventData))
18089 {
18090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 }
18095
18096 /*-------------------------------------------------------------------------
18097 Extract indication and send it to UMAC
18098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018099 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18100 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 sizeof(tHalRSSINotification));
18102
18103 /*Fill in the indication parameters*/
18104 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18105 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18106 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18107 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18108 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18109 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18110 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18111 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18112 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18113 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18114 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18115 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18116 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
18117
18118 /*Notify UMAC*/
18119 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018120
18121 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018122}/*WDI_ProcessLowRSSIInd*/
18123
18124
18125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018127 an indication of this kind is being received over the
18128 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018129
18130 @param pWDICtx: pointer to the WLAN DAL context
18131 pEventData: pointer to the event information structure
18132
Jeff Johnson295189b2012-06-20 16:38:30 -070018133 @see
18134 @return Result of the function call
18135*/
18136WDI_Status
18137WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018138(
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 WDI_ControlBlockType* pWDICtx,
18140 WDI_EventInfoType* pEventData
18141)
18142{
18143 WDI_Status wdiStatus;
18144 eHalStatus halStatus;
18145 WDI_LowLevelIndType wdiInd;
18146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18147
18148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 -------------------------------------------------------------------------*/
18151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18152 ( NULL == pEventData->pEventData))
18153 {
18154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 }
18159
18160 /*-------------------------------------------------------------------------
18161 Extract indication and send it to UMAC
18162 -------------------------------------------------------------------------*/
18163 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18164 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018166
18167 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
18169
Jeff Johnson295189b2012-06-20 16:38:30 -070018170 /*Notify UMAC*/
18171 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018172
18173 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018174}/*WDI_ProcessMissedBeaconInd*/
18175
18176
18177/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018178 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018179 an indication of this kind is being received over the
18180 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018181
18182 @param pWDICtx: pointer to the WLAN DAL context
18183 pEventData: pointer to the event information structure
18184
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 @see
18186 @return Result of the function call
18187*/
18188WDI_Status
18189WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018190(
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 WDI_ControlBlockType* pWDICtx,
18192 WDI_EventInfoType* pEventData
18193)
18194{
18195 WDI_Status wdiStatus;
18196 eHalStatus halStatus;
18197 WDI_LowLevelIndType wdiInd;
18198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18199
18200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 -------------------------------------------------------------------------*/
18203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18204 ( NULL == pEventData->pEventData))
18205 {
18206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 }
18211
18212 /*-------------------------------------------------------------------------
18213 Extract indication and send it to UMAC
18214 -------------------------------------------------------------------------*/
18215 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18216 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018217 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018218
18219 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 /* ! TO DO - fill in from HAL struct:
18222 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18223
18224 /*Notify UMAC*/
18225 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018226
18227 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018228}/*WDI_ProcessUnkAddrFrameInd*/
18229
18230
18231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 indication of this kind is being received over the bus
18234 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018235
18236 @param pWDICtx: pointer to the WLAN DAL context
18237 pEventData: pointer to the event information structure
18238
Jeff Johnson295189b2012-06-20 16:38:30 -070018239 @see
18240 @return Result of the function call
18241*/
18242WDI_Status
18243WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018244(
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 WDI_ControlBlockType* pWDICtx,
18246 WDI_EventInfoType* pEventData
18247)
18248{
18249 WDI_LowLevelIndType wdiInd;
18250 tpSirMicFailureInd pHalMicFailureInd;
18251
18252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18253
18254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018256 -------------------------------------------------------------------------*/
18257 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18258 ( NULL == pEventData->pEventData))
18259 {
18260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018264 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018265
Jeff Johnson295189b2012-06-20 16:38:30 -070018266 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18267 /*-------------------------------------------------------------------------
18268 Extract indication and send it to UMAC
18269 -------------------------------------------------------------------------*/
18270
18271 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018272 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018273 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18274 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18275 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18276 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18277 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18278 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18279 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18280 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018281 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018283 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018285 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 pHalMicFailureInd->info.keyId;
18287 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18288 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18289 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18290 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
18291 /*Notify UMAC*/
18292 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018293
18294 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018295}/*WDI_ProcessMicFailureInd*/
18296
18297
18298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018299 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 an indication of this kind is being received over the
18301 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018302
18303 @param pWDICtx: pointer to the WLAN DAL context
18304 pEventData: pointer to the event information structure
18305
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 @see
18307 @return Result of the function call
18308*/
18309WDI_Status
18310WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018311(
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 WDI_ControlBlockType* pWDICtx,
18313 WDI_EventInfoType* pEventData
18314)
18315{
18316 WDI_Status wdiStatus;
18317 eHalStatus halStatus;
18318 WDI_LowLevelIndType wdiInd;
18319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18320
18321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018322 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018323 -------------------------------------------------------------------------*/
18324 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18325 ( NULL == pEventData->pEventData))
18326 {
18327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018328 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 }
18332
18333 /*-------------------------------------------------------------------------
18334 Extract indication and send it to UMAC
18335 -------------------------------------------------------------------------*/
18336
18337 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18338 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018339 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018340
18341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18342 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018343
Jeff Johnson295189b2012-06-20 16:38:30 -070018344 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018345 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18346 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018347
18348 /*Notify UMAC*/
18349 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018350
18351 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018352}/*WDI_ProcessFatalErrorInd*/
18353
18354/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018355 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018356 an indication of this kind is being received over the
18357 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018358
18359 @param pWDICtx: pointer to the WLAN DAL context
18360 pEventData: pointer to the event information structure
18361
Jeff Johnson295189b2012-06-20 16:38:30 -070018362 @see
18363 @return Result of the function call
18364*/
18365WDI_Status
18366WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018367(
Jeff Johnson295189b2012-06-20 16:38:30 -070018368 WDI_ControlBlockType* pWDICtx,
18369 WDI_EventInfoType* pEventData
18370)
18371{
18372 tDeleteStaContextParams halDelSTACtx;
18373 WDI_LowLevelIndType wdiInd;
18374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18375
18376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 -------------------------------------------------------------------------*/
18379 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18380 ( NULL == pEventData->pEventData))
18381 {
18382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018386 }
18387
18388 /*-------------------------------------------------------------------------
18389 Extract indication and send it to UMAC
18390 -------------------------------------------------------------------------*/
18391
18392 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018393 wpalMemoryCopy( &halDelSTACtx,
18394 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 sizeof(halDelSTACtx));
18396
18397 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018398 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018399
18400 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18401 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18402 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18403 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18404
Jeff Johnsone7245742012-09-05 17:12:55 -070018405 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018406 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018407 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018408 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018409 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18410 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018411
18412 /*Notify UMAC*/
18413 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018414
18415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018416}/*WDI_ProcessDelSTAInd*/
18417
18418/**
18419*@brief Process Coex Indication function (called when
18420 an indication of this kind is being received over the
18421 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018422
18423 @param pWDICtx: pointer to the WLAN DAL context
18424 pEventData: pointer to the event information structure
18425
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 @see
18427 @return Result of the function call
18428*/
18429WDI_Status
18430WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018431(
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 WDI_ControlBlockType* pWDICtx,
18433 WDI_EventInfoType* pEventData
18434)
18435{
18436 WDI_LowLevelIndType wdiInd;
18437 tCoexIndMsg halCoexIndMsg;
18438 wpt_uint32 index;
18439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18440
18441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 -------------------------------------------------------------------------*/
18444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18445 ( NULL == pEventData->pEventData ))
18446 {
18447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018449 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 }
18452
18453 /*-------------------------------------------------------------------------
18454 Extract indication and send it to UMAC
18455 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018456 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18457 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018458 sizeof(halCoexIndMsg.coexIndParams) );
18459
18460 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 wdiInd.wdiIndicationType = WDI_COEX_IND;
18462 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18464 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 }
18467
18468 // DEBUG
18469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18470 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018471 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18472 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18473 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18474 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18475 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018476
18477 /*Notify UMAC*/
18478 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018479
18480 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018481}/*WDI_ProcessCoexInd*/
18482
18483/**
18484*@brief Process Tx Complete Indication function (called when
18485 an indication of this kind is being received over the
18486 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018487
18488 @param pWDICtx: pointer to the WLAN DAL context
18489 pEventData: pointer to the event information structure
18490
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 @see
18492 @return Result of the function call
18493*/
18494WDI_Status
18495WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018496(
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 WDI_ControlBlockType* pWDICtx,
18498 WDI_EventInfoType* pEventData
18499)
18500{
18501 WDI_LowLevelIndType wdiInd;
18502 tTxComplIndMsg halTxComplIndMsg;
18503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18504
18505 /*-------------------------------------------------------------------------
18506 Sanity check
18507 -------------------------------------------------------------------------*/
18508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18509 ( NULL == pEventData->pEventData ))
18510 {
18511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 WDI_ASSERT( 0 );
18514 return WDI_STATUS_E_FAILURE;
18515 }
18516
18517 /*-------------------------------------------------------------------------
18518 Extract indication and send it to UMAC
18519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18521 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 sizeof(halTxComplIndMsg.txComplParams) );
18523
18524 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18526 wdiInd.wdiIndicationData.tx_complete_status
18527 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018528
18529 /*Notify UMAC*/
18530 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018531
18532 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018533}/*WDI_ProcessTxCompleteInd*/
18534
18535#ifdef WLAN_FEATURE_P2P
18536/**
Viral Modi9dc288a2012-12-10 13:09:21 -080018537*@brief Process Noa Start Indication function (called when
18538 an indication of this kind is being received over the
18539 bus from HAL)
18540
18541 @param pWDICtx: pointer to the WLAN DAL context
18542 pEventData: pointer to the event information structure
18543
18544 @see
18545 @return Result of the function call
18546*/
18547WDI_Status
18548WDI_ProcessP2pNoaStartInd
18549(
18550 WDI_ControlBlockType* pWDICtx,
18551 WDI_EventInfoType* pEventData
18552)
18553{
18554 WDI_LowLevelIndType wdiInd;
18555 tNoaStartIndMsg halNoaStartIndMsg;
18556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18557
18558 /*-------------------------------------------------------------------------
18559 Sanity check
18560 -------------------------------------------------------------------------*/
18561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18562 ( NULL == pEventData->pEventData ))
18563 {
18564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18565 "%s: Invalid parameters", __func__);
18566 WDI_ASSERT( 0 );
18567 return WDI_STATUS_E_FAILURE;
18568 }
18569
18570 /*-------------------------------------------------------------------------
18571 Extract indication and send it to UMAC
18572 -------------------------------------------------------------------------*/
18573 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
18574 pEventData->pEventData,
18575 sizeof(halNoaStartIndMsg.noaStartIndParams) );
18576
18577 /*Fill in the indication parameters*/
18578 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
18579
18580 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
18581 = halNoaStartIndMsg.noaStartIndParams.status;
18582
18583 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
18584 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
18585
18586 /*Notify UMAC*/
18587 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18588
18589 return WDI_STATUS_SUCCESS;
18590}/*WDI_ProcessNoaAttrInd*/
18591
18592/**
Jeff Johnson295189b2012-06-20 16:38:30 -070018593*@brief Process Noa Attr Indication function (called when
18594 an indication of this kind is being received over the
18595 bus from HAL)
18596
18597 @param pWDICtx: pointer to the WLAN DAL context
18598 pEventData: pointer to the event information structure
18599
18600 @see
18601 @return Result of the function call
18602*/
18603WDI_Status
18604WDI_ProcessP2pNoaAttrInd
18605(
18606 WDI_ControlBlockType* pWDICtx,
18607 WDI_EventInfoType* pEventData
18608)
18609{
18610 WDI_LowLevelIndType wdiInd;
18611 tNoaAttrIndMsg halNoaAttrIndMsg;
18612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18613
18614 /*-------------------------------------------------------------------------
18615 Sanity check
18616 -------------------------------------------------------------------------*/
18617 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18618 ( NULL == pEventData->pEventData ))
18619 {
18620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 WDI_ASSERT( 0 );
18623 return WDI_STATUS_E_FAILURE;
18624 }
18625
18626 /*-------------------------------------------------------------------------
18627 Extract indication and send it to UMAC
18628 -------------------------------------------------------------------------*/
18629 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18630 pEventData->pEventData,
18631 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18632
18633 /*Fill in the indication parameters*/
18634 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018635
Jeff Johnson295189b2012-06-20 16:38:30 -070018636 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18637 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018638
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18640 = halNoaAttrIndMsg.noaAttrIndParams.index;
18641 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18642 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18643 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18644 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018645
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18647 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18648 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18649 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18650 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18651 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18652 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18653 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018654
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18656 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18657 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18658 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18659 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18660 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18661 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18662 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18663
18664 /*Notify UMAC*/
18665 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18666
18667 return WDI_STATUS_SUCCESS;
18668}/*WDI_ProcessNoaAttrInd*/
18669#endif
18670
18671/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018672 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 an indication of this kind is being received over the
18674 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018675
18676 @param pWDICtx: pointer to the WLAN DAL context
18677 pEventData: pointer to the event information structure
18678
Jeff Johnson295189b2012-06-20 16:38:30 -070018679 @see
18680 @return Result of the function call
18681*/
18682WDI_Status
18683WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018684(
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 WDI_ControlBlockType* pWDICtx,
18686 WDI_EventInfoType* pEventData
18687)
18688{
18689 WDI_LowLevelIndType wdiInd;
18690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018691
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 /*-------------------------------------------------------------------------
18693 Extract indication and send it to UMAC
18694 -------------------------------------------------------------------------*/
18695 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18697
Jeff Johnson295189b2012-06-20 16:38:30 -070018698 /*Notify UMAC*/
18699 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18700
Jeff Johnsone7245742012-09-05 17:12:55 -070018701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018702}/*WDI_ProcessTxPerHitInd*/
18703
18704#ifdef ANI_MANF_DIAG
18705/**
18706 @brief WDI_ProcessFTMCommandReq
18707 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018708
18709 @param pWDICtx: pointer to the WLAN DAL context
18710 pEventData: pointer to the event information structure
18711
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 @see
18713 @return Result of the function call
18714*/
18715WDI_Status
18716WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018717(
Jeff Johnson295189b2012-06-20 16:38:30 -070018718 WDI_ControlBlockType* pWDICtx,
18719 WDI_EventInfoType* pEventData
18720)
18721{
18722 WDI_FTMCommandReqType *ftmCommandReq = NULL;
18723 wpt_uint8 *ftmCommandBuffer = NULL;
18724 wpt_uint16 dataOffset;
18725 wpt_uint16 bufferSize;
18726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 -------------------------------------------------------------------------*/
18729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18730 ( NULL == pEventData->pEventData))
18731
18732 {
18733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 }
18738
18739 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
18740
18741 /* Get MSG Buffer */
18742 WDI_GetMessageBuffer(pWDICtx,
18743 WDI_FTM_CMD_REQ,
18744 ftmCommandReq->bodyLength,
18745 &ftmCommandBuffer,
18746 &dataOffset,
18747 &bufferSize);
18748
18749 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
18750 ftmCommandReq->FTMCommandBody,
18751 ftmCommandReq->bodyLength);
18752
18753 /* Send MSG */
18754 return WDI_SendMsg(pWDICtx,
18755 ftmCommandBuffer,
18756 bufferSize,
18757 pEventData->pCBfnc,
18758 pEventData->pUserData,
18759 WDI_FTM_CMD_RESP);
18760}
18761
18762/**
18763 @brief WDI_ProcessFTMCommandRsp
18764 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070018765
18766 @param pWDICtx: pointer to the WLAN DAL context
18767 pEventData: pointer to the event information structure
18768
Jeff Johnson295189b2012-06-20 16:38:30 -070018769 @see
18770 @return Result of the function call
18771*/
18772WDI_Status
18773WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018774(
Jeff Johnson295189b2012-06-20 16:38:30 -070018775 WDI_ControlBlockType* pWDICtx,
18776 WDI_EventInfoType* pEventData
18777)
18778{
18779 WDI_FTMCommandRspCb ftmCMDRspCb;
18780 tProcessPttRspParams *ftmCMDRspData = NULL;
18781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18782
18783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018785 -------------------------------------------------------------------------*/
18786 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18787 ( NULL == pEventData->pEventData))
18788 {
18789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 }
18794
18795 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
18796
18797 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
18798
Jeff Johnsone7245742012-09-05 17:12:55 -070018799 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
18800 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
18802
18803 /*Notify UMAC*/
18804 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
18805
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807}
18808#endif /* ANI_MANF_DIAG */
18809/**
18810 @brief WDI_ProcessHalDumpCmdReq
18811 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018812
18813 @param pWDICtx: pointer to the WLAN DAL context
18814 pEventData: pointer to the event information structure
18815
Jeff Johnson295189b2012-06-20 16:38:30 -070018816 @see
18817 @return Result of the function call
18818*/
18819WDI_Status
18820WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018821(
Jeff Johnson295189b2012-06-20 16:38:30 -070018822 WDI_ControlBlockType* pWDICtx,
18823 WDI_EventInfoType* pEventData
18824)
18825{
18826 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
18827 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
18828 wpt_uint16 usDataOffset = 0;
18829 wpt_uint16 usSendSize = 0;
18830 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070018832
18833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 -------------------------------------------------------------------------*/
18836 if (( NULL == pEventData ) ||
18837 ( NULL == pEventData->pEventData) ||
18838 ( NULL == pEventData->pCBfnc ))
18839 {
18840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018842 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
18846 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
18847 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
18848
18849 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018850 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018851 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070018852 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018853 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018854 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018857 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070018858 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070018860
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 /*-----------------------------------------------------------------------
18862 Get message buffer
18863 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018864 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
18866 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070018867 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
18869 {
18870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18871 "Unable to get send buffer in HAL Dump Command req %x %x %x",
18872 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
18873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018875 }
18876
Jeff Johnsone7245742012-09-05 17:12:55 -070018877 wpalMemoryCopy( pSendBuffer+usDataOffset,
18878 &halDumpCmdReqMsg.dumpCmdReqParams,
18879 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018880
18881 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070018882 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018883
18884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018885 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070018886 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018887 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
18888 wdiHALDumpCmdRspCb, pEventData->pUserData,
18889 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070018890}
18891
18892/**
18893 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018894 Process hal Dump Command Response from HAL, simply route to HDD
18895
18896 @param pWDICtx: pointer to the WLAN DAL context
18897 pEventData: pointer to the event information structure
18898
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 @see
18900 @return Result of the function call
18901*/
18902WDI_Status
18903WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018904(
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 WDI_ControlBlockType* pWDICtx,
18906 WDI_EventInfoType* pEventData
18907)
18908{
18909 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
18910 tpHalDumpCmdRspParams halDumpCmdRspParams;
18911 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
18912
18913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018915 -------------------------------------------------------------------------*/
18916 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18917 ( NULL == pEventData->pEventData))
18918 {
18919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018923 }
18924
Jeff Johnsone7245742012-09-05 17:12:55 -070018925 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018926
18927 /*Initialize the WDI Response structure */
18928 wdiHALDumpCmdRsp.usBufferLen = 0;
18929 wdiHALDumpCmdRsp.pBuffer = NULL;
18930
18931 halDumpCmdRspParams = (tHalDumpCmdRspParams *)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070018932
18933 wdiHALDumpCmdRsp.wdiStatus =
18934 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams->status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018935
18936 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
18937 (halDumpCmdRspParams->rspLength != 0))
18938 {
18939 /* Copy the response data */
18940 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams->rspLength;
18941 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams->rspLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070018942 wpalMemoryCopy( &halDumpCmdRspParams->rspBuffer,
18943 wdiHALDumpCmdRsp.pBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070018944 sizeof(wdiHALDumpCmdRsp.usBufferLen));
18945 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018946
Jeff Johnson295189b2012-06-20 16:38:30 -070018947 /*Notify UMAC*/
18948 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
18949
18950 if(wdiHALDumpCmdRsp.pBuffer != NULL)
18951 {
18952 /* Free the allocated buffer */
18953 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
18954 }
18955 return WDI_STATUS_SUCCESS;
18956}
18957
18958/*==========================================================================
18959 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070018960
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070018962 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070018963==========================================================================*/
18964/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 when it wishes to send up a notification like the ones
18967 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070018968
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070018970
18971 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070018972 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 wctsNotifyCBData: the callback data of the user
18974
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070018976
18977 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070018978*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018979void
Jeff Johnson295189b2012-06-20 16:38:30 -070018980WDI_NotifyMsgCTSCB
18981(
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 WCTS_NotifyEventType wctsEvent,
18984 void* wctsNotifyCBData
18985)
18986{
Jeff Johnsone7245742012-09-05 17:12:55 -070018987 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18989
18990 if (NULL == pWDICtx )
18991 {
18992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018995 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070018996 }
18997
18998 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
18999 {
19000 /* callback presumably occurred after close */
19001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019002 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019004 }
19005
19006 if ( WCTS_EVENT_OPEN == wctsEvent )
19007 {
19008 /*Flag must be set atomically as it is checked from incoming request
19009 functions*/
19010 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019011 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019012
19013 /*Nothing to do - so try to dequeue any pending request that may have
19014 occurred while we were trying to establish this*/
19015 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019016 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 {
19020 /*Flag must be set atomically as it is checked from incoming request
19021 functions*/
19022 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019023 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019024
19025 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 wpalMutexRelease(&pWDICtx->wptMutex);
19028
19029 /*Notify that the Control Channel is closed */
19030 wpalEventSet(&pWDICtx->wctsActionEvent);
19031 }
19032
19033}/*WDI_NotifyMsgCTSCB*/
19034
19035
19036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 when it wishes to send up a packet received over the
19039 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019040
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019042
19043 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 pMsg: the packet
19045 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 wctsRxMsgCBData: the callback data of the user
19047
Jeff Johnson295189b2012-06-20 16:38:30 -070019048 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019049
19050 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019051*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019052void
19053WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019054(
Jeff Johnsone7245742012-09-05 17:12:55 -070019055 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 void* pMsg,
19057 wpt_uint32 uLen,
19058 void* wctsRxMsgCBData
19059)
19060{
Jeff Johnsone7245742012-09-05 17:12:55 -070019061 tHalMsgHeader *pHalMsgHeader;
19062 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19065
19066 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 ( uLen < sizeof(tHalMsgHeader)))
19071 {
19072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019073 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019075 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 }
19077
19078 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19079 {
19080 /* callback presumably occurred after close */
19081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019082 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 }
19085
Jeff Johnsone7245742012-09-05 17:12:55 -070019086 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 context - so no serialization is necessary here
19088 ! - revisit this assumption */
19089
19090 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19091
19092 if ( uLen != pHalMsgHeader->msgLen )
19093 {
19094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19095 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19097 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 }
19099
19100 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19101
19102 /*The message itself starts after the header*/
19103 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19104 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19105 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19106 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19107
19108
19109 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19110 {
19111 /*Stop the timer as the response was received */
19112 /*!UT - check for potential race conditions between stop and response */
19113 wpalTimerStop(&pWDICtx->wptResponseTimer);
19114 }
19115 /* Check if we receive a response message which is not expected */
19116 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19117 {
19118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19119 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19120 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19123 pWDICtx->wdiExpectedResponse);
19124 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19125 return;
19126 }
19127
19128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19129 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19130
19131 /*Post response event to the state machine*/
19132 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19133
19134}/*WDI_RXMsgCTSCB*/
19135
19136
19137/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019139========================================================================*/
19140
19141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019142 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019144
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 @param pWDICtx - pointer to the control block
19146
19147 @return Result of the function call
19148*/
19149WPT_INLINE WDI_Status
19150WDI_CleanCB
19151(
19152 WDI_ControlBlockType* pWDICtx
19153)
19154{
19155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19156
19157 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019158 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019159
Jeff Johnsone7245742012-09-05 17:12:55 -070019160 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019161 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19162 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19163
19164 WDI_ResetAssocSessions( pWDICtx );
19165
19166 return WDI_STATUS_SUCCESS;
19167}/*WDI_CleanCB*/
19168
19169
19170/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019171 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019172
Jeff Johnsone7245742012-09-05 17:12:55 -070019173
19174 @param pWDICtx: pointer to the WLAN DAL context
19175 pEventData: pointer to the event information structure
19176
Jeff Johnson295189b2012-06-20 16:38:30 -070019177 @see
19178 @return Result of the function call
19179*/
19180WPT_INLINE WDI_Status
19181WDI_ProcessRequest
19182(
19183 WDI_ControlBlockType* pWDICtx,
19184 WDI_EventInfoType* pEventData
19185)
19186{
19187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19188
Jeff Johnsone7245742012-09-05 17:12:55 -070019189 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 already checked these pointers*/
19191
19192 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19193 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019194 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19196 "Calling request processing function for req %s (%d) %x",
19197 WDI_getReqMsgString(pEventData->wdiRequest),
19198 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19199 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19200 }
19201 else
19202 {
19203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019204 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 pEventData->wdiRequest);
19206 return WDI_STATUS_E_NOT_IMPLEMENT;
19207 }
19208}/*WDI_ProcessRequest*/
19209
19210
19211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019214 prefixes it with a send message header
19215
19216 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 wdiReqType: type of the request being sent
19218 uBufferLen: message buffer len
19219 pMsgBuffer: resulting allocated buffer
19220 pusDataOffset: offset in the buffer where the caller
19221 can start copying its message data
19222 puBufferSize: the resulting buffer size (offset+buff
19223 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019224
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 @see
19226 @return Result of the function call
19227*/
19228WDI_Status
19229WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019230(
19231 WDI_ControlBlockType* pWDICtx,
19232 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 wpt_uint8** pMsgBuffer,
19235 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 wpt_uint16* pusBufferSize
19237)
19238{
19239 tHalMsgHeader halMsgHeader;
19240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19241
Jeff Johnsone7245742012-09-05 17:12:55 -070019242 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019243 again*/
19244
19245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019246 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019248 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19250 if ( NULL == *pMsgBuffer )
19251 {
19252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19253 "Unable to allocate message buffer for req %s (%d)",
19254 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019255 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019257 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 }
19259
19260 /*-------------------------------------------------------------------------
19261 Fill in the message header
19262 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019263 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19264 /* Fill msgVersion */
19265#ifdef WLAN_FEATURE_11AC
19266 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019267 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019268 else
19269#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019270 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019271
Jeff Johnsone7245742012-09-05 17:12:55 -070019272 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19273 *pusDataOffset = sizeof(halMsgHeader);
19274 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19275
19276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019277}/*WDI_GetMessageBuffer*/
19278
19279
19280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019281 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019282 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019283 the CB
19284
19285 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019287
Jeff Johnson295189b2012-06-20 16:38:30 -070019288 usSendSize size of the buffer to be sent
19289 pRspCb: response callback - save in the WDI
19290 CB
19291 pUserData: user data associated with the
19292 callback
19293 wdiExpectedResponse: the code of the response that is
19294 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019295
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 @see
19297 @return Result of the function call
19298*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019299WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019300WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019301(
19302 WDI_ControlBlockType* pWDICtx,
19303 wpt_uint8* pSendBuffer,
19304 wpt_uint32 usSendSize,
19305 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019306 void* pUserData,
19307 WDI_ResponseEnumType wdiExpectedResponse
19308)
19309{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019310 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19312
19313 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019314 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 ------------------------------------------------------------------------*/
19316 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 pWDICtx->pfncRspCB = pRspCb;
19318 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019319
19320 /*-----------------------------------------------------------------------
19321 Call the CTS to send this message over - free message afterwards
19322 - notify transport failure
19323 Note: CTS is reponsible for freeing the message buffer.
19324 -----------------------------------------------------------------------*/
19325 if ( 0 != WCTS_SendMessage( pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize ))
19326 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 "Failed to send message over the bus - catastrophic failure");
19329
Jeff Johnsond13512a2012-07-17 11:42:19 -070019330 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019331 }
19332
Jeff Johnsond13512a2012-07-17 11:42:19 -070019333 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 if ( NULL != pWDICtx->wdiReqStatusCB )
19335 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019336 /*Inform originator whether request went through or not*/
19337 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19338 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019339 pWDICtx->wdiReqStatusCB = NULL;
19340 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019341 callback(wdiStatus, callbackContext);
19342
19343 /*For WDI requests which have registered a request callback,
19344 inform the WDA caller of the same via setting the return value
19345 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19346 end up repeating the functonality in the req callback for the
19347 WDI_STATUS_E_FAILURE case*/
19348 if (wdiStatus == WDI_STATUS_E_FAILURE)
19349 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 }
19351
Jeff Johnsond13512a2012-07-17 11:42:19 -070019352 if ( wdiStatus == WDI_STATUS_SUCCESS )
19353 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019354 /*Start timer for the expected response */
19355 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Jeff Johnsond13512a2012-07-17 11:42:19 -070019356 }
19357 else
19358 {
19359 /*Inform upper stack layers that a transport fatal error occured*/
19360 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19361 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019362
Jeff Johnsond13512a2012-07-17 11:42:19 -070019363 return wdiStatus;
19364
Jeff Johnson295189b2012-06-20 16:38:30 -070019365}/*WDI_SendMsg*/
19366
19367
19368
19369/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019370 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 the bus using the control transport and saves some info
19372 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019373
19374 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019375 pSendBuffer: buffer to be sent
19376 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019377
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 @see
19379 @return Result of the function call
19380*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019381WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019382WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019383(
19384 WDI_ControlBlockType* pWDICtx,
19385 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019386 wpt_uint32 usSendSize
19387)
19388{
19389 wpt_uint32 uStatus ;
19390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19391
19392 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019393 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019394 Note: CTS is reponsible for freeing the message buffer.
19395 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019396 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 (void*)pSendBuffer, usSendSize );
19398
19399 /*Inform Upper MAC about the outcome of the request*/
19400 if ( NULL != pWDICtx->wdiReqStatusCB )
19401 {
19402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19403 "Send indication status : %d", uStatus);
19404
19405 pWDICtx->wdiReqStatusCB( (uStatus != 0 ) ? WDI_STATUS_E_FAILURE:
Jeff Johnsone7245742012-09-05 17:12:55 -070019406 WDI_STATUS_SUCCESS,
19407 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019408 }
19409
19410 /*If sending of the message failed - it is considered catastrophic and
19411 indicates an error with the device*/
19412 if ( 0 != uStatus)
19413 {
19414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019415 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019416
19417 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19418 return WDI_STATUS_E_FAILURE;
19419 }
19420
Jeff Johnsone7245742012-09-05 17:12:55 -070019421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019422}/*WDI_SendIndication*/
19423
19424
19425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019426 @brief WDI_DetectedDeviceError - called internally by DAL when
19427 it has detected a failure in the device
19428
19429 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019430 usErrorCode: error code detected by WDI or received
19431 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019432
Jeff Johnson295189b2012-06-20 16:38:30 -070019433 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019434 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019435*/
19436void
19437WDI_DetectedDeviceError
19438(
19439 WDI_ControlBlockType* pWDICtx,
19440 wpt_uint16 usErrorCode
19441)
19442{
19443 WDI_LowLevelIndType wdiInd;
19444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19445
19446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19447 "Device Error detected code: %d - transitioning to stopped state",
19448 usErrorCode);
19449
19450 wpalMutexAcquire(&pWDICtx->wptMutex);
19451
19452 WDI_STATableStop(pWDICtx);
19453
19454 WDI_ResetAssocSessions(pWDICtx);
19455
19456 /*Set the expected state transition to stopped - because the device
19457 experienced a failure*/
19458 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19459
19460 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019461 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019462
Jeff Johnsone7245742012-09-05 17:12:55 -070019463 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019464
19465 /*TO DO: - there should be an attempt to reset the device here*/
19466
19467 wpalMutexRelease(&pWDICtx->wptMutex);
19468
19469 /*------------------------------------------------------------------------
19470 Notify UMAC if a handler is registered
19471 ------------------------------------------------------------------------*/
19472 if (pWDICtx->wdiLowLevelIndCB)
19473 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019474 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19475 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019476
19477 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19478 }
19479}/*WDI_DetectedDeviceError*/
19480
19481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019482 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 we started on send message has expire - this should
19484 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019485 reply - trigger catastrophic failure
19486 @param
19487
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019489
19490 @see
19491 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019492*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019493void
Jeff Johnson295189b2012-06-20 16:38:30 -070019494WDI_ResponseTimerCB
19495(
19496 void *pUserData
19497)
19498{
19499 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19501
19502 if (NULL == pWDICtx )
19503 {
19504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 }
19509
19510 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19511 {
19512
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsone7245742012-09-05 17:12:55 -070019515 " - catastrophic failure",
Jeff Johnson295189b2012-06-20 16:38:30 -070019516 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19517 pWDICtx->wdiExpectedResponse);
19518 /* WDI timeout means Riva is not responding or SMD communication to Riva
19519 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019520 * is to initiate SSR from APPS
19521 * There is also an option to re-enable wifi, which will eventually
19522 * trigger SSR
19523 */
19524#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019525 wpalWcnssResetIntr();
19526 /* if this timer fires, it means Riva did not receive the FIQ */
19527 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019528#else
19529 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19530 wpalWlanReload();
19531#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019532 }
19533 else
19534 {
19535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19536 "Timeout occurred but not waiting for any response %d",
19537 pWDICtx->wdiExpectedResponse);
19538 }
19539
19540 return;
19541
19542}/*WDI_ResponseTimerCB*/
19543
19544
19545/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019547
Jeff Johnsone7245742012-09-05 17:12:55 -070019548
19549 @param pWDICtx: pointer to the WLAN DAL context
19550 pEventData: pointer to the event information structure
19551
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 @see
19553 @return Result of the function call
19554*/
19555WPT_INLINE WDI_Status
19556WDI_ProcessResponse
19557(
19558 WDI_ControlBlockType* pWDICtx,
19559 WDI_EventInfoType* pEventData
19560)
19561{
19562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19563
Jeff Johnsone7245742012-09-05 17:12:55 -070019564 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 already checked these pointers
19566 ! - revisit this assumption */
19567 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19568 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019569 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019571 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 WDI_getRespMsgString(pEventData->wdiResponse),
19573 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19574 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19575 }
19576 else
19577 {
19578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019579 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 pEventData->wdiResponse);
19581 return WDI_STATUS_E_NOT_IMPLEMENT;
19582 }
19583}/*WDI_ProcessResponse*/
19584
19585
19586/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019588=========================================================================*/
19589
19590/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019591 @brief Utility function used by the DAL Core to help queue a
19592 request that cannot be processed right away.
19593 @param
19594
Jeff Johnson295189b2012-06-20 16:38:30 -070019595 pWDICtx: - pointer to the WDI control block
19596 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 queued
19598
19599 @see
19600 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019601*/
19602WDI_Status
19603WDI_QueuePendingReq
19604(
19605 WDI_ControlBlockType* pWDICtx,
19606 WDI_EventInfoType* pEventData
19607)
19608{
Jeff Johnsone7245742012-09-05 17:12:55 -070019609 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019611 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19613
19614 if ( NULL == pEventDataQueue )
19615 {
19616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019617 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 WDI_ASSERT(0);
19619 return WDI_STATUS_MEM_FAILURE;
19620 }
19621
19622 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19623 pEventDataQueue->pUserData = pEventData->pUserData;
19624 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19625 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019627
19628 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19629 {
19630 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019631
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 if ( NULL == pEventInfo )
19633 {
19634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019635 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019636 WDI_ASSERT(0);
19637 wpalMemoryFree(pEventDataQueue);
19638 return WDI_STATUS_MEM_FAILURE;
19639 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019640
Jeff Johnson295189b2012-06-20 16:38:30 -070019641 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19642
19643 }
19644 pEventDataQueue->pEventData = pEventInfo;
19645
19646 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019648
Jeff Johnsone7245742012-09-05 17:12:55 -070019649 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019650
19651 return WDI_STATUS_SUCCESS;
19652}/*WDI_QueuePendingReq*/
19653
19654/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019655 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019657 @param
19658
19659 pMsg - pointer to the message
19660
19661 @see
19662 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019663*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019664void
Jeff Johnson295189b2012-06-20 16:38:30 -070019665WDI_PALCtrlMsgCB
19666(
19667 wpt_msg *pMsg
19668)
19669{
19670 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 WDI_ControlBlockType* pWDICtx = NULL;
19672 WDI_Status wdiStatus;
19673 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019674 void* pUserData;
19675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19676
19677 if (( NULL == pMsg )||
19678 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19679 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19680 {
19681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019682 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019684 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 }
19686
19687 /*Transition back to the state that we had before serialization
19688 - serialization transitions us to BUSY to stop any incomming requests
19689 ! TO DO L: possible race condition here if a request comes in between the
19690 state transition and the post function*/
19691
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019693
19694 /*-----------------------------------------------------------------------
19695 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 -----------------------------------------------------------------------*/
19698 switch ( pEventData->wdiRequest )
19699 {
19700
Jeff Johnsone7245742012-09-05 17:12:55 -070019701 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070019702 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
19703 break;
19704
Jeff Johnson295189b2012-06-20 16:38:30 -070019705 case WDI_NV_DOWNLOAD_REQ:
19706 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
19707 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
19708 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
19709 {
19710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019711 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19713 }
19714 else
19715 {
19716 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
19717 }
19718
19719 break;
19720
19721 default:
19722 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19723 break;
19724 }/*switch ( pEventData->wdiRequest )*/
19725
19726 if ( WDI_STATUS_SUCCESS != wdiStatus )
19727 {
19728 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
19729
19730 if ( NULL != pfnReqStatusCB )
19731 {
19732 /*Fail the request*/
19733 pfnReqStatusCB( wdiStatus, pUserData);
19734 }
19735 }
19736
19737 /* Free data - that was allocated when queueing*/
19738 if( pEventData != NULL )
19739 {
19740 if( pEventData->pEventData != NULL )
19741 {
19742 wpalMemoryFree(pEventData->pEventData);
19743 }
19744 wpalMemoryFree(pEventData);
19745 }
19746
19747 if( pMsg != NULL )
19748 {
19749 wpalMemoryFree(pMsg);
19750 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019751
Jeff Johnson295189b2012-06-20 16:38:30 -070019752}/*WDI_PALCtrlMsgCB*/
19753
19754/**
19755 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070019756 and schedule for execution a pending request
19757 @param
19758
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 pWDICtx: - pointer to the WDI control block
19760 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 queued
19762
19763 @see
19764 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019765*/
19766WDI_Status
19767WDI_DequeuePendingReq
19768(
19769 WDI_ControlBlockType* pWDICtx
19770)
19771{
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019774 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19776
Jeff Johnsone7245742012-09-05 17:12:55 -070019777 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019778
19779 if ( NULL == pNode )
19780 {
19781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070019782 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 return WDI_STATUS_SUCCESS;
19784 }
19785
19786 /*The node actually points to the 1st element inside the Event Data struct -
19787 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019789
19790 /*Serialize processing in the control thread
19791 !TO DO: - check to see if these are all the messages params that need
19792 to be filled in*/
19793 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
19794
19795 if ( NULL == palMsg )
19796 {
19797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019798 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019800 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019801 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019802 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019803 palMsg->callback = WDI_PALCtrlMsgCB;
19804 palMsg->ptr = pEventData;
19805
19806 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019807 palMsg->val = pWDICtx->uGlobalState;
19808
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 /*Transition back to BUSY as we need to handle a queued request*/
19810 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070019811
Jeff Johnson295189b2012-06-20 16:38:30 -070019812 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
19813
19814 return WDI_STATUS_PENDING;
19815}/*WDI_DequeuePendingReq*/
19816
19817
19818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019819 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019820 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070019821 away.- The assoc requests will be queued by BSSID
19822 @param
19823
Jeff Johnson295189b2012-06-20 16:38:30 -070019824 pWDICtx: - pointer to the WDI control block
19825 pEventData: pointer to the evnt info that needs to be queued
19826 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070019827
19828 @see
19829 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019830*/
19831WDI_Status
19832WDI_QueueNewAssocRequest
19833(
19834 WDI_ControlBlockType* pWDICtx,
19835 WDI_EventInfoType* pEventData,
19836 wpt_macAddr macBSSID
19837)
19838{
Jeff Johnsone7245742012-09-05 17:12:55 -070019839 wpt_uint8 i;
19840 WDI_BSSSessionType* pSession = NULL;
19841 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 void* pEventInfo;
19844 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070019846
Jeff Johnsone7245742012-09-05 17:12:55 -070019847
19848 /*------------------------------------------------------------------------
19849 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 ------------------------------------------------------------------------*/
19851 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
19852 {
19853 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
19854 {
19855 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019856 pSession = &pWDICtx->aBSSSessions[i];
19857 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 }
19859 }
19860
19861 if ( i >= WDI_MAX_BSS_SESSIONS )
19862 {
19863 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019865 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019866
Jeff Johnson295189b2012-06-20 16:38:30 -070019867 /*------------------------------------------------------------------------
19868 Fill in the BSSID for this session and set the usage flag
19869 ------------------------------------------------------------------------*/
19870 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019871 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019872
19873 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019874 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 ------------------------------------------------------------------------*/
19876 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
19877 if ( NULL == pEventDataQueue )
19878 {
19879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019880 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 WDI_ASSERT(0);
19882 return WDI_STATUS_MEM_FAILURE;
19883 }
19884
19885 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
19886 if ( NULL == pSessionIdElement )
19887 {
19888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019889 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 WDI_ASSERT(0);
19891 wpalMemoryFree(pEventDataQueue);
19892 return WDI_STATUS_MEM_FAILURE;
19893 }
19894
19895 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
19896 if ( NULL == pEventInfo )
19897 {
19898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019899 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019900 WDI_ASSERT(0);
19901 wpalMemoryFree(pSessionIdElement);
19902 wpalMemoryFree(pEventDataQueue);
19903 return WDI_STATUS_MEM_FAILURE;
19904 }
19905
19906 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19907 pEventDataQueue->pUserData = pEventData->pUserData;
19908 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19909 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019911
19912 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19913 pEventDataQueue->pEventData = pEventInfo;
19914
19915 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019917
19918 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019919 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019920
Jeff Johnsone7245742012-09-05 17:12:55 -070019921 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019922
19923 /*We need to maintain a separate list that keeps track of the order in which
19924 the new assoc requests are being queued such that we can start processing
19925 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019926 pSessionIdElement->ucIndex = i;
19927 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019928
19929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19930 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019931 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019932
19933 /*Return pending as this is what the status of the request is since it has
19934 been queued*/
19935 return WDI_STATUS_PENDING;
19936}/*WDI_QueueNewAssocRequest*/
19937
19938/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019939 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019940 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070019941 away.- The assoc requests will be queued by BSSID
19942 @param
19943
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 pWDICtx: - pointer to the WDI control block
19945 pSession: - session in which to queue
19946 pEventData: pointer to the event info that needs to be
19947 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070019948
19949 @see
19950 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019951*/
19952WDI_Status
19953WDI_QueueAssocRequest
19954(
19955 WDI_ControlBlockType* pWDICtx,
19956 WDI_BSSSessionType* pSession,
19957 WDI_EventInfoType* pEventData
19958)
19959{
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019964
19965 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070019966 Sanity check
19967 ------------------------------------------------------------------------*/
19968 if (( NULL == pSession ) || ( NULL == pWDICtx ))
19969 {
19970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019971 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019972
Jeff Johnsone7245742012-09-05 17:12:55 -070019973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 }
19975
19976 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019977 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 ------------------------------------------------------------------------*/
19979 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
19980 if ( NULL == pEventDataQueue )
19981 {
19982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019983 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 WDI_ASSERT(0);
19985 return WDI_STATUS_MEM_FAILURE;
19986 }
19987
19988 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
19989 if ( NULL == pEventInfo )
19990 {
19991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19992 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019993 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 WDI_ASSERT(0);
19995 wpalMemoryFree(pEventDataQueue);
19996 return WDI_STATUS_MEM_FAILURE;
19997 }
19998
19999 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20000 pEventDataQueue->pUserData = pEventData->pUserData;
20001 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20002 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020003 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 pEventDataQueue->pEventData = pEventInfo;
20005
20006 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20007
20008 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020009 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020010
20011 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020012 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020013
Jeff Johnsone7245742012-09-05 17:12:55 -070020014 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020015
20016 /*The result of this operation is pending because the request has been
20017 queued and it will be processed at a later moment in time */
20018 return WDI_STATUS_PENDING;
20019}/*WDI_QueueAssocRequest*/
20020
20021/**
20022 @brief Utility function used by the DAL Core to help dequeue
20023 an association request that was pending
20024 The request will be queued up in front of the main
20025 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020026 @param
20027
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020029
20030
20031 @see
20032 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020033*/
20034WDI_Status
20035WDI_DequeueAssocRequest
20036(
20037 WDI_ControlBlockType* pWDICtx
20038)
20039{
Jeff Johnsone7245742012-09-05 17:12:55 -070020040 wpt_list_node* pNode = NULL;
20041 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020042 WDI_BSSSessionType* pSession;
20043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020044
20045 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 Sanity check
20047 ------------------------------------------------------------------------*/
20048 if ( NULL == pWDICtx )
20049 {
20050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020052
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 }
20055
20056 /*------------------------------------------------------------------------
20057 An association has been completed => a new association can occur
20058 Check to see if there are any pending associations ->
20059 If so , transfer all the pending requests into the busy queue for
20060 processing
20061 These requests have arrived prior to the requests in the busy queue
20062 (bc they needed to be processed in order to be placed in this queue)
20063 => they will be placed at the front of the busy queue
20064 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020066
20067 if ( NULL == pNode )
20068 {
20069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020070 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 return WDI_STATUS_SUCCESS;
20072 }
20073
20074 /*The node actually points to the 1st element inside the Session Id struct -
20075 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020076 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020077
20078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20079 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20080
20081 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20082 {
20083 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020084
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020086 the front of the main waiting queue for subsequent execution*/
20087 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 while ( NULL != pNode )
20089 {
20090 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020091 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20092 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 }
20096 else
20097 {
20098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 WPAL_ASSERT(0);
20101 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020104
Jeff Johnson295189b2012-06-20 16:38:30 -070020105 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20106 wpalMemoryFree(pSessionIdElement);
20107 return WDI_STATUS_SUCCESS;
20108}/*WDI_DequeueAssocRequest*/
20109
20110/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020111 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 pending requests - all req cb will be called with
20113 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020114 @param
20115
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020117
20118 @see
20119 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020120*/
20121WDI_Status
20122WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020123(
Jeff Johnson295189b2012-06-20 16:38:30 -070020124 WDI_ControlBlockType* pWDICtx
20125)
20126{
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020128 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 void* pUserData;
20131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20132
Jeff Johnsone7245742012-09-05 17:12:55 -070020133 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020134
20135 /*------------------------------------------------------------------------
20136 Go through all the requests and fail them - this will only be called
20137 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020138 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 ------------------------------------------------------------------------*/
20140 while( pNode )
20141 {
20142 /*The node actually points to the 1st element inside the Event Data struct -
20143 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 pEventDataQueue = (WDI_EventInfoType*)pNode;
20145
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20147 if ( NULL != pfnReqStatusCB )
20148 {
20149 /*Fail the request*/
20150 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20151 }
20152 /* Free data - that was allocated when queueing */
20153 if ( pEventDataQueue->pEventData != NULL )
20154 {
20155 wpalMemoryFree(pEventDataQueue->pEventData);
20156 }
20157 wpalMemoryFree(pEventDataQueue);
20158
20159 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20160 {
20161 break;
20162 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020163 }
20164
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 return WDI_STATUS_SUCCESS;
20166}/*WDI_ClearPendingRequests*/
20167
20168/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020169 @brief Helper routine used to init the BSS Sessions in the WDI control block
20170
20171
20172 @param pWDICtx: pointer to the WLAN DAL context
20173
Jeff Johnson295189b2012-06-20 16:38:30 -070020174 @see
20175*/
20176void
20177WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020178(
Jeff Johnson295189b2012-06-20 16:38:30 -070020179 WDI_ControlBlockType* pWDICtx
20180)
20181{
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20184
20185 /*-------------------------------------------------------------------------
20186 No Sanity check
20187 -------------------------------------------------------------------------*/
20188 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20189 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20192 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20193 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20194 }
20195}/*WDI_ResetAssocSessions*/
20196
20197/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020198 @brief Helper routine used to find a session based on the BSSID
20199
20200
20201 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020203 pSession: pointer to the session (if found)
20204
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020206 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020207*/
20208wpt_uint8
20209WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020210(
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 WDI_ControlBlockType* pWDICtx,
20212 wpt_macAddr macBSSID,
20213 WDI_BSSSessionType** ppSession
20214)
20215{
Jeff Johnsone7245742012-09-05 17:12:55 -070020216 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20218
20219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 -------------------------------------------------------------------------*/
20222 if ( NULL == ppSession )
20223 {
20224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020225 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020226 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227 }
20228
Jeff Johnsone7245742012-09-05 17:12:55 -070020229 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020230
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 /*------------------------------------------------------------------------
20232 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020233 ------------------------------------------------------------------------*/
20234 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20235 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020236 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20237 (eWLAN_PAL_TRUE ==
20238 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20239 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 {
20241 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020242 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 return i;
20244 }
20245 }
20246
Jeff Johnsone7245742012-09-05 17:12:55 -070020247 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020248}/*WDI_FindAssocSession*/
20249
20250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020251 @brief Helper routine used to find a session based on the BSSID
20252
20253
20254 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 ucBSSIdx: BSS Index of the session
20256 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020257
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020259 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020260*/
20261wpt_uint8
20262WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020263(
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 WDI_ControlBlockType* pWDICtx,
20265 wpt_uint16 ucBSSIdx,
20266 WDI_BSSSessionType** ppSession
20267)
20268{
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20271
20272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020274 -------------------------------------------------------------------------*/
20275 if ( NULL == ppSession )
20276 {
20277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020278 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020279 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 }
20281
Jeff Johnsone7245742012-09-05 17:12:55 -070020282 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020283
Jeff Johnsone7245742012-09-05 17:12:55 -070020284 /*------------------------------------------------------------------------
20285 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 ------------------------------------------------------------------------*/
20287 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20288 {
20289 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20290 {
20291 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 return i;
20294 }
20295 }
20296
Jeff Johnsone7245742012-09-05 17:12:55 -070020297 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020298}/*WDI_FindAssocSessionByBSSIdx*/
20299
20300/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 @brief Helper routine used to find a session based on the BSSID
20302
20303
20304 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 ucBSSIdx: BSS Index of the session
20306 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020307
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020310*/
20311wpt_uint8
20312WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020313(
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 WDI_ControlBlockType* pWDICtx,
20315 wpt_uint16 usIdx,
20316 WDI_BSSSessionType** ppSession
20317)
20318{
20319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20320
20321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020322 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020323 -------------------------------------------------------------------------*/
20324 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20325 {
20326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020327 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020328 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020329 }
20330
20331 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020332 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020333
20334 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020335
Jeff Johnson295189b2012-06-20 16:38:30 -070020336}/*WDI_FindAssocSessionByBSSIdx*/
20337
20338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020339 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020340 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020341
20342
20343 @param pWDICtx: pointer to the WLAN DAL context
20344 pSession: pointer to the session (if found)
20345
Jeff Johnson295189b2012-06-20 16:38:30 -070020346 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020347 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020348*/
20349wpt_uint8
20350WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020351(
Jeff Johnson295189b2012-06-20 16:38:30 -070020352 WDI_ControlBlockType* pWDICtx,
20353 WDI_BSSSessionType** ppSession
20354)
20355{
Jeff Johnsone7245742012-09-05 17:12:55 -070020356 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020360 -------------------------------------------------------------------------*/
20361 if ( NULL == ppSession )
20362 {
20363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020364 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 }
20367
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020369
Jeff Johnsone7245742012-09-05 17:12:55 -070020370 /*------------------------------------------------------------------------
20371 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020372 ------------------------------------------------------------------------*/
20373 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20374 {
20375 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20376 {
20377 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020378 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020379 return i;
20380 }
20381 }
20382
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020384}/*WDI_FindEmptySession*/
20385
20386
20387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020390
20391
20392 @param pWDICtx: pointer to the WLAN DAL context
20393
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 @see
20395 @return Number of sessions in use
20396*/
20397wpt_uint8
20398WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020399(
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 WDI_ControlBlockType* pWDICtx
20401)
20402{
Jeff Johnsone7245742012-09-05 17:12:55 -070020403 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020405
20406 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 Count all sessions in use
20408 ------------------------------------------------------------------------*/
20409 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20410 {
20411 if ( pWDICtx->aBSSSessions[i].bInUse )
20412 {
20413 ucCount++;
20414 }
20415 }
20416
Jeff Johnsone7245742012-09-05 17:12:55 -070020417 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020418}/*WDI_GetActiveSessionsCount*/
20419
20420/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020421 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020423
20424
20425 @param pWDICtx: pointer to the WLAN DAL context
20426 pSession: pointer to the session (if found)
20427
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020430*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020431void
Jeff Johnson295189b2012-06-20 16:38:30 -070020432WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020433(
Jeff Johnson295189b2012-06-20 16:38:30 -070020434 WDI_ControlBlockType* pWDICtx,
20435 WDI_BSSSessionType* ppSession
20436)
20437{
20438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 -------------------------------------------------------------------------*/
20441 if ( NULL == ppSession )
20442 {
20443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020444 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020445 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 }
20447
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 /*------------------------------------------------------------------------
20449 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 ------------------------------------------------------------------------*/
20451 wpal_list_destroy(&ppSession->wptPendingQueue);
20452 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020453 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20454 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020455 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20456 wpal_list_init(&ppSession->wptPendingQueue);
20457
20458}/*WDI_DeleteSession*/
20459
20460/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 @param
20464
Jeff Johnson295189b2012-06-20 16:38:30 -070020465 WDI_AddStaParams: - pointer to the WDI Add STA params
20466 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020467
20468 @see
20469 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020470*/
20471void
20472WDI_AddBcastSTAtoSTATable
20473(
20474 WDI_ControlBlockType* pWDICtx,
20475 WDI_AddStaParams * staParams,
20476 wpt_uint16 usBcastStaIdx
20477)
20478{
20479 WDI_AddStaParams wdiAddSTAParam = {0};
20480 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20482
20483 /*---------------------------------------------------------------------
20484 Sanity check
20485 ---------------------------------------------------------------------*/
20486 if ( NULL == staParams )
20487 {
20488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020490
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 }
20493
20494 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20495 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20496 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20497 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20498 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20499 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20500 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20501 WDI_MAC_ADDR_LEN );
20502 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20503 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20504 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20505 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20506 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20507 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20508 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020509
Jeff Johnson295189b2012-06-20 16:38:30 -070020510 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20511}
20512
20513/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 @brief NV blob will be divided into fragments of size 4kb and
20515 Sent to HAL
20516
20517 @param pWDICtx: pointer to the WLAN DAL context
20518 pEventData: pointer to the event information structure
20519
Jeff Johnson295189b2012-06-20 16:38:30 -070020520 @see
20521 @return Result of the function call
20522 */
20523
20524WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020525(
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 WDI_ControlBlockType* pWDICtx,
20527 WDI_EventInfoType* pEventData
20528)
20529{
20530
20531 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20532 wpt_uint8* pSendBuffer = NULL;
20533 wpt_uint16 usDataOffset = 0;
20534 wpt_uint16 usSendSize = 0;
20535 wpt_uint16 usCurrentFragmentSize =0;
20536 wpt_uint8* pSrcBuffer = NULL;
20537 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20538 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20539
20540 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20541 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20542 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20543
Jeff Johnsone7245742012-09-05 17:12:55 -070020544 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20546
20547 /* Update the current Fragment Number */
20548 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20549
20550 /*Update the HAL REQ structure */
20551 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20552 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20553 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20554
20555 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 image will be sent to HAL*/
20558
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020561 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020562 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020563 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20565 usCurrentFragmentSize = FRAGMENT_SIZE;
20566
20567 /*Update the HAL REQ structure */
20568 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20569 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20570
20571 }
20572 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020573 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 usCurrentFragmentSize = FRAGMENT_SIZE;
20575
20576 /*Update the HAL REQ structure */
20577 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20578 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20579 }
20580
20581 /*-----------------------------------------------------------------------
20582 Get message buffer
20583 -----------------------------------------------------------------------*/
20584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20585 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20586 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020587 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20589 {
20590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20591 "Unable to get send buffer in NV Download req %x %x ",
20592 pEventData, pwdiNvDownloadReqParams);
20593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 }
20596
20597 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20600
20601 /* Appending the NV image fragment */
20602 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20603 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20604 usCurrentFragmentSize);
20605
20606 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020607 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020608
Jeff Johnsone7245742012-09-05 17:12:55 -070020609 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20610 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 WDI_NV_DOWNLOAD_RESP);
20612
20613}
Jeff Johnsone7245742012-09-05 17:12:55 -070020614/*============================================================================
20615 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020616 ============================================================================*/
20617/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020618 @brief Helper routine used to find a session based on the BSSID
20619 @param pContext: pointer to the WLAN DAL context
20620 @param pDPContext: pointer to the Datapath context
20621
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020623 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020624*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020625WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020626WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20627{
20628 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20629
20630 pCB->pDPContext = pDPContext;
20631 return;
20632}
20633
20634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 @brief Helper routine used to find a session based on the BSSID
20636
20637
20638 @param pContext: pointer to the WLAN DAL context
20639
Jeff Johnson295189b2012-06-20 16:38:30 -070020640 @see
20641 @return pointer to Datapath context
20642*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020643WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020644WDI_DS_GetDatapathContext (void *pContext)
20645{
20646 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20647 return pCB->pDPContext;
20648}
20649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 @brief Helper routine used to find a session based on the BSSID
20651
20652
20653 @param pContext: pointer to the WLAN DAL context
20654 @param pDTDriverContext: pointer to the Transport Driver context
20655
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 @see
20657 @return void
20658*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020659WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020660WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20661{
20662 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20663
20664 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020666}
20667
20668/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020669 @brief Helper routine used to find a session based on the BSSID
20670
20671
20672 @param pWDICtx: pointer to the WLAN DAL context
20673
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020676*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020677WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020678WDT_GetTransportDriverContext (void *pContext)
20679{
20680 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020682}
20683
Jeff Johnsone7245742012-09-05 17:12:55 -070020684/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 Helper inline converters
20686 ============================================================================*/
20687/*Convert WDI driver type into HAL driver type*/
20688WPT_STATIC WPT_INLINE WDI_Status
20689WDI_HAL_2_WDI_STATUS
20690(
20691 eHalStatus halStatus
20692)
20693{
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 the chances of getting inlined*/
20696 switch( halStatus )
20697 {
20698 case eHAL_STATUS_SUCCESS:
20699 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20700 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20701 return WDI_STATUS_SUCCESS;
20702 case eHAL_STATUS_FAILURE:
20703 return WDI_STATUS_E_FAILURE;
20704 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 return WDI_STATUS_MEM_FAILURE;
20706 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070020707 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 default:
20709 return WDI_STATUS_DEV_INTERNAL_FAILURE;
20710 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020711
Jeff Johnsone7245742012-09-05 17:12:55 -070020712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020713}/*WDI_HAL_2_WDI_STATUS*/
20714
20715/*Convert WDI request type into HAL request type*/
20716WPT_STATIC WPT_INLINE tHalHostMsgType
20717WDI_2_HAL_REQ_TYPE
20718(
20719 WDI_RequestEnumType wdiReqType
20720)
20721{
Jeff Johnsone7245742012-09-05 17:12:55 -070020722 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020723 the chances of getting inlined*/
20724 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020731 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020739 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020740 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020741 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020746 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020749 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020750 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020753 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020757 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020759 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 return WLAN_HAL_RMV_STAKEY_REQ;
20761 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020762 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020763 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020764 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020766 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020768 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 case WDI_DEL_BA_REQ:
20770 return WLAN_HAL_DEL_BA_REQ;
20771#ifdef FEATURE_WLAN_CCX
20772 case WDI_TSM_STATS_REQ:
20773 return WLAN_HAL_TSM_STATS_REQ;
20774#endif
20775 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020776 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020780 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020782 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020783 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020785 case WDI_ADD_BA_SESSION_REQ:
20786 return WLAN_HAL_ADD_BA_SESSION_REQ;
20787 case WDI_TRIGGER_BA_REQ:
20788 return WLAN_HAL_TRIGGER_BA_REQ;
20789 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020790 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020791 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020792 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
20794 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
20795 case WDI_SET_MAX_TX_POWER_REQ:
20796 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
20797#ifdef WLAN_FEATURE_P2P
20798 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
20799 return WLAN_HAL_SET_P2P_GONOA_REQ;
20800#endif
20801 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020803 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020804 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020805 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020807 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020810 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020813 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020814 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020819 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020820 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 case WDI_REM_BEACON_FILTER_REQ:
20822 return WLAN_HAL_REM_BCN_FILTER_REQ;
20823 case WDI_SET_RSSI_THRESHOLDS_REQ:
20824 return WLAN_HAL_SET_RSSI_THRESH_REQ;
20825 case WDI_HOST_OFFLOAD_REQ:
20826 return WLAN_HAL_HOST_OFFLOAD_REQ;
20827 case WDI_WOWL_ADD_BC_PTRN_REQ:
20828 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
20829 case WDI_WOWL_DEL_BC_PTRN_REQ:
20830 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
20831 case WDI_WOWL_ENTER_REQ:
20832 return WLAN_HAL_ENTER_WOWL_REQ;
20833 case WDI_WOWL_EXIT_REQ:
20834 return WLAN_HAL_EXIT_WOWL_REQ;
20835 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
20836 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
20837 case WDI_NV_DOWNLOAD_REQ:
20838 return WLAN_HAL_DOWNLOAD_NV_REQ;
20839 case WDI_FLUSH_AC_REQ:
20840 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
20841 case WDI_BTAMP_EVENT_REQ:
20842 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
20843#ifdef WLAN_FEATURE_VOWIFI_11R
20844 case WDI_AGGR_ADD_TS_REQ:
20845 return WLAN_HAL_AGGR_ADD_TS_REQ;
20846#endif /* WLAN_FEATURE_VOWIFI_11R */
20847#ifdef ANI_MANF_DIAG
20848 case WDI_FTM_CMD_REQ:
20849 return WLAN_HAL_PROCESS_PTT_REQ;
20850#endif /* ANI_MANF_DIAG */
20851 case WDI_ADD_STA_SELF_REQ:
20852 return WLAN_HAL_ADD_STA_SELF_REQ;
20853 case WDI_DEL_STA_SELF_REQ:
20854 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070020855#ifdef FEATURE_OEM_DATA_SUPPORT
20856 case WDI_START_OEM_DATA_REQ:
20857 return WLAN_HAL_START_OEM_DATA_REQ;
20858#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070020859 case WDI_HOST_RESUME_REQ:
20860 return WLAN_HAL_HOST_RESUME_REQ;
20861 case WDI_HOST_SUSPEND_IND:
20862 return WLAN_HAL_HOST_SUSPEND_IND;
20863 case WDI_KEEP_ALIVE_REQ:
20864 return WLAN_HAL_KEEP_ALIVE_REQ;
20865
20866#ifdef FEATURE_WLAN_SCAN_PNO
20867 case WDI_SET_PREF_NETWORK_REQ:
20868 return WLAN_HAL_SET_PREF_NETWORK_REQ;
20869 case WDI_SET_RSSI_FILTER_REQ:
20870 return WLAN_HAL_SET_RSSI_FILTER_REQ;
20871 case WDI_UPDATE_SCAN_PARAMS_REQ:
20872 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
20873#endif // FEATURE_WLAN_SCAN_PNO
20874 case WDI_SET_TX_PER_TRACKING_REQ:
20875 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
20876#ifdef WLAN_FEATURE_PACKET_FILTERING
20877 case WDI_8023_MULTICAST_LIST_REQ:
20878 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
20879 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
20882 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
20883 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
20884 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
20885#endif // WLAN_FEATURE_PACKET_FILTERING
20886 case WDI_HAL_DUMP_CMD_REQ:
20887 return WLAN_HAL_DUMP_COMMAND_REQ;
20888#ifdef WLAN_FEATURE_GTK_OFFLOAD
20889 case WDI_GTK_OFFLOAD_REQ:
20890 return WLAN_HAL_GTK_OFFLOAD_REQ;
20891 case WDI_GTK_OFFLOAD_GETINFO_REQ:
20892 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
20893#endif /* WLAN_FEATURE_GTK_OFFLOAD */
20894
20895 case WDI_INIT_SCAN_CON_REQ:
20896 return WLAN_HAL_INIT_SCAN_CON_REQ;
20897 case WDI_SET_POWER_PARAMS_REQ:
20898 return WLAN_HAL_SET_POWER_PARAMS_REQ;
20899 case WDI_SET_TM_LEVEL_REQ:
20900 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
20901 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
20902 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070020903#ifdef WLAN_FEATURE_11AC
20904 case WDI_UPDATE_VHT_OP_MODE_REQ:
20905 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
20906#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020907 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070020909 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020910
Jeff Johnson295189b2012-06-20 16:38:30 -070020911}/*WDI_2_HAL_REQ_TYPE*/
20912
20913/*Convert WDI response type into HAL response type*/
20914WPT_STATIC WPT_INLINE WDI_ResponseEnumType
20915HAL_2_WDI_RSP_TYPE
20916(
20917 tHalHostMsgType halMsg
20918)
20919{
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 the chances of getting inlined*/
20922 switch( halMsg )
20923 {
20924 case WLAN_HAL_START_RSP:
20925 return WDI_START_RESP;
20926 case WLAN_HAL_STOP_RSP:
20927 return WDI_STOP_RESP;
20928 case WLAN_HAL_INIT_SCAN_RSP:
20929 return WDI_INIT_SCAN_RESP;
20930 case WLAN_HAL_START_SCAN_RSP:
20931 return WDI_START_SCAN_RESP;
20932 case WLAN_HAL_END_SCAN_RSP:
20933 return WDI_END_SCAN_RESP;
20934 case WLAN_HAL_FINISH_SCAN_RSP:
20935 return WDI_FINISH_SCAN_RESP;
20936 case WLAN_HAL_CONFIG_STA_RSP:
20937 return WDI_CONFIG_STA_RESP;
20938 case WLAN_HAL_DELETE_STA_RSP:
20939 return WDI_DEL_STA_RESP;
20940 case WLAN_HAL_CONFIG_BSS_RSP:
20941 return WDI_CONFIG_BSS_RESP;
20942 case WLAN_HAL_DELETE_BSS_RSP:
20943 return WDI_DEL_BSS_RESP;
20944 case WLAN_HAL_JOIN_RSP:
20945 return WDI_JOIN_RESP;
20946 case WLAN_HAL_POST_ASSOC_RSP:
20947 return WDI_POST_ASSOC_RESP;
20948 case WLAN_HAL_SET_BSSKEY_RSP:
20949 return WDI_SET_BSS_KEY_RESP;
20950 case WLAN_HAL_SET_STAKEY_RSP:
20951 return WDI_SET_STA_KEY_RESP;
20952 case WLAN_HAL_RMV_BSSKEY_RSP:
20953 return WDI_RMV_BSS_KEY_RESP;
20954 case WLAN_HAL_RMV_STAKEY_RSP:
20955 return WDI_RMV_STA_KEY_RESP;
20956 case WLAN_HAL_SET_BCASTKEY_RSP:
20957 return WDI_SET_STA_BCAST_KEY_RESP;
20958 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
20959 // return WDI_RMV_STA_BCAST_KEY_RESP;
20960 case WLAN_HAL_ADD_TS_RSP:
20961 return WDI_ADD_TS_RESP;
20962 case WLAN_HAL_DEL_TS_RSP:
20963 return WDI_DEL_TS_RESP;
20964 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
20965 return WDI_UPD_EDCA_PRMS_RESP;
20966 case WLAN_HAL_ADD_BA_RSP:
20967 return WDI_ADD_BA_RESP;
20968 case WLAN_HAL_DEL_BA_RSP:
20969 return WDI_DEL_BA_RESP;
20970#ifdef FEATURE_WLAN_CCX
20971 case WLAN_HAL_TSM_STATS_RSP:
20972 return WDI_TSM_STATS_RESP;
20973#endif
20974 case WLAN_HAL_CH_SWITCH_RSP:
20975 return WDI_CH_SWITCH_RESP;
20976 case WLAN_HAL_SET_LINK_ST_RSP:
20977 return WDI_SET_LINK_ST_RESP;
20978 case WLAN_HAL_GET_STATS_RSP:
20979 return WDI_GET_STATS_RESP;
20980 case WLAN_HAL_UPDATE_CFG_RSP:
20981 return WDI_UPDATE_CFG_RESP;
20982 case WLAN_HAL_ADD_BA_SESSION_RSP:
20983 return WDI_ADD_BA_SESSION_RESP;
20984 case WLAN_HAL_TRIGGER_BA_RSP:
20985 return WDI_TRIGGER_BA_RESP;
20986 case WLAN_HAL_UPDATE_BEACON_RSP:
20987 return WDI_UPD_BCON_PRMS_RESP;
20988 case WLAN_HAL_SEND_BEACON_RSP:
20989 return WDI_SND_BCON_RESP;
20990 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
20991 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
20992 /*Indications*/
20993 case WLAN_HAL_RSSI_NOTIFICATION_IND:
20994 return WDI_HAL_RSSI_NOTIFICATION_IND;
20995 case WLAN_HAL_MISSED_BEACON_IND:
20996 return WDI_HAL_MISSED_BEACON_IND;
20997 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
20998 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
20999 case WLAN_HAL_MIC_FAILURE_IND:
21000 return WDI_HAL_MIC_FAILURE_IND;
21001 case WLAN_HAL_FATAL_ERROR_IND:
21002 return WDI_HAL_FATAL_ERROR_IND;
21003 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21004 return WDI_HAL_DEL_STA_IND;
21005 case WLAN_HAL_COEX_IND:
21006 return WDI_HAL_COEX_IND;
21007 case WLAN_HAL_OTA_TX_COMPL_IND:
21008 return WDI_HAL_TX_COMPLETE_IND;
21009#ifdef WLAN_FEATURE_P2P
21010 case WLAN_HAL_P2P_NOA_ATTR_IND:
21011 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021012 case WLAN_HAL_P2P_NOA_START_IND:
21013 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014#endif
21015 case WLAN_HAL_TX_PER_HIT_IND:
21016 return WDI_HAL_TX_PER_HIT_IND;
21017 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21018 return WDI_SET_MAX_TX_POWER_RESP;
21019#ifdef WLAN_FEATURE_P2P
21020 case WLAN_HAL_SET_P2P_GONOA_RSP:
21021 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21022#endif
21023 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021024 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021025 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021032 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021040 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21042 return WDI_SET_BEACON_FILTER_RESP;
21043 case WLAN_HAL_REM_BCN_FILTER_RSP:
21044 return WDI_REM_BEACON_FILTER_RESP;
21045 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21046 return WDI_SET_RSSI_THRESHOLDS_RESP;
21047 case WLAN_HAL_HOST_OFFLOAD_RSP:
21048 return WDI_HOST_OFFLOAD_RESP;
21049 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21050 return WDI_WOWL_ADD_BC_PTRN_RESP;
21051 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21052 return WDI_WOWL_DEL_BC_PTRN_RESP;
21053 case WLAN_HAL_ENTER_WOWL_RSP:
21054 return WDI_WOWL_ENTER_RESP;
21055 case WLAN_HAL_EXIT_WOWL_RSP:
21056 return WDI_WOWL_EXIT_RESP;
21057 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21058 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21059 case WLAN_HAL_DOWNLOAD_NV_RSP:
21060 return WDI_NV_DOWNLOAD_RESP;
21061 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21062 return WDI_FLUSH_AC_RESP;
21063 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21064 return WDI_BTAMP_EVENT_RESP;
21065#ifdef ANI_MANF_DIAG
21066 case WLAN_HAL_PROCESS_PTT_RSP:
21067 return WDI_FTM_CMD_RESP;
21068#endif /* ANI_MANF_DIAG */
21069 case WLAN_HAL_ADD_STA_SELF_RSP:
21070 return WDI_ADD_STA_SELF_RESP;
21071case WLAN_HAL_DEL_STA_SELF_RSP:
21072 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021073#ifdef FEATURE_OEM_DATA_SUPPORT
21074 case WLAN_HAL_START_OEM_DATA_RSP:
21075 return WDI_START_OEM_DATA_RESP;
21076#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 case WLAN_HAL_HOST_RESUME_RSP:
21078 return WDI_HOST_RESUME_RESP;
21079 case WLAN_HAL_KEEP_ALIVE_RSP:
21080 return WDI_KEEP_ALIVE_RESP;
21081#ifdef FEATURE_WLAN_SCAN_PNO
21082 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21083 return WDI_SET_PREF_NETWORK_RESP;
21084 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021085 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21087 return WDI_UPDATE_SCAN_PARAMS_RESP;
21088 case WLAN_HAL_PREF_NETW_FOUND_IND:
21089 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21090#endif // FEATURE_WLAN_SCAN_PNO
21091 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21092 return WDI_SET_TX_PER_TRACKING_RESP;
21093#ifdef WLAN_FEATURE_PACKET_FILTERING
21094 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21095 return WDI_8023_MULTICAST_LIST_RESP;
21096 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21097 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21098 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21099 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21100 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21101 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21102#endif // WLAN_FEATURE_PACKET_FILTERING
21103
21104 case WLAN_HAL_DUMP_COMMAND_RSP:
21105 return WDI_HAL_DUMP_CMD_RESP;
21106 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21107 return WDI_SET_POWER_PARAMS_RESP;
21108#ifdef WLAN_FEATURE_VOWIFI_11R
21109 case WLAN_HAL_AGGR_ADD_TS_RSP:
21110 return WDI_AGGR_ADD_TS_RESP;
21111#endif
21112
21113#ifdef WLAN_FEATURE_GTK_OFFLOAD
21114 case WLAN_HAL_GTK_OFFLOAD_RSP:
21115 return WDI_GTK_OFFLOAD_RESP;
21116 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21117 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21118#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21119#ifdef WLAN_WAKEUP_EVENTS
21120 case WLAN_HAL_WAKE_REASON_IND:
21121 return WDI_HAL_WAKE_REASON_IND;
21122#endif // WLAN_WAKEUP_EVENTS
21123
21124 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21125 return WDI_SET_TM_LEVEL_RESP;
21126 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21127 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021128#ifdef WLAN_FEATURE_11AC
21129 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21130 return WDI_UPDATE_VHT_OP_MODE_RESP;
21131#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 }
21135
21136}/*HAL_2_WDI_RSP_TYPE*/
21137
21138
21139/*Convert WDI driver type into HAL driver type*/
21140WPT_STATIC WPT_INLINE tDriverType
21141WDI_2_HAL_DRV_TYPE
21142(
21143 WDI_DriverType wdiDriverType
21144)
21145{
Jeff Johnsone7245742012-09-05 17:12:55 -070021146 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021147 the chances of getting inlined*/
21148 switch( wdiDriverType )
21149 {
21150 case WDI_DRIVER_TYPE_PRODUCTION:
21151 return eDRIVER_TYPE_PRODUCTION;
21152 case WDI_DRIVER_TYPE_MFG:
21153 return eDRIVER_TYPE_MFG;
21154 case WDI_DRIVER_TYPE_DVT:
21155 return eDRIVER_TYPE_DVT;
21156 }
21157
Jeff Johnsone7245742012-09-05 17:12:55 -070021158 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021159}/*WDI_2_HAL_DRV_TYPE*/
21160
21161
21162/*Convert WDI stop reason into HAL stop reason*/
21163WPT_STATIC WPT_INLINE tHalStopType
21164WDI_2_HAL_STOP_REASON
21165(
21166 WDI_StopType wdiDriverType
21167)
21168{
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 the chances of getting inlined*/
21171 switch( wdiDriverType )
21172 {
21173 case WDI_STOP_TYPE_SYS_RESET:
21174 return HAL_STOP_TYPE_SYS_RESET;
21175 case WDI_DRIVER_TYPE_MFG:
21176 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21177 case WDI_STOP_TYPE_RF_KILL:
21178 return HAL_STOP_TYPE_RF_KILL;
21179 }
21180
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021182}/*WDI_2_HAL_STOP_REASON*/
21183
21184
21185/*Convert WDI scan mode type into HAL scan mode type*/
21186WPT_STATIC WPT_INLINE eHalSysMode
21187WDI_2_HAL_SCAN_MODE
21188(
21189 WDI_ScanMode wdiScanMode
21190)
21191{
Jeff Johnsone7245742012-09-05 17:12:55 -070021192 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 the chances of getting inlined*/
21194 switch( wdiScanMode )
21195 {
21196 case WDI_SCAN_MODE_NORMAL:
21197 return eHAL_SYS_MODE_NORMAL;
21198 case WDI_SCAN_MODE_LEARN:
21199 return eHAL_SYS_MODE_LEARN;
21200 case WDI_SCAN_MODE_SCAN:
21201 return eHAL_SYS_MODE_SCAN;
21202 case WDI_SCAN_MODE_PROMISC:
21203 return eHAL_SYS_MODE_PROMISC;
21204 case WDI_SCAN_MODE_SUSPEND_LINK:
21205 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021206 case WDI_SCAN_MODE_ROAM_SCAN:
21207 return eHAL_SYS_MODE_ROAM_SCAN;
21208 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21209 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 }
21211
Jeff Johnsone7245742012-09-05 17:12:55 -070021212 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213}/*WDI_2_HAL_SCAN_MODE*/
21214
21215/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021216WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021217WDI_2_HAL_SEC_CH_OFFSET
21218(
21219 WDI_HTSecondaryChannelOffset wdiSecChOffset
21220)
21221{
Jeff Johnsone7245742012-09-05 17:12:55 -070021222 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 the chances of getting inlined*/
21224 switch( wdiSecChOffset )
21225 {
21226 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021227 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021228 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021229 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021230 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021231 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21232#ifdef WLAN_FEATURE_11AC
21233 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21234 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21235 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21236 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21237 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21238 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21239 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21240 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21241 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21242 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21243 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21244 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21245 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21246 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21247#endif
21248 default:
21249 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 }
21251
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021253}/*WDI_2_HAL_SEC_CH_OFFSET*/
21254
21255/*Convert WDI BSS type into HAL BSS type*/
21256WPT_STATIC WPT_INLINE tSirBssType
21257WDI_2_HAL_BSS_TYPE
21258(
21259 WDI_BssType wdiBSSType
21260)
21261{
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 the chances of getting inlined*/
21264 switch( wdiBSSType )
21265 {
21266 case WDI_INFRASTRUCTURE_MODE:
21267 return eSIR_INFRASTRUCTURE_MODE;
21268 case WDI_INFRA_AP_MODE:
21269 return eSIR_INFRA_AP_MODE;
21270 case WDI_IBSS_MODE:
21271 return eSIR_IBSS_MODE;
21272 case WDI_BTAMP_STA_MODE:
21273 return eSIR_BTAMP_STA_MODE;
21274 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 case WDI_BSS_AUTO_MODE:
21277 return eSIR_AUTO_MODE;
21278 }
21279
Jeff Johnsone7245742012-09-05 17:12:55 -070021280 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021281}/*WDI_2_HAL_BSS_TYPE*/
21282
21283/*Convert WDI NW type into HAL NW type*/
21284WPT_STATIC WPT_INLINE tSirNwType
21285WDI_2_HAL_NW_TYPE
21286(
21287 WDI_NwType wdiNWType
21288)
21289{
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 the chances of getting inlined*/
21292 switch( wdiNWType )
21293 {
21294 case WDI_11A_NW_TYPE:
21295 return eSIR_11A_NW_TYPE;
21296 case WDI_11B_NW_TYPE:
21297 return eSIR_11B_NW_TYPE;
21298 case WDI_11G_NW_TYPE:
21299 return eSIR_11G_NW_TYPE;
21300 case WDI_11N_NW_TYPE:
21301 return eSIR_11N_NW_TYPE;
21302 }
21303
Jeff Johnsone7245742012-09-05 17:12:55 -070021304 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021305}/*WDI_2_HAL_NW_TYPE*/
21306
21307/*Convert WDI chanel bonding type into HAL cb type*/
21308WPT_STATIC WPT_INLINE ePhyChanBondState
21309WDI_2_HAL_CB_STATE
21310(
21311 WDI_PhyChanBondState wdiCbState
21312)
21313{
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 the chances of getting inlined*/
21316 switch ( wdiCbState )
21317 {
21318 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21319 return PHY_SINGLE_CHANNEL_CENTERED;
21320 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21321 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21322 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21323 return PHY_DOUBLE_CHANNEL_CENTERED;
21324 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21325 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021326#ifdef WLAN_FEATURE_11AC
21327 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21328 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21329 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21330 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21331 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21332 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21333 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21334 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21335 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21336 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21337 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21338 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21339 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21340 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21341#endif
21342 case WDI_MAX_CB_STATE:
21343 default:
21344 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021346
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 return PHY_CHANNEL_BONDING_STATE_MAX;
21348}/*WDI_2_HAL_CB_STATE*/
21349
21350/*Convert WDI chanel bonding type into HAL cb type*/
21351WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21352WDI_2_HAL_HT_OPER_MODE
21353(
21354 WDI_HTOperatingMode wdiHTOperMode
21355)
21356{
Jeff Johnsone7245742012-09-05 17:12:55 -070021357 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021358 the chances of getting inlined*/
21359 switch ( wdiHTOperMode )
21360 {
21361 case WDI_HT_OP_MODE_PURE:
21362 return eSIR_HT_OP_MODE_PURE;
21363 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21364 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21365 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21366 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21367 case WDI_HT_OP_MODE_MIXED:
21368 return eSIR_HT_OP_MODE_MIXED;
21369 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021370
Jeff Johnson295189b2012-06-20 16:38:30 -070021371 return eSIR_HT_OP_MODE_MAX;
21372}/*WDI_2_HAL_HT_OPER_MODE*/
21373
21374/*Convert WDI mimo PS type into HAL mimo PS type*/
21375WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21376WDI_2_HAL_MIMO_PS
21377(
21378 WDI_HTMIMOPowerSaveState wdiHTOperMode
21379)
21380{
Jeff Johnsone7245742012-09-05 17:12:55 -070021381 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 the chances of getting inlined*/
21383 switch ( wdiHTOperMode )
21384 {
21385 case WDI_HT_MIMO_PS_STATIC:
21386 return eSIR_HT_MIMO_PS_STATIC;
21387 case WDI_HT_MIMO_PS_DYNAMIC:
21388 return eSIR_HT_MIMO_PS_DYNAMIC;
21389 case WDI_HT_MIMO_PS_NA:
21390 return eSIR_HT_MIMO_PS_NA;
21391 case WDI_HT_MIMO_PS_NO_LIMIT:
21392 return eSIR_HT_MIMO_PS_NO_LIMIT;
21393 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021394
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 return eSIR_HT_MIMO_PS_MAX;
21396}/*WDI_2_HAL_MIMO_PS*/
21397
21398/*Convert WDI ENC type into HAL ENC type*/
21399WPT_STATIC WPT_INLINE tAniEdType
21400WDI_2_HAL_ENC_TYPE
21401(
21402 WDI_EncryptType wdiEncType
21403)
21404{
Jeff Johnsone7245742012-09-05 17:12:55 -070021405 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 the chances of getting inlined*/
21407 switch ( wdiEncType )
21408 {
21409 case WDI_ENCR_NONE:
21410 return eSIR_ED_NONE;
21411
21412 case WDI_ENCR_WEP40:
21413 return eSIR_ED_WEP40;
21414
21415 case WDI_ENCR_WEP104:
21416 return eSIR_ED_WEP104;
21417
21418 case WDI_ENCR_TKIP:
21419 return eSIR_ED_TKIP;
21420
21421 case WDI_ENCR_CCMP:
21422 return eSIR_ED_CCMP;
21423
21424 case WDI_ENCR_AES_128_CMAC:
21425 return eSIR_ED_AES_128_CMAC;
21426#if defined(FEATURE_WLAN_WAPI)
21427 case WDI_ENCR_WPI:
21428 return eSIR_ED_WPI;
21429#endif
21430 default:
21431 return eSIR_ED_NOT_IMPLEMENTED;
21432 }
21433
21434}/*WDI_2_HAL_ENC_TYPE*/
21435
21436/*Convert WDI WEP type into HAL WEP type*/
21437WPT_STATIC WPT_INLINE tAniWepType
21438WDI_2_HAL_WEP_TYPE
21439(
21440 WDI_WepType wdiWEPType
21441)
21442{
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 the chances of getting inlined*/
21445 switch ( wdiWEPType )
21446 {
21447 case WDI_WEP_STATIC:
21448 return eSIR_WEP_STATIC;
21449
21450 case WDI_WEP_DYNAMIC:
21451 return eSIR_WEP_DYNAMIC;
21452 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021453
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 return eSIR_WEP_MAX;
21455}/*WDI_2_HAL_WEP_TYPE*/
21456
21457WPT_STATIC WPT_INLINE tSirLinkState
21458WDI_2_HAL_LINK_STATE
21459(
21460 WDI_LinkStateType wdiLinkState
21461)
21462{
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 the chances of getting inlined*/
21465 switch ( wdiLinkState )
21466 {
21467 case WDI_LINK_IDLE_STATE:
21468 return eSIR_LINK_IDLE_STATE;
21469
21470 case WDI_LINK_PREASSOC_STATE:
21471 return eSIR_LINK_PREASSOC_STATE;
21472
21473 case WDI_LINK_POSTASSOC_STATE:
21474 return eSIR_LINK_POSTASSOC_STATE;
21475
21476 case WDI_LINK_AP_STATE:
21477 return eSIR_LINK_AP_STATE;
21478
21479 case WDI_LINK_IBSS_STATE:
21480 return eSIR_LINK_IBSS_STATE;
21481
21482 case WDI_LINK_BTAMP_PREASSOC_STATE:
21483 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21484
21485 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21486 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21487
21488 case WDI_LINK_BTAMP_AP_STATE:
21489 return eSIR_LINK_BTAMP_AP_STATE;
21490
21491 case WDI_LINK_BTAMP_STA_STATE:
21492 return eSIR_LINK_BTAMP_STA_STATE;
21493
21494 case WDI_LINK_LEARN_STATE:
21495 return eSIR_LINK_LEARN_STATE;
21496
21497 case WDI_LINK_SCAN_STATE:
21498 return eSIR_LINK_SCAN_STATE;
21499
21500 case WDI_LINK_FINISH_SCAN_STATE:
21501 return eSIR_LINK_FINISH_SCAN_STATE;
21502
21503 case WDI_LINK_INIT_CAL_STATE:
21504 return eSIR_LINK_INIT_CAL_STATE;
21505
21506 case WDI_LINK_FINISH_CAL_STATE:
21507 return eSIR_LINK_FINISH_CAL_STATE;
21508
21509#ifdef WLAN_FEATURE_P2P
21510 case WDI_LINK_LISTEN_STATE:
21511 return eSIR_LINK_LISTEN_STATE;
21512#endif
21513
21514 default:
21515 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021516 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021517}
21518
Jeff Johnsone7245742012-09-05 17:12:55 -070021519/*Translate a STA Context from WDI into HAL*/
21520WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021521void
21522WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021523(
Jeff Johnson295189b2012-06-20 16:38:30 -070021524 tConfigStaParams* phalConfigSta,
21525 WDI_ConfigStaReqInfoType* pwdiConfigSta
21526)
21527{
21528 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021529#ifdef WLAN_FEATURE_11AC
21530 /* Get the Version 1 Handler */
21531 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21532 if (WDI_getFwWlanFeatCaps(DOT11AC))
21533 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021534 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021535 }
21536#endif
21537 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 the chances of getting inlined*/
21539
Jeff Johnsone7245742012-09-05 17:12:55 -070021540 wpalMemoryCopy(phalConfigSta->bssId,
21541 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21542
21543 wpalMemoryCopy(phalConfigSta->staMac,
21544 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021545
21546 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21547 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21548 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21549 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21550 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21551 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21552 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21553 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21554 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21555 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21556 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21557 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21558 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21559 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21560 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21561 phalConfigSta->action = pwdiConfigSta->wdiAction;
21562 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21563 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21564 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21565 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21566 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21567 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21568 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021569
Jeff Johnson295189b2012-06-20 16:38:30 -070021570 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21571
Jeff Johnsone7245742012-09-05 17:12:55 -070021572 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021573 pwdiConfigSta->wdiSupportedRates.opRateMode;
21574 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21575 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021576 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21578 }
21579 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021581 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021582 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21583 }
21584 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21585 {
21586 phalConfigSta->supportedRates.aniLegacyRates[i] =
21587 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21588 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021590 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21591 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21592 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021593 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21595 }
21596 phalConfigSta->supportedRates.rxHighestDataRate =
21597 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21598
Jeff Johnsone7245742012-09-05 17:12:55 -070021599#ifdef WLAN_FEATURE_11AC
21600 if(phalConfigSta_V1 != NULL)
21601 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021602 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21603 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21604 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21605 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021606 }
21607#endif
21608
Jeff Johnson295189b2012-06-20 16:38:30 -070021609#ifdef WLAN_FEATURE_P2P
21610 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21611#endif
21612
Jeff Johnsone7245742012-09-05 17:12:55 -070021613#ifdef WLAN_FEATURE_11AC
21614 if(phalConfigSta_V1 != NULL)
21615 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021616 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21617 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Jeff Johnsone7245742012-09-05 17:12:55 -070021618 }
21619#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021620}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021621
21622/*Translate a Rate set info from WDI into HAL*/
21623WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021624WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021625(
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 tSirMacRateSet* pHalRateSet,
21627 WDI_RateSet* pwdiRateSet
21628)
21629{
Jeff Johnsone7245742012-09-05 17:12:55 -070021630 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21632
21633 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21634 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21635
21636 for ( i = 0; i < pHalRateSet->numRates; i++ )
21637 {
21638 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21639 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021640
Jeff Johnson295189b2012-06-20 16:38:30 -070021641}/*WDI_CopyWDIRateSetToHALRateSet*/
21642
21643
21644/*Translate an EDCA Parameter Record from WDI into HAL*/
21645WPT_STATIC WPT_INLINE void
21646WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021647(
Jeff Johnson295189b2012-06-20 16:38:30 -070021648 tSirMacEdcaParamRecord* phalEdcaParam,
21649 WDI_EdcaParamRecord* pWDIEdcaParam
21650)
21651{
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 the chances of getting inlined*/
21654
21655 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21656 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21657 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21658 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21659
21660 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21661 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21662 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21663}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21664
21665
21666/*Copy a management frame header from WDI fmt into HAL fmt*/
21667WPT_STATIC WPT_INLINE void
21668WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21669(
21670 tSirMacMgmtHdr* pmacMgmtHdr,
21671 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21672)
21673{
21674 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21675 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21676 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21677 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21678 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21679 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21680 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21681 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21682 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21683 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21684 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21685
21686 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21687 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21688
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 pwdiMacMgmtHdr->bssId, 6);
21695
21696 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
21697 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
21698 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
21699
21700}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
21701
21702
21703/*Copy config bss parameters from WDI fmt into HAL fmt*/
21704WPT_STATIC WPT_INLINE void
21705WDI_CopyWDIConfigBSSToHALConfigBSS
21706(
21707 tConfigBssParams* phalConfigBSS,
21708 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
21709)
21710{
21711
21712 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021713#ifdef WLAN_FEATURE_11AC
21714 /* Get the Version 1 Handler */
21715 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
21716 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021717 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070021718#endif
21719
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 wpalMemoryCopy( phalConfigBSS->bssId,
21721 pwdiConfigBSS->macBSSID,
21722 WDI_MAC_ADDR_LEN);
21723
21724#ifdef HAL_SELF_STA_PER_BSS
21725 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
21726 pwdiConfigBSS->macSelfAddr,
21727 WDI_MAC_ADDR_LEN);
21728#endif
21729
21730 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
21731
21732 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
21733 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
21734
Jeff Johnsone7245742012-09-05 17:12:55 -070021735 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070021736 pwdiConfigBSS->ucShortSlotTimeSupported;
21737 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
21738 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
21739 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
21740 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
21741 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070021743 pwdiConfigBSS->ucTXOPProtectionFullSupport;
21744 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
21745 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
21746 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
21747 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
21748 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
21749 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
21750 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
21751 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
21752 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
21753 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
21754
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 phalConfigBSS->htOperMode =
21756 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070021757
21758 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
21759 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
21760 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
21761 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
21762
21763#ifdef WLAN_FEATURE_VOWIFI
21764 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
21765#endif
21766
21767 /*! Used 32 as magic number because that is how the ssid is declared inside the
21768 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070021769 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
21771 pwdiConfigBSS->wdiSSID.ucLength : 32;
21772 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070021773 pwdiConfigBSS->wdiSSID.sSSID,
21774 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070021775
21776 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
21777 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070021778
Jeff Johnson295189b2012-06-20 16:38:30 -070021779 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
21780 &pwdiConfigBSS->wdiRateSet);
21781
21782 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
21783
21784 if(phalConfigBSS->edcaParamsValid)
21785 {
21786 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
21787 &pwdiConfigBSS->wdiBEEDCAParams);
21788 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
21789 &pwdiConfigBSS->wdiBKEDCAParams);
21790 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
21791 &pwdiConfigBSS->wdiVIEDCAParams);
21792 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
21793 &pwdiConfigBSS->wdiVOEDCAParams);
21794 }
21795
Jeff Johnsone7245742012-09-05 17:12:55 -070021796 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070021797
21798 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
21799
21800#ifdef WLAN_FEATURE_VOWIFI_11R
21801
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070021804
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 if( phalConfigBSS->extSetStaKeyParamValid )
21806 {
21807 /*-----------------------------------------------------------------------
21808 Copy the STA Key parameters into the HAL message
21809 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
21812
Jeff Johnsone7245742012-09-05 17:12:55 -070021813 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
21815
21816 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
21817
21818 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
21819
21820 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
21821
21822#ifdef WLAN_SOFTAP_FEATURE
21823 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
21824 keyIndex++)
21825 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
21828 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
21829 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
21830 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
21831 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
21832 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021833 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021835 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021837 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
21839 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021841 WDI_MAX_KEY_LENGTH);
21842 }
21843#else
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021845 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
21846 phalConfigBSS->extSetStaKeyParam.key.unicast =
21847 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
21848 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
21849 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
21850 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021854 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
21857 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021858 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021859 WDI_MAX_KEY_LENGTH);
21860#endif
21861 }
21862 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
21863 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021864 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070021865 sizeof(phalConfigBSS->extSetStaKeyParam) );
21866 }
21867
21868#endif /*WLAN_FEATURE_VOWIFI_11R*/
21869
Jeff Johnsone7245742012-09-05 17:12:55 -070021870#ifdef WLAN_FEATURE_11AC
21871 if(phalConfigBSS_V1 != NULL)
21872 {
21873 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
21874 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
21875 }
21876#endif
21877
Jeff Johnson295189b2012-06-20 16:38:30 -070021878}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
21879
21880
Jeff Johnsone7245742012-09-05 17:12:55 -070021881/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070021882 pointed to by user data */
21883WPT_STATIC WPT_INLINE void
21884WDI_ExtractRequestCBFromEvent
21885(
21886 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070021887 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 void** ppUserData
21889)
21890{
21891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21892 switch ( pEvent->wdiRequest )
21893 {
21894 case WDI_START_REQ:
21895 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21896 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
21897 break;
21898 case WDI_STOP_REQ:
21899 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21900 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
21901 break;
21902 case WDI_INIT_SCAN_REQ:
21903 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21904 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
21905 break;
21906 case WDI_START_SCAN_REQ:
21907 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21908 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
21909 break;
21910 case WDI_END_SCAN_REQ:
21911 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21912 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
21913 break;
21914 case WDI_FINISH_SCAN_REQ:
21915 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21916 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
21917 break;
21918 case WDI_JOIN_REQ:
21919 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21920 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
21921 break;
21922 case WDI_CONFIG_BSS_REQ:
21923 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21924 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
21925 break;
21926 case WDI_DEL_BSS_REQ:
21927 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21928 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
21929 break;
21930 case WDI_POST_ASSOC_REQ:
21931 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21932 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
21933 break;
21934 case WDI_DEL_STA_REQ:
21935 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21936 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
21937 break;
21938 case WDI_DEL_STA_SELF_REQ:
21939 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21940 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
21941 break;
21942
21943 case WDI_SET_BSS_KEY_REQ:
21944 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21945 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
21946 break;
21947 case WDI_RMV_BSS_KEY_REQ:
21948 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21949 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
21950 break;
21951 case WDI_SET_STA_KEY_REQ:
21952 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21953 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
21954 break;
21955 case WDI_RMV_STA_KEY_REQ:
21956 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21957 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
21958 break;
21959 case WDI_ADD_TS_REQ:
21960 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21961 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
21962 break;
21963 case WDI_DEL_TS_REQ:
21964 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21965 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
21966 break;
21967 case WDI_UPD_EDCA_PRMS_REQ:
21968 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21969 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
21970 break;
21971 case WDI_ADD_BA_SESSION_REQ:
21972 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21973 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
21974 break;
21975 case WDI_DEL_BA_REQ:
21976 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21977 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
21978 break;
21979#ifdef FEATURE_WLAN_CCX
21980 case WDI_TSM_STATS_REQ:
21981 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21982 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
21983 break;
21984#endif
21985 case WDI_CH_SWITCH_REQ:
21986 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21987 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
21988 break;
21989 case WDI_CONFIG_STA_REQ:
21990 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21991 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
21992 break;
21993 case WDI_SET_LINK_ST_REQ:
21994 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21995 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
21996 break;
21997 case WDI_GET_STATS_REQ:
21998 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21999 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22000 break;
22001 case WDI_UPDATE_CFG_REQ:
22002 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22003 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22004 break;
22005 case WDI_ADD_BA_REQ:
22006 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22007 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22008 break;
22009 case WDI_TRIGGER_BA_REQ:
22010 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22011 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22012 break;
22013 case WDI_UPD_BCON_PRMS_REQ:
22014 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22015 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22016 break;
22017 case WDI_SND_BCON_REQ:
22018 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22019 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22020 break;
22021 case WDI_ENTER_BMPS_REQ:
22022 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22023 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22024 break;
22025 case WDI_EXIT_BMPS_REQ:
22026 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22027 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22028 break;
22029 case WDI_ENTER_UAPSD_REQ:
22030 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22031 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22032 break;
22033 case WDI_UPDATE_UAPSD_PARAM_REQ:
22034 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22035 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22036 break;
22037 case WDI_CONFIGURE_RXP_FILTER_REQ:
22038 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22039 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22040 break;
22041 case WDI_SET_BEACON_FILTER_REQ:
22042 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22043 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22044 break;
22045 case WDI_REM_BEACON_FILTER_REQ:
22046 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22047 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022048 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022049 case WDI_SET_RSSI_THRESHOLDS_REQ:
22050 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22051 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22052 break;
22053 case WDI_HOST_OFFLOAD_REQ:
22054 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22055 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22056 break;
22057 case WDI_WOWL_ADD_BC_PTRN_REQ:
22058 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22059 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22060 break;
22061 case WDI_WOWL_DEL_BC_PTRN_REQ:
22062 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22063 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22064 break;
22065 case WDI_WOWL_ENTER_REQ:
22066 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22067 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22068 break;
22069 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22070 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22071 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22072 break;
22073 case WDI_FLUSH_AC_REQ:
22074 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22075 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22076 break;
22077 case WDI_BTAMP_EVENT_REQ:
22078 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22079 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22080 break;
22081 case WDI_KEEP_ALIVE_REQ:
22082 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22083 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22084 break;
22085 case WDI_SET_TX_PER_TRACKING_REQ:
22086 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22087 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22088 default:
22089 *ppfnReqCB = NULL;
22090 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 }
22093}/*WDI_ExtractRequestCBFromEvent*/
22094
22095
22096/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 frame xtl is enabled for a particular STA.
22099
22100 WDI_PostAssocReq must have been called.
22101
Jeff Johnsone7245742012-09-05 17:12:55 -070022102 @param uSTAIdx: STA index
22103
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 @see WDI_PostAssocReq
22105 @return Result of the function call
22106*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022107wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022108WDI_IsHwFrameTxTranslationCapable
22109(
22110 wpt_uint8 uSTAIdx
22111)
22112{
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 uma value*/
22115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 ------------------------------------------------------------------------*/
22118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22119 {
22120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22121 "WDI API call before module is initialized - Fail request");
22122
Jeff Johnsone7245742012-09-05 17:12:55 -070022123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 }
22125
Jeff Johnsone7245742012-09-05 17:12:55 -070022126
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 return gWDICb.bFrameTransEnabled;
22128}/*WDI_IsHwFrameTxTranslationCapable*/
22129
22130#ifdef FEATURE_WLAN_SCAN_PNO
22131/**
22132 @brief WDI_SetPreferredNetworkList
22133
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022136
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 wdiPNOScanCb: callback for passing back the response
22138 of the Set PNO operation received from the
22139 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022140
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 callback
22143
Jeff Johnson295189b2012-06-20 16:38:30 -070022144 @return Result of the function call
22145*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022146WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022147WDI_SetPreferredNetworkReq
22148(
22149 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22150 WDI_PNOScanCb wdiPNOScanCb,
22151 void* pUserData
22152)
22153{
22154 WDI_EventInfoType wdiEventData = {{0}};
22155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22156
22157 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022158 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 ------------------------------------------------------------------------*/
22160 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22161 {
22162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22163 "WDI API call before module is initialized - Fail request");
22164
Jeff Johnsone7245742012-09-05 17:12:55 -070022165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 }
22167
22168 /*------------------------------------------------------------------------
22169 Fill in Event data and post to the Main FSM
22170 ------------------------------------------------------------------------*/
22171 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022174 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022175 wdiEventData.pUserData = pUserData;
22176
22177 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22178}
22179
22180
22181/**
22182 @brief WDI_SetRssiFilterReq
22183
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022186
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 wdiRssiFilterCb: callback for passing back the response
22188 of the Set RSSI Filter operation received from the
22189 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022190
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022192 callback
22193
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 @return Result of the function call
22195*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022196WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022197WDI_SetRssiFilterReq
22198(
22199 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22200 WDI_RssiFilterCb wdiRssiFilterCb,
22201 void* pUserData
22202)
22203{
22204 WDI_EventInfoType wdiEventData = {{0}};
22205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22206
22207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022208 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022209 ------------------------------------------------------------------------*/
22210 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22211 {
22212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22213 "WDI API call before module is initialized - Fail request");
22214
Jeff Johnsone7245742012-09-05 17:12:55 -070022215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 }
22217
22218 /*------------------------------------------------------------------------
22219 Fill in Event data and post to the Main FSM
22220 ------------------------------------------------------------------------*/
22221 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022222 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022223 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022224 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022225 wdiEventData.pUserData = pUserData;
22226
22227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22228}/*WDI_SetRssiFilterReq*/
22229
22230/**
22231 @brief WDI_UpdateScanParamsReq
22232
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022234 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022235
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 wdiUpdateScanParamsCb: callback for passing back the response
22237 of the Set PNO operation received from the
22238 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022239
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 callback
22242
Jeff Johnson295189b2012-06-20 16:38:30 -070022243 @return Result of the function call
22244*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022246WDI_UpdateScanParamsReq
22247(
22248 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22249 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22250 void* pUserData
22251)
22252{
22253 WDI_EventInfoType wdiEventData = {{0}};
22254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22255
22256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 ------------------------------------------------------------------------*/
22259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22260 {
22261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22262 "WDI API call before module is initialized - Fail request");
22263
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 }
22266
22267 /*------------------------------------------------------------------------
22268 Fill in Event data and post to the Main FSM
22269 ------------------------------------------------------------------------*/
22270 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 wdiEventData.pUserData = pUserData;
22275
22276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22277}
22278
22279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022282
22283 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 pwdiPNOScanReqParams: pointer to the info received
22285 from upper layers
22286 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 and its size
22288
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 @return Result of the function call
22290*/
22291
22292WDI_Status
22293WDI_PackPreferredNetworkList
22294(
22295 WDI_ControlBlockType* pWDICtx,
22296 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22297 wpt_uint8** ppSendBuffer,
22298 wpt_uint16* pSize
22299)
22300{
Jeff Johnsone7245742012-09-05 17:12:55 -070022301 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022302 wpt_uint16 usDataOffset = 0;
22303 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022304 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022306 /*-----------------------------------------------------------------------
22307 Get message buffer
22308 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022310 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022312 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 {
22314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22315 "Unable to get send buffer in Set PNO req %x ",
22316 pwdiPNOScanReqParams);
22317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022319 }
22320
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022321 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22322
Jeff Johnson295189b2012-06-20 16:38:30 -070022323 /*-------------------------------------------------------------------------
22324 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22325 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022326 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022328 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022329 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22330
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022331 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22336
22337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022338 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22340 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22341 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22342
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022343 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022344 {
22345 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022346 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022347 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22348
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022349 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022350 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022351 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022352
22353 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022354 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022355 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022356
22357 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022358 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022360
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022363 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022364 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22365 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22366 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22367 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022368
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022369 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022371 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022372
22373 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022374 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22376
22377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022378 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022379 pPrefNetwListParams->aNetworks[i].ssId.length,
22380 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 }
22382
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022383 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22386 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22387 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22388
22389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022390 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022391 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022392 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22393 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22394
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022395 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022396 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022397 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022399 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22401 }
22402
22403 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022404 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022405 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22406 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22407 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022409
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022410 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022412 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022413
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022414 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22416 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22417 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022419
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022420 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022421 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022422 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022423
22424 /*Set the output values*/
22425 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022427
22428 return WDI_STATUS_SUCCESS;
22429}/*WDI_PackPreferredNetworkList*/
22430
22431/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022434
22435 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022436 pwdiPNOScanReqParams: pointer to the info received
22437 from upper layers
22438 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 and its size
22440
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 @return Result of the function call
22442*/
22443
22444WDI_Status
22445WDI_PackPreferredNetworkListNew
22446(
22447 WDI_ControlBlockType* pWDICtx,
22448 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22449 wpt_uint8** ppSendBuffer,
22450 wpt_uint16* pSize
22451)
22452{
Jeff Johnsone7245742012-09-05 17:12:55 -070022453 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 wpt_uint16 usDataOffset = 0;
22455 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022456 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022457 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022458
22459 /*-----------------------------------------------------------------------
22460 Get message buffer
22461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022463 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022465 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 {
22467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22468 "Unable to get send buffer in Set PNO req %x ",
22469 pwdiPNOScanReqParams);
22470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 }
22473
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022474 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22475
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 /*-------------------------------------------------------------------------
22477 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22478 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022479 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022481 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22483
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022484 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22489
22490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22493 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22494 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22495
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022496 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022497 {
22498 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022499 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22501
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022502 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022504 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022505
22506 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022507 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022508 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022509
22510 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022511 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022513
22514 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022515 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022517
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022519 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022520 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022521 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22522
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022523 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022525 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022526
22527 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022528 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22530
22531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022532 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022533 pPrefNetwListParams->aNetworks[i].ssId.length,
22534 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 }
22536
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022537 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022538 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022539 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22540 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22541 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22542
22543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022545 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22547 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22548
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022549 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022551 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022553 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22555 }
22556
22557 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022558 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22560 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22561 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022563
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022564 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022565 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022566 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022567
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022568 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22570 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22571 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022572 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022573
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022574 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022575 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022576 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022577
Jeff Johnson295189b2012-06-20 16:38:30 -070022578
22579 /*Set the output values*/
22580 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022582
22583 return WDI_STATUS_SUCCESS;
22584}/*WDI_PackPreferredNetworkListNew*/
22585
22586/**
22587 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022588
22589 @param pWDICtx: pointer to the WLAN DAL context
22590 pEventData: pointer to the event information structure
22591
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 @return Result of the function call
22593*/
22594WDI_Status
22595WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022596(
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 WDI_ControlBlockType* pWDICtx,
22598 WDI_EventInfoType* pEventData
22599)
22600{
22601 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22602 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022606
22607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 -------------------------------------------------------------------------*/
22610 if (( NULL == pEventData ) ||
22611 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22612 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22613 {
22614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022618 }
22619
22620 /*-------------------------------------------------------------------------
22621 Pack the PNO request structure based on version
22622 -------------------------------------------------------------------------*/
22623 if ( pWDICtx->wdiPNOVersion > 0 )
22624 {
22625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022626 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022627 pWDICtx->wdiPNOVersion);
22628
22629 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22630 &pSendBuffer, &usSendSize);
22631 }
22632 else
22633 {
22634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022635 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022636 pWDICtx->wdiPNOVersion);
22637
22638 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22639 &pSendBuffer, &usSendSize);
22640 }
22641
22642 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22643 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22644 {
22645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022646 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022648 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022649 }
22650
22651 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022652 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022653
22654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22658 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022659}
22660
22661/**
22662 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022663
22664 @param pWDICtx: pointer to the WLAN DAL context
22665 pEventData: pointer to the event information structure
22666
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 @see
22668 @return Result of the function call
22669*/
22670WDI_Status
22671WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022672(
Jeff Johnson295189b2012-06-20 16:38:30 -070022673 WDI_ControlBlockType* pWDICtx,
22674 WDI_EventInfoType* pEventData
22675)
22676{
22677 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22678 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 wpt_uint16 usDataOffset = 0;
22681 wpt_uint16 usSendSize = 0;
22682 wpt_uint8 ucRssiThreshold;
22683
22684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022686 -------------------------------------------------------------------------*/
22687 if (( NULL == pEventData ) ||
22688 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
22689 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
22690 {
22691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 }
22696
22697 /*-----------------------------------------------------------------------
22698 Get message buffer
22699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 sizeof(ucRssiThreshold),
22702 &pSendBuffer, &usDataOffset, &usSendSize))||
22703 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
22704 {
22705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22706 "Unable to get send buffer in Set PNO req %x %x %x",
22707 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
22708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022710 }
22711
22712 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
22713
Jeff Johnsone7245742012-09-05 17:12:55 -070022714 wpalMemoryCopy( pSendBuffer+usDataOffset,
22715 &ucRssiThreshold,
22716 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070022717
22718 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022719 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022720
22721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22725 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022726}
22727
22728
22729/**
22730 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070022731
22732 @param pWDICtx: pointer to the WLAN DAL context
22733 pEventData: pointer to the event information structure
22734
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 @see
22736 @return Result of the function call
22737*/
22738WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053022739WDI_PackUpdateScanParamsReq
22740(
22741 WDI_ControlBlockType* pWDICtx,
22742 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22743 wpt_uint8** ppSendBuffer,
22744 wpt_uint16* pSize
22745)
22746{
22747 wpt_uint8* pSendBuffer = NULL;
22748 wpt_uint16 usDataOffset = 0;
22749 wpt_uint16 usSendSize = 0;
22750 tUpdateScanParams updateScanParams = {0};
22751
22752
22753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22754 "Begin WDI Update Scan Parameters Old Style Params");
22755 /*-----------------------------------------------------------------------
22756 Get message buffer
22757 -----------------------------------------------------------------------*/
22758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22759 sizeof(updateScanParams),
22760 &pSendBuffer, &usDataOffset, &usSendSize))||
22761 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22762 {
22763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22764 "Unable to get send buffer in Update Scan Params req %x",
22765 pwdiUpdateScanParams);
22766 WDI_ASSERT(0);
22767 return WDI_STATUS_E_FAILURE;
22768 }
22769
22770 //
22771 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22772 //
22773
22774 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22775 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22776
22777 updateScanParams.ucChannelCount =
22778 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22779 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22780 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22781 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
22782
22783 wpalMemoryCopy( updateScanParams.aChannels,
22784 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22785 updateScanParams.ucChannelCount);
22786
22787
22788 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22789 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22790 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22791 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22792 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22793
22794 wpalMemoryCopy( pSendBuffer+usDataOffset,
22795 &updateScanParams,
22796 sizeof(updateScanParams));
22797
22798 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
22799 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
22800
22801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22802 "End Update Scan Parameters Old Style");
22803
22804 /*Set the output values*/
22805 *ppSendBuffer = pSendBuffer;
22806 *pSize = usSendSize;
22807
22808 return WDI_STATUS_SUCCESS;
22809}
22810
22811/**
22812 @brief Process Update Scan Params function
22813
22814 @param pWDICtx: pointer to the WLAN DAL context
22815 pEventData: pointer to the event information structure
22816
22817 @see
22818 @return Result of the function call
22819*/
22820WDI_Status
22821WDI_PackUpdateScanParamsReqEx
22822(
22823 WDI_ControlBlockType* pWDICtx,
22824 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22825 wpt_uint8** ppSendBuffer,
22826 wpt_uint16* pSize
22827)
22828{
22829 wpt_uint8* pSendBuffer = NULL;
22830 wpt_uint16 usDataOffset = 0;
22831 wpt_uint16 usSendSize = 0;
22832 tUpdateScanParamsEx updateScanParams = {0};
22833
22834
22835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22836 "Begin WDI Update Scan Parameters New Style Params");
22837 /*-----------------------------------------------------------------------
22838 Get message buffer
22839 -----------------------------------------------------------------------*/
22840 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22841 sizeof(updateScanParams),
22842 &pSendBuffer, &usDataOffset, &usSendSize))||
22843 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22844 {
22845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22846 "Unable to get send buffer in Update Scan Params Ex req %x",
22847 pwdiUpdateScanParams);
22848 WDI_ASSERT(0);
22849 return WDI_STATUS_E_FAILURE;
22850 }
22851
22852 //
22853 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22854 //
22855
22856 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22857 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22858
22859 updateScanParams.ucChannelCount =
22860 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22861 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
22862 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22863 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
22864
22865 wpalMemoryCopy( updateScanParams.aChannels,
22866 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22867 updateScanParams.ucChannelCount);
22868
22869
22870 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22871 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22872 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22873 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22874 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22875
22876 wpalMemoryCopy( pSendBuffer+usDataOffset,
22877 &updateScanParams,
22878 sizeof(updateScanParams));
22879
22880 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
22881 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
22882
22883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22884 "End Update Scan Parameters New Style");
22885
22886 /*Set the output values*/
22887 *ppSendBuffer = pSendBuffer;
22888 *pSize = usSendSize;
22889
22890 return WDI_STATUS_SUCCESS;
22891}
22892
22893/**
22894 @brief Process Update Scan Params function
22895
22896 @param pWDICtx: pointer to the WLAN DAL context
22897 pEventData: pointer to the event information structure
22898
22899 @see
22900 @return Result of the function call
22901*/
22902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022903WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022904(
Jeff Johnson295189b2012-06-20 16:38:30 -070022905 WDI_ControlBlockType* pWDICtx,
22906 WDI_EventInfoType* pEventData
22907)
22908{
22909 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
22910 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022911 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022912 wpt_uint16 usDataOffset = 0;
22913 wpt_uint16 usSendSize = 0;
22914 tUpdateScanParams updateScanParams = {0};
22915
22916
22917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022919 -------------------------------------------------------------------------*/
22920 if (( NULL == pEventData ) ||
22921 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
22922 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
22923 {
22924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 }
22929
22930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22931 "Begin WDI Update Scan Parameters");
22932 /*-----------------------------------------------------------------------
22933 Get message buffer
22934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 sizeof(updateScanParams),
22937 &pSendBuffer, &usDataOffset, &usSendSize))||
22938 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22939 {
22940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22941 "Unable to get send buffer in Update Scan Params req %x %x %x",
22942 pEventData, pwdiUpdateScanParams, wdiUpdateScanParamsCb);
22943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022945 }
22946
22947 //
22948 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22949 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053022950 if ( pWDICtx->wlanVersion.revision < 1 )
22951 {
22952 WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
22953 &pSendBuffer, &usSendSize);
22954 }
22955 else
22956 {
22957 WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
22958 &pSendBuffer, &usSendSize);
22959 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022960
Jeff Johnson295189b2012-06-20 16:38:30 -070022961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022962 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053022965 wdiUpdateScanParamsCb, pEventData->pUserData,
22966 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022967}
22968
22969/**
22970 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070022971
22972 @param pWDICtx: pointer to the WLAN DAL context
22973 pEventData: pointer to the event information structure
22974
Jeff Johnson295189b2012-06-20 16:38:30 -070022975 @see
22976 @return Result of the function call
22977*/
22978WDI_Status
22979WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022980(
Jeff Johnson295189b2012-06-20 16:38:30 -070022981 WDI_ControlBlockType* pWDICtx,
22982 WDI_EventInfoType* pEventData
22983)
22984{
22985 WDI_LowLevelIndType wdiInd;
22986 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
22987
22988
22989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022991 -------------------------------------------------------------------------*/
22992 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22993 ( NULL == pEventData->pEventData ))
22994 {
22995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022997 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 }
23000
23001 /*-------------------------------------------------------------------------
23002 Extract indication and send it to UMAC
23003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023004 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23005 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 sizeof(tPrefNetwFoundParams));
23007
23008 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023009 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023010
23011 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23012
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023016
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23018 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023019 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23020
23021 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23022 prefNetwFoundInd.prefNetwFoundParams.rssi;
23023
23024 // DEBUG
23025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23026 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23027 wdiInd.wdiIndicationType,
23028 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23029 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23030
23031 /*Notify UMAC*/
23032 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070023033
23034 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023035}
23036
23037/**
23038 @brief Process PNO Rsp function (called when a
23039 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023040
23041 @param pWDICtx: pointer to the WLAN DAL context
23042 pEventData: pointer to the event information structure
23043
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 @see
23045 @return Result of the function call
23046*/
23047WDI_Status
23048WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023049(
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 WDI_ControlBlockType* pWDICtx,
23051 WDI_EventInfoType* pEventData
23052)
23053{
23054 WDI_Status wdiStatus;
23055 eHalStatus halStatus;
23056 WDI_PNOScanCb wdiPNOScanCb = NULL;
23057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23058
23059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 -------------------------------------------------------------------------*/
23062 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23063 ( NULL == pEventData->pEventData ))
23064 {
23065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 }
23070
23071
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023073
23074 /*-------------------------------------------------------------------------
23075 Extract response and send it to UMAC
23076 -------------------------------------------------------------------------*/
23077 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023079
23080 /*Notify UMAC*/
23081 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23082
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023084}/*WDI_ProcessSetPreferredNetworkRsp*/
23085
23086/**
23087 @brief Process RSSI Filter Rsp function (called when a
23088 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023089
23090 @param pWDICtx: pointer to the WLAN DAL context
23091 pEventData: pointer to the event information structure
23092
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 @see
23094 @return Result of the function call
23095*/
23096WDI_Status
23097WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023098(
Jeff Johnson295189b2012-06-20 16:38:30 -070023099 WDI_ControlBlockType* pWDICtx,
23100 WDI_EventInfoType* pEventData
23101)
23102{
23103 WDI_Status wdiStatus;
23104 eHalStatus halStatus;
23105 WDI_RssiFilterCb wdiRssiFilterCb;
23106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23107
23108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023109 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 -------------------------------------------------------------------------*/
23111 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23112 ( NULL == pEventData->pEventData ))
23113 {
23114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023115 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 }
23119
Jeff Johnsone7245742012-09-05 17:12:55 -070023120 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023121
23122 /*-------------------------------------------------------------------------
23123 Extract response and send it to UMAC
23124 -------------------------------------------------------------------------*/
23125 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023126 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023127
23128 /*Notify UMAC*/
23129 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23130
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023132}/*WDI_ProcessSetRssiFilterRsp*/
23133
23134/**
23135 @brief Process Update Scan Params Rsp function (called when a
23136 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023137
23138 @param pWDICtx: pointer to the WLAN DAL context
23139 pEventData: pointer to the event information structure
23140
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 @see
23142 @return Result of the function call
23143*/
23144WDI_Status
23145WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023146(
Jeff Johnson295189b2012-06-20 16:38:30 -070023147 WDI_ControlBlockType* pWDICtx,
23148 WDI_EventInfoType* pEventData
23149)
23150{
23151 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023152 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23156
23157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023159 -------------------------------------------------------------------------*/
23160 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23161 ( NULL == pEventData->pEventData ))
23162 {
23163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023167 }
23168
23169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023170 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023171
Jeff Johnsone7245742012-09-05 17:12:55 -070023172 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023173
23174 /*-------------------------------------------------------------------------
23175 Extract response and send it to UMAC
23176 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023177 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23178 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023179 sizeof(halUpdScanParams.status));
23180
23181 uStatus = halUpdScanParams.status;
23182
23183 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023184 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023185
23186 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023188
Jeff Johnsone7245742012-09-05 17:12:55 -070023189 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023190
23191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023192 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023193 halUpdScanParams.status);
23194
23195 /*Notify UMAC*/
23196 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23197
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023199}
23200#endif // FEATURE_WLAN_SCAN_PNO
23201
23202#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023203WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023204WDI_8023MulticastListReq
23205(
23206 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23207 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23208 void* pUserData
23209)
23210{
23211 WDI_EventInfoType wdiEventData;
23212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23213
23214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023215 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023216
23217 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023218 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 ------------------------------------------------------------------------*/
23220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23221 {
23222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23223 "WDI API call before module is initialized - Fail request");
23224
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 }
23227
23228 /*------------------------------------------------------------------------
23229 Fill in Event data and post to the Main FSM
23230 ------------------------------------------------------------------------*/
23231 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 wdiEventData.pUserData = pUserData;
23236
23237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23238}
23239
Jeff Johnsone7245742012-09-05 17:12:55 -070023240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023241WDI_ReceiveFilterSetFilterReq
23242(
23243 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23244 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23245 void* pUserData
23246)
23247{
23248 WDI_EventInfoType wdiEventData;
23249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23250
23251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023252 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023253
23254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 ------------------------------------------------------------------------*/
23257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23258 {
23259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23260 "WDI API call before module is initialized - Fail request");
23261
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 }
23264
23265 /*------------------------------------------------------------------------
23266 Fill in Event data and post to the Main FSM
23267 ------------------------------------------------------------------------*/
23268 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23270 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23271 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 wdiEventData.pUserData = pUserData;
23275
23276
23277 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23278}
23279
Jeff Johnsone7245742012-09-05 17:12:55 -070023280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023281WDI_FilterMatchCountReq
23282(
23283 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23284 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23285 void* pUserData
23286)
23287{
23288 WDI_EventInfoType wdiEventData;
23289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23290
23291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023292 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023293
23294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 ------------------------------------------------------------------------*/
23297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23298 {
23299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23300 "WDI API call before module is initialized - Fail request");
23301
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 }
23304
23305 /*------------------------------------------------------------------------
23306 Fill in Event data and post to the Main FSM
23307 ------------------------------------------------------------------------*/
23308 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023309 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023310 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 wdiEventData.pUserData = pUserData;
23313
23314
23315 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23316}
23317
Jeff Johnsone7245742012-09-05 17:12:55 -070023318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023319WDI_ReceiveFilterClearFilterReq
23320(
23321 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23322 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23323 void* pUserData
23324)
23325{
23326 WDI_EventInfoType wdiEventData;
23327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23328
23329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023330 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023331
23332 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023333 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023334 ------------------------------------------------------------------------*/
23335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23336 {
23337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23338 "WDI API call before module is initialized - Fail request");
23339
Jeff Johnsone7245742012-09-05 17:12:55 -070023340 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023341 }
23342
23343 /*------------------------------------------------------------------------
23344 Fill in Event data and post to the Main FSM
23345 ------------------------------------------------------------------------*/
23346 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023348 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023349 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023350 wdiEventData.pUserData = pUserData;
23351
23352
23353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23354}
23355
23356/**
23357 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023358
23359 @param pWDICtx: pointer to the WLAN DAL context
23360 pEventData: pointer to the event information structure
23361
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 @see
23363 @return Result of the function call
23364*/
23365WDI_Status
23366WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023367(
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 WDI_ControlBlockType* pWDICtx,
23369 WDI_EventInfoType* pEventData
23370)
23371{
23372 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23373 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023375 wpt_uint16 usDataOffset = 0;
23376 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023377 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023379 wpt_uint8 ucCurrentBSSSesIdx = 0;
23380 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023381
23382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023383 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023384
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023385 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23386 if( NULL == pRcvFltMcAddrListType )
23387 {
23388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23389 "Failed to alloc in WDI_Process8023MulticastListReq");
23390 return WDI_STATUS_E_FAILURE;
23391 }
23392
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023395 -------------------------------------------------------------------------*/
23396 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023399 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23401 {
23402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023403 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023404 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023406 return WDI_STATUS_E_FAILURE;
23407 }
23408
23409 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23410 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23411 &pBSSSes);
23412 if ( NULL == pBSSSes )
23413 {
23414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023415 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023416 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 }
23419
23420 /*-----------------------------------------------------------------------
23421 Get message buffer
23422 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023423 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23424 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023425 sizeof(tHalRcvFltMcAddrListType),
23426 &pSendBuffer, &usDataOffset, &usSendSize))||
23427 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23428 {
23429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23430 "Unable to get send buffer in "
23431 "WDI_Process8023MulticastListReq() %x %x %x",
23432 pEventData, pwdiFltPktSetMcListReqParamsType,
23433 wdi8023MulticastListCb);
23434 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023436 }
23437
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023438 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023440 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023442 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23444 sizeof(tSirMacAddr));
23445 }
23446
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023447 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023449 pRcvFltMcAddrListType,
23450 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023451
23452 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023453 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023454
23455
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023456 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023458 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023460 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023462 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023463}
23464
23465/**
23466 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023467
23468 @param pWDICtx: pointer to the WLAN DAL context
23469 pEventData: pointer to the event information structure
23470
Jeff Johnson295189b2012-06-20 16:38:30 -070023471 @see
23472 @return Result of the function call
23473*/
23474WDI_Status
23475WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023476(
Jeff Johnson295189b2012-06-20 16:38:30 -070023477 WDI_ControlBlockType* pWDICtx,
23478 WDI_EventInfoType* pEventData
23479)
23480{
23481 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23482 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 wpt_uint16 usDataOffset = 0;
23485 wpt_uint16 usSendSize = 0;
23486 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023487 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023488 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023489 wpt_uint8 ucCurrentBSSSesIdx = 0;
23490 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023491 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23492 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023493
23494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023495 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023496
23497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023498 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023499 -------------------------------------------------------------------------*/
23500 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023501 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023503 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023504 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23505 {
23506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023509 return WDI_STATUS_E_FAILURE;
23510 }
23511
23512 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23513 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23514 &pBSSSes);
23515 if ( NULL == pBSSSes )
23516 {
23517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023518 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 }
23521
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023522 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23523 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023524
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023525 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23526 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23527 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23528
23529 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23530 usSessRcvPktFilterCfgSize);
23531
23532 if(NULL == pSessRcvPktFilterCfg)
23533 {
23534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23535 "%s: Failed to allocate memory for "
23536 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023537 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023538 WDI_ASSERT(0);
23539 return WDI_STATUS_E_FAILURE;
23540 }
23541
23542 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23543
23544 /*-----------------------------------------------------------------------
23545 Get message buffer
23546 -----------------------------------------------------------------------*/
23547
23548 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23549 usSessRcvPktFilterCfgSize,
23550 &pSendBuffer, &usDataOffset, &usSendSize))||
23551 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23552 {
23553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23554 "Unable to get send buffer in "
23555 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23556 pEventData, pwdiSetRcvPktFilterReqInfo,
23557 wdiReceiveFilterSetFilterCb);
23558 WDI_ASSERT(0);
23559 wpalMemoryFree(pSessRcvPktFilterCfg);
23560 return WDI_STATUS_E_FAILURE;
23561 }
23562
23563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23564 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23565 usSendSize,pSessRcvPktFilterCfg);
23566
23567 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23568 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23569 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23570 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23571
23572 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23573
23574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23575 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23576 pSessRcvPktFilterCfg->filterType);
23577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23578 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23579 pSessRcvPktFilterCfg->coleasceTime);
23580
23581 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23582 {
23583 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23584 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23585 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23586 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23587 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23588 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23589 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23590 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23591
23592 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23593 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23594 8);
23595 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23596 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23597 8);
23598
23599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23600 "Out:Proto %d Comp Flag %d \n",
23601 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23602 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23603
23604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23605 "Data Offset %d Data Len %d\n",
23606 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23607 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23608
23609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23610 "CData: %d:%d:%d:%d:%d:%d\n",
23611 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23612 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23613 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23614 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23615 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23616 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23617
23618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23619 "MData: %d:%d:%d:%d:%d:%d\n",
23620 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23621 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23622 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23623 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23624 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23625 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23626 }
23627
23628 wpalMemoryCopy( pSendBuffer+usDataOffset,
23629 pSessRcvPktFilterCfg,
23630 usSessRcvPktFilterCfgSize);
23631
23632
23633 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23634 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23635
23636 wpalMemoryFree(pSessRcvPktFilterCfg);
23637
23638 }
23639 /*If SLM_SESSIONIZATION is not supported then do this */
23640 else
23641 {
23642 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23643 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23644 * sizeof(tHalRcvPktFilterParams));
23645
23646 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 usRcvPktFilterCfgSize);
23648
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023649 if(NULL == pRcvPktFilterCfg)
23650 {
23651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23652 "%s: Failed to allocate memory for "
23653 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023654 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023655 WDI_ASSERT(0);
23656 return WDI_STATUS_E_FAILURE;
23657 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023658
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023659 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023660
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023661 /*-----------------------------------------------------------------------
23662 Get message buffer
23663 -----------------------------------------------------------------------*/
23664 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 usRcvPktFilterCfgSize,
23666 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023667 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23668 {
23669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023670 "Unable to get send buffer in "
23671 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23672 pEventData, pwdiSetRcvPktFilterReqInfo,
23673 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023674 WDI_ASSERT(0);
23675 wpalMemoryFree(pRcvPktFilterCfg);
23676 return WDI_STATUS_E_FAILURE;
23677 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023678
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 usSendSize,usRcvPktFilterCfgSize);
23682
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023683 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23684 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23685 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23686 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070023687
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023690 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023692 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023693 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023694
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023695 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
23696 {
23697 pRcvPktFilterCfg->paramsData[i].protocolLayer =
23698 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23699 pRcvPktFilterCfg->paramsData[i].cmpFlag =
23700 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23701 pRcvPktFilterCfg->paramsData[i].dataOffset =
23702 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23703 pRcvPktFilterCfg->paramsData[i].dataLength =
23704 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070023705
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023706 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23708 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023709 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23711 8);
23712
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023714 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070023715 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023716 pRcvPktFilterCfg->paramsData[i].cmpFlag);
23717
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23719 "Data Offset %d Data Len %d\n",
23720 pRcvPktFilterCfg->paramsData[i].dataOffset,
23721 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023722
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23724 "CData: %d:%d:%d:%d:%d:%d\n",
23725 pRcvPktFilterCfg->paramsData[i].compareData[0],
23726 pRcvPktFilterCfg->paramsData[i].compareData[1],
23727 pRcvPktFilterCfg->paramsData[i].compareData[2],
23728 pRcvPktFilterCfg->paramsData[i].compareData[3],
23729 pRcvPktFilterCfg->paramsData[i].compareData[4],
23730 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070023731
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23733 "MData: %d:%d:%d:%d:%d:%d\n",
23734 pRcvPktFilterCfg->paramsData[i].dataMask[0],
23735 pRcvPktFilterCfg->paramsData[i].dataMask[1],
23736 pRcvPktFilterCfg->paramsData[i].dataMask[2],
23737 pRcvPktFilterCfg->paramsData[i].dataMask[3],
23738 pRcvPktFilterCfg->paramsData[i].dataMask[4],
23739 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
23740 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023741
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023742 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 pRcvPktFilterCfg,
23744 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023745
23746
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023747 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23748 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023749
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023751 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023752 wpalMemoryFree(pRcvPktFilterCfg);
23753 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023760}
23761
23762/**
23763 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023764
23765 @param pWDICtx: pointer to the WLAN DAL context
23766 pEventData: pointer to the event information structure
23767
Jeff Johnson295189b2012-06-20 16:38:30 -070023768 @see
23769 @return Result of the function call
23770*/
23771WDI_Status
23772WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023773(
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 WDI_ControlBlockType* pWDICtx,
23775 WDI_EventInfoType* pEventData
23776)
23777{
23778 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
23779 NULL;
23780 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
23781 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023782 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023783 wpt_uint16 usDataOffset = 0;
23784 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023785 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
23786 wpt_uint8 ucCurrentBSSSesIdx = 0;
23787 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023788
23789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023790 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023791
23792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 -------------------------------------------------------------------------*/
23795 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
23800 {
23801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023802 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 }
23806
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023807 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23808 pwdiRcvFltPktMatchCntReqParamsType->bssId,
23809 &pBSSSes);
23810 if ( NULL == pBSSSes )
23811 {
23812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023813 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023814 return WDI_STATUS_E_FAILURE;
23815 }
23816
Jeff Johnson295189b2012-06-20 16:38:30 -070023817 /*-----------------------------------------------------------------------
23818 Get message buffer
23819 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23821 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023822 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023824 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 {
23826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23827 "Unable to get send buffer in "
23828 "WDI_ProcessFilterMatchCountReq() %x %x %x",
23829 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
23830 wdiFilterMatchCountCb);
23831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023833 }
23834
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023835 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
23836 wpalMemoryCopy( pSendBuffer+usDataOffset,
23837 &rcvFltPktMatchCntReqParam,
23838 sizeof(rcvFltPktMatchCntReqParam));
23839
Jeff Johnson295189b2012-06-20 16:38:30 -070023840 //
23841 // Don't need to fill send buffer other than header
23842 //
23843 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023845
23846
23847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023848 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23851 wdiFilterMatchCountCb,
23852 pEventData->pUserData,
23853 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023854}
23855
23856/**
23857 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023858
23859 @param pWDICtx: pointer to the WLAN DAL context
23860 pEventData: pointer to the event information structure
23861
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 @see
23863 @return Result of the function call
23864*/
23865WDI_Status
23866WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023867(
Jeff Johnson295189b2012-06-20 16:38:30 -070023868 WDI_ControlBlockType* pWDICtx,
23869 WDI_EventInfoType* pEventData
23870)
Jeff Johnsone7245742012-09-05 17:12:55 -070023871{
Jeff Johnson295189b2012-06-20 16:38:30 -070023872 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
23873 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 wpt_uint16 usDataOffset = 0;
23876 wpt_uint16 usSendSize = 0;
23877 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023878 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023880
23881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023882 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023883
23884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023886 -------------------------------------------------------------------------*/
23887 if (( NULL == pEventData ) ||
23888 ( NULL == (pwdiRcvFltPktClearReqParamsType =
23889 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023890 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
23892 {
23893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 return WDI_STATUS_E_FAILURE;
23897 }
23898
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023899 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070023900 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
23901 &pBSSSes);
23902 if ( NULL == pBSSSes )
23903 {
23904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023905 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 }
23908
23909 /*-----------------------------------------------------------------------
23910 Get message buffer
23911 -----------------------------------------------------------------------*/
23912 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 sizeof(tHalRcvFltPktClearParam),
23915 &pSendBuffer, &usDataOffset, &usSendSize))||
23916 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
23917 {
23918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23919 "Unable to get send buffer in "
23920 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
23921 pEventData, pwdiRcvFltPktClearReqParamsType,
23922 wdiRcvFltPktClearFilterCb);
23923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 }
23926
23927
23928 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070023929 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
23934 wpalMemoryCopy( pSendBuffer+usDataOffset,
23935 &rcvFltPktClearParam,
23936 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070023937
23938 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023940
23941
23942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023943 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023945 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023946 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023948}
23949
23950/**
23951 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070023952
23953 @param pWDICtx: pointer to the WLAN DAL context
23954 pEventData: pointer to the event information structure
23955
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 @see
23957 @return Result of the function call
23958*/
23959WDI_Status
23960WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023961(
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 WDI_ControlBlockType* pWDICtx,
23963 WDI_EventInfoType* pEventData
23964)
23965{
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 eHalStatus halStatus;
23967 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023968 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
23969 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23971
23972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023973 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023974
23975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 -------------------------------------------------------------------------*/
23978 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23979 ( NULL == pEventData->pEventData ))
23980 {
23981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 }
23986
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023988
23989 /*-------------------------------------------------------------------------
23990 Extract response and send it to UMAC
23991 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023992 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
23993 {
23994 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
23995 pEventData->pEventData,
23996 sizeof(halRcvFltPktSetMcListRsp));
23997
23998 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
23999 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24000 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24001 halRcvFltPktSetMcListRsp.bssIdx;
24002 }
24003 else
24004 {
24005 halStatus = *((eHalStatus*)pEventData->pEventData);
24006 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24007 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024008
24009 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024010 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024011
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013}
24014
24015/**
24016 @brief Process Set Rsp function (called when a
24017 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024018
24019 @param pWDICtx: pointer to the WLAN DAL context
24020 pEventData: pointer to the event information structure
24021
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 @see
24023 @return Result of the function call
24024*/
24025WDI_Status
24026WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024027(
Jeff Johnson295189b2012-06-20 16:38:30 -070024028 WDI_ControlBlockType* pWDICtx,
24029 WDI_EventInfoType* pEventData
24030)
24031{
Jeff Johnson295189b2012-06-20 16:38:30 -070024032 eHalStatus halStatus;
24033 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024034 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24035 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24037
24038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024039 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024040
24041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 -------------------------------------------------------------------------*/
24044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24045 ( NULL == pEventData->pEventData ))
24046 {
24047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 }
24052
24053 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024054 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024055
24056 /*-------------------------------------------------------------------------
24057 Extract response and send it to UMAC
24058 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024059 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24060 {
24061 wpalMemoryCopy( &halSetPktFilterRspParams,
24062 pEventData->pEventData,
24063 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024064
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024065 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24066 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24067 }
24068 else
24069 {
24070 halStatus = *((eHalStatus*)pEventData->pEventData);
24071 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24072 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024074 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024075
Jeff Johnsone7245742012-09-05 17:12:55 -070024076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024077}
24078
24079/**
24080 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024081
24082 @param pWDICtx: pointer to the WLAN DAL context
24083 pEventData: pointer to the event information structure
24084
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 @see
24086 @return Result of the function call
24087*/
24088WDI_Status
24089WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024090(
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 WDI_ControlBlockType* pWDICtx,
24092 WDI_EventInfoType* pEventData
24093)
24094{
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024097 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24098 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024099
24100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24101
24102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024103 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024104
24105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 -------------------------------------------------------------------------*/
24108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24109 ( NULL == pEventData->pEventData ))
24110 {
24111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024115 }
24116
Jeff Johnsone7245742012-09-05 17:12:55 -070024117 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024118
24119 /*-------------------------------------------------------------------------
24120 Extract response and send it to UMAC
24121 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024122 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24123 {
24124 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24125 pEventData->pEventData,
24126 sizeof(halRcvFltrPktMatachRsp));
24127
24128 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24129 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24130 }
24131 else
24132 {
24133 halStatus = *((eHalStatus*)pEventData->pEventData);
24134 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24135 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024136
24137 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024138 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024139
Jeff Johnsone7245742012-09-05 17:12:55 -070024140 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024141}
24142
24143/**
24144 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024145
24146 @param pWDICtx: pointer to the WLAN DAL context
24147 pEventData: pointer to the event information structure
24148
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 @see
24150 @return Result of the function call
24151*/
24152WDI_Status
24153WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024154(
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 WDI_ControlBlockType* pWDICtx,
24156 WDI_EventInfoType* pEventData
24157)
24158{
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 eHalStatus halStatus;
24160 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024161 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24162 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24164
24165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024166 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024167
24168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 -------------------------------------------------------------------------*/
24171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24172 ( NULL == pEventData->pEventData ))
24173 {
24174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 }
24179
24180 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024181 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024182
24183 /*-------------------------------------------------------------------------
24184 Extract response and send it to UMAC
24185 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024186 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24187 {
24188 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24189 pEventData->pEventData,
24190 sizeof(halRcvFltPktClearRspMsg));
24191
24192 wdiRcvFltPktClearRspParamsType.wdiStatus =
24193 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24194 wdiRcvFltPktClearRspParamsType.bssIdx =
24195 halRcvFltPktClearRspMsg.bssIdx;
24196 }
24197 else
24198 {
24199 halStatus = *((eHalStatus*)pEventData->pEventData);
24200 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24201 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024202
24203 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024204 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024205
Jeff Johnsone7245742012-09-05 17:12:55 -070024206 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024207}
24208#endif // WLAN_FEATURE_PACKET_FILTERING
24209
24210/**
24211 @brief Process Shutdown Rsp function
24212 There is no shutdown response comming from HAL
24213 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024214
Jeff Johnson295189b2012-06-20 16:38:30 -070024215 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024216 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024217
24218 @see
24219 @return Result of the function call
24220*/
24221WDI_Status
24222WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024223(
Jeff Johnson295189b2012-06-20 16:38:30 -070024224 WDI_ControlBlockType* pWDICtx,
24225 WDI_EventInfoType* pEventData
24226)
24227{
24228 /*There is no shutdown response comming from HAL - function just kept for
24229 simmetry */
24230 WDI_ASSERT(0);
24231 return WDI_STATUS_SUCCESS;
24232}/*WDI_ProcessShutdownRsp*/
24233
24234/**
24235 @brief WDI_SetPowerParamsReq
24236
Jeff Johnsone7245742012-09-05 17:12:55 -070024237 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024239
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 wdiPowerParamsCb: callback for passing back the response
24241 of the Set Power Params operation received from the
24242 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024243
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024245 callback
24246
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 @return Result of the function call
24248*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024249WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024250WDI_SetPowerParamsReq
24251(
24252 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24253 WDI_SetPowerParamsCb wdiPowerParamsCb,
24254 void* pUserData
24255)
24256{
24257 WDI_EventInfoType wdiEventData;
24258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24259
24260 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024261 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024262 ------------------------------------------------------------------------*/
24263 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24264 {
24265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24266 "WDI API call before module is initialized - Fail request");
24267
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 }
24270
24271 /*------------------------------------------------------------------------
24272 Fill in Event data and post to the Main FSM
24273 ------------------------------------------------------------------------*/
24274 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024275 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024277 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 wdiEventData.pUserData = pUserData;
24279
24280 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24281}/*WDI_SetPowerParamsReq*/
24282
24283/**
24284 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024285
24286 @param pWDICtx: pointer to the WLAN DAL context
24287 pEventData: pointer to the event information structure
24288
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 @see
24290 @return Result of the function call
24291*/
24292WDI_Status
24293WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024294(
Jeff Johnson295189b2012-06-20 16:38:30 -070024295 WDI_ControlBlockType* pWDICtx,
24296 WDI_EventInfoType* pEventData
24297)
24298{
24299 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24300 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024301 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024302 wpt_uint16 usDataOffset = 0;
24303 wpt_uint16 usSendSize = 0;
24304 tSetPowerParamsType powerParams;
24305
24306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 -------------------------------------------------------------------------*/
24309 if (( NULL == pEventData ) ||
24310 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24311 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24312 {
24313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 }
24318
24319 /*-----------------------------------------------------------------------
24320 Get message buffer
24321 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 sizeof(powerParams),
24324 &pSendBuffer, &usDataOffset, &usSendSize))||
24325 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24326 {
24327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24328 "Unable to get send buffer in Set PNO req %x %x %x",
24329 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 }
24333
24334 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24337
24338 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024339 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24341
24342 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24345
24346 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24349
24350 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024351 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024352 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24353
24354 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024355 powerParams.uBETInterval =
24356 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024357
Jeff Johnsone7245742012-09-05 17:12:55 -070024358
24359 wpalMemoryCopy( pSendBuffer+usDataOffset,
24360 &powerParams,
24361 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024362
24363 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024364 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024365
24366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024367 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24370 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024371}
24372
24373/**
24374 @brief Process Power Params Rsp function (called when a
24375 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024376
24377 @param pWDICtx: pointer to the WLAN DAL context
24378 pEventData: pointer to the event information structure
24379
Jeff Johnson295189b2012-06-20 16:38:30 -070024380 @see
24381 @return Result of the function call
24382*/
24383WDI_Status
24384WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024385(
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 WDI_ControlBlockType* pWDICtx,
24387 WDI_EventInfoType* pEventData
24388)
24389{
24390 WDI_Status wdiStatus;
24391 eHalStatus halStatus;
24392 WDI_SetPowerParamsCb wdiPowerParamsCb;
24393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24394
24395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 -------------------------------------------------------------------------*/
24398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24399 ( NULL == pEventData->pEventData ))
24400 {
24401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 }
24406
Jeff Johnsone7245742012-09-05 17:12:55 -070024407 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024408
24409 /*-------------------------------------------------------------------------
24410 Extract response and send it to UMAC
24411 -------------------------------------------------------------------------*/
24412 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024413 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024414
24415 /*Notify UMAC*/
24416 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24417
Jeff Johnsone7245742012-09-05 17:12:55 -070024418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024419}/*WDI_ProcessSetPowerParamsRsp*/
24420
24421#ifdef WLAN_FEATURE_GTK_OFFLOAD
24422/**
24423 @brief WDI_GTKOffloadReq will be called when the upper MAC
24424 wants to set GTK Rekey Counter while in power save. Upon
24425 the call of this API the WLAN DAL will pack and send a
24426 HAL GTK offload request message to the lower RIVA
24427 sub-system if DAL is in state STARTED.
24428
24429 In state BUSY this request will be queued. Request won't
24430 be allowed in any other state.
24431
24432 WDI_PostAssocReq must have been called.
24433
24434 @param pwdiGtkOffloadParams: the GTK offload as specified
24435 by the Device Interface
24436
24437 wdiGtkOffloadCb: callback for passing back the response
24438 of the GTK offload operation received from the device
24439
24440 pUserData: user data will be passed back with the
24441 callback
24442
24443 @see WDI_PostAssocReq
24444 @return Result of the function call
24445*/
24446WDI_Status
24447WDI_GTKOffloadReq
24448(
24449 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24450 WDI_GtkOffloadCb wdiGtkOffloadCb,
24451 void* pUserData
24452)
24453{
24454 WDI_EventInfoType wdiEventData = {0};
24455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24456
24457 /*------------------------------------------------------------------------
24458 Sanity Check
24459 ------------------------------------------------------------------------*/
24460 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24461 {
24462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24463 "WDI API call before module is initialized - Fail request");
24464
24465 return WDI_STATUS_E_NOT_ALLOWED;
24466 }
24467
24468 /*------------------------------------------------------------------------
24469 Fill in Event data and post to the Main FSM
24470 ------------------------------------------------------------------------*/
24471 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24472 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024473 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024474 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24475 wdiEventData.pUserData = pUserData;
24476
24477 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24478}
24479
24480
24481/**
24482 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24483 MAC wants to get GTK Rekey Counter while in power save.
24484 Upon the call of this API the WLAN DAL will pack and
24485 send a HAL GTK offload request message to the lower RIVA
24486 sub-system if DAL is in state STARTED.
24487
24488 In state BUSY this request will be queued. Request won't
24489 be allowed in any other state.
24490
24491 WDI_PostAssocReq must have been called.
24492
24493 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24494 Information Message as specified by the
24495 Device Interface
24496
24497 wdiGtkOffloadGetInfoCb: callback for passing back the
24498 response of the GTK offload operation received from the
24499 device
24500
24501 pUserData: user data will be passed back with the
24502 callback
24503
24504 @see WDI_PostAssocReq
24505 @return Result of the function call
24506*/
24507WDI_Status
24508WDI_GTKOffloadGetInfoReq
24509(
24510 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24511 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24512 void* pUserData
24513)
24514{
24515 WDI_EventInfoType wdiEventData = {0};
24516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24517
24518 /*------------------------------------------------------------------------
24519 Sanity Check
24520 ------------------------------------------------------------------------*/
24521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24522 {
24523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24524 "WDI API call before module is initialized - Fail request");
24525
24526 return WDI_STATUS_E_NOT_ALLOWED;
24527 }
24528
24529 /*------------------------------------------------------------------------
24530 Fill in Event data and post to the Main FSM
24531 ------------------------------------------------------------------------*/
24532 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24533 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24534 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24535 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24536 wdiEventData.pUserData = pUserData;
24537
24538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24539}
24540
24541
24542/**
24543 @brief Process set GTK Offload Request function
24544
24545 @param pWDICtx: pointer to the WLAN DAL context
24546 pEventData: pointer to the event information structure
24547
24548 @see
24549 @return Result of the function call
24550*/
24551WDI_Status
24552WDI_ProcessGTKOffloadReq
24553(
24554 WDI_ControlBlockType* pWDICtx,
24555 WDI_EventInfoType* pEventData
24556)
24557{
24558 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24559 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24560 wpt_uint8* pSendBuffer = NULL;
24561 wpt_uint16 usDataOffset = 0;
24562 wpt_uint16 usSendSize = 0;
24563 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024564 wpt_uint8 ucCurrentSessionId = 0;
24565 WDI_BSSSessionType* pBSSSes = NULL;
24566
Jeff Johnson295189b2012-06-20 16:38:30 -070024567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24568
24569 /*-------------------------------------------------------------------------
24570 Sanity check
24571 -------------------------------------------------------------------------*/
24572 if (( NULL == pEventData ) ||
24573 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24574 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24575 {
24576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024578 WDI_ASSERT(0);
24579 return WDI_STATUS_E_FAILURE;
24580 }
24581
24582 /*-----------------------------------------------------------------------
24583 Get message buffer
24584 -----------------------------------------------------------------------*/
24585 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24586 sizeof(gtkOffloadReqParams),
24587 &pSendBuffer, &usDataOffset, &usSendSize))||
24588 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24589 {
24590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24591 "Unable to get send buffer in GTK offload req %x %x %x",
24592 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24593 WDI_ASSERT(0);
24594 return WDI_STATUS_E_FAILURE;
24595 }
24596
24597 //
24598 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24599 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024600 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24601 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24602 &pBSSSes);
24603 if ( NULL == pBSSSes )
24604 {
24605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024606 " %s : Association for this BSSID does not exist", __func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024607 return WDI_STATUS_E_FAILURE;
24608 }
24609
24610 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24611
Jeff Johnson295189b2012-06-20 16:38:30 -070024612 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24613 // Copy KCK
24614 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24615 // Copy KEK
24616 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24617 // Copy KeyReplayCounter
24618 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24619
24620 wpalMemoryCopy( pSendBuffer+usDataOffset,
24621 &gtkOffloadReqParams,
24622 sizeof(gtkOffloadReqParams));
24623
24624 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24625 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24626
24627 /*-------------------------------------------------------------------------
24628 Send Get STA Request to HAL
24629 -------------------------------------------------------------------------*/
24630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24631 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
24632}
24633
24634
24635/**
24636 @brief Process GTK Offload Get Information Request function
24637
24638 @param pWDICtx: pointer to the WLAN DAL context
24639 pEventData: pointer to the event information structure
24640
24641 @see
24642 @return Result of the function call
24643*/
24644WDI_Status
24645WDI_ProcessGTKOffloadGetInfoReq
24646(
24647 WDI_ControlBlockType* pWDICtx,
24648 WDI_EventInfoType* pEventData
24649)
24650{
24651 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24652 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24653 wpt_uint8* pSendBuffer = NULL;
24654 wpt_uint16 usDataOffset = 0;
24655 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024656 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24657 wpt_uint8 ucCurrentSessionId = 0;
24658 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024659
24660 /*-------------------------------------------------------------------------
24661 Sanity check
24662 -------------------------------------------------------------------------*/
24663 if (( NULL == pEventData ) ||
24664 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24665 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24666 {
24667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 WDI_ASSERT(0);
24670 return WDI_STATUS_E_FAILURE;
24671 }
24672
24673 /*-----------------------------------------------------------------------
24674 Get message buffer
24675 -----------------------------------------------------------------------*/
24676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024677 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024679 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024680 {
24681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24682 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24683 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24684 WDI_ASSERT(0);
24685 return WDI_STATUS_E_FAILURE;
24686 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024687 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24688 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24689 &pBSSSes);
24690 if ( NULL == pBSSSes )
24691 {
24692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024693 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024694 return WDI_STATUS_E_FAILURE;
24695 }
24696 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024697
24698 //
24699 // Don't need to fill send buffer other than header
24700 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024701 wpalMemoryCopy( pSendBuffer+usDataOffset,
24702 &halGtkOffloadGetInfoReqParams,
24703 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024704
24705 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
24706 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
24707
24708 /*-------------------------------------------------------------------------
24709 Send Get STA Request to HAL
24710 -------------------------------------------------------------------------*/
24711 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24712 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
24713}
24714
24715/**
24716 @brief Process host offload Rsp function (called when a
24717 response is being received over the bus from HAL)
24718
24719 @param pWDICtx: pointer to the WLAN DAL context
24720 pEventData: pointer to the event information structure
24721
24722 @see
24723 @return Result of the function call
24724*/
24725WDI_Status
24726WDI_ProcessGtkOffloadRsp
24727(
24728 WDI_ControlBlockType* pWDICtx,
24729 WDI_EventInfoType* pEventData
24730)
24731{
Jeff Johnson295189b2012-06-20 16:38:30 -070024732 eHalStatus halStatus;
24733 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024734 tHalGtkOffloadRspParams halGtkOffloadRspParams;
24735 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24737
24738 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
24739
24740 /*-------------------------------------------------------------------------
24741 Sanity check
24742 -------------------------------------------------------------------------*/
24743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24744 ( NULL == pEventData->pEventData))
24745 {
24746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 WDI_ASSERT(0);
24749 return WDI_STATUS_E_FAILURE;
24750 }
24751
24752 /*-------------------------------------------------------------------------
24753 Extract response and send it to UMAC
24754 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024755 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24756 {
24757 wpalMemoryCopy( &halGtkOffloadRspParams,
24758 pEventData->pEventData,
24759 sizeof(halGtkOffloadRspParams));
24760
24761 wdiGtkOffloadRsparams.ulStatus =
24762 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
24763 wdiGtkOffloadRsparams.bssIdx =
24764 halGtkOffloadRspParams.bssIdx;
24765 }
24766 else
24767 {
24768 halStatus = *((eHalStatus*)pEventData->pEventData);
24769 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24770 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024771
24772 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024773 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024774
24775 return WDI_STATUS_SUCCESS;
24776}
24777
24778/**
24779 @brief Process GTK Offload Get Information Response function
24780
24781 @param pWDICtx: pointer to the WLAN DAL context
24782 pEventData: pointer to the event information structure
24783
24784 @see
24785 @return Result of the function call
24786*/
24787WDI_Status
24788WDI_ProcessGTKOffloadGetInfoRsp
24789(
24790 WDI_ControlBlockType* pWDICtx,
24791 WDI_EventInfoType* pEventData
24792)
24793{
Jeff Johnson295189b2012-06-20 16:38:30 -070024794 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024795 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024796 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
24797 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024798
24799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24800
24801 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
24802
24803 /*-------------------------------------------------------------------------
24804 Sanity check
24805 -------------------------------------------------------------------------*/
24806 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24807 ( NULL == pEventData->pEventData ))
24808 {
24809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024810 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024811 WDI_ASSERT(0);
24812 return WDI_STATUS_E_FAILURE;
24813 }
24814
24815 /*-------------------------------------------------------------------------
24816 Extract response and send it to UMAC
24817 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024818 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24819 {
24820 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
24821 pEventData->pEventData,
24822 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024823
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024824 wdiGtkOffloadGetInfoRsparams.ulStatus =
24825 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
24826 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
24827 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
24828 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
24829 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
24830 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
24831 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
24832 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
24833 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
24834 wdiGtkOffloadGetInfoRsparams.bssIdx =
24835 halGtkOffloadGetInfoRspParams.bssIdx;
24836 }
24837 else
24838 {
24839 halStatus = *((eHalStatus*)pEventData->pEventData);
24840 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24841 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024842 /*Notify UMAC*/
24843 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24844 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024845 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024846
24847 return WDI_STATUS_SUCCESS;
24848}
24849#endif // WLAN_FEATURE_GTK_OFFLOAD
24850
24851#ifdef WLAN_WAKEUP_EVENTS
24852WDI_Status
24853WDI_ProcessWakeReasonInd
24854(
24855 WDI_ControlBlockType* pWDICtx,
24856 WDI_EventInfoType* pEventData
24857)
24858{
24859 WDI_LowLevelIndType *pWdiInd;
24860 tpWakeReasonParams pWakeReasonParams;
24861 wpt_uint32 allocSize = 0;
24862
24863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024864 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024865
24866 /*-------------------------------------------------------------------------
24867 Sanity check
24868 -------------------------------------------------------------------------*/
24869 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24870 ( NULL == pEventData->pEventData ))
24871 {
24872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024874 WDI_ASSERT( 0 );
24875 return WDI_STATUS_E_FAILURE;
24876 }
24877
24878 /*-------------------------------------------------------------------------
24879 Extract indication and send it to UMAC
24880 -------------------------------------------------------------------------*/
24881 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
24882
24883 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
24884
24885 //Allocate memory for WDI_WakeReasonIndType structure
24886 pWdiInd = wpalMemoryAllocate(allocSize) ;
24887
24888 if(NULL == pWdiInd)
24889 {
24890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24891 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024892 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024893 WDI_ASSERT(0);
24894 return WDI_STATUS_E_FAILURE;
24895 }
24896
24897 wpalMemoryZero(pWdiInd, allocSize);
24898
24899 /* Fill in the indication parameters*/
24900 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
24901 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
24902 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
24903 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
24904 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
24905 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
24906 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
24907 &(pWakeReasonParams->aDataStart[0]),
24908 pWakeReasonParams->ulStoredDataLen);
24909
24910 /*Notify UMAC*/
24911 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
24912
24913 //Free memory allocated for WDI_WakeReasonIndType structure
24914 wpalMemoryFree(pWdiInd);
24915
24916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024917 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024918
24919 return WDI_STATUS_SUCCESS;
24920}
24921#endif // WLAN_WAKEUP_EVENTS
24922
24923void WDI_GetWcnssCompiledApiVersion
24924(
24925 WDI_WlanVersionType *pWcnssApiVersion
24926)
24927{
24928 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
24929 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
24930 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
24931 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
24932}
24933
24934/**
24935 @brief Process Set TM Level Rsp function (called when a
24936 response is being received over the bus from HAL)
24937
24938 @param pWDICtx: pointer to the WLAN DAL context
24939 pEventData: pointer to the event information structure
24940
24941 @see
24942 @return Result of the function call
24943*/
24944WDI_Status
24945WDI_ProcessSetTmLevelRsp
24946(
24947 WDI_ControlBlockType* pWDICtx,
24948 WDI_EventInfoType* pEventData
24949)
24950{
24951 WDI_Status wdiStatus;
24952 eHalStatus halStatus;
24953 WDI_SetTmLevelCb wdiSetTmLevelCb;
24954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24955
24956 /*-------------------------------------------------------------------------
24957 Sanity check
24958 -------------------------------------------------------------------------*/
24959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24960 ( NULL == pEventData->pEventData ))
24961 {
24962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024964 WDI_ASSERT(0);
24965 return WDI_STATUS_E_FAILURE;
24966 }
24967
24968 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
24969
24970 /*-------------------------------------------------------------------------
24971 Extract response and send it to UMAC
24972 -------------------------------------------------------------------------*/
24973 halStatus = *((eHalStatus*)pEventData->pEventData);
24974 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24975
24976 /*Notify UMAC*/
24977 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
24978
24979 return WDI_STATUS_SUCCESS;
24980}/*WDI_ProcessSetTmLevelRsp*/
24981
24982/**
24983 @brief Process Set Thermal Mitigation level Changed request
24984
24985 @param pWDICtx: pointer to the WLAN DAL context
24986 pEventData: pointer to the event information structure
24987
24988 @see
24989 @return Result of the function call
24990*/
24991WDI_Status
24992WDI_ProcessSetTmLevelReq
24993(
24994 WDI_ControlBlockType* pWDICtx,
24995 WDI_EventInfoType* pEventData
24996)
24997{
24998 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
24999 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25000 wpt_uint8* pSendBuffer = NULL;
25001 wpt_uint16 usDataOffset = 0;
25002 wpt_uint16 usSendSize = 0;
25003 tSetThermalMitgationType halTmMsg;
25004
25005 /*-------------------------------------------------------------------------
25006 Sanity check
25007 -------------------------------------------------------------------------*/
25008 if (( NULL == pEventData ) ||
25009 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25010 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25011 {
25012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025014 WDI_ASSERT(0);
25015 return WDI_STATUS_E_FAILURE;
25016 }
25017
25018 /*-----------------------------------------------------------------------
25019 Get message buffer
25020 -----------------------------------------------------------------------*/
25021 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25022 sizeof(halTmMsg),
25023 &pSendBuffer, &usDataOffset, &usSendSize))||
25024 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25025 {
25026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25027 "Unable to get send buffer in Set PNO req %x %x %x",
25028 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25029 WDI_ASSERT(0);
25030 return WDI_STATUS_E_FAILURE;
25031 }
25032
25033 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25034 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25035
25036 wpalMemoryCopy( pSendBuffer+usDataOffset,
25037 &halTmMsg,
25038 sizeof(halTmMsg));
25039
25040 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25041 pWDICtx->pfncRspCB = NULL;
25042 /*-------------------------------------------------------------------------
25043 Send Get STA Request to HAL
25044 -------------------------------------------------------------------------*/
25045 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25046 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25047}
25048
25049/* Fill the value from the global features enabled array to the global capabilities
25050 * bitmap struct
25051 */
25052static void
25053FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25054{
25055 wpt_int8 i;
25056 for (i=0; i<len; i++)
25057 {
25058 setFeatCaps(fCaps, enabledFeat[i]);
25059 }
25060}
25061
25062/**
25063 @brief WDI_featureCapsExchangeReq
25064 Post feature capability bitmap exchange event.
25065 Host will send its own capability to FW in this req and
25066 expect FW to send its capability back as a bitmap in Response
25067
25068 @param
25069
25070 wdiFeatureCapsExchangeCb: callback called on getting the response.
25071 It is kept to mantain similarity between WDI reqs and if needed, can
25072 be used in future. Currently, It is set to NULL
25073
25074 pUserData: user data will be passed back with the
25075 callback
25076
25077 @see
25078 @return Result of the function call
25079*/
25080WDI_Status
25081WDI_featureCapsExchangeReq
25082(
25083 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25084 void* pUserData
25085)
25086{
25087 WDI_EventInfoType wdiEventData;
25088 wpt_int32 fCapsStructSize;
25089
25090 /*------------------------------------------------------------------------
25091 Sanity Check
25092 ------------------------------------------------------------------------*/
25093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25094 {
25095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25096 "WDI API call before module is initialized - Fail request");
25097
25098 return WDI_STATUS_E_NOT_ALLOWED;
25099 }
25100
25101 /* Allocate memory separately for global variable carrying FW caps */
25102 fCapsStructSize = sizeof(tWlanFeatCaps);
25103 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25104 if ( NULL == gpHostWlanFeatCaps )
25105 {
25106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25107 "Cannot allocate memory for host capability info\n");
25108 WDI_ASSERT(0);
25109 return WDI_STATUS_MEM_FAILURE;
25110 }
25111
25112 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25113
25114 /*------------------------------------------------------------------------
25115 Fill in Event data and post to the Main FSM
25116 ------------------------------------------------------------------------*/
25117 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25118 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25120 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025121 gpHostWlanFeatCaps->featCaps[0],
25122 gpHostWlanFeatCaps->featCaps[1],
25123 gpHostWlanFeatCaps->featCaps[2],
25124 gpHostWlanFeatCaps->featCaps[3]
25125 );
25126
25127 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25128 wdiEventData.pEventData = gpHostWlanFeatCaps;
25129 wdiEventData.uEventDataSize = fCapsStructSize;
25130 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25131 wdiEventData.pUserData = pUserData;
25132
25133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25134}
25135
25136/**
25137 @brief Process Host-FW Capability Exchange Request function
25138
25139 @param pWDICtx: pointer to the WLAN DAL context
25140 pEventData: pointer to the event information structure
25141
25142 @see
25143 @return Result of the function call
25144*/
25145WDI_Status
25146WDI_ProcessFeatureCapsExchangeReq
25147(
25148 WDI_ControlBlockType* pWDICtx,
25149 WDI_EventInfoType* pEventData
25150)
25151{
25152 wpt_uint8* pSendBuffer = NULL;
25153 wpt_uint16 usDataOffset = 0;
25154 wpt_uint16 usSendSize = 0;
25155 wpt_uint16 usLen = 0;
25156
25157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25158
25159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025160 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025161
25162 /*-------------------------------------------------------------------------
25163 Sanity check
25164 -------------------------------------------------------------------------*/
25165 /* Call back function is NULL since not required for cap exchange req */
25166 if (( NULL == pEventData ) ||
25167 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25168 {
25169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025171 WDI_ASSERT(0);
25172 return WDI_STATUS_E_FAILURE;
25173 }
25174
25175 /*-----------------------------------------------------------------------
25176 Get message buffer
25177 -----------------------------------------------------------------------*/
25178 usLen = sizeof(tWlanFeatCaps);
25179
25180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25181 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25182 usLen,
25183 &pSendBuffer, &usDataOffset, &usSendSize))||
25184 ( usSendSize < (usDataOffset + usLen )))
25185 {
25186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25187 "Unable to get send buffer in feat caps exchange req %x %x",
25188 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25189 WDI_ASSERT(0);
25190 return WDI_STATUS_E_FAILURE;
25191 }
25192
25193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025194 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25196 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25197 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25198 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25199 );
25200
25201 /* Copy host caps after the offset in the send buffer */
25202 wpalMemoryCopy( pSendBuffer+usDataOffset,
25203 (tWlanFeatCaps *)pEventData->pEventData,
25204 usLen);
25205
25206 /*-------------------------------------------------------------------------
25207 Send Start Request to HAL
25208 -------------------------------------------------------------------------*/
25209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25210 (WDI_StartRspCb)pEventData->pCBfnc,
25211 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25212
25213}/*WDI_ProcessFeatureCapsExchangeReq*/
25214
25215/**
25216 @brief Process Host-FW Capability Exchange Response function
25217
25218 @param pWDICtx: pointer to the WLAN DAL context
25219 pEventData: pointer to the event information structure
25220
25221 @see
25222 @return Result of the function call
25223*/
25224WDI_Status
25225WDI_ProcessFeatureCapsExchangeRsp
25226(
25227 WDI_ControlBlockType* pWDICtx,
25228 WDI_EventInfoType* pEventData
25229)
25230{
25231 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25232 wpt_int32 fCapsStructSize;
25233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25234
25235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025236 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025237
25238 /*-------------------------------------------------------------------------
25239 Sanity check
25240 -------------------------------------------------------------------------*/
25241 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25242 ( NULL == pEventData->pEventData ))
25243 {
25244 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025247 WDI_ASSERT(0);
25248 return WDI_STATUS_E_FAILURE;
25249 }
25250
25251 /* Allocate memory separately for global variable carrying FW caps */
25252 fCapsStructSize = sizeof(tWlanFeatCaps);
25253 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25254 if ( NULL == gpFwWlanFeatCaps )
25255 {
25256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25257 "Cannot allocate memory for host capability info\n");
25258 WDI_ASSERT(0);
25259 return WDI_STATUS_MEM_FAILURE;
25260 }
25261
25262 /*-------------------------------------------------------------------------
25263 Unpack HAL Response Message - the header was already extracted by the
25264 main Response Handling procedure
25265 -------------------------------------------------------------------------*/
25266 /*-------------------------------------------------------------------------
25267 Extract response and send it to UMAC
25268 -------------------------------------------------------------------------*/
25269
25270 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25271 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25273 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025274 gpFwWlanFeatCaps->featCaps[0],
25275 gpFwWlanFeatCaps->featCaps[1],
25276 gpFwWlanFeatCaps->featCaps[2],
25277 gpFwWlanFeatCaps->featCaps[3]
25278 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025279
Jeff Johnson295189b2012-06-20 16:38:30 -070025280 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25281
25282 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25283 if (wdiFeatureCapsExchangeCb != NULL)
25284 wdiFeatureCapsExchangeCb(NULL, NULL);
25285
25286 return WDI_STATUS_SUCCESS;
25287}
25288
Mohit Khanna4a70d262012-09-11 16:30:12 -070025289#ifdef WLAN_FEATURE_11AC
25290WDI_Status
25291WDI_ProcessUpdateVHTOpModeRsp
25292(
25293 WDI_ControlBlockType* pWDICtx,
25294 WDI_EventInfoType* pEventData
25295)
25296{
25297 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25298 WDI_Status wdiStatus;
25299 eHalStatus halStatus;
25300
25301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25302
25303 /*-------------------------------------------------------------------------
25304 Sanity check
25305 -------------------------------------------------------------------------*/
25306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25307 ( NULL == pEventData->pEventData))
25308 {
25309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025310 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025311 WDI_ASSERT(0);
25312 return WDI_STATUS_E_FAILURE;
25313 }
25314 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25315
25316 /*-------------------------------------------------------------------------
25317 Extract response and send it to UMAC
25318 -------------------------------------------------------------------------*/
25319 halStatus = *((eHalStatus*)pEventData->pEventData);
25320 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25321
25322 /*Notify UMAC*/
25323 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25324
25325 return WDI_STATUS_SUCCESS;
25326}
25327#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025328/**
25329 @brief WDI_getHostWlanFeatCaps
25330 WDI API that returns whether the feature passed to it as enum value in
25331 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25332 variable storing host capability bitmap to find this. This can be used by
25333 other moduels to decide certain things like call different APIs based on
25334 whether a particular feature is supported.
25335
25336 @param
25337
25338 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25339
25340 @see
25341 @return
25342 0 - if the feature is NOT supported in host
25343 any non-zero value - if the feature is SUPPORTED in host.
25344*/
25345wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25346{
25347 wpt_uint8 featSupported = 0;
25348 if (gpHostWlanFeatCaps != NULL)
25349 {
25350 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25351 }
25352 else
25353 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025355 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 }
25357 return featSupported;
25358}
25359
25360/**
25361 @brief WDI_getFwWlanFeatCaps
25362 WDI API that returns whether the feature passed to it as enum value in
25363 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25364 variable storing host capability bitmap to find this. This can be used by
25365 other moduels to decide certain things like call different APIs based on
25366 whether a particular feature is supported.
25367
25368 @param
25369
25370 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25371 in wlan_hal_msg.h.
25372
25373 @see
25374 @return
25375 0 - if the feature is NOT supported in FW
25376 any non-zero value - if the feature is SUPPORTED in FW.
25377*/
25378wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25379{
25380 wpt_uint8 featSupported = 0;
25381 if (gpFwWlanFeatCaps != NULL)
25382 {
25383 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25384 }
25385 else
25386 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025388 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025389 }
25390 return featSupported;
25391}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025392
25393#ifdef WLAN_FEATURE_11AC
25394WDI_Status
25395WDI_ProcessUpdateVHTOpModeReq
25396(
25397 WDI_ControlBlockType* pWDICtx,
25398 WDI_EventInfoType* pEventData
25399)
25400{
25401 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25402 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25403 wpt_uint8* pSendBuffer = NULL;
25404 wpt_uint16 usDataOffset = 0;
25405 wpt_uint16 usSendSize = 0;
25406
25407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25408
25409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025410 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025411
25412 /*-------------------------------------------------------------------------
25413 Sanity check
25414 -------------------------------------------------------------------------*/
25415 if (( NULL == pEventData ) ||
25416 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25417 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25418 {
25419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025420 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025421 WDI_ASSERT(0);
25422 return WDI_STATUS_E_FAILURE;
25423 }
25424
25425 /*-----------------------------------------------------------------------
25426 Get message buffer
25427 -----------------------------------------------------------------------*/
25428 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25429 sizeof(WDI_UpdateVHTOpMode),
25430 &pSendBuffer, &usDataOffset, &usSendSize))||
25431 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25432 {
25433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25434 "Unable to get send buffer in update vht opMode req");
25435 WDI_ASSERT(0);
25436 return WDI_STATUS_E_FAILURE;
25437 }
25438
25439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25440 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25441
25442 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25443 sizeof(WDI_UpdateVHTOpMode));
25444
25445 /*-------------------------------------------------------------------------
25446 Send Start Request to HAL
25447 -------------------------------------------------------------------------*/
25448 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25449 wdiVHTOpModeCb,
25450 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25451
25452}
25453
25454WDI_Status
25455WDI_UpdateVHTOpModeReq
25456(
25457 WDI_UpdateVHTOpMode *pData,
25458 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25459 void* pUserData
25460)
25461{
25462 WDI_EventInfoType wdiEventData;
25463
25464 /*------------------------------------------------------------------------
25465 Sanity Check
25466 ------------------------------------------------------------------------*/
25467 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25468 {
25469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25470 "WDI API call before module is initialized - Fail request");
25471
25472 return WDI_STATUS_E_NOT_ALLOWED;
25473 }
25474
25475 /*------------------------------------------------------------------------
25476 Fill in Event data and post to the Main FSM
25477 ------------------------------------------------------------------------*/
25478 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25479 wdiEventData.pEventData = pData;
25480 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25481 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25482 wdiEventData.pUserData = pUserData;
25483
25484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25485 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25486
25487 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25488
25489}
25490#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025491
25492/**
25493 @brief WDI_TransportChannelDebug -
25494 Display DXE Channel debugging information
25495 User may request to display DXE channel snapshot
25496 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025497
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025498 @param displaySnapshot : Dispaly DXE snapshot option
25499 @param enableStallDetect : Enable stall detect feature
25500 This feature will take effect to data performance
25501 Not integrate till fully verification
25502 @see
25503 @return none
25504*/
25505void WDI_TransportChannelDebug
25506(
25507 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025508 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025509)
25510{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025511 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025512 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025513}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025514/**
25515 @brief WDI_SsrTimerCB
25516 Callback function for SSR timer, if this is called then the graceful
25517 shutdown for Riva did not happen.
25518
25519 @param pUserData : user data to timer
25520
25521 @see
25522 @return none
25523*/
25524void
25525WDI_SsrTimerCB
25526(
25527 void *pUserData
25528)
25529{
25530 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25532
25533 if (NULL == pWDICtx )
25534 {
25535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025536 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025537 WDI_ASSERT(0);
25538 return;
25539 }
25540 wpalRivaSubystemRestart();
25541
25542 return;
25543
25544}/*WDI_SsrTimerCB*/